Script for automating the process of determining which VMs need to be rebooted after...
[invirt/scripts/outage.git] / crash-recovery.py
diff --git a/crash-recovery.py b/crash-recovery.py
new file mode 100755 (executable)
index 0000000..c325095
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+
+from invirt.config import structs as config
+import yaml
+import gzip
+import sys
+from subprocess import Popen, PIPE
+
+logfile = sys.argv[1]
+hostname = sys.argv[2]
+
+log = yaml.load(gzip.GzipFile(logfile))
+current = yaml.load(Popen(['remctl', config.remote.hostname, 'web', 'listvms'],
+                     stdout=PIPE).communicate()[0])
+
+was_running_cd = set([k for k,v in log.iteritems() if v['host'] == hostname and 'cdrom' in v])
+was_running = set([k for k,v in log.iteritems() if v['host'] == hostname and 'cdrom' not in v])
+is_running = set(current.keys())
+
+to_be_booted = was_running - is_running
+already_booted = was_running & is_running
+
+print "The following VMs were already rebooted by their owners:"
+print "\n".join(sorted(already_booted))
+
+print "\nThe following VMs were booted with CDROMs and cannot be automatically rebooted:"
+print "\n".join(sorted(was_running_cd))
+
+print "\nThe following VMs need to be booted:"
+print "\n".join(sorted(to_be_booted))