summaryrefslogtreecommitdiffstats
path: root/examples/domstart.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/domstart.py')
-rwxr-xr-xexamples/domstart.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/examples/domstart.py b/examples/domstart.py
new file mode 100755
index 0000000..b14fad1
--- /dev/null
+++ b/examples/domstart.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# domstart - make sure a given domU is running, if not start it
+
+import libvirt
+import sys
+import os
+import libxml2
+import pdb
+
+# Parse the XML description of domU from FNAME
+# and return a tuple (name, xmldesc) where NAME
+# is the name of the domain, and xmldesc is the contetn of FNAME
+def read_domain(fname):
+ fp = open(fname, "r")
+ xmldesc = fp.read()
+ fp.close()
+
+ doc = libxml2.parseDoc(xmldesc)
+ name = doc.xpathNewContext().xpathEval("/domain/name")[0].content
+ return (name, xmldesc)
+
+def usage():
+ print 'Usage: %s domain.xml' % sys.argv[0]
+ print ' Check that the domain described by DOMAIN.XML is running'
+ print ' If the domain is not running, create it'
+ print ' DOMAIN.XML must be a XML description of the domain'
+ print ' in libvirt\'s XML format'
+
+if len(sys.argv) != 2:
+ usage()
+ sys.exit(2)
+
+(name, xmldesc) = read_domain(sys.argv[1])
+
+conn = libvirt.open(None)
+if conn is None:
+ print 'Failed to open connection to the hypervisor'
+ sys.exit(1)
+
+try:
+ dom = conn.lookupByName(name)
+except libvirt.libvirtError:
+ print "Starting domain %s ... " % name,
+ sys.stdout.flush()
+ dom = conn.createLinux(xmldesc, 0)
+ if dom is None:
+ print "failed"
+ sys.exit(1)
+ else:
+ print "done"