[libvirt] [PATCH sandbox v5 13/20] Image: Add run function

Daniel P. Berrange berrange at redhat.com
Tue Sep 8 16:29:44 UTC 2015


From: Eren Yagdiran <erenyagdiran at gmail.com>

Run an already-built template
If there is no execution command specified by user, source.get_command will
find the command to invoke

Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
---
 libvirt-sandbox/image/cli.py | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/libvirt-sandbox/image/cli.py b/libvirt-sandbox/image/cli.py
index 2672a20..a06eb9c 100755
--- a/libvirt-sandbox/image/cli.py
+++ b/libvirt-sandbox/image/cli.py
@@ -31,6 +31,8 @@ import shutil
 import sys
 import urllib2
 import subprocess
+import random
+import string
 
 if os.geteuid() == 0:
     default_template_dir = "/var/lib/libvirt/templates"
@@ -97,6 +99,37 @@ def create(args):
     except Exception,e:
         print "Create Error %s" % str(e)
 
+def run(args):
+    try:
+        if args.connect is not None:
+            check_connect(args.connect)
+        source = dynamic_source_loader(args.source)
+        name = args.name
+        if name is None:
+            randomid = ''.join(random.choice(string.lowercase) for i in range(10))
+            name = args.template + ":" + randomid
+
+        diskfile = source.get_disk(templatename=args.template,
+                                   templatedir=args.template_dir,
+                                   imagedir=args.image_dir,
+                                   sandboxname=name)
+
+        format = "qcow2"
+        commandToRun = source.get_command(args.template, args.template_dir, args.args)
+        if len(commandToRun) == 0:
+            commandToRun = ["/bin/sh"]
+        cmd = ['virt-sandbox', '--name', name]
+        if args.connect is not None:
+            cmd.append("-c")
+            cmd.append(args.connect)
+        params = ['-m','host-image:/=%s,format=%s' %(diskfile,format)]
+        cmd = cmd + params + ['--'] + commandToRun
+        subprocess.call(cmd)
+        os.unlink(diskfile)
+
+    except Exception,e:
+        print "Run Error %s" % str(e)
+
 def requires_template(parser):
     parser.add_argument("template",
                         help=_("name of the template"))
-- 
2.4.3




More information about the libvir-list mailing list