File 021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch of Package virt-manager

Subject: cli: Add --memdev target.dynamicMemslots support for virtio-mem
From: Lin Ma lma@suse.de Sun Jan 5 17:46:04 2025 +0800
Date: Wed Jan 29 10:25:37 2025 +0100:
Git: 8564ace73a9a2b596c9206d16833904be993c6c2

Libvirt supports setting dynamicMemslots attribute for virtio-mem since
v10.1.0, Let's add it into virt-install. Eg:

virt-install \
......
--vcpu 2 \
--cpu cell0.cpus=0,cell0.memory=4194304,\
cell1.cpus=1,cell1.memory=4194304 \
--memory maxMemory=65536,maxMemory.slots=8 \
--memdev model=virtio-mem,\
target.node=0,\
target.block=2048,\
target.size=8192,\
target.dynamicMemslots=yes \
......

It results in the following domain XML snippet:
    <memory model='virtio-mem'>
      <target dynamicMemslots='yes'>
        ......
    </memory>

Signed-off-by: Lin Ma <lma@suse.de>

diff --git a/tests/data/cli/compare/virt-install-memory-hotplug.xml b/tests/data/cli/compare/virt-install-memory-hotplug.xml
index 61e39ee02..37fa23328 100644
--- a/tests/data/cli/compare/virt-install-memory-hotplug.xml
+++ b/tests/data/cli/compare/virt-install-memory-hotplug.xml
@@ -123,7 +123,7 @@
       </target>
     </memory>
     <memory model="virtio-mem">
-      <target>
+      <target dynamicMemslots="yes">
         <size>524288</size>
         <node>0</node>
         <block>2048</block>
@@ -267,7 +267,7 @@
       </target>
     </memory>
     <memory model="virtio-mem">
-      <target>
+      <target dynamicMemslots="yes">
         <size>524288</size>
         <node>0</node>
         <block>2048</block>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 51a1883c4..7f3ba0c3a 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -928,7 +928,7 @@ c.add_compare("--pxe "
 "address.type=dimm,address.base=0x100000000,address.slot=1,"
 "source.pmem=on,source.alignsize=2048,target.readonly=on "
 
-"--memdev virtio-mem,target_node=0,target.block=2048,"
+"--memdev virtio-mem,target_node=0,target.block=2048,target.dynamicMemslots=yes,"
 "target_size=512,target.requested=524288,target.address_base=0x180000000 "
 
 "--memdev virtio-pmem,source.path=/tmp/virtio_pmem,"
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 43d45a508..cecf33be1 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -4502,6 +4502,7 @@ class ParserMemdev(VirtCLIParser):
         cls.add_arg("source.pmem", "source.pmem", is_onoff=True)
         cls.add_arg("source.alignsize", "source.alignsize",
                 cb=cls.set_target_size)
+        cls.add_arg("target.dynamicMemslots", "target.dynamicMemslots")
 
 
 ########################
diff --git a/virtinst/devices/memory.py b/virtinst/devices/memory.py
index edc274e00..c74d7ab9d 100644
--- a/virtinst/devices/memory.py
+++ b/virtinst/devices/memory.py
@@ -20,6 +20,7 @@ class _DeviceMemoryTarget(XMLBuilder):
     requested = XMLProperty("./requested", is_int=True)
     current = XMLProperty("./current", is_int=True)
     address_base = XMLProperty("./address/@base")
+    dynamicMemslots = XMLProperty("./@dynamicMemslots", is_yesno=True)
 
 
 class _DeviceMemorySource(XMLBuilder):
openSUSE Build Service is sponsored by