Skip to content

Instantly share code, notes, and snippets.

@jhrcz
Created October 4, 2012 13:41
Show Gist options
  • Save jhrcz/3833593 to your computer and use it in GitHub Desktop.
Save jhrcz/3833593 to your computer and use it in GitHub Desktop.
one-fix-vm-names.sh
!/bin/bash
set -x
DB="sqlite3 /var/lib/one/one.db"
function dbq
{
echo "$1" | $DB
}
#dbq "select oid from vm_pool where state = 1 or state = 3 and name like 'one-%';" | while read oid
dbq "select oid from vm_pool where name like 'one-%';" | while read oid
do
dbq "select name from vm_pool where oid = $oid;"| sed -e "s/^/DEBUG:/"
dbq "select body from vm_pool where oid = $oid;"| sed -e "s/^/DEBUG:/"
#primary_volume_name=$(dbq "select body from vm_pool where oid = $oid;" | xmlstarlet fo | xmlstarlet sel -t -v '//VM/TEMPLATE/DISK/IMAGE')
#newname="${primary_volume_name// /_}"
templateid=$(dbq "select body from vm_pool where oid = $oid;" | xmlstarlet fo | xmlstarlet sel -t -v '//VM/TEMPLATE/TEMPLATE_ID')
[ -n "$templateid" ] || continue
newname=$(dbq "select name from template_pool where oid = $templateid;")
newname="${newname// /_}"
if [ -n "$newname" ]
then
newname="tpl:$newname"
dbq "update vm_pool set body = replace( body, '<NAME>one-$oid</NAME>', '<NAME>$newname</NAME>' ) where oid like $oid;"
dbq "update vm_pool set name = replace( name, 'one-$oid', '$newname' ) where oid like $oid;"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment