Blame virtinst-0.500.3-seclabel-comma.patch

9da8999
# HG changeset patch
9da8999
# User Cole Robinson <crobinso@redhat.com>
9da8999
# Date 1273774398 14400
9da8999
# Node ID 0911564fd0b623dc6a578926ef89dcfb6bec1de7
9da8999
# Parent  1075df76aa63c1f319eb20a58386284fca276a82
9da8999
virt-install: Handle commas in security labels
9da8999
9da8999
diff -r 1075df76aa63 -r 0911564fd0b6 tests/clitest.py
9da8999
--- a/tests/clitest.py	Wed May 12 17:34:46 2010 -0400
9da8999
+++ b/tests/clitest.py	Thu May 13 14:13:18 2010 -0400
9da8999
@@ -372,6 +372,10 @@
9da8999
         "--hvm --nodisks --pxe --security type=dynamic",
9da8999
         # --security implicit static
9da8999
         "--hvm --nodisks --pxe --security label=foobar.label",
9da8999
+        # --security static with commas 1
9da8999
+        "--hvm --nodisks --pxe --security label=foobar.label,a1,z2,b3,type=static",
9da8999
+        # --security static with commas 2
9da8999
+        "--hvm --nodisks --pxe --security label=foobar.label,a1,z2,b3",
9da8999
       ],
9da8999
 
9da8999
       "invalid": [
9da8999
diff -r 1075df76aa63 -r 0911564fd0b6 virt-install
9da8999
--- a/virt-install	Wed May 12 17:34:46 2010 -0400
9da8999
+++ b/virt-install	Thu May 13 14:13:18 2010 -0400
9da8999
@@ -185,6 +185,7 @@
9da8999
 
9da8999
     # Parse security opts
9da8999
     opts = cli.parse_optstr(secopts)
9da8999
+    arglist = secopts.split(",")
9da8999
     secmodel = virtinst.Seclabel(guest.conn)
9da8999
 
9da8999
     def get_and_clear(dictname):
9da8999
@@ -192,11 +193,31 @@
9da8999
         if opts.has_key(dictname):
9da8999
             val = opts[dictname]
9da8999
             del(opts[dictname])
9da8999
+
9da8999
         return val
9da8999
 
9da8999
+    # Beware, adding boolean options here could upset label comma handling
9da8999
     mode = get_and_clear("type")
9da8999
     label = get_and_clear("label")
9da8999
 
9da8999
+    # Try to fix up label if it contained commas
9da8999
+    if label:
9da8999
+        tmparglist = arglist[:]
9da8999
+        for idx in range(len(tmparglist)):
9da8999
+            arg = tmparglist[idx]
9da8999
+            if not arg.split("=")[0] == "label":
9da8999
+                continue
9da8999
+
9da8999
+            for arg in tmparglist[idx+1:]:
9da8999
+                if arg.count("="):
9da8999
+                    break
9da8999
+
9da8999
+                if arg:
9da8999
+                    label += "," + arg
9da8999
+                    del(opts[arg])
9da8999
+
9da8999
+            break
9da8999
+
9da8999
     if label:
9da8999
         secmodel.label = label
9da8999
         if not mode: