summaryrefslogtreecommitdiff
path: root/revert_instance_from_snapshot.sh
diff options
context:
space:
mode:
Diffstat (limited to 'revert_instance_from_snapshot.sh')
-rwxr-xr-xrevert_instance_from_snapshot.sh90
1 files changed, 90 insertions, 0 deletions
diff --git a/revert_instance_from_snapshot.sh b/revert_instance_from_snapshot.sh
new file mode 100755
index 0000000..b8beb3e
--- /dev/null
+++ b/revert_instance_from_snapshot.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+flavor='m1.small'
+secgroup='Bitmask'
+keyname='varac'
+
+
+usage()
+{
+cat << EOF
+usage: $0 options
+
+This script reverts an openstack instance to it's snapshot.
+
+OPTIONS:
+ -h Show this message
+ -i <instance>
+ -s <snapshot>
+ -v verbose mode
+EOF
+}
+
+set -- $(getopt hi:s:v "$@")
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ (-h) usage; exit 1 ;;
+ (-i) instance="$2"; shift;;
+ (-s) snapshot="$2"; shift;;
+ (--) shift; break;;
+ (-*) echo "$0: error - unrecognized option $1" 1>&2; exit 1;;
+ (*) break;;
+ esac
+ shift
+done
+
+if [[ -z $instance ]] || [[ -z $snapshot ]]
+then
+ usage
+ exit 1
+fi
+
+echo "Querying $instance..."
+
+
+ips=`nova show --minimal $instance | grep 'private network'| cut -f 3 -d'|'`
+# 192.168.10.2, 192.168.11.7, 192.168.11.9
+
+float_ips=`echo "$ips"| cut -f 2- -d',' | sed 's/,/ /g'`
+# 192.168.11.7 192.168.11.9
+
+echo "Floating IPs: $float_ips"
+
+for ip in $float_ips
+do
+ echo "Removing floating ip $ip from $instance"
+ nova floating-ip-delete $ip
+
+ # will re-allocate the removed ip in the pool
+ echo "Re-allocating $ip to the floating-ip pool"
+ nova floating-ip-create > /dev/null
+done
+
+echo
+echo "Deleting $instance"
+nova delete $instance
+
+echo
+echo "Booting $instance from snapshot $snap"
+result=`nova boot --image $snapshot --flavor $flavor --security-groups $secgroup --key_name $keyname $instance`
+
+# unfortunatly unformatted
+#echo $result
+
+newid=`echo "$result" | grep '| id ' | cut -d '|' -f 3 | sed 's/ //g' `
+
+echo
+echo "New ID for instance $instance: $newid"
+
+for ip in $float_ips
+do
+ echo "Adding floating ip $ip to $newid"
+ nova add-floating-ip $newid $ip
+done
+
+nova list
+
+echo
+echo "Hang on and wait for the new instance (ID $newid) to finish building before you try to login !"
+