From 4c4bdbb8b8ae5f684142c5751f7f4f64bef0aa54 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 23 Sep 2014 14:14:21 -0400 Subject: [PATCH] cli: Allow embedding comma in kernel_args And fix can_comma for aliases --- .../compare/virt-install-arm-vexpress-f19.xml | 2 +- tests/clitest.py | 6 +++--- virtinst/cli.py | 9 +++++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/cli-test-xml/compare/virt-install-arm-vexpress-f19.xml b/tests/cli-test-xml/compare/virt-install-arm-vexpress-f19.xml index 42b394383..493de632a 100644 --- a/tests/cli-test-xml/compare/virt-install-arm-vexpress-f19.xml +++ b/tests/cli-test-xml/compare/virt-install-arm-vexpress-f19.xml @@ -8,7 +8,7 @@ hvm /f19-arm.kernel /f19-arm.initrd - console=ttyAMA0 rw root=/dev/vda3 + console=ttyAMA0,1234 rw root=/dev/vda3 /f19-arm.dtb diff --git a/tests/clitest.py b/tests/clitest.py index 3b1e47b09..36f7f625e 100644 --- a/tests/clitest.py +++ b/tests/clitest.py @@ -520,7 +520,7 @@ c.add_compare("--os-variant fedora20 --nodisks --boot network --nographics --arc c.add_compare("--os-variant fedora20 --boot fd --graphics spice --machine pc --cpu none --disk %(EXISTIMG1)s,bus=scsi --controller virtio-scsi", "kvm-machine") # kvm machine type 'pc' c.add_compare("--os-variant fedora20 --nodisks --boot fd --graphics sdl --arch sparc --machine SS-20", "qemu-sparc") # exotic arch + machine type c.add_compare("--arch armv7l --machine vexpress-a9 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,dtb=/f19-arm.dtb,extra_args=\"console=ttyAMA0 rw root=/dev/mmcblk0p3\" --disk %(EXISTIMG1)s --nographics", "arm-vexpress-plain", skip_check=support.SUPPORT_CONN_DISK_SD) -c.add_compare("--arch armv7l --machine vexpress-a15 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,dtb=/f19-arm.dtb,kernel_args=\"console=ttyAMA0 rw root=/dev/vda3\",extra_args=foo --disk %(EXISTIMG1)s --nographics --os-variant fedora19", "arm-vexpress-f19", skip_check=support.SUPPORT_CONN_VIRTIO_MMIO) +c.add_compare("--arch armv7l --machine vexpress-a15 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,dtb=/f19-arm.dtb,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\",extra_args=foo --disk %(EXISTIMG1)s --nographics --os-variant fedora19", "arm-vexpress-f19", skip_check=support.SUPPORT_CONN_VIRTIO_MMIO) c.add_compare("--arch ppc64 --machine pseries --boot network --disk %(EXISTIMG1)s --os-variant fedora20 --network none", "ppc64-pseries-f20") c.add_compare("--disk none --location /tmp/fake.iso --nonetworks", "location-iso") # Using --location iso mounting c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel6.4", "kvm-rhel6") # RHEL6 defaults @@ -752,7 +752,7 @@ c.add_valid("--paravirt --location %(TREEDIR)s") # Paravirt location c.add_valid("--paravirt --location %(TREEDIR)s --os-variant none") # Paravirt location with --os-variant none c.add_valid("--hvm --location %(TREEDIR)s --os-variant fedora12") # URL install with manual os-variant c.add_valid("--hvm --pxe --boot menu=on") # Boot menu -c.add_valid("--hvm --pxe --boot kernel=/tmp/foo1.img,initrd=/tmp/foo2.img,dtb=/tmp/foo2.dtb,kernel_args='ro quiet console=/dev/ttyS0'") # Kernel params +c.add_valid("--hvm --pxe --boot kernel=/tmp/foo1.img,initrd=/tmp/foo2.img,dtb=/tmp/foo2.dtb,extra_args='ro quiet console=/dev/ttyS0,456'") # Kernel params c.add_valid("--hvm --pxe --boot cdrom,fd,hd,network,menu=off") # Boot order c.add_valid("--hvm --boot network,hd,menu=on") # Boot w/o other install option c.add_invalid("--hvm --pxe --virt-type bogus") # Bogus virt-type @@ -763,7 +763,7 @@ c.add_invalid("--livecd") # LiveCD with no media c.add_invalid("--hvm --pxe --os-variant farrrrrrrge") # Bogus --os-variant c.add_invalid("--hvm --pxe --boot menu=foobar") c.add_invalid("--hvm --cdrom %(EXISTIMG1)s --extra-args console=ttyS0") # cdrom fail w/ extra-args -c.add_invalid("--hvm --boot kernel=%(TREEDIR)s/pxeboot/vmlinuz,initrd=%(TREEDIR)s/pxeboot/initrd.img --initrd-inject virt-install") # initrd-inject with manual kernel/initrd +c.add_invalid("--hvm --boot kernel=%(TREEDIR)s/pxeboot/vmlinuz,initrd=%(TREEDIR)s/pxeboot/initrd.img,kernel_args='foo bar' --initrd-inject virt-install") # initrd-inject with manual kernel/initrd diff --git a/virtinst/cli.py b/virtinst/cli.py index 0892d1d42..e57ffbb09 100644 --- a/virtinst/cli.py +++ b/virtinst/cli.py @@ -797,7 +797,11 @@ class VirtOptionString(object): """ self.fullopts = optstr - virtargmap = dict((arg.cliname, arg) for arg in virtargs) + virtargmap = {} + for arg in virtargs: + virtargmap[arg.cliname] = arg + for alias in arg.aliases: + virtargmap[alias] = arg # @opts: A dictionary of the mapping {cliname: val} # @orderedopts: A list of tuples (cliname: val), in the order @@ -1290,7 +1294,8 @@ class ParserBoot(VirtCLIParser): self.set_param("os.loader_type", "loader_type") self.set_param("os.nvram", "nvram") self.set_param("os.nvram_template", "nvram_template") - self.set_param("os.kernel_args", "kernel_args", aliases=["extra_args"]) + self.set_param("os.kernel_args", "kernel_args", + aliases=["extra_args"], can_comma=True) self.set_param("os.init", "init") self.set_param("os.arch", "arch") self.set_param("type", "domain_type")