summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2019-05-14 10:09:57 -0400
committerCole Robinson <crobinso@redhat.com>2019-05-14 11:57:50 -0400
commitc0ddb86918393082ff9546cc604d2fde9b831a52 (patch)
treed7d4936a14113576652a46aec7769a461a0e23b5
parent5e98bfba80dc5ceb7853f3df1317b5205c6d7573 (diff)
downloadvirt-manager-c0ddb86918393082ff9546cc604d2fde9b831a52.tar.gz
tests: clitest: define XML generated from compare tests
All our virt-install/virt-clone compare tests aren't actually attempting to define the XML, meaning we could be generating bogus output. Enable it, then fix the fallout, mostly some places we are triggering libvirt XML validation
-rw-r--r--tests/cli-test-xml/compare/virt-install-many-devices.xml32
-rw-r--r--tests/cli-test-xml/compare/virt-install-memory-hotplug.xml4
-rw-r--r--tests/cli-test-xml/compare/virt-install-memory-option-backcompat.xml4
-rw-r--r--tests/cli-test-xml/compare/virt-install-singleton-config-1.xml1
-rw-r--r--tests/cli-test-xml/compare/virt-install-singleton-config-2.xml34
-rw-r--r--tests/cli-test-xml/compare/virt-install-spice-gl.xml3
-rw-r--r--tests/clitest.py54
-rwxr-xr-xvirt-install2
8 files changed, 70 insertions, 64 deletions
diff --git a/tests/cli-test-xml/compare/virt-install-many-devices.xml b/tests/cli-test-xml/compare/virt-install-many-devices.xml
index 18859a55..b7522b94 100644
--- a/tests/cli-test-xml/compare/virt-install-many-devices.xml
+++ b/tests/cli-test-xml/compare/virt-install-many-devices.xml
@@ -40,7 +40,7 @@
<boot order="2"/>
</disk>
<disk type="file" device="disk">
- <driver name="qemu" type="qcow2" discard="unmap" detect_zeroes="yes" error_policy="enospace"/>
+ <driver name="qemu" type="qcow2" discard="unmap" detect_zeroes="unmap" error_policy="enospace"/>
<source file="/dev/default-pool/new1.img"/>
<target dev="vdb" bus="virtio"/>
<readonly/>
@@ -51,10 +51,8 @@
<iotune>
<read_bytes_sec>1</read_bytes_sec>
<write_bytes_sec>5</write_bytes_sec>
- <total_bytes_sec>10</total_bytes_sec>
<read_iops_sec>2</read_iops_sec>
<write_iops_sec>6</write_iops_sec>
- <total_iops_sec>20</total_iops_sec>
</iotune>
<geometry cyls="16383" heads="16" secs="63" trans="lba"/>
<readonly/>
@@ -68,6 +66,10 @@
<driver name="qemu" type="raw" cache="none" io="native"/>
<source dev="/iscsi-pool/diskvol1"/>
<target dev="vdd" bus="virtio"/>
+ <iotune>
+ <total_bytes_sec>10</total_bytes_sec>
+ <total_iops_sec>20</total_iops_sec>
+ </iotune>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="raw"/>
@@ -81,7 +83,7 @@
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="raw"/>
- <source file="/dev/default-pool/iso-vol"/>
+ <source file="/dev/default-pool/iso-vol" startupPolicy="optional"/>
<target dev="vdf" bus="virtio"/>
</disk>
<disk type="volume" device="disk">
@@ -125,8 +127,8 @@
</disk>
<disk type="network" device="disk">
<driver name="qemu"/>
- <source protocol="qemu">
- <host transport="nbd" socket="/var/foo/bar/socket"/>
+ <source protocol="nbd">
+ <host transport="unix" socket="/var/foo/bar/socket"/>
</source>
<target dev="sdc" bus="usb" removable="on"/>
</disk>
@@ -139,7 +141,7 @@
</disk>
<disk type="network" device="disk">
<driver name="qemu" type="raw"/>
- <source protocol="gluster" name="test-volume/some/dir/test-gluster.raw" startupPolicy="optional">
+ <source protocol="gluster" name="test-volume/some/dir/test-gluster.raw">
<host name="192.168.1.100"/>
</source>
<target dev="vdl" bus="virtio"/>
@@ -148,7 +150,6 @@
<driver name="qemu"/>
<source dir="/var"/>
<target dev="fda" bus="fdc"/>
- <address type="ccw" cssid="0xfe" ssid="0" devno="01"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
@@ -243,8 +244,13 @@
<mac address="00:11:22:33:44:55"/>
<model type="virtio"/>
</interface>
+ <interface type="user">
+ <mac address="00:11:22:33:44:55"/>
+ <model type="virtio"/>
+ <address type="ccw" cssid="0xfe" ssid="0" devno="01"/>
+ </interface>
<smartcard mode="passthrough" type="spicevmc"/>
- <smartcard mode="passthrough" type="host"/>
+ <smartcard mode="host" type="tcp"/>
<smartcard mode="passthrough" type="spicevmc"/>
<smartcard mode="passthrough" type="tcp">
<source mode="bind" host="1.2.3.4" service="5678"/>
@@ -284,6 +290,9 @@
</channel>
<input type="keyboard" bus="usb"/>
<input type="tablet" bus="usb"/>
+ <tpm model="tpm-crb">
+ <backend type="emulator" version="2.0"/>
+ </tpm>
<graphics type="sdl" display=":3.4" xauth="/tmp/.Xauthority"/>
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
<image compression="off"/>
@@ -293,8 +302,8 @@
<image compression="off"/>
</graphics>
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
- <image compression="foo"/>
- <streaming mode="bar"/>
+ <image compression="glz"/>
+ <streaming mode="filter"/>
<clipboard copypaste="yes"/>
<mouse mode="client"/>
<filetransfer enable="yes"/>
@@ -374,7 +383,6 @@
<source>
<address domain="0" bus="21" slot="0" function="3"/>
</source>
- <address type="isa" iobase="0x500" irq="5"/>
</hostdev>
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
diff --git a/tests/cli-test-xml/compare/virt-install-memory-hotplug.xml b/tests/cli-test-xml/compare/virt-install-memory-hotplug.xml
index a4d72da7..d4a55743 100644
--- a/tests/cli-test-xml/compare/virt-install-memory-hotplug.xml
+++ b/tests/cli-test-xml/compare/virt-install-memory-hotplug.xml
@@ -2,8 +2,6 @@
<name>foobar</name>
<uuid>00000000-1111-2222-3333-444444444444</uuid>
<maxMemory slots="2">2097152</maxMemory>
- <memory>1048576</memory>
- <currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch="i686">hvm</type>
@@ -68,8 +66,6 @@
<name>foobar</name>
<uuid>00000000-1111-2222-3333-444444444444</uuid>
<maxMemory slots="2">2097152</maxMemory>
- <memory>1048576</memory>
- <currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch="i686">hvm</type>
diff --git a/tests/cli-test-xml/compare/virt-install-memory-option-backcompat.xml b/tests/cli-test-xml/compare/virt-install-memory-option-backcompat.xml
index c2f02942..d5a48a69 100644
--- a/tests/cli-test-xml/compare/virt-install-memory-option-backcompat.xml
+++ b/tests/cli-test-xml/compare/virt-install-memory-option-backcompat.xml
@@ -1,7 +1,7 @@
<domain type="test">
<name>foobar</name>
<uuid>00000000-1111-2222-3333-444444444444</uuid>
- <maxMemory>409600</maxMemory>
+ <maxMemory slots="1">409600</maxMemory>
<memory>307200</memory>
<currentMemory>102400</currentMemory>
<vcpu>1</vcpu>
@@ -40,7 +40,7 @@
<domain type="test">
<name>foobar</name>
<uuid>00000000-1111-2222-3333-444444444444</uuid>
- <maxMemory>409600</maxMemory>
+ <maxMemory slots="1">409600</maxMemory>
<memory>307200</memory>
<currentMemory>102400</currentMemory>
<vcpu>1</vcpu>
diff --git a/tests/cli-test-xml/compare/virt-install-singleton-config-1.xml b/tests/cli-test-xml/compare/virt-install-singleton-config-1.xml
index 0e25af9f..289feeb5 100644
--- a/tests/cli-test-xml/compare/virt-install-singleton-config-1.xml
+++ b/tests/cli-test-xml/compare/virt-install-singleton-config-1.xml
@@ -32,6 +32,7 @@
<cpu mode="custom" match="exact">
<model fallback="forbid">Broadwell</model>
<vendor>Intel</vendor>
+ <topology sockets="2" cores="2" threads="2"/>
<feature policy="require" name="vme"/>
<feature policy="require" name="ss"/>
<feature policy="require" name="f16c"/>
diff --git a/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml b/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
index 7d6cedb3..6d80785a 100644
--- a/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
+++ b/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
@@ -27,12 +27,12 @@
<nosharepages/>
<locked/>
<hugepages>
- <page size="1" unit="G" nodeset="1,2-5"/>
+ <page size="1" unit="G" nodeset="0-1"/>
</hugepages>
<access mode="shared"/>
<source type="anonymous"/>
</memoryBacking>
- <vcpu>4</vcpu>
+ <vcpu>9</vcpu>
<numatune>
<memory mode="strict" nodeset="1-3,4"/>
</numatune>
@@ -84,7 +84,7 @@
<pmu state="off"/>
<hyperv>
<reset state="on"/>
- <spinlocks state="on" retries="1234"/>
+ <spinlocks state="on" retries="5678"/>
<synic state="on"/>
</hyperv>
<vmport state="off"/>
@@ -93,7 +93,6 @@
<cpu mode="custom" match="strict">
<model>foobar</model>
<vendor>meee</vendor>
- <topology sockets="2" cores="2" threads="2"/>
<feature policy="force" name="x2apic"/>
<feature policy="force" name="x2apicagain"/>
<feature policy="require" name="reqtest"/>
@@ -139,7 +138,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15"/>
- <controller type="virtio-scsi" index="0"/>
+ <controller type="scsi" index="0" model="virtio-scsi"/>
<filesystem type="mount" accessmode="mapped">
<source dir="/foo/source"/>
<target dir="/bar/target"/>
@@ -155,19 +154,11 @@
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<input type="tablet" bus="usb"/>
- <tpm model="tpm-tis">
- <backend type="passthrough">
- <device path="/dev/tpm0"/>
- </backend>
- </tpm>
<tpm model="tpm-crb">
<backend type="passthrough">
<device path="/dev/tpm0"/>
</backend>
</tpm>
- <tpm model="tpm-crb">
- <backend type="emulator" version="2.0"/>
- </tpm>
<graphics type="vnc" port="-1"/>
<video>
<model type="qxl"/>
@@ -222,12 +213,12 @@
<nosharepages/>
<locked/>
<hugepages>
- <page size="1" unit="G" nodeset="1,2-5"/>
+ <page size="1" unit="G" nodeset="0-1"/>
</hugepages>
<access mode="shared"/>
<source type="anonymous"/>
</memoryBacking>
- <vcpu>4</vcpu>
+ <vcpu>9</vcpu>
<numatune>
<memory mode="strict" nodeset="1-3,4"/>
</numatune>
@@ -281,7 +272,7 @@
<pmu state="off"/>
<hyperv>
<reset state="on"/>
- <spinlocks state="on" retries="1234"/>
+ <spinlocks state="on" retries="5678"/>
<synic state="on"/>
</hyperv>
<vmport state="off"/>
@@ -290,7 +281,6 @@
<cpu mode="custom" match="strict">
<model>foobar</model>
<vendor>meee</vendor>
- <topology sockets="2" cores="2" threads="2"/>
<feature policy="force" name="x2apic"/>
<feature policy="force" name="x2apicagain"/>
<feature policy="require" name="reqtest"/>
@@ -336,7 +326,7 @@
<target dev="vda" bus="virtio"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15"/>
- <controller type="virtio-scsi" index="0"/>
+ <controller type="scsi" index="0" model="virtio-scsi"/>
<filesystem type="mount" accessmode="mapped">
<source dir="/foo/source"/>
<target dir="/bar/target"/>
@@ -352,19 +342,11 @@
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<input type="tablet" bus="usb"/>
- <tpm model="tpm-tis">
- <backend type="passthrough">
- <device path="/dev/tpm0"/>
- </backend>
- </tpm>
<tpm model="tpm-crb">
<backend type="passthrough">
<device path="/dev/tpm0"/>
</backend>
</tpm>
- <tpm model="tpm-crb">
- <backend type="emulator" version="2.0"/>
- </tpm>
<graphics type="vnc" port="-1"/>
<video>
<model type="qxl"/>
diff --git a/tests/cli-test-xml/compare/virt-install-spice-gl.xml b/tests/cli-test-xml/compare/virt-install-spice-gl.xml
index 1723cf1d..a8f4fd5d 100644
--- a/tests/cli-test-xml/compare/virt-install-spice-gl.xml
+++ b/tests/cli-test-xml/compare/virt-install-spice-gl.xml
@@ -62,5 +62,8 @@
<source master="/dev/foo1" slave="/dev/foo2"/>
</backend>
</rng>
+ <panic model="isa">
+ <address type="isa" iobase="0x500" irq="5"/>
+ </panic>
</devices>
</domain>
diff --git a/tests/clitest.py b/tests/clitest.py
index 8d16e98b..85f6338f 100644
--- a/tests/clitest.py
+++ b/tests/clitest.py
@@ -224,6 +224,20 @@ class Command(object):
utils.diff_compare(output, filename)
+ # Define the <domain>s generated for compare output, to ensure
+ # we are generating valid XML
+ if "--print-xml" in self.argv or "--print-step" in self.argv:
+ for domxml in output.split("</domain>"):
+ if "<domain" not in domxml:
+ continue
+ domxml = domxml + "</domain>"
+ try:
+ dom = conn.defineXML(domxml)
+ dom.undefine()
+ except Exception as e:
+ raise AssertionError("Bad XML:\n%s\n\nError was: %s: %s" %
+ (domxml, e.__class__.__name__, str(e)))
+
def _run(self, tests):
conn = None
for idx in reversed(range(len(self.argv))):
@@ -392,7 +406,7 @@ c = vinst.add_category("xml-comparsion", "--connect %(URI-KVM)s --noautoconsole
# Singleton element test #1, for simpler strings
c.add_compare(""" \
--memory 1024 \
---vcpus 4 --cpuset=1,3-5 \
+--vcpus 4,cores=2,threads=2,sockets=2 --cpuset=1,3-5 \
--cpu host-copy \
--description \"foobar & baz\" \
--boot uefi,smbios_mode=emulate \
@@ -424,7 +438,7 @@ c.add_compare(""" \
# Singleton element test #2, for complex strings
c.add_compare("""--pxe \
--memory 512,maxmemory=1024 \
---vcpus 4,cores=2,threads=2,sockets=2 \
+--vcpus 9 \
--cpu foobar,+x2apic,+x2apicagain,-distest,forbid=foo,forbid=bar,disable=distest2,optional=opttest,require=reqtest,match=strict,vendor=meee,\
cell.id=0,cell.cpus=1,2,3,cell.memory=1024,\
cell1.id=1,cell1.memory=256,cell1.cpus=5-8,\
@@ -441,8 +455,8 @@ cache.mode=emulate,cache.level=3 \
--numatune 1-3,4,mode=strict \
--memtune hard_limit=10,soft_limit=20,swap_hard_limit=30,min_guarantee=40 \
--blkiotune weight=100,device_path=/home/test/1.img,device_weight=200 \
---memorybacking size=1,unit='G',nodeset='1,2-5',nosharepages=yes,locked=yes,access_mode=shared,source_type=anonymous \
---features acpi=off,eoi=on,privnet=on,hyperv_synic=on,hyperv_reset=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=1234,vmport=off,pmu=off,vmcoreinfo=on \
+--memorybacking size=1,unit='G',nodeset=0-1,nosharepages=yes,locked=yes,access_mode=shared,source_type=anonymous \
+--features acpi=off,eoi=on,privnet=on,hyperv_synic=on,hyperv_reset=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=5678,vmport=off,pmu=off,vmcoreinfo=on \
--clock offset=utc,hpet_present=no,rtc_tickpolicy=merge,timer2.name=hypervclock,timer3.name=pit,timer1.present=yes,timer3.tickpolicy=delay,timer2.present=no \
--sysinfo type=smbios,bios_vendor="Acme LLC",bios_version=1.2.3,bios_date=01/01/1970,bios_release=10.22 \
--sysinfo type=smbios,system_manufacturer="Acme Inc.",system_product=Computer,system_version=3.2.1,system_serial=123456789,system_uuid=00000000-1111-2222-3333-444444444444,system_sku=abc-123,system_family=Server \
@@ -452,14 +466,12 @@ cache.mode=emulate,cache.level=3 \
--events on_poweroff=destroy,on_reboot=restart,on_crash=preserve,on_lockfailure=ignore \
\
--controller usb3 \
---controller virtio-scsi \
+--controller scsi,model=virtio-scsi \
--graphics vnc \
--filesystem /foo/source,/bar/target \
--memballoon virtio \
--watchdog ib700,action=pause \
---tpm passthrough,model=tpm-tis,path=/dev/tpm0 \
--tpm passthrough,model=tpm-crb,path=/dev/tpm0 \
---tpm emulator,model=tpm-crb,version=2.0 \
--rng egd,backend_host=127.0.0.1,backend_service=8000,backend_type=udp,backend_mode=bind,backend_connect_host=foo,backend_connect_service=708 \
--panic iobase=0x506 \
""", "singleton-config-2")
@@ -472,21 +484,21 @@ c.add_compare(""" \
--cpu none \
\
--disk /dev/default-pool/UPPER,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149,boot_order=2 \
---disk %(NEWIMG1)s,sparse=false,size=.001,perms=ro,error_policy=enospace,discard=unmap,detect_zeroes=yes \
---disk device=cdrom,bus=sata,read_bytes_sec=1,read_iops_sec=2,total_bytes_sec=10,total_iops_sec=20,write_bytes_sec=5,write_iops_sec=6,driver.copy_on_read=on,geometry.cyls=16383,geometry.heads=16,geometry.secs=63,geometry.trans=lba \
+--disk %(NEWIMG1)s,sparse=false,size=.001,perms=ro,error_policy=enospace,discard=unmap,detect_zeroes=unmap \
+--disk device=cdrom,bus=sata,read_bytes_sec=1,read_iops_sec=2,write_bytes_sec=5,write_iops_sec=6,driver.copy_on_read=on,geometry.cyls=16383,geometry.heads=16,geometry.secs=63,geometry.trans=lba \
--disk size=1 \
---disk /iscsi-pool/diskvol1 \
+--disk /iscsi-pool/diskvol1,total_bytes_sec=10,total_iops_sec=20 \
--disk /dev/default-pool/iso-vol,seclabel.model=dac,seclabel1.model=selinux,seclabel1.relabel=no,seclabel0.label=foo,bar,baz \
---disk /dev/default-pool/iso-vol,format=qcow2 \
+--disk /dev/default-pool/iso-vol,format=qcow2,startup_policy=optional \
--disk source_pool=rbd-ceph,source_volume=some-rbd-vol,size=.1,driver_type=raw \
--disk pool=rbd-ceph,size=.1 \
--disk source_protocol=http,source_host_name=example.com,source_host_port=8000,source_name=/path/to/my/file \
--disk source_protocol=nbd,source_host_transport=unix,source_host_socket=/tmp/socket,bus=scsi,logical_block_size=512,physical_block_size=512 \
--disk gluster://192.168.1.100/test-volume/some/dir/test-gluster.qcow2 \
---disk qemu+nbd:///var/foo/bar/socket,bus=usb,removable=on \
+--disk nbd+unix:///var/foo/bar/socket,bus=usb,removable=on \
--disk path=http://[1:2:3:4:1:2:3:4]:5522/my/path?query=foo \
---disk vol=gluster-pool/test-gluster.raw,startup_policy=optional \
---disk /var,device=floppy,address.type=ccw,address.cssid=0xfe,address.ssid=0,address.devno=01 \
+--disk vol=gluster-pool/test-gluster.raw \
+--disk /var,device=floppy
--disk %(NEWIMG2)s,size=1,backing_store=/tmp/foo.img,backing_format=vmdk \
--disk /tmp/brand-new.img,size=1,backing_store=/dev/default-pool/iso-vol \
--disk path=/dev/disk-pool/diskvol7,device=lun,bus=scsi,reservations.managed=no,reservations.source.type=unix,reservations.source.path=/var/run/test/pr-helper0.sock,reservations.source.mode=client \
@@ -497,12 +509,13 @@ c.add_compare(""" \
--network type=direct,source=eth5,source_mode=vepa,target=mytap12,virtualport_type=802.1Qbg,virtualport_managerid=12,virtualport_typeid=1193046,virtualport_typeidversion=1,virtualport_instanceid=09b11c53-8b5c-4eeb-8f00-d84eaa0aaa3b,boot_order=1,trustGuestRxFilters=yes,mtu.size=1500 \
--network user,model=virtio,address.type=spapr-vio,address.reg=0x500 \
--network vhostuser,source_type=unix,source_path=/tmp/vhost1.sock,source_mode=server,model=virtio \
+--network user,address.type=ccw,address.cssid=0xfe,address.ssid=0,address.devno=01 \
\
--graphics sdl \
--graphics spice,keymap=none \
--graphics vnc,port=5950,listen=1.2.3.4,keymap=ja,password=foo \
--graphics spice,port=5950,tlsport=5950,listen=1.2.3.4,keymap=ja \
---graphics spice,image_compression=foo,streaming_mode=bar,clipboard_copypaste=yes,mouse_mode=client,filetransfer_enable=on \
+--graphics spice,image_compression=glz,streaming_mode=filter,clipboard_copypaste=yes,mouse_mode=client,filetransfer_enable=on \
--graphics spice,gl=yes,listen=socket \
--graphics spice,gl=yes,listen=none \
--graphics spice,gl=yes,listen=none,rendernode=/dev/dri/foo \
@@ -534,7 +547,7 @@ c.add_compare(""" \
--host-device 001.003 \
--hostdev 15:0.1 \
--host-device 2:15:0.2 \
---hostdev 0:15:0.3,address.type=isa,address.iobase=0x500,address.irq=5 \
+--hostdev 0:15:0.3 \
--host-device 0x0781:0x5151,driver_name=vfio \
--host-device 04b3:4485 \
--host-device pci_8086_2829_scsi_host_scsi_device_lun0 \
@@ -553,7 +566,7 @@ c.add_compare(""" \
--video model=qxl,vgamem=1,ram=2,vram=3,heads=4,accel3d=yes,vram64=65 \
\
--smartcard passthrough,type=spicevmc \
---smartcard type=host \
+--smartcard mode=host \
--smartcard default \
--smartcard passthrough,type=tcp,source.mode=bind,source.host=1.2.3.4,source.service=5678,protocol.type=telnet
\
@@ -569,6 +582,8 @@ c.add_compare(""" \
\
--vsock cid=17 \
\
+--tpm emulator,model=tpm-crb,version=2.0 \
+\
--qemu-commandline env=DISPLAY=:0.1 \
--qemu-commandline="-display gtk,gl=on" \
--qemu-commandline="-device vfio-pci,addr=05.0,sysfsdev=/sys/class/mdev_bus/0000:00:02.0/f321853c-c584-4a6b-b99a-3eee22a3919c" \
@@ -581,6 +596,7 @@ c.add_compare(""" \
--disk none \
--graphics spice,gl=yes \
--rng egd,backend.type=nmdm,backend.source.master=/dev/foo1,backend.source.slave=/dev/foo2 \
+--panic default,,address.type=isa,address.iobase=0x500,address.irq=5 \
""", "spice-gl")
@@ -610,8 +626,8 @@ c.add_valid("--security label=foobar.label,a1,z2,b3") # --security static with
c.add_invalid("--clock foo_tickpolicy=merge") # Unknown timer
c.add_invalid("--security foobar") # Busted --security
c.add_compare("--cpuset auto --vcpus 2", "cpuset-auto") # --cpuset=auto actually works
-c.add_compare("--memory 1024,hotplugmemorymax=2048,hotplugmemoryslots=2 --cpu cell0.cpus=0,cell0.memory=1048576 --memdev dimm,access=private,target_size=512,target_node=0,source_pagesize=4,source_nodemask=1-2 --memdev nvdimm,source_path=/path/to/nvdimm,target_size=512,target_node=0,target_label_size=128", "memory-hotplug")
-c.add_compare("--memory currentMemory=100,memory=200,maxmemory=300,maxMemory=400", "memory-option-backcompat")
+c.add_compare("--memory hotplugmemorymax=2048,hotplugmemoryslots=2 --cpu cell0.cpus=0,cell0.memory=1048576 --memdev dimm,access=private,target_size=512,target_node=0,source_pagesize=4,source_nodemask=1-2 --memdev nvdimm,source_path=/path/to/nvdimm,target_size=512,target_node=0,target_label_size=128", "memory-hotplug")
+c.add_compare("--memory currentMemory=100,memory=200,maxmemory=300,maxMemory=400,maxMemory.slots=1", "memory-option-backcompat")
c.add_compare("--connect " + utils.URIs.kvm_q35 + " --cpu qemu64,secure=off", "cpu-disable-sec") # disable security features that are added by default
c.add_compare("--connect " + utils.URIs.kvm_rhel, "cpu-rhel7-default") # default CPU for old QEMU where we cannot use host-model
diff --git a/virt-install b/virt-install
index e5647131..e0659a40 100755
--- a/virt-install
+++ b/virt-install
@@ -320,7 +320,7 @@ def validate_required_options(options, guest, installer):
if not guest.name:
msg += "\n" + _("--name is required")
- if not guest.memory:
+ if not guest.memory and not guest.cpu.cells:
msg += "\n" + _("--memory amount in MiB is required")
if (not guest.os.is_container() and