Compare commits
3 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 1722193eb5 | |||
| 049349bc0a | |||
| 243dbccbc5 |
32
010-virtManager-domain-fix-indentation.patch
Normal file
32
010-virtManager-domain-fix-indentation.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
Subject: virtManager: domain: fix indentation
|
||||
From: Pavel Hrdina phrdina@redhat.com Wed Jan 29 10:50:03 2025 +0100
|
||||
Date: Wed Jan 29 10:50:03 2025 +0100:
|
||||
Git: 5ddd3456a0ca9836a98fc6ca4f0b2eaab268bf47
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
|
||||
index 5aade01d8..51aae4d8c 100644
|
||||
--- a/virtManager/object/domain.py
|
||||
+++ b/virtManager/object/domain.py
|
||||
@@ -1157,14 +1157,13 @@ class vmmDomain(vmmLibvirtObject):
|
||||
return self._snapshot_list[:]
|
||||
|
||||
def get_current_snapshot(self):
|
||||
+ if self._backend.hasCurrentSnapshot(0):
|
||||
+ rawsnap = self._backend.snapshotCurrent(0)
|
||||
+ obj = vmmDomainSnapshot(self.conn, rawsnap)
|
||||
+ obj.init_libvirt_state()
|
||||
+ return obj
|
||||
|
||||
- if self._backend.hasCurrentSnapshot(0):
|
||||
- rawsnap = self._backend.snapshotCurrent(0)
|
||||
- obj = vmmDomainSnapshot(self.conn, rawsnap)
|
||||
- obj.init_libvirt_state()
|
||||
- return obj
|
||||
-
|
||||
- return None
|
||||
+ return None
|
||||
|
||||
@vmmLibvirtObject.lifecycle_action
|
||||
def revert_to_snapshot(self, snap):
|
||||
@@ -0,0 +1,88 @@
|
||||
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):
|
||||
@@ -0,0 +1,90 @@
|
||||
Subject: cli: add target.memReserve for pci-bridge and pcie-root-port controllers
|
||||
From: Lin Ma lma@suse.de Sun Jan 5 17:47:20 2025 +0800
|
||||
Date: Wed Jan 29 10:25:37 2025 +0100:
|
||||
Git: 79c333e3643cdef3a24672f4b6f0f34d5aa178fd
|
||||
|
||||
Libvirt(since v10.3.0) supports setting memReserve attribute to pci-bridge
|
||||
and pcie-root-port, Let's add it into virt-install. Eg:
|
||||
|
||||
virt-install \
|
||||
......
|
||||
--controller pci,index=0,model=pcie-root \
|
||||
--controller pci,index=1,model=pcie-root-port,target.memReserve=8196 \
|
||||
--controller pci,index=2,model=dmi-to-pci-bridge \
|
||||
--controller pci,index=3,model=pci-bridge,target.memReserve=8196 \
|
||||
......
|
||||
|
||||
It results in the following domain XML snippet:
|
||||
<controller type='pci' index='0' model='pcie-root'>
|
||||
<alias name='pcie.0'/>
|
||||
</controller>
|
||||
<controller type='pci' index='1' model='pcie-root-port'>
|
||||
<model name='pcie-root-port'/>
|
||||
<target chassis='1' port='0x10' memReserve='8196'/>
|
||||
<alias name='pci.1'/>
|
||||
<address type='pci' ....../>
|
||||
</controller>
|
||||
<controller type='pci' index='2' model='dmi-to-pci-bridge'>
|
||||
<model name='i82801b11-bridge'/>
|
||||
<alias name='pci.2'/>
|
||||
<address type='pci' ....../>
|
||||
</controller>
|
||||
<controller type='pci' index='3' model='pci-bridge'>
|
||||
<model name='pci-bridge'/>
|
||||
<target chassisNr='3' memReserve='8196'/>
|
||||
<alias name='pci.3'/>
|
||||
<address type='pci' ....../>
|
||||
</controller>
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index 251dc1cb3..d91e4c849 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -483,7 +483,7 @@
|
||||
<target index="1"/>
|
||||
</controller>
|
||||
<controller type="pci" index="2" model="pci-bridge">
|
||||
- <target chassisNr="1"/>
|
||||
+ <target chassisNr="1" memReserve="8196"/>
|
||||
</controller>
|
||||
<controller type="pci" index="3" model="pci-expander-bus">
|
||||
<target busNr="252">
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 7f3ba0c3a..4a980dbac 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -685,7 +685,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--controller xenbus,maxGrantFrames=64
|
||||
--controller pci,index=0,model=pcie-root-port,target.chassis=1,target.port=1,target.hotplug=off
|
||||
--controller pci,index=1,model=pci-root,target.index=1
|
||||
---controller pci,index=2,model=pci-bridge,target.chassisNr=1
|
||||
+--controller pci,index=2,model=pci-bridge,target.chassisNr=1,target.memReserve=8196
|
||||
--controller pci,index=3,model=pci-expander-bus,target.busNr=252,target.node=1
|
||||
--controller usb3
|
||||
--controller scsi,model=virtio-scsi
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index cecf33be1..33235bf37 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -4199,6 +4199,7 @@ class ParserController(VirtCLIParser):
|
||||
cls.add_arg("target.busNr", "target_busNr")
|
||||
cls.add_arg("target.index", "target_index")
|
||||
cls.add_arg("target.node", "target_node")
|
||||
+ cls.add_arg("target.memReserve", "target_memReserve")
|
||||
|
||||
cls.add_arg("address", None, lookup_cb=None, cb=cls.set_address_cb)
|
||||
cls.add_arg("num_pcie_root_ports", None, lookup_cb=None, cb=cls.noset_cb)
|
||||
diff --git a/virtinst/devices/controller.py b/virtinst/devices/controller.py
|
||||
index 57c94fe48..c45b8e08d 100644
|
||||
--- a/virtinst/devices/controller.py
|
||||
+++ b/virtinst/devices/controller.py
|
||||
@@ -85,6 +85,7 @@ class DeviceController(Device):
|
||||
target_busNr = XMLProperty("./target/@busNr", is_int=True)
|
||||
target_index = XMLProperty("./target/@index", is_int=True)
|
||||
target_node = XMLProperty("./target/node", is_int=True)
|
||||
+ target_memReserve = XMLProperty("./target/@memReserve", is_int=True)
|
||||
|
||||
def _get_attached_disk_devices(self, guest):
|
||||
ret = []
|
||||
73
023-cli-Add-disk-driver.queue_size-support.patch
Normal file
73
023-cli-Add-disk-driver.queue_size-support.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
Subject: cli: Add --disk driver.queue_size support
|
||||
From: Lin Ma lma@suse.de Sun Jan 5 17:49:34 2025 +0800
|
||||
Date: Wed Jan 29 10:25:37 2025 +0100:
|
||||
Git: 36d00e0e79f3d845522201c4a353d5a529af82a7
|
||||
|
||||
Eg:
|
||||
virt-install \
|
||||
......
|
||||
--disk /tmp/disk0.qcow2,size=10,driver.type=qcow2,\
|
||||
driver.queues=4,driver.queue_size=256 \
|
||||
......
|
||||
|
||||
It results in the following domain XML snippet:
|
||||
<disk type='file' device='disk'>
|
||||
<driver name='qemu' type='qcow2' queues='4' queue_size='256'/>
|
||||
<source file='/tmp/disk0.qcow2' index='2'/>
|
||||
<backingStore/>
|
||||
<target dev='vda' bus='virtio'/>
|
||||
<address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
|
||||
</disk>
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index d91e4c849..eb26d316b 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -231,7 +231,7 @@
|
||||
<devices>
|
||||
<emulator>/new/emu</emulator>
|
||||
<disk type="block" device="disk">
|
||||
- <driver name="qemu" type="raw" cache="writeback" discard="unmap" io="threads" iothread="3" queues="8"/>
|
||||
+ <driver name="qemu" type="raw" cache="writeback" discard="unmap" io="threads" iothread="3" queues="8" queue_size="256"/>
|
||||
<source dev="/pool-dir/UPPER"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<serial>WD-WMAP9A966149</serial>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 4a980dbac..071a17bee 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -610,7 +610,7 @@ msrs.unknown=ignore
|
||||
--sysinfo bios.vendor="Acme LLC",bios.version=1.2.3,bios.date=01/01/1970,bios.release=10.22,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,baseBoard.manufacturer="Acme Corp.",baseBoard.product=Motherboard,baseBoard.version=A01,baseBoard.serial=1234-5678,baseBoard.asset=Tag,baseBoard.location=Chassis
|
||||
|
||||
|
||||
---disk type=block,source.dev=/pool-dir/UPPER,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149,wwn=123456789abcdefa,boot_order=2,driver.iothread=3,driver.queues=8
|
||||
+--disk type=block,source.dev=/pool-dir/UPPER,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149,wwn=123456789abcdefa,boot_order=2,driver.iothread=3,driver.queues=8,driver.queue_size=256
|
||||
--disk source.file=%(NEWIMG1)s,sparse=false,size=.001,perms=ro,error_policy=enospace,detect_zeroes=unmap,address.type=drive,address.controller=0,address.target=2,address.unit=0
|
||||
--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,discard=ignore
|
||||
--disk size=1
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 33235bf37..7df2e365f 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -3778,6 +3778,7 @@ class ParserDisk(VirtCLIParser):
|
||||
cls.add_arg("driver.queues", "driver_queues")
|
||||
cls.add_arg("driver.error_policy", "error_policy")
|
||||
cls.add_arg("driver.discard_no_unref", "driver_discard_no_unref", is_onoff=True)
|
||||
+ cls.add_arg("driver.queue_size", "driver_queue_size")
|
||||
|
||||
cls.add_arg("driver.metadata_cache.max_size",
|
||||
"driver_metadata_cache_max_size")
|
||||
diff --git a/virtinst/devices/disk.py b/virtinst/devices/disk.py
|
||||
index 1f9358b84..9370fcd87 100644
|
||||
--- a/virtinst/devices/disk.py
|
||||
+++ b/virtinst/devices/disk.py
|
||||
@@ -509,6 +509,7 @@ class DeviceDisk(Device):
|
||||
driver_iothread = XMLProperty("./driver/@iothread", is_int=True)
|
||||
driver_queues = XMLProperty("./driver/@queues", is_int=True)
|
||||
driver_discard_no_unref = XMLProperty("./driver/@discard_no_unref", is_onoff=True)
|
||||
+ driver_queue_size = XMLProperty("./driver/@queue_size", is_int=True)
|
||||
|
||||
driver_metadata_cache_max_size = XMLProperty(
|
||||
"./driver/metadata_cache/max_size", is_int=True)
|
||||
89
024-cli-Add-poll-settings-for-iothread.patch
Normal file
89
024-cli-Add-poll-settings-for-iothread.patch
Normal file
@@ -0,0 +1,89 @@
|
||||
Subject: cli: Add 'poll' settings for iothread
|
||||
From: Lin Ma lma@suse.de Sun Jan 5 17:50:42 2025 +0800
|
||||
Date: Wed Jan 29 10:25:37 2025 +0100:
|
||||
Git: a7c455f4600c6a35820c435d34f05b8b4a513611
|
||||
|
||||
Since libvirt v9.4.0, It introduces 'poll' settings in domain XML to
|
||||
override the hypervisor-default interval of polling for iothread.
|
||||
|
||||
Let's add it into virt-install.
|
||||
Eg:
|
||||
virt-install \
|
||||
...... \
|
||||
--iothreads iothreads=2,\
|
||||
iothreadids.iothread0.id=1,\
|
||||
iothreadids.iothread1.id=2,\
|
||||
iothreadids.iothread1.poll.max=123,\
|
||||
iothreadids.iothread1.poll.grow=456,\
|
||||
iothreadids.iothread1.poll.shrink=789
|
||||
|
||||
It results in the following domain XML snippet:
|
||||
<iothreads>2</iothreads>
|
||||
<iothreadids>
|
||||
<iothread id='1'/>
|
||||
<iothread id='2'>
|
||||
<poll max='123' grow='456' shrink='789'/>
|
||||
</iothread>
|
||||
</iothreadids>
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index eb26d316b..a841a380f 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -12,7 +12,9 @@
|
||||
<iothreads>5</iothreads>
|
||||
<iothreadids>
|
||||
<iothread id="1"/>
|
||||
- <iothread id="2" thread_pool_min="8" thread_pool_max="16"/>
|
||||
+ <iothread id="2" thread_pool_min="8" thread_pool_max="16">
|
||||
+ <poll max="123" grow="456" shrink="789"/>
|
||||
+ </iothread>
|
||||
</iothreadids>
|
||||
<defaultiothread thread_pool_min="4" thread_pool_max="32"/>
|
||||
<memory>65536</memory>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 071a17bee..7f984cf1b 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -557,7 +557,7 @@ memorytune0.vcpus=0-3,memorytune0.node0.id=0,memorytune0.node0.bandwidth=60
|
||||
--memorybacking size=1,unit='G',nodeset=0,1,nosharepages=yes,locked=yes,discard=yes,allocation.mode=immediate,access_mode=shared,source_type=file,hugepages.page.size=12,hugepages.page1.size=1234,hugepages.page1.unit=MB,hugepages.page1.nodeset=2,allocation.threads=8
|
||||
|
||||
|
||||
---iothreads iothreads=5,iothreadids.iothread0.id=1,iothreadids.iothread1.id=2,iothreadids.iothread1.thread_pool_min=8,iothreadids.iothread1.thread_pool_max=16,defaultiothread.thread_pool_min=4,defaultiothread.thread_pool_max=32
|
||||
+--iothreads iothreads=5,iothreadids.iothread0.id=1,iothreadids.iothread1.id=2,iothreadids.iothread1.thread_pool_min=8,iothreadids.iothread1.thread_pool_max=16,iothreadids.iothread1.poll.max=123,iothreadids.iothread1.poll.grow=456,iothreadids.iothread1.poll.shrink=789,defaultiothread.thread_pool_min=4,defaultiothread.thread_pool_max=32
|
||||
|
||||
|
||||
--metadata title=my-title,description=my-description,uuid=00000000-1111-2222-3333-444444444444,genid=e9392370-2917-565e-692b-d057f46512d6,genid_enable=yes
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 7df2e365f..fa6145e8c 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -2693,6 +2693,12 @@ class ParserIOThreads(VirtCLIParser):
|
||||
find_inst_cb=cls.defaultiothread_find_inst_cb)
|
||||
cls.add_arg("defaultiothread.thread_pool_max", "thread_pool_max",
|
||||
find_inst_cb=cls.defaultiothread_find_inst_cb)
|
||||
+ cls.add_arg("iothreadids.iothread[0-9]*.poll.max",
|
||||
+ "max", find_inst_cb=cls.iothreads_find_inst_cb)
|
||||
+ cls.add_arg("iothreadids.iothread[0-9]*.poll.grow",
|
||||
+ "grow", find_inst_cb=cls.iothreads_find_inst_cb)
|
||||
+ cls.add_arg("iothreadids.iothread[0-9]*.poll.shrink",
|
||||
+ "shrink", find_inst_cb=cls.iothreads_find_inst_cb)
|
||||
|
||||
|
||||
###################
|
||||
diff --git a/virtinst/guest.py b/virtinst/guest.py
|
||||
index 567359073..ae76a1287 100644
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -72,6 +72,9 @@ class _IOThreadID(XMLBuilder):
|
||||
id = XMLProperty("./@id", is_int=True)
|
||||
thread_pool_min = XMLProperty("./@thread_pool_min", is_int=True)
|
||||
thread_pool_max = XMLProperty("./@thread_pool_max", is_int=True)
|
||||
+ max = XMLProperty("./poll/@max", is_int=True)
|
||||
+ grow = XMLProperty("./poll/@grow", is_int=True)
|
||||
+ shrink = XMLProperty("./poll/@shrink", is_int=True)
|
||||
|
||||
|
||||
class _DefaultIOThread(XMLBuilder):
|
||||
34
025-test_cli-Fix-a-pycodestyle-E261-issue.patch
Normal file
34
025-test_cli-Fix-a-pycodestyle-E261-issue.patch
Normal file
@@ -0,0 +1,34 @@
|
||||
Subject: test_cli: Fix a pycodestyle E261 issue
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:38:49 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: 006ce4157665fd183ddb4a933a2c94de217302d4
|
||||
|
||||
root@localhost:~ # meson test -C build
|
||||
|
||||
==================================== 1/3 =========================
|
||||
test: pycodestyle
|
||||
start time: 14:08:14
|
||||
duration: 5.80s
|
||||
result: exit status 1
|
||||
command: MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:...... \
|
||||
/usr/bin/pycodestyle \
|
||||
--config setup.cfg --format pylint tests virtinst virtManager
|
||||
----------------------------------- stdout -----------------------------------
|
||||
tests/test_cli.py:1157: [E261] at least two spaces before inline comment
|
||||
......
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 7f984cf1b..5fc0a1c2f 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -1153,7 +1153,7 @@ c.add_compare("--os-variant http://fedoraproject.org/fedora/20 --disk %(EXISTIMG
|
||||
c.add_compare("--cdrom %(EXISTIMG2)s --file %(EXISTIMG1)s --os-variant win2k3 --sound --controller usb", "kvm-win2k3-cdrom") # HVM windows install with disk
|
||||
c.add_compare("--os-variant name=ubuntusaucy --nodisks --boot cdrom --virt-type qemu --cpu Penryn --input tablet --boot uefi --graphics vnc", "qemu-plain") # plain qemu
|
||||
c.add_compare("--os-variant fedora20 --nodisks --boot network --graphics default --arch i686 --rng none", "qemu-32-on-64", prerun_check=has_old_osinfo) # 32 on 64
|
||||
-c.add_compare("--osinfo linux2020 --pxe --cpu maximum", "linux2020", prerun_check=no_osinfo_linux2020_virtio) # also --cpu maximum
|
||||
+c.add_compare("--osinfo linux2020 --pxe --cpu maximum", "linux2020", prerun_check=no_osinfo_linux2020_virtio) # also --cpu maximum
|
||||
c.add_compare("--check disk_size=off --osinfo win11 --cdrom %(EXISTIMG1)s", "win11", prerun_check=no_osinfo_win11)
|
||||
c.add_compare("--check disk_size=off --osinfo win11 --cdrom %(EXISTIMG1)s --boot uefi=off", "win11-no-uefi")
|
||||
c.add_compare("--osinfo generic --disk none --location %(ISO-NO-OS)s,kernel=frib.img,initrd=/frob.img", "location-manual-kernel", prerun_check=missing_xorriso) # --location with an unknown ISO but manually specified kernel paths
|
||||
17
026-gitignore-Ignore-coverage.xml.patch
Normal file
17
026-gitignore-Ignore-coverage.xml.patch
Normal file
@@ -0,0 +1,17 @@
|
||||
Subject: .gitignore: Ignore coverage.xml
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:41:07 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: 926385994486fde63dc092814ab793c53ed3f275
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 89ad8a166..d303c1afb 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -7,3 +7,5 @@
|
||||
/.coverage
|
||||
|
||||
/data/gschemas.compiled
|
||||
+
|
||||
+/coverage.xml
|
||||
@@ -0,0 +1,109 @@
|
||||
Subject: cli: Add --tpm backend.profile.{source,removeDisabled} support
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:44:58 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: f278c89b49bc4d1e46c8149fb0f1674d801b51c5
|
||||
|
||||
Swtpm since v0.10 supports to configure a TPM2 with a profile from file.
|
||||
eg:
|
||||
|
||||
root@localhost:~ # cat /etc/swtpm/profiles/mytest.json
|
||||
{
|
||||
"Name": "custom:test",
|
||||
"Algorithms":"rsa,rsa-min-size=1024,......"
|
||||
}
|
||||
|
||||
root@localhost:~ # swtpm_setup --tpm2 --print-profiles | jq
|
||||
{
|
||||
"local": [
|
||||
{
|
||||
"Name": "mytest",
|
||||
"Algorithms": "rsa,rsa-min-size=1024,......"
|
||||
}
|
||||
],
|
||||
"builtin": [
|
||||
{
|
||||
"Name": "default-v1",
|
||||
"StateFormatLevel": 7,
|
||||
"Commands": "......",
|
||||
"Algorithms": "rsa,rsa-min-size=1024,......",
|
||||
"Description": "......"
|
||||
},
|
||||
{
|
||||
"Name": "null",
|
||||
"StateFormatLevel": 1,
|
||||
"Commands": "......",
|
||||
"Algorithms": "rsa,rsa-min-size=1024,......",
|
||||
"Description": "......"
|
||||
},
|
||||
{
|
||||
"Name": "custom",
|
||||
"StateFormatLevel": 2,
|
||||
"Commands": "......",
|
||||
"Algorithms": "rsa,rsa-min-size=1024,......",
|
||||
"Description": "......"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Libvirt supports it since v10.10.0
|
||||
|
||||
Let's add this feature into virt-install, eg:
|
||||
|
||||
root@localhost:~ # virt-install \
|
||||
......\
|
||||
--tpm model=tpm-tis,backend.version=2.0,\
|
||||
backend.profile.source=local:mytest,backend.profile.removeDisabled=check
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index a841a380f..e34b487c3 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -791,6 +791,7 @@
|
||||
<tpm model="tpm-tis">
|
||||
<backend type="emulator" version="2.0" debug="3">
|
||||
<source type="dir" path="/some/dir"/>
|
||||
+ <profile source="local:mytest" removeDisabled="check"/>
|
||||
</backend>
|
||||
</tpm>
|
||||
<graphics type="sdl" display=":3.4" xauth="/tmp/.Xauthority">
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 5fc0a1c2f..4e0b2d8c0 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -800,7 +800,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
|
||||
--tpm passthrough,model=tpm-crb,path=/dev/tpm0,backend.encryption.secret=11111111-2222-3333-4444-5555555555,backend.persistent_state=yes,backend.active_pcr_banks.sha1=on,backend.active_pcr_banks.sha256=yes,backend.active_pcr_banks.sha384=yes,backend.active_pcr_banks.sha512=yes,version=2.0
|
||||
|
||||
---tpm model=tpm-tis,backend.type=emulator,backend.version=2.0,backend.debug=3,backend.source.type=dir,backend.source.path=/some/dir
|
||||
+--tpm model=tpm-tis,backend.type=emulator,backend.version=2.0,backend.debug=3,backend.source.type=dir,backend.source.path=/some/dir,backend.profile.source=local:mytest,backend.profile.removeDisabled=check
|
||||
|
||||
|
||||
--watchdog ib700,action=pause
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index fa6145e8c..d8926cdad 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -4370,6 +4370,8 @@ class ParserTPM(VirtCLIParser):
|
||||
cls.add_arg("backend.debug", "debug")
|
||||
cls.add_arg("backend.source.type", "source_type")
|
||||
cls.add_arg("backend.source.path", "source_path")
|
||||
+ cls.add_arg("backend.profile.source", "profile_source")
|
||||
+ cls.add_arg("backend.profile.removeDisabled", "profile_removeDisabled")
|
||||
|
||||
cls.add_arg("backend.active_pcr_banks.sha1",
|
||||
"active_pcr_banks.sha1", is_onoff=True)
|
||||
diff --git a/virtinst/devices/tpm.py b/virtinst/devices/tpm.py
|
||||
index 8b4023502..79ae224e8 100644
|
||||
--- a/virtinst/devices/tpm.py
|
||||
+++ b/virtinst/devices/tpm.py
|
||||
@@ -44,6 +44,8 @@ class DeviceTpm(Device):
|
||||
debug = XMLProperty("./backend/@debug")
|
||||
source_type = XMLProperty("./backend/source/@type")
|
||||
source_path = XMLProperty("./backend/source/@path")
|
||||
+ profile_source = XMLProperty("./backend/profile/@source")
|
||||
+ profile_removeDisabled = XMLProperty("./backend/profile/@removeDisabled")
|
||||
|
||||
active_pcr_banks = XMLChildProperty(_ActivePCRBanks, is_single=True,
|
||||
relative_xpath="./backend")
|
||||
@@ -0,0 +1,58 @@
|
||||
Subject: cli: Add nvram.templateFormat to indicate template format
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:48:04 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: dc89a02c75ca7d178c5332fc495a1fceb3732d76
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index e34b487c3..76e044731 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -108,6 +108,8 @@
|
||||
<feature enabled="yes" name="secure-boot"/>
|
||||
<feature enabled="no" name="enrolled-keys"/>
|
||||
</firmware>
|
||||
+ <loader type="pflash">CODE.fd</loader>
|
||||
+ <nvram template="VARS.fd" templateFormat="raw"/>
|
||||
<initarg>foo=bar</initarg>
|
||||
<initarg>baz=woo</initarg>
|
||||
<initenv name="MYENV">some value</initenv>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 4e0b2d8c0..8bfccea18 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -500,7 +500,8 @@ bios.useserial=no,bios.rebootTimeout=60,cmdline=root=/foo,\
|
||||
bootmenu.enable=yes,bootmenu.timeout=5000,\
|
||||
acpi.table=/path/to/slic.dat,acpi.table.type=slic,\
|
||||
initenv0.name=MYENV,initenv0='some value',initenv1.name=FOO,initenv1=bar,\
|
||||
-initdir=/my/custom/cwd,inituser=tester,initgroup=1000
|
||||
+initdir=/my/custom/cwd,inituser=tester,initgroup=1000,\
|
||||
+loader_type=pflash,loader=CODE.fd,nvram.template=VARS.fd,nvram.templateFormat=raw
|
||||
|
||||
|
||||
--vcpus vcpus=9,vcpu.placement=static,\
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index d8926cdad..6f633b933 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -2950,6 +2950,7 @@ class ParserBoot(VirtCLIParser):
|
||||
cls.add_arg("bios.useserial", "bios_useserial", is_onoff=True)
|
||||
cls.add_arg("bios.rebootTimeout", "bios_rebootTimeout")
|
||||
cls.add_arg("smbios.mode", "smbios_mode")
|
||||
+ cls.add_arg("nvram.templateFormat", "nvram_templateFormat")
|
||||
|
||||
# Direct kernel boot options
|
||||
cls.add_arg("kernel", "kernel")
|
||||
diff --git a/virtinst/domain/os.py b/virtinst/domain/os.py
|
||||
index 9afcbb910..45d913450 100644
|
||||
--- a/virtinst/domain/os.py
|
||||
+++ b/virtinst/domain/os.py
|
||||
@@ -126,6 +126,7 @@ class DomainOs(XMLBuilder):
|
||||
bios_useserial = XMLProperty("./bios/@useserial", is_yesno=True)
|
||||
bios_rebootTimeout = XMLProperty("./bios/@rebootTimeout", is_int=True)
|
||||
smbios_mode = XMLProperty("./smbios/@mode")
|
||||
+ nvram_templateFormat = XMLProperty("./nvram/@templateFormat")
|
||||
|
||||
# Host bootloader options
|
||||
# Since the elements for a host bootloader are actually directly under
|
||||
55
029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
Normal file
55
029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
Normal file
@@ -0,0 +1,55 @@
|
||||
Subject: cli: Add --features hyperv.xmm_input.state=on/off
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:49:47 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: 5617330513e951643d69afd4c0cfbd230f1d2983
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index 76e044731..eeb964620 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -154,6 +154,7 @@
|
||||
<ipi state="on"/>
|
||||
<evmcs state="on"/>
|
||||
<avic state="on"/>
|
||||
+ <xmm_input state="on"/>
|
||||
</hyperv>
|
||||
<vmport state="off"/>
|
||||
<kvm>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 8bfccea18..76768dfe0 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -581,6 +581,7 @@ hyperv.tlbflush.state=on,\
|
||||
hyperv.ipi.state=on,\
|
||||
hyperv.evmcs.state=on,\
|
||||
hyperv.avic.state=on,\
|
||||
+hyperv.xmm_input.state=on,\
|
||||
kvm.pv-ipi.state=on,\
|
||||
msrs.unknown=ignore
|
||||
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 6f633b933..add19ac09 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -3094,6 +3094,7 @@ class ParserFeatures(VirtCLIParser):
|
||||
cls.add_arg("hyperv.ipi.state", "hyperv_ipi", is_onoff=True)
|
||||
cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
|
||||
cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
|
||||
+ cls.add_arg("hyperv.xmm_input.state", "hyperv_xmm_input", is_onoff=True)
|
||||
|
||||
cls.add_arg("vmport.state", "vmport", is_onoff=True)
|
||||
cls.add_arg("kvm.hidden.state", "kvm_hidden", is_onoff=True)
|
||||
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
|
||||
index 93a576360..ae3b23d98 100644
|
||||
--- a/virtinst/domain/features.py
|
||||
+++ b/virtinst/domain/features.py
|
||||
@@ -43,6 +43,7 @@ class DomainFeatures(XMLBuilder):
|
||||
hyperv_ipi = XMLProperty("./hyperv/ipi/@state", is_onoff=True)
|
||||
hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
|
||||
hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)
|
||||
+ hyperv_xmm_input = XMLProperty("./hyperv/xmm_input/@state", is_onoff=True)
|
||||
|
||||
vmport = XMLProperty("./vmport/@state", is_onoff=True)
|
||||
kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)
|
||||
55
030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
Normal file
55
030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
Normal file
@@ -0,0 +1,55 @@
|
||||
Subject: cli: Add --features hyperv.emsr_bitmap.state=on/off
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:50:21 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: 1f43c0d1d9d7128d24f5b6628b5f01e920a9f1fa
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index eeb964620..cea5b3890 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -155,6 +155,7 @@
|
||||
<evmcs state="on"/>
|
||||
<avic state="on"/>
|
||||
<xmm_input state="on"/>
|
||||
+ <emsr_bitmap state="on"/>
|
||||
</hyperv>
|
||||
<vmport state="off"/>
|
||||
<kvm>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 76768dfe0..69f48df3a 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -582,6 +582,7 @@ hyperv.ipi.state=on,\
|
||||
hyperv.evmcs.state=on,\
|
||||
hyperv.avic.state=on,\
|
||||
hyperv.xmm_input.state=on,\
|
||||
+hyperv.emsr_bitmap.state=on,\
|
||||
kvm.pv-ipi.state=on,\
|
||||
msrs.unknown=ignore
|
||||
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index add19ac09..dcd2b8c8b 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -3095,6 +3095,7 @@ class ParserFeatures(VirtCLIParser):
|
||||
cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
|
||||
cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
|
||||
cls.add_arg("hyperv.xmm_input.state", "hyperv_xmm_input", is_onoff=True)
|
||||
+ cls.add_arg("hyperv.emsr_bitmap.state", "hyperv_emsr_bitmap", is_onoff=True)
|
||||
|
||||
cls.add_arg("vmport.state", "vmport", is_onoff=True)
|
||||
cls.add_arg("kvm.hidden.state", "kvm_hidden", is_onoff=True)
|
||||
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
|
||||
index ae3b23d98..cba3b710d 100644
|
||||
--- a/virtinst/domain/features.py
|
||||
+++ b/virtinst/domain/features.py
|
||||
@@ -44,6 +44,7 @@ class DomainFeatures(XMLBuilder):
|
||||
hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
|
||||
hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)
|
||||
hyperv_xmm_input = XMLProperty("./hyperv/xmm_input/@state", is_onoff=True)
|
||||
+ hyperv_emsr_bitmap = XMLProperty("./hyperv/emsr_bitmap/@state", is_onoff=True)
|
||||
|
||||
vmport = XMLProperty("./vmport/@state", is_onoff=True)
|
||||
kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)
|
||||
@@ -0,0 +1,58 @@
|
||||
Subject: cli: Add --features hyperv.tlbflush.direct.state=on/off
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:50:40 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: 5f2a2dbd0a2ccecd76710067854c07c1ebd5ea09
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index cea5b3890..996873a8a 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -150,7 +150,9 @@
|
||||
<reset state="on"/>
|
||||
<frequencies state="on"/>
|
||||
<reenlightenment state="on"/>
|
||||
- <tlbflush state="on"/>
|
||||
+ <tlbflush state="on">
|
||||
+ <direct state="on"/>
|
||||
+ </tlbflush>
|
||||
<ipi state="on"/>
|
||||
<evmcs state="on"/>
|
||||
<avic state="on"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 69f48df3a..18a76612a 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -578,6 +578,7 @@ hyperv.reset.state=off,hyperv_reset=on,\
|
||||
hyperv.frequencies.state=on,\
|
||||
hyperv.reenlightenment.state=on,\
|
||||
hyperv.tlbflush.state=on,\
|
||||
+hyperv.tlbflush.direct.state=on,\
|
||||
hyperv.ipi.state=on,\
|
||||
hyperv.evmcs.state=on,\
|
||||
hyperv.avic.state=on,\
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index dcd2b8c8b..5da607be4 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -3091,6 +3091,7 @@ class ParserFeatures(VirtCLIParser):
|
||||
cls.add_arg("hyperv.frequencies.state", "hyperv_frequencies", is_onoff=True)
|
||||
cls.add_arg("hyperv.reenlightenment.state", "hyperv_reenlightenment", is_onoff=True)
|
||||
cls.add_arg("hyperv.tlbflush.state", "hyperv_tlbflush", is_onoff=True)
|
||||
+ cls.add_arg("hyperv.tlbflush.direct.state", "hyperv_tlbflush_direct", is_onoff=True)
|
||||
cls.add_arg("hyperv.ipi.state", "hyperv_ipi", is_onoff=True)
|
||||
cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
|
||||
cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
|
||||
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
|
||||
index cba3b710d..d001ddfa1 100644
|
||||
--- a/virtinst/domain/features.py
|
||||
+++ b/virtinst/domain/features.py
|
||||
@@ -40,6 +40,7 @@ class DomainFeatures(XMLBuilder):
|
||||
hyperv_frequencies = XMLProperty("./hyperv/frequencies/@state", is_onoff=True)
|
||||
hyperv_reenlightenment = XMLProperty("./hyperv/reenlightenment/@state", is_onoff=True)
|
||||
hyperv_tlbflush = XMLProperty("./hyperv/tlbflush/@state", is_onoff=True)
|
||||
+ hyperv_tlbflush_direct = XMLProperty("./hyperv/tlbflush/direct/@state", is_onoff=True)
|
||||
hyperv_ipi = XMLProperty("./hyperv/ipi/@state", is_onoff=True)
|
||||
hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
|
||||
hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)
|
||||
@@ -0,0 +1,55 @@
|
||||
Subject: cli: Add --features hyperv.tlbflush.extended.state=on/off
|
||||
From: Lin Ma lma@suse.de Mon Dec 30 19:50:50 2024 +0800
|
||||
Date: Wed Jan 29 10:48:57 2025 +0100:
|
||||
Git: 81c873ba36b58b8598f53b8c972dc9821ab6d423
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index 996873a8a..cbb186c92 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -152,6 +152,7 @@
|
||||
<reenlightenment state="on"/>
|
||||
<tlbflush state="on">
|
||||
<direct state="on"/>
|
||||
+ <extended state="on"/>
|
||||
</tlbflush>
|
||||
<ipi state="on"/>
|
||||
<evmcs state="on"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 18a76612a..a2eb1365e 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -579,6 +579,7 @@ hyperv.frequencies.state=on,\
|
||||
hyperv.reenlightenment.state=on,\
|
||||
hyperv.tlbflush.state=on,\
|
||||
hyperv.tlbflush.direct.state=on,\
|
||||
+hyperv.tlbflush.extended.state=on,\
|
||||
hyperv.ipi.state=on,\
|
||||
hyperv.evmcs.state=on,\
|
||||
hyperv.avic.state=on,\
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 5da607be4..57d5608c6 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -3092,6 +3092,7 @@ class ParserFeatures(VirtCLIParser):
|
||||
cls.add_arg("hyperv.reenlightenment.state", "hyperv_reenlightenment", is_onoff=True)
|
||||
cls.add_arg("hyperv.tlbflush.state", "hyperv_tlbflush", is_onoff=True)
|
||||
cls.add_arg("hyperv.tlbflush.direct.state", "hyperv_tlbflush_direct", is_onoff=True)
|
||||
+ cls.add_arg("hyperv.tlbflush.extended.state", "hyperv_tlbflush_extended", is_onoff=True)
|
||||
cls.add_arg("hyperv.ipi.state", "hyperv_ipi", is_onoff=True)
|
||||
cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
|
||||
cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
|
||||
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
|
||||
index d001ddfa1..99ed43393 100644
|
||||
--- a/virtinst/domain/features.py
|
||||
+++ b/virtinst/domain/features.py
|
||||
@@ -41,6 +41,7 @@ class DomainFeatures(XMLBuilder):
|
||||
hyperv_reenlightenment = XMLProperty("./hyperv/reenlightenment/@state", is_onoff=True)
|
||||
hyperv_tlbflush = XMLProperty("./hyperv/tlbflush/@state", is_onoff=True)
|
||||
hyperv_tlbflush_direct = XMLProperty("./hyperv/tlbflush/direct/@state", is_onoff=True)
|
||||
+ hyperv_tlbflush_extended = XMLProperty("./hyperv/tlbflush/extended/@state", is_onoff=True)
|
||||
hyperv_ipi = XMLProperty("./hyperv/ipi/@state", is_onoff=True)
|
||||
hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
|
||||
hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)
|
||||
25
033-createvm-prioritize-riscv64.patch
Normal file
25
033-createvm-prioritize-riscv64.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
Subject: createvm: prioritize riscv64
|
||||
From: Heinrich Schuchardt heinrich.schuchardt@canonical.com Tue Jan 21 22:52:40 2025 +0100
|
||||
Date: Mon Mar 3 10:13:14 2025 -0500:
|
||||
Git: 6c6c39be2fc26713b9756e668af7ab8106e7acae
|
||||
|
||||
As all major distros support the riscv64 architecture, add it to the
|
||||
list of prioritized architectures. This will move it up in the
|
||||
architecture drop-down menu and thereby easier to find when creating
|
||||
a new VM.
|
||||
|
||||
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
|
||||
|
||||
diff --git a/virtManager/createvm.py b/virtManager/createvm.py
|
||||
index e37921603..1a8c6b4a1 100644
|
||||
--- a/virtManager/createvm.py
|
||||
+++ b/virtManager/createvm.py
|
||||
@@ -792,7 +792,7 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
archs.sort()
|
||||
|
||||
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",
|
||||
- "s390x"]
|
||||
+ "riscv64", "s390x"]
|
||||
if self.conn.caps.host.cpu.arch not in prios:
|
||||
prios = [] # pragma: no cover
|
||||
for p in prios[:]:
|
||||
30
034-tests-uitests-handle-linux2020-going-EOL.patch
Normal file
30
034-tests-uitests-handle-linux2020-going-EOL.patch
Normal file
@@ -0,0 +1,30 @@
|
||||
Subject: tests: uitests: handle linux2020 going EOL
|
||||
From: Cole Robinson crobinso@redhat.com Mon Mar 3 10:38:22 2025 -0500
|
||||
Date: Mon Mar 3 10:39:12 2025 -0500:
|
||||
Git: 6f188482b2e2e1c2d3ee1658b81fdd95bd497897
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
diff --git a/tests/uitests/test_createvm.py b/tests/uitests/test_createvm.py
|
||||
index 1242a0473..053a94066 100644
|
||||
--- a/tests/uitests/test_createvm.py
|
||||
+++ b/tests/uitests/test_createvm.py
|
||||
@@ -464,7 +464,8 @@ def testNewKVMQ35Tweaks(app):
|
||||
newvm.find("import-entry").set_text("/pool-dir/testvol1.img")
|
||||
newvm.find("oslist-entry").set_text("fribfrob")
|
||||
popover = newvm.find("oslist-popover")
|
||||
- popover.find_fuzzy("linux2020").click()
|
||||
+ osname = "linux2022"
|
||||
+ popover.find_fuzzy(osname).click()
|
||||
_forward(newvm)
|
||||
_forward(newvm)
|
||||
|
||||
@@ -472,7 +473,7 @@ def testNewKVMQ35Tweaks(app):
|
||||
# hit some code paths elsewhere
|
||||
newvm.find_fuzzy("Customize", "check").click()
|
||||
newvm.find_fuzzy("Finish", "button").click()
|
||||
- vmname = "linux2020"
|
||||
+ vmname = osname
|
||||
details = app.find_details_window(vmname)
|
||||
appl = details.find("config-apply")
|
||||
|
||||
115
040-virtinst-add-pstore-backend-support.patch
Normal file
115
040-virtinst-add-pstore-backend-support.patch
Normal file
@@ -0,0 +1,115 @@
|
||||
Subject: virtinst: add --pstore backend=acpi-erst,path=XX,size=YY support
|
||||
From: Lin Ma lma@suse.de Tue Feb 11 10:54:53 2025 +0800
|
||||
Date: Mon Mar 3 12:01:09 2025 -0500:
|
||||
Git: b5f6569bc0e24a4557ac43f7b9a7eeae0399c337
|
||||
|
||||
Libvirt since v10.6.0 introduces pstore pci device for storing oops/panic
|
||||
logs in nvram storage.
|
||||
|
||||
Let's add it into virt-install, It has 3 suboptions:
|
||||
* backend: The desired backend, by far only 'acpi-erst' is accepted.
|
||||
* path: Represents a path in the host that backs the pstore device in
|
||||
the guest. It is optional, If not specified the libvirt will
|
||||
auto generates one.
|
||||
* size: Configures the size of the persistent storage available to the
|
||||
guest. It is mandatory, unit is kilobytes.
|
||||
|
||||
Eg:
|
||||
virt-install --pstore backend=acpi-erst,path=/tmp/guest_acpi_esrt,size=8
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -826,6 +826,16 @@ def add_device_options(devg, sound_back_
|
||||
devg.add_argument("--iommu", action="append",
|
||||
help=_("Configure an IOMMU device. Ex:\n"
|
||||
"--iommu model=intel,driver.aw_bits=48"))
|
||||
+ ParserPstore.register()
|
||||
+ devg.add_argument(
|
||||
+ "--pstore",
|
||||
+ action="append",
|
||||
+ help=_(
|
||||
+ "Configure a nvram storage device.\n"
|
||||
+ "It's for guest kernel to record oops/panic logs. Ex:\n"
|
||||
+ "--pstore backend=acpi-erst,size=8"
|
||||
+ ),
|
||||
+ )
|
||||
|
||||
|
||||
def add_guest_xml_options(geng):
|
||||
@@ -4859,6 +4869,19 @@ class ParserAudio(VirtCLIParser):
|
||||
cls.add_arg("id", "id")
|
||||
|
||||
|
||||
+class ParserPstore(VirtCLIParser):
|
||||
+ cli_arg_name = "pstore"
|
||||
+ guest_propname = "devices.pstore"
|
||||
+
|
||||
+ @classmethod
|
||||
+ def _virtcli_class_init(cls):
|
||||
+ VirtCLIParser._virtcli_class_init_common(cls)
|
||||
+
|
||||
+ cls.add_arg("backend", "backend")
|
||||
+ cls.add_arg("path", "path")
|
||||
+ cls.add_arg("size", "size")
|
||||
+
|
||||
+
|
||||
#####################
|
||||
# --hostdev parsing #
|
||||
#####################
|
||||
--- a/virtinst/devices/__init__.py
|
||||
+++ b/virtinst/devices/__init__.py
|
||||
@@ -27,6 +27,7 @@ from .tpm import DeviceTpm
|
||||
from .video import DeviceVideo
|
||||
from .vsock import DeviceVsock
|
||||
from .watchdog import DeviceWatchdog
|
||||
+from .pstore import DevicePstore
|
||||
|
||||
|
||||
__all__ = [l for l in locals() if l.startswith("Device")]
|
||||
--- a/virtinst/devices/meson.build
|
||||
+++ b/virtinst/devices/meson.build
|
||||
@@ -23,6 +23,7 @@ virtinst_devices_sources = files(
|
||||
'video.py',
|
||||
'vsock.py',
|
||||
'watchdog.py',
|
||||
+ 'pstore.py',
|
||||
)
|
||||
|
||||
install_data(
|
||||
--- /dev/null
|
||||
+++ b/virtinst/devices/pstore.py
|
||||
@@ -0,0 +1,13 @@
|
||||
+# This work is licensed under the GNU GPLv2 or later.
|
||||
+# See the COPYING file in the top-level directory.
|
||||
+
|
||||
+from .device import Device
|
||||
+from ..xmlbuilder import XMLProperty
|
||||
+
|
||||
+
|
||||
+class DevicePstore(Device):
|
||||
+ XML_NAME = "pstore"
|
||||
+
|
||||
+ backend = XMLProperty("./@backend")
|
||||
+ path = XMLProperty("./path")
|
||||
+ size = XMLProperty("./size", is_int=True)
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -27,7 +27,7 @@ class _DomainDevices(XMLBuilder):
|
||||
'smartcard', 'serial', 'parallel', 'console', 'channel',
|
||||
'input', 'tpm', 'graphics', 'sound', 'audio', 'video', 'hostdev',
|
||||
'redirdev', 'watchdog', 'memballoon', 'rng', 'panic',
|
||||
- 'shmem', 'memory', 'vsock', 'iommu']
|
||||
+ 'shmem', 'memory', 'vsock', 'iommu', 'pstore']
|
||||
|
||||
|
||||
disk = XMLChildProperty(DeviceDisk)
|
||||
@@ -55,6 +55,7 @@ class _DomainDevices(XMLBuilder):
|
||||
memory = XMLChildProperty(DeviceMemory)
|
||||
vsock = XMLChildProperty(DeviceVsock)
|
||||
iommu = XMLChildProperty(DeviceIommu)
|
||||
+ pstore = XMLChildProperty(DevicePstore)
|
||||
|
||||
def get_all(self):
|
||||
retlist = []
|
||||
32
041-tests-add-pstore-test.patch
Normal file
32
041-tests-add-pstore-test.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
Subject: tests: add pstore test
|
||||
From: Lin Ma lma@suse.de Tue Feb 11 10:56:12 2025 +0800
|
||||
Date: Mon Mar 3 12:01:09 2025 -0500:
|
||||
Git: 6c43ab38630a710e4de66cb59cbadd5e11569b68
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -1025,6 +1025,10 @@
|
||||
<iommu model="intel">
|
||||
<driver aw_bits="48" intremap="off" caching_mode="on" eim="off" iotlb="off"/>
|
||||
</iommu>
|
||||
+ <pstore backend="acpi-erst">
|
||||
+ <path>/tmp/guest_acpi_esrt</path>
|
||||
+ <size>8</size>
|
||||
+ </pstore>
|
||||
</devices>
|
||||
<launchSecurity type="sev" kernelHashes="yes">
|
||||
<cbitpos>47</cbitpos>
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -803,6 +803,9 @@ source.reservations.managed=no,source.re
|
||||
--vsock cid=17
|
||||
|
||||
|
||||
+--pstore backend=acpi-erst,path=/tmp/guest_acpi_esrt,size=8
|
||||
+
|
||||
+
|
||||
--tpm passthrough,model=tpm-crb,path=/dev/tpm0,backend.encryption.secret=11111111-2222-3333-4444-5555555555,backend.persistent_state=yes,backend.active_pcr_banks.sha1=on,backend.active_pcr_banks.sha256=yes,backend.active_pcr_banks.sha384=yes,backend.active_pcr_banks.sha512=yes,version=2.0
|
||||
|
||||
--tpm model=tpm-tis,backend.type=emulator,backend.version=2.0,backend.debug=3,backend.source.type=dir,backend.source.path=/some/dir,backend.profile.source=local:mytest,backend.profile.removeDisabled=check
|
||||
30
042-man-virt-install-Document-pstore-device.patch
Normal file
30
042-man-virt-install-Document-pstore-device.patch
Normal file
@@ -0,0 +1,30 @@
|
||||
Subject: man/virt-install: Document pstore device
|
||||
From: Lin Ma lma@suse.de Tue Feb 11 10:56:43 2025 +0800
|
||||
Date: Mon Mar 3 12:01:09 2025 -0500:
|
||||
Git: a0e390b1b63ea3c6b53cf49e8f70a7d214452610
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/man/virt-install.rst b/man/virt-install.rst
|
||||
index dc0b6d9cc..b6c48c3fe 100644
|
||||
--- a/man/virt-install.rst
|
||||
+++ b/man/virt-install.rst
|
||||
@@ -2052,6 +2052,18 @@ Complete details at https://libvirt.org/formatdomain.html#iommu-devices
|
||||
|
||||
|
||||
|
||||
+``--pstore``
|
||||
+^^^^^^^^^^^^
|
||||
+
|
||||
+**Syntax:** ``--pstore`` OPT=VAL,[...]
|
||||
+
|
||||
+Add a pstore device to a guest for storing oops/panic logs before it crashes.
|
||||
+
|
||||
+Use --pstore=? to see a list of all available options.
|
||||
+Complete details at https://libvirt.org/formatdomain.html#pstore
|
||||
+
|
||||
+
|
||||
+
|
||||
|
||||
MISCELLANEOUS OPTIONS
|
||||
=====================
|
||||
48
043-tests-Increase-virtio-mem-block-size.patch
Normal file
48
043-tests-Increase-virtio-mem-block-size.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
Subject: tests: Increase virtio-mem block size
|
||||
From: Akihiko Odaki akihiko.odaki@daynix.com Sun Mar 2 15:47:29 2025 +0900
|
||||
Date: Mon Mar 3 12:19:33 2025 -0500:
|
||||
Git: fb54f37b6067f88b46acc0d1d7a11884a659279a
|
||||
|
||||
virtio-mem block size must be equal to or greater than the transparent
|
||||
huge page size; otherwise, libvirt raises an error and a test will
|
||||
fail. For example, on Asahi Linux, the transparent huge page size is 32
|
||||
MiB, which is greater than 2 MiB, the specified virtio-mem block size.
|
||||
|
||||
On Linux 6.13, the configuration with the maximum transparent huge page
|
||||
size is Arm64 with 64 KiB, and it has 512 MiB transparent huge pages.
|
||||
Increase the block size to 512 MiB so that the test passes on every
|
||||
Linux configuration.
|
||||
|
||||
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
|
||||
|
||||
--- a/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
@@ -126,7 +126,7 @@
|
||||
<target dynamicMemslots="yes">
|
||||
<size>524288</size>
|
||||
<node>0</node>
|
||||
- <block>2048</block>
|
||||
+ <block>524288</block>
|
||||
<requested>524288</requested>
|
||||
<address base="0x180000000"/>
|
||||
</target>
|
||||
@@ -270,7 +270,7 @@
|
||||
<target dynamicMemslots="yes">
|
||||
<size>524288</size>
|
||||
<node>0</node>
|
||||
- <block>2048</block>
|
||||
+ <block>524288</block>
|
||||
<requested>524288</requested>
|
||||
<address base="0x180000000"/>
|
||||
</target>
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -936,7 +936,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,target.dynamicMemslots=yes,"
|
||||
+"--memdev virtio-mem,target_node=0,target.block=524288,target.dynamicMemslots=yes,"
|
||||
"target_size=512,target.requested=524288,target.address_base=0x180000000 "
|
||||
|
||||
"--memdev virtio-pmem,source.path=/tmp/virtio_pmem,"
|
||||
18
044-tests-test_urls-fix-dead-URL.patch
Normal file
18
044-tests-test_urls-fix-dead-URL.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
Subject: tests: test_urls: fix dead URL
|
||||
From: Cole Robinson crobinso@redhat.com Mon Mar 3 12:40:21 2025 -0500
|
||||
Date: Mon Mar 3 12:40:36 2025 -0500:
|
||||
Git: ef41638f5eb0b390cbf74281c508fbfef42f73e5
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
diff --git a/tests/data/test_urls.ini b/tests/data/test_urls.ini
|
||||
index df0d52fa5..29a794feb 100644
|
||||
--- a/tests/data/test_urls.ini
|
||||
+++ b/tests/data/test_urls.ini
|
||||
@@ -197,5 +197,5 @@ distro = ubuntu20.04
|
||||
|
||||
# Devel tree
|
||||
[mageiacauldron]
|
||||
-url = http://distro.ibiblio.org/mageia/distrib/cauldron/x86_64/
|
||||
+url = https://mageia.ip-connect.info/distrib/cauldron/x86_64/
|
||||
distro = none
|
||||
20
045-urlfetcher-add-riscv64-architecture-for-Debian.patch
Normal file
20
045-urlfetcher-add-riscv64-architecture-for-Debian.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
Subject: urlfetcher: add riscv64 architecture for Debian
|
||||
From: Heinrich Schuchardt heinrich.schuchardt@canonical.com Mon Mar 3 11:52:58 2025 +0100
|
||||
Date: Sat Mar 8 12:59:18 2025 +0100:
|
||||
Git: ccfe4a0abc0dc37f6ecd367d2c3b3bb1f55649f7
|
||||
|
||||
Add riscv64 to the list of Debian architectures.
|
||||
|
||||
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
|
||||
|
||||
--- a/virtinst/install/urldetect.py
|
||||
+++ b/virtinst/install/urldetect.py
|
||||
@@ -692,7 +692,7 @@ class _DebianDistro(_DistroTree):
|
||||
|
||||
# Check for standard arch strings which will be
|
||||
# in the URI name for --location $ISO mounts
|
||||
- for arch in ["i386", "amd64", "x86_64", "arm64"]:
|
||||
+ for arch in ["i386", "amd64", "x86_64", "arm64", "riscv64"]:
|
||||
if arch in self.uri:
|
||||
log.debug("Found treearch=%s in uri", arch)
|
||||
if arch == "x86_64":
|
||||
@@ -0,0 +1,24 @@
|
||||
Subject: virt-manager: list virtual networks when creating new QEMU Session VM
|
||||
From: Pavel Hrdina phrdina@redhat.com Mon Mar 10 19:26:44 2025 +0100
|
||||
Date: Tue Mar 18 20:33:33 2025 +0100:
|
||||
Git: 714d5f1afdd58d5e908d420c4fbd8183edf47aa7
|
||||
|
||||
Using qemu-bridge-helper QEMU Session VMs are now able to use host
|
||||
bridge interfaces. Currently only interface named virbr0 is allowed by
|
||||
default but it is possible to change it in `/etc/qemu/bridge.conf`.
|
||||
|
||||
We will still keep the usermode network as default.
|
||||
|
||||
Resolves: https://github.com/virt-manager/virt-manager/issues/863
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
--- a/virtManager/device/netlist.py
|
||||
+++ b/virtManager/device/netlist.py
|
||||
@@ -149,7 +149,6 @@ class vmmNetworkList(vmmGObjectUI):
|
||||
add_usermode = False
|
||||
if self.conn.is_qemu_unprivileged():
|
||||
log.debug("Using unprivileged qemu, adding usermode net")
|
||||
- vnets = []
|
||||
default_bridge = None
|
||||
add_usermode = True
|
||||
|
||||
59
047-virt-install-add-support-for-vDPA-network-device.patch
Normal file
59
047-virt-install-add-support-for-vDPA-network-device.patch
Normal file
@@ -0,0 +1,59 @@
|
||||
Subject: virt-install: add support for vDPA network device
|
||||
From: Joren joren.regan@curtin.edu.au Tue Mar 18 17:09:29 2025 +0800
|
||||
Date: Tue Mar 18 20:34:22 2025 +0100:
|
||||
Git: e5142f28fe30f434bde2eb96afdc1de93a38f478
|
||||
|
||||
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -618,6 +618,12 @@
|
||||
<model type="virtio"/>
|
||||
<address type="pci" domain="0" bus="0" slot="16" function="0"/>
|
||||
</interface>
|
||||
+ <interface type="vdpa">
|
||||
+ <source dev="/dev/vhost-vdpa-0"/>
|
||||
+ <mac address="12:34:56:78:9a:bc"/>
|
||||
+ <model type="virtio"/>
|
||||
+ <driver page_per_vq="on" queues="16"/>
|
||||
+ </interface>
|
||||
<interface type="user">
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -655,6 +655,7 @@ source.reservations.managed=no,source.re
|
||||
--network type=direct,source=eth5,source_mode=vepa,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,virtualport.parameters.managerid=12,virtualport.parameters.typeid=1193046,virtualport.parameters.typeidversion=1,virtualport.parameters.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,link.state=no
|
||||
--network vhostuser,source_type=unix,source_path=/tmp/vhost1.sock,source_mode=server,model=virtio,source.type=unix,source.path=/tmp/vhost1.sock,address.type=pci,address.bus=0x00,address.slot=0x10,address.function=0x0,address.domain=0x0000
|
||||
+--network type=vdpa,source=/dev/vhost-vdpa-0,mac=12:34:56:78:9a:bc,driver.queues=16,driver.page_per_vq=on
|
||||
--network user,address.type=ccw,address.cssid=0xfe,address.ssid=0,address.devno=01,boot.order=15,boot.loadparm=SYSTEM1
|
||||
--network model=vmxnet3
|
||||
--network backend.type=passt,backend.logFile=/tmp/foo.log,portForward0.proto=tcp,portForward0.address=192.168.10.10,portForward0.dev=eth0,portForward0.range0.start=4000,portForward0.range0.end=5000,portForward0.range0.to=10000,portForward0.range0.exclude=no,portForward0.range1.start=6000,portForward1.proto=tcp,portForward1.range0.start=2022,portForward1.range0.to=22
|
||||
--- a/virtinst/devices/interface.py
|
||||
+++ b/virtinst/devices/interface.py
|
||||
@@ -181,6 +181,7 @@ class DeviceInterface(Device):
|
||||
TYPE_VHOSTUSER = "vhostuser"
|
||||
TYPE_ETHERNET = "ethernet"
|
||||
TYPE_DIRECT = "direct"
|
||||
+ TYPE_VDPA = "vdpa"
|
||||
|
||||
@staticmethod
|
||||
def generate_mac(conn):
|
||||
@@ -242,7 +243,7 @@ class DeviceInterface(Device):
|
||||
return self.network
|
||||
if self.type == self.TYPE_BRIDGE:
|
||||
return self.bridge
|
||||
- if self.type == self.TYPE_DIRECT:
|
||||
+ if self.type == self.TYPE_DIRECT or self.type == self.TYPE_VDPA:
|
||||
return self.source_dev
|
||||
return None
|
||||
def _set_source(self, newsource):
|
||||
@@ -258,7 +259,7 @@ class DeviceInterface(Device):
|
||||
self.network = newsource
|
||||
elif self.type == self.TYPE_BRIDGE:
|
||||
self.bridge = newsource
|
||||
- elif self.type == self.TYPE_DIRECT:
|
||||
+ elif self.type == self.TYPE_DIRECT or self.type == self.TYPE_VDPA:
|
||||
self.source_dev = newsource
|
||||
source = property(_get_source, _set_source)
|
||||
|
||||
43
048-virt-manager-add-support-for-vDPA-network-device.patch
Normal file
43
048-virt-manager-add-support-for-vDPA-network-device.patch
Normal file
@@ -0,0 +1,43 @@
|
||||
Subject: virt-manager: add support for vDPA network device
|
||||
From: Pavel Hrdina phrdina@redhat.com Tue Mar 18 20:01:22 2025 +0100
|
||||
Date: Tue Mar 18 20:34:22 2025 +0100:
|
||||
Git: e39e0ad5f06fb080f0042090d97e47e11f11dcab
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
--- a/virtManager/device/netlist.py
|
||||
+++ b/virtManager/device/netlist.py
|
||||
@@ -142,6 +142,11 @@ class vmmNetworkList(vmmGObjectUI):
|
||||
_nettype = virtinst.DeviceInterface.TYPE_DIRECT
|
||||
model.append(_build_manual_row(_nettype, _label))
|
||||
|
||||
+ def _add_manual_vdpa_row():
|
||||
+ _label = _("vDPA device...")
|
||||
+ _nettype = virtinst.DeviceInterface.TYPE_VDPA
|
||||
+ model.append(_build_manual_row(_nettype, _label))
|
||||
+
|
||||
vnets = self._find_virtual_networks()
|
||||
default_bridge = virtinst.DeviceInterface.default_bridge(
|
||||
self.conn.get_backend())
|
||||
@@ -165,6 +170,7 @@ class vmmNetworkList(vmmGObjectUI):
|
||||
|
||||
bridgeidx = _add_manual_bridge_row()
|
||||
_add_manual_macvtap_row()
|
||||
+ _add_manual_vdpa_row()
|
||||
|
||||
# If there is a bridge device, default to that
|
||||
if default_bridge:
|
||||
@@ -248,8 +254,11 @@ class vmmNetworkList(vmmGObjectUI):
|
||||
|
||||
# If this is a bridge or macvtap device, show the
|
||||
# manual source mode
|
||||
- if nettype in [virtinst.DeviceInterface.TYPE_BRIDGE,
|
||||
- virtinst.DeviceInterface.TYPE_DIRECT]:
|
||||
+ if nettype in [
|
||||
+ virtinst.DeviceInterface.TYPE_BRIDGE,
|
||||
+ virtinst.DeviceInterface.TYPE_DIRECT,
|
||||
+ virtinst.DeviceInterface.TYPE_VDPA,
|
||||
+ ]:
|
||||
rowiter = _find_row(nettype, None, True)
|
||||
self.widget("net-manual-source").set_text(source or "")
|
||||
if rowiter:
|
||||
@@ -0,0 +1,46 @@
|
||||
Subject: virt-install: detect wayland in order to start virt-viewer
|
||||
From: Pavel Hrdina phrdina@redhat.com Mon Mar 24 12:11:23 2025 +0100
|
||||
Date: Mon Mar 24 15:32:28 2025 +0100:
|
||||
Git: 4f9618289f279f86994a5d2f1aada8a6524f5a6f
|
||||
|
||||
When running virt-install using waypipe the DISPLAY variable is not
|
||||
defined and virt-install will complain that it cannot start virt-viewer.
|
||||
|
||||
Check for WAYLAND_DISPLAY as well, DISPLAY is defined only when xwayland
|
||||
is used. In case of waypipe it configures only WAYLAND_DISPLAY.
|
||||
|
||||
Move the check before we check for virt-viewer as without display there
|
||||
is no point to check if virt-viewer is installed or not.
|
||||
|
||||
Fixes: https://github.com/virt-manager/virt-manager/issues/884
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -1999,18 +1999,20 @@ def _determine_default_autoconsole_type(
|
||||
log.debug("No viewer to launch for graphics type '%s'", gtype)
|
||||
return None
|
||||
|
||||
+ if (
|
||||
+ not os.environ.get("DISPLAY", "")
|
||||
+ and not os.environ.get("DISPLAY_WAYLAND")
|
||||
+ and not xmlutil.in_testsuite()
|
||||
+ ): # pragma: no cover
|
||||
+ log.warning(_("No display detected. Not running virt-viewer."))
|
||||
+ return None
|
||||
+
|
||||
if not HAS_VIRTVIEWER and not xmlutil.in_testsuite(): # pragma: no cover
|
||||
log.warning(_("Unable to connect to graphical console: "
|
||||
"virt-viewer not installed. Please install "
|
||||
"the 'virt-viewer' package."))
|
||||
return None
|
||||
|
||||
- if (not os.environ.get("DISPLAY", "") and
|
||||
- not xmlutil.in_testsuite()): # pragma: no cover
|
||||
- log.warning(_("Graphics requested but DISPLAY is not set. "
|
||||
- "Not running virt-viewer."))
|
||||
- return None
|
||||
-
|
||||
return "graphical"
|
||||
|
||||
|
||||
43
050-Validation-allow-spaces-disallow-slashes.patch
Normal file
43
050-Validation-allow-spaces-disallow-slashes.patch
Normal file
@@ -0,0 +1,43 @@
|
||||
Subject: Validation: allow spaces, disallow slashes
|
||||
From: AbhinavTiruvee ranjaniabhinav@gmail.com Mon Apr 7 18:05:41 2025 -0500
|
||||
Date: Tue Apr 22 12:11:00 2025 +0200:
|
||||
Git: 237896029d668543465b4566d0ea880d468c7058
|
||||
|
||||
Libvirt permits spaces in object names but rejects the ‘/’ character.
|
||||
This change aligns our validator with libvirt’s behavior (and QEMU’s),
|
||||
preventing names with '/' while still allowing human‑friendly
|
||||
names with spaces.
|
||||
|
||||
Fixes: #740
|
||||
|
||||
diff --git a/tests/test_xmlparse.py b/tests/test_xmlparse.py
|
||||
index c4107f932..898fc55c3 100644
|
||||
--- a/tests/test_xmlparse.py
|
||||
+++ b/tests/test_xmlparse.py
|
||||
@@ -1011,7 +1011,9 @@ def testXMLBuilderCoverage():
|
||||
virtinst.DeviceDisk.validate_generic_name("objtype", None)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
- virtinst.DeviceDisk.validate_generic_name("objtype", "foo bar")
|
||||
+ virtinst.DeviceDisk.validate_generic_name("objtype", "foo/bar")
|
||||
+
|
||||
+ assert virtinst.DeviceDisk.validate_generic_name("objtype", "foo bar") is None
|
||||
|
||||
# Test property __repr__ for code coverage
|
||||
assert "DeviceAddress" in str(virtinst.DeviceDisk.address)
|
||||
diff --git a/virtinst/xmlbuilder.py b/virtinst/xmlbuilder.py
|
||||
index 64ea25e1b..8ec18a7a7 100644
|
||||
--- a/virtinst/xmlbuilder.py
|
||||
+++ b/virtinst/xmlbuilder.py
|
||||
@@ -511,9 +511,8 @@ class XMLBuilder(object):
|
||||
|
||||
@staticmethod
|
||||
def validate_generic_name(name_label, val):
|
||||
- # Rather than try and match libvirt's regex, just forbid things we
|
||||
- # know don't work
|
||||
- forbid = [" "]
|
||||
+ # Only character that shouldn't work is '/', matching QEMU
|
||||
+ forbid = ["/"]
|
||||
if not val:
|
||||
# translators: value is a generic object type name
|
||||
raise ValueError(_("A name must be specified for the %s") %
|
||||
18
051-fix-default-start_folder-to-None.patch
Normal file
18
051-fix-default-start_folder-to-None.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
Subject: fix: default start_folder to None
|
||||
From: Zahid Kizmaz tech@zahid.rocks Sun May 11 22:41:44 2025 +0200
|
||||
Date: Tue Jun 10 09:22:10 2025 +0200:
|
||||
Git: 62f976a61b0363b9e6a0eac1fd2e8553d24d5457
|
||||
|
||||
|
||||
diff --git a/virtManager/storagebrowse.py b/virtManager/storagebrowse.py
|
||||
index 8e8239b4d..d8c70c925 100644
|
||||
--- a/virtManager/storagebrowse.py
|
||||
+++ b/virtManager/storagebrowse.py
|
||||
@@ -176,6 +176,7 @@ class vmmStorageBrowser(vmmGObjectUI):
|
||||
data = _BrowseReasonMetadata(self._browse_reason)
|
||||
gsettings_key = data.gsettings_key
|
||||
|
||||
+ start_folder = None
|
||||
if gsettings_key:
|
||||
start_folder = self.config.get_default_directory(gsettings_key)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
Subject: Add Ctrl+Alt+Shift+Esc key command for logind's SecureAttentionKey
|
||||
From: n3rdopolis bluescreen_avenger@verizon.net Mon May 5 22:29:18 2025 -0400
|
||||
Date: Wed Jun 11 09:32:34 2025 +0200:
|
||||
Git: 4b89c39eea1cb89dda597d81831fc385db3f8cbc
|
||||
|
||||
logind now supports a new key binding https://github.com/systemd/systemd/pull/29542
|
||||
Ctrl+Alt+Shift+Esc that emits SecureAttentionKey to allow login managers to start
|
||||
or switch back to the greeter
|
||||
|
||||
diff --git a/virtManager/details/console.py b/virtManager/details/console.py
|
||||
index 54b587772..e68bb9ac8 100644
|
||||
--- a/virtManager/details/console.py
|
||||
+++ b/virtManager/details/console.py
|
||||
@@ -120,6 +120,7 @@ def build_keycombo_menu(on_send_key_fn):
|
||||
|
||||
make_item("<Control><Alt>BackSpace", ["Control_L", "Alt_L", "BackSpace"])
|
||||
make_item("<Control><Alt>Delete", ["Control_L", "Alt_L", "Delete"])
|
||||
+ make_item("<Control><Alt><Shift>Escape", ["Control_L", "Alt_L", "Shift_L", "Escape"])
|
||||
menu.add(Gtk.SeparatorMenuItem())
|
||||
|
||||
for i in range(1, 13):
|
||||
@@ -33,7 +33,7 @@ Index: virt-manager-5.0.0/tests/test_cli.py
|
||||
===================================================================
|
||||
--- virt-manager-5.0.0.orig/tests/test_cli.py
|
||||
+++ virt-manager-5.0.0/tests/test_cli.py
|
||||
@@ -1246,7 +1246,6 @@ c.add_compare("--connect %(URI-KVM-ARMV7
|
||||
@@ -1255,7 +1255,6 @@ c.add_compare("--connect %(URI-KVM-ARMV7
|
||||
#################
|
||||
|
||||
c.add_valid("--arch aarch64 --osinfo fedora19 --nodisks --pxe --connect " + utils.URIs.kvm_x86_nodomcaps, grep="Libvirt version does not support UEFI") # attempt to default to aarch64 UEFI, but it fails, but should only print warnings
|
||||
|
||||
@@ -1,3 +1,78 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 18 14:06:18 MDT 2025 - carnold@suse.com
|
||||
|
||||
- bsc#1244685 - Could not find an installable distribution with
|
||||
virt-install command
|
||||
virtinst-add-sle16-detection-support.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 12 15:51:44 MDT 2025 - carnold@suse.com
|
||||
|
||||
- Upstream bug fixes (bsc#1027942)
|
||||
050-Validation-allow-spaces-disallow-slashes.patch
|
||||
051-fix-default-start_folder-to-None.patch
|
||||
052-Add-Ctrl+Alt+Shift+Esc-key-command-for-loginds-SecureAttentionKey.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 19 15:14:01 MDT 2025 - carnold@suse.com
|
||||
|
||||
- Add detection code for SLES 16 media (bsc#1236252, bsc#1243296)
|
||||
virtinst-add-sle16-detection-support.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 14 22:57:32 MDT 2025 - carnold@suse.com
|
||||
|
||||
- Spec file changes for including the correct dependencies
|
||||
depending on the distro. (bsc#1241082 and bsc#1241119)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 11 06:05:21 MDT 2025 - carnold@suse.com
|
||||
|
||||
- Upstream features and bug fixes (bsc#1027942) (jsc#PED-8910)
|
||||
040-virtinst-add-pstore-backend-support.patch
|
||||
041-tests-add-pstore-test.patch
|
||||
042-man-virt-install-Document-pstore-device.patch
|
||||
043-tests-Increase-virtio-mem-block-size.patch
|
||||
044-tests-test_urls-fix-dead-URL.patch
|
||||
045-urlfetcher-add-riscv64-architecture-for-Debian.patch
|
||||
046-virt-manager-list-virtual-networks-when-creating-new-QEMU-Session-VM.patch
|
||||
047-virt-install-add-support-for-vDPA-network-device.patch
|
||||
048-virt-manager-add-support-for-vDPA-network-device.patch
|
||||
049-virt-install-detect-wayland-in-order-to-start-virt-viewer.patch
|
||||
- bsc#1241082 - [Build 20250410] virt_install fails to launch:
|
||||
missing dependencies.
|
||||
Spec file modifications
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 8 11:28:25 MDT 2025 - carnold@suse.com
|
||||
|
||||
- bsc#1239837 - [SLFO] virt-manager still has unresolved
|
||||
dependencies in beta2
|
||||
Remove dependencies on spice and other Gtk sources as these
|
||||
packages don't exist in SLES16. Cleanup other dependencies.
|
||||
virt-manager.spec
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 12 15:27:01 MDT 2025 - carnold@suse.com
|
||||
|
||||
- Upstream bug fix (bsc#1027942)
|
||||
010-virtManager-domain-fix-indentation.patch
|
||||
- Upstream features from Lin Ma and others (jsc#PED-8910)
|
||||
021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
|
||||
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
|
||||
023-cli-Add-disk-driver.queue_size-support.patch
|
||||
024-cli-Add-poll-settings-for-iothread.patch
|
||||
025-test_cli-Fix-a-pycodestyle-E261-issue.patch
|
||||
026-gitignore-Ignore-coverage.xml.patch
|
||||
027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
|
||||
028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
|
||||
029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
|
||||
030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
|
||||
031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
|
||||
032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
|
||||
033-createvm-prioritize-riscv64.patch
|
||||
034-tests-uitests-handle-linux2020-going-EOL.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 6 15:34:37 MST 2025 - carnold@suse.com
|
||||
|
||||
|
||||
@@ -19,14 +19,17 @@
|
||||
%global __python %{__python3}
|
||||
%global with_guestfs 0
|
||||
%global default_hvs "qemu,xen,lxc"
|
||||
%if 0%{?suse_version} < 1600
|
||||
%if 0%{?suse_version} < 1600 || 0%{?suse_version} >= 1699
|
||||
%define is_sles16 0
|
||||
%define have_spice 1
|
||||
%else
|
||||
%define is_sles16 1
|
||||
%define have_spice 0
|
||||
%endif
|
||||
|
||||
%global flavor @BUILD_FLAVOR@%{nil}
|
||||
%if "%{flavor}" == "test"
|
||||
# No spice on SLES16 so no running check build
|
||||
%if "%{flavor}" == "test" && %{have_spice}
|
||||
%bcond_without test
|
||||
%define psuffix -%{flavor}
|
||||
%else
|
||||
@@ -55,6 +58,34 @@ Patch6: 006-addhardware-panic-Fill-in-model-combo-with-advertised-values
|
||||
Patch7: 007-cli-man-Always-list-osinfo-before-os-variant.patch
|
||||
Patch8: 008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
|
||||
Patch9: 009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
|
||||
Patch10: 010-virtManager-domain-fix-indentation.patch
|
||||
Patch21: 021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
|
||||
Patch22: 022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
|
||||
Patch23: 023-cli-Add-disk-driver.queue_size-support.patch
|
||||
Patch24: 024-cli-Add-poll-settings-for-iothread.patch
|
||||
Patch25: 025-test_cli-Fix-a-pycodestyle-E261-issue.patch
|
||||
Patch26: 026-gitignore-Ignore-coverage.xml.patch
|
||||
Patch27: 027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
|
||||
Patch28: 028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
|
||||
Patch29: 029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
|
||||
Patch30: 030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
|
||||
Patch31: 031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
|
||||
Patch32: 032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
|
||||
Patch33: 033-createvm-prioritize-riscv64.patch
|
||||
Patch34: 034-tests-uitests-handle-linux2020-going-EOL.patch
|
||||
Patch40: 040-virtinst-add-pstore-backend-support.patch
|
||||
Patch41: 041-tests-add-pstore-test.patch
|
||||
Patch42: 042-man-virt-install-Document-pstore-device.patch
|
||||
Patch43: 043-tests-Increase-virtio-mem-block-size.patch
|
||||
Patch44: 044-tests-test_urls-fix-dead-URL.patch
|
||||
Patch45: 045-urlfetcher-add-riscv64-architecture-for-Debian.patch
|
||||
Patch46: 046-virt-manager-list-virtual-networks-when-creating-new-QEMU-Session-VM.patch
|
||||
Patch47: 047-virt-install-add-support-for-vDPA-network-device.patch
|
||||
Patch48: 048-virt-manager-add-support-for-vDPA-network-device.patch
|
||||
Patch49: 049-virt-install-detect-wayland-in-order-to-start-virt-viewer.patch
|
||||
Patch50: 050-Validation-allow-spaces-disallow-slashes.patch
|
||||
Patch51: 051-fix-default-start_folder-to-None.patch
|
||||
Patch52: 052-Add-Ctrl+Alt+Shift+Esc-key-command-for-loginds-SecureAttentionKey.patch
|
||||
Patch100: revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch
|
||||
# SUSE Only
|
||||
Patch150: virtman-desktop.patch
|
||||
@@ -111,30 +142,28 @@ BuildArch: noarch
|
||||
|
||||
%define verrel %{version}-%{release}
|
||||
Requires: dconf
|
||||
Requires: gstreamer-plugins-good
|
||||
Requires: gtk3
|
||||
Requires: python3-gobject
|
||||
# For console widget
|
||||
Requires: python3-cairo
|
||||
Requires: python3-dbus-python
|
||||
Requires: python3-gobject-Gdk
|
||||
Requires: python3-gobject-cairo
|
||||
%if %{have_spice}
|
||||
Recommends: python3-SpiceClientGtk
|
||||
%endif
|
||||
Requires: virt-install
|
||||
Requires: virt-manager-common = %{verrel}
|
||||
Requires: typelib(GtkSource)
|
||||
Requires: vte
|
||||
|
||||
%if %{with_guestfs}
|
||||
Requires: python3-libguestfs
|
||||
%endif
|
||||
Recommends: gtksourceview4
|
||||
Recommends: libvirt-daemon-config-network
|
||||
Recommends: (libvirt-daemon-kvm or libvirt-daemon-qemu)
|
||||
|
||||
Suggests: python3-libguestfs
|
||||
|
||||
BuildRequires: gettext
|
||||
BuildRequires: meson
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-docutils
|
||||
BuildRequires: python3-setuptools
|
||||
BuildRequires: pkgconfig(gobject-introspection-1.0)
|
||||
%if %{is_sles16}
|
||||
%define __requires_exclude typelib\\(AppIndicator3|SpiceClientGtk|SpiceClientGLib|GtkSource\\) = 3.0
|
||||
%else
|
||||
# GtkSource = 4 is available everywhere we run this version of virt-manager
|
||||
%define __requires_exclude typelib\\(GtkSource\\) = 3.0
|
||||
%endif
|
||||
%if %{with test}
|
||||
BuildRequires: python3-argcomplete
|
||||
BuildRequires: python3-pytest
|
||||
@@ -157,16 +186,12 @@ Group: System/Monitoring
|
||||
# This version not strictly required: virt-manager should work with older,
|
||||
# however varying amounts of functionality will not be enabled.
|
||||
Requires: libosinfo >= 0.2.10
|
||||
Requires: mkisofs
|
||||
Requires: python3-argcomplete
|
||||
Requires: python3-gobject
|
||||
Requires: python3-libvirt-python >= 0.7.0
|
||||
Requires: python3-libxml2-python
|
||||
Requires: python3-pycurl
|
||||
Requires: python3-requests
|
||||
Requires: xorriso
|
||||
Requires: typelib(AppIndicator3)
|
||||
Requires: typelib(LibvirtGLib)
|
||||
Suggests: python3-virt-bootstrap
|
||||
BuildRequires: gobject-introspection
|
||||
|
||||
%description common
|
||||
Common files used by the different virt-manager interfaces, as well as
|
||||
@@ -176,11 +201,12 @@ virt-install related tools.
|
||||
Summary: Utilities for installing virtual machines
|
||||
Group: System/Monitoring
|
||||
|
||||
Requires: libvirt-client
|
||||
Requires: virt-manager-common = %{verrel}
|
||||
|
||||
Requires: python3-requests
|
||||
Provides: python3-virtinst
|
||||
Provides: virt-clone
|
||||
Provides: virt-xml
|
||||
Supplements: virt-manager
|
||||
|
||||
%description -n virt-install
|
||||
@@ -196,10 +222,10 @@ machine).
|
||||
%if %{default_hvs}
|
||||
%global _default_hvs --default-hvs %{default_hvs}
|
||||
%endif
|
||||
%if ! %{have_spice}
|
||||
%global _default_graphics -Ddefault-graphics=vnc
|
||||
%else
|
||||
%if %{have_spice}
|
||||
%global _default_graphics -Ddefault-graphics=spice
|
||||
%else
|
||||
%global _default_graphics -Ddefault-graphics=vnc
|
||||
%endif
|
||||
%meson \
|
||||
-Ddefault-hvs=%{default_hvs} \
|
||||
@@ -213,7 +239,7 @@ machine).
|
||||
%meson_install
|
||||
|
||||
# YaST is not used on SLES16
|
||||
%if %{?suse_version} != 1600
|
||||
%if ! %{?is_sles16}
|
||||
mkdir -p %{buildroot}/%{_datadir}/YaST2/clients/
|
||||
install -m644 %SOURCE1 %{buildroot}/%{_datadir}/YaST2/clients/virt-install.rb
|
||||
mkdir -p %{buildroot}/%{_datadir}/applications/YaST2/
|
||||
@@ -319,9 +345,11 @@ fi
|
||||
|
||||
%{_datadir}/metainfo/%{name}.appdata.xml
|
||||
%{_datadir}/applications/%{name}.desktop
|
||||
%if %{?suse_version} != 1600
|
||||
%if ! %{?is_sles16}
|
||||
%{_datadir}/applications/YaST2/virt-install.desktop
|
||||
%endif
|
||||
%dir %{_datadir}/glib-2.0
|
||||
%dir %{_datadir}/glib-2.0/schemas
|
||||
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml
|
||||
%dir /usr/lib/supportconfig
|
||||
%dir /usr/lib/supportconfig/plugins
|
||||
@@ -346,7 +374,7 @@ fi
|
||||
%{_bindir}/virt-xml
|
||||
%{_datadir}/bash-completion/completions/virt-xml
|
||||
|
||||
%if %{?suse_version} != 1600
|
||||
%if ! %{?is_sles16}
|
||||
%dir %{_datadir}/YaST2
|
||||
%dir %{_datadir}/YaST2/clients
|
||||
%dir %{_datadir}/applications/YaST2
|
||||
|
||||
@@ -6,9 +6,9 @@ Index: virt-manager-5.0.0/virtinst/install/urldetect.py
|
||||
else:
|
||||
if "SUSE SL Micro" in self.product_name:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[3]
|
||||
+ elif "SUSE SLES" in self.product_name:
|
||||
+ elif "SUSE SLES Full" in self.product_name:
|
||||
+ # For SLES 16
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')[2]
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')[3]
|
||||
+ sle_version = sle_version.rstrip(".0")
|
||||
else:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
@@ -30,3 +30,14 @@ Index: virt-manager-5.0.0/virtinst/install/urldetect.py
|
||||
if media_str:
|
||||
media_arch = "x86_64"
|
||||
if 'aarch64' in media_str:
|
||||
@@ -582,6 +592,10 @@ class _SuseDistro(_RHELDistro):
|
||||
self._kernel_paths.append(
|
||||
("suseboot/linux64", "suseboot/initrd64"))
|
||||
|
||||
+ # Tested with SLES 16
|
||||
+ self._kernel_paths.append(
|
||||
+ ("../boot/%s/loader/linux" % tree_arch,
|
||||
+ "../boot/%s/loader/initrd" % tree_arch))
|
||||
# Tested with SLES 12 for ppc64le, all s390x
|
||||
self._kernel_paths.append(
|
||||
("boot/%s/linux" % tree_arch,
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
References: bsc#1234215
|
||||
|
||||
--- virt-manager-5.0.0/virtinst/devices/disk.py.orig 2024-12-05 07:15:41.023613127 -0700
|
||||
+++ virt-manager-5.0.0/virtinst/devices/disk.py 2024-12-05 07:22:16.587622553 -0700
|
||||
@@ -677,7 +677,10 @@ class DeviceDisk(Device):
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
@@ -678,7 +678,10 @@ class DeviceDisk(Device):
|
||||
# Some file managers use 'file://' when passing files to
|
||||
# virt-manager, we need to strip it from the newpath.
|
||||
if newpath is not None:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
Reference: bnc#869024
|
||||
Disable graphics on s390x
|
||||
Index: virt-manager-4.2.0/virtinst/guest.py
|
||||
Index: virt-manager-5.0.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-4.2.0/virtinst/guest.py
|
||||
@@ -208,7 +208,10 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-5.0.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.0.0/virtinst/guest.py
|
||||
@@ -212,7 +212,10 @@ class Guest(XMLBuilder):
|
||||
self.skip_default_channel = False
|
||||
self.skip_default_sound = False
|
||||
self.skip_default_usbredir = False
|
||||
@@ -16,7 +16,7 @@ Index: virt-manager-4.2.0/virtinst/guest.py
|
||||
self.skip_default_rng = False
|
||||
self.skip_default_tpm = False
|
||||
self.skip_default_input = False
|
||||
@@ -361,7 +364,7 @@ class Guest(XMLBuilder):
|
||||
@@ -365,7 +368,7 @@ class Guest(XMLBuilder):
|
||||
if not os_support:
|
||||
return False
|
||||
|
||||
@@ -25,7 +25,7 @@ Index: virt-manager-4.2.0/virtinst/guest.py
|
||||
return True
|
||||
|
||||
return False # pragma: no cover
|
||||
@@ -1149,7 +1152,7 @@ class Guest(XMLBuilder):
|
||||
@@ -1153,7 +1156,7 @@ class Guest(XMLBuilder):
|
||||
self.add_device(dev)
|
||||
|
||||
def _add_default_video_device(self):
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
References: bsc#1172356, bsc#1177620
|
||||
Libvirt doesn't accept "Hypervisor default" as a model name
|
||||
|
||||
Index: virt-manager-4.2.0/virtinst/devices/interface.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/interface.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/devices/interface.py
|
||||
+++ virt-manager-4.2.0/virtinst/devices/interface.py
|
||||
@@ -365,6 +365,9 @@ class DeviceInterface(Device):
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/interface.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/interface.py
|
||||
@@ -366,6 +366,9 @@ class DeviceInterface(Device):
|
||||
return "e1000e"
|
||||
if not guest.os.is_x86():
|
||||
return None
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Use the correct qemu emulator based on the architecture.
|
||||
We want to get away from using the old qemu-dm emulator
|
||||
for Xen HVM guests so default to qemu-system-i386.
|
||||
Index: virt-manager-4.2.0/virtinst/guest.py
|
||||
Index: virt-manager-5.0.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-4.2.0/virtinst/guest.py
|
||||
@@ -991,6 +991,10 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-5.0.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.0.0/virtinst/guest.py
|
||||
@@ -995,6 +995,10 @@ class Guest(XMLBuilder):
|
||||
self._add_default_tpm()
|
||||
|
||||
self.clock.set_defaults(self)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: bsc#1180069
|
||||
|
||||
Index: virt-manager-4.2.0/virtinst/guest.py
|
||||
Index: virt-manager-5.0.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-4.2.0/virtinst/guest.py
|
||||
@@ -737,6 +737,8 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-5.0.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.0.0/virtinst/guest.py
|
||||
@@ -741,6 +741,8 @@ class Guest(XMLBuilder):
|
||||
self.type != "kvm"):
|
||||
log.warning( # pragma: no cover
|
||||
"KVM acceleration not available, using '%s'", self.type)
|
||||
|
||||
@@ -2,11 +2,11 @@ References: bsc#989639
|
||||
When the device added is a cdrom device (/dev/sr0), don't use
|
||||
"phy" as the driver name but instead use "qemu".
|
||||
|
||||
Index: virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
@@ -566,7 +566,8 @@ class DeviceDisk(Device):
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
@@ -567,7 +567,8 @@ class DeviceDisk(Device):
|
||||
# Recommended xen defaults from here:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1171550#c9
|
||||
# If type block, use name=phy. Otherwise do the same as qemu
|
||||
|
||||
@@ -2,11 +2,11 @@ Reference: bnc#813082
|
||||
Virt-manager on Xen doesn't fill in any type thereby defaulting to
|
||||
'raw'. This patch will generate the correct XML on Xen.
|
||||
|
||||
Index: virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
@@ -583,6 +583,10 @@ class DeviceDisk(Device):
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
@@ -584,6 +584,10 @@ class DeviceDisk(Device):
|
||||
https://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
|
||||
"""
|
||||
if self.driver_name != self.DRIVER_NAME_QEMU:
|
||||
|
||||
@@ -6,11 +6,11 @@ types (ide vs xen) it added xvda with hda. These disks were then
|
||||
passed to qemu where it error'ed out with the disks having the same
|
||||
index (in this case both are 0).
|
||||
|
||||
Index: virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
@@ -941,6 +941,17 @@ class DeviceDisk(Device):
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
@@ -942,6 +942,17 @@ class DeviceDisk(Device):
|
||||
:returns: generated target
|
||||
"""
|
||||
prefix, maxnode = self.get_target_prefix()
|
||||
@@ -28,7 +28,7 @@ Index: virt-manager-4.2.0/virtinst/devices/disk.py
|
||||
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
|
||||
skip_targets.sort()
|
||||
|
||||
@@ -948,11 +959,18 @@ class DeviceDisk(Device):
|
||||
@@ -949,11 +960,18 @@ class DeviceDisk(Device):
|
||||
first_found = None
|
||||
|
||||
for i in range(maxnode):
|
||||
|
||||
@@ -119,7 +119,7 @@ Index: virt-manager-5.0.0/virtManager/object/domain.py
|
||||
|
||||
self._redefine_xmlobj(guest)
|
||||
|
||||
@@ -1320,6 +1338,9 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -1319,6 +1337,9 @@ class vmmDomain(vmmLibvirtObject):
|
||||
def get_description(self):
|
||||
return self.get_xmlobj().description
|
||||
|
||||
@@ -190,7 +190,7 @@ Index: virt-manager-5.0.0/virtinst/devices/interface.py
|
||||
===================================================================
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/interface.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/interface.py
|
||||
@@ -310,6 +310,9 @@ class DeviceInterface(Device):
|
||||
@@ -311,6 +311,9 @@ class DeviceInterface(Device):
|
||||
|
||||
portForward = XMLChildProperty(_PortForward)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ Index: virt-manager-5.0.0/virtManager/object/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-5.0.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-5.0.0/virtManager/object/domain.py
|
||||
@@ -1613,7 +1613,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -1612,7 +1612,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
return (self.is_stoppable() or
|
||||
self.status() in [libvirt.VIR_DOMAIN_CRASHED])
|
||||
def is_runable(self):
|
||||
|
||||
Reference in New Issue
Block a user