[virt-tools-list] [virt-install PATCH] cli: Add --iothreads iothreadids.iothread[0-9]*.id

Athina Plaskasoviti athina.plaskasoviti at gmail.com
Tue Jun 4 15:42:59 UTC 2019


XML Mapping:

<domain>
...
<iothreadids>
  <iothread id="X"/>
  ...
</iothreadids>
...
</domain>

Signed-off-by: Athina Plaskasoviti <athina.plaskasoviti at gmail.com>
---
 .../compare/virt-install-singleton-config-2.xml      | 12 ++++++++++--
 tests/clitest.py                                     |  2 +-
 virtinst/cli.py                                      |  8 ++++++++
 virtinst/guest.py                                    | 10 +++++++++-
 4 files changed, 28 insertions(+), 4 deletions(-)

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 b680093c..c045ef52 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
@@ -9,7 +9,11 @@
       <libosinfo:os id="http://fedoraproject.org/fedora/unknown"/>
     </libosinfo:libosinfo>
   </metadata>
-  <iothreads>4</iothreads>
+  <iothreads>2</iothreads>
+  <iothreadids>
+    <iothread id="1"/>
+    <iothread id="2"/>
+  </iothreadids>
   <memory>1048576</memory>
   <currentMemory>524288</currentMemory>
   <blkiotune>
@@ -222,7 +226,11 @@
       <libosinfo:os id="http://fedoraproject.org/fedora/unknown"/>
     </libosinfo:libosinfo>
   </metadata>
-  <iothreads>4</iothreads>
+  <iothreads>2</iothreads>
+  <iothreadids>
+    <iothread id="1"/>
+    <iothread id="2"/>
+  </iothreadids>
   <memory>1048576</memory>
   <currentMemory>524288</currentMemory>
   <blkiotune>
diff --git a/tests/clitest.py b/tests/clitest.py
index a5762e50..4e9d6763 100644
--- a/tests/clitest.py
+++ b/tests/clitest.py
@@ -485,7 +485,7 @@ numa.cell1.distances.sibling0.id=0,numa.cell1.distances.sibling0.value=21,\
 cell1.distances.sibling1.id=1,cell1.distances.sibling1.value=10,\
 cache.mode=emulate,cache.level=3
 --cputune vcpupin0.vcpu=0,vcpupin0.cpuset=0-3
---iothreads iothreads=4
+--iothreads iothreads=2,iothreadids.iothread1.id=1,iothreadids.iothread2.id=2
 --metadata title=my-title,description=my-description,uuid=00000000-1111-2222-3333-444444444444,genid=e9392370-2917-565e-692b-d057f46512d6
 --boot cdrom,fd,hd,network,menu=off,loader=/foo/bar,emulator=/new/emu,bootloader=/new/bootld,rebootTimeout=3,initargs="foo=bar baz=woo"
 --idmap uid_start=0,uid_target=1000,uid_count=10,gid_start=0,gid_target=1000,gid_count=10
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 64fc9e27..73b2085a 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -2023,11 +2023,19 @@ class ParserIOThreads(VirtCLIParser):
     guest_propname = "iothreads"
     remove_first = "iothreads"
 
+    def iothreads_find_inst_cb(self, *args, **kwargs):
+        cliarg = "iothread"  # iothreads[0-9]*
+        list_propname = "iothreadids"
+        cb = self._make_find_inst_cb(cliarg, list_propname)
+        return cb(*args, **kwargs)
+
     @classmethod
     def _init_class(cls, **kwargs):
         VirtCLIParser._init_class(**kwargs)
         # Options for IOThreads config
         cls.add_arg("iothreads", "iothreads")
+        cls.add_arg("iothreadids.iothread[0-9]*.id", "id",
+                find_inst_cb=cls.iothreads_find_inst_cb)
 
 
 ###################
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 6a60583e..98893fa6 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -63,6 +63,13 @@ class _DomainDevices(XMLBuilder):
         return retlist
 
 
+class _IOThreadID(XMLBuilder):
+    XML_NAME = "iothread"
+    _XML_PROP_ORDER = ["id"]
+
+    id = XMLProperty("./@id", is_int=True)
+
+
 class Guest(XMLBuilder):
     @staticmethod
     def check_vm_collision(conn, name, do_remove):
@@ -145,7 +152,7 @@ class Guest(XMLBuilder):
     XML_NAME = "domain"
     _XML_PROP_ORDER = [
         "type", "name", "uuid", "genid", "genid_enable",
-        "title", "description", "_metadata", "iothreads",
+        "title", "description", "_metadata", "iothreads", "iothreadids",
         "maxMemory", "maxMemorySlots", "memory", "_currentMemory",
         "blkiotune", "memtune", "memoryBacking",
         "_vcpus", "vcpu_current", "vcpu_placement",
@@ -180,6 +187,7 @@ class Guest(XMLBuilder):
     name = XMLProperty("./name")
 
     iothreads = XMLProperty("./iothreads", is_int=True)
+    iothreadids = XMLChildProperty(_IOThreadID, relative_xpath="./iothreadids")
 
     def _set_currentMemory(self, val):
         if val is not None:
-- 
2.20.1




More information about the virt-tools-list mailing list