Compare commits
2 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 12080b5991 | |||
| 379a98c5f8 |
99
001-cli-Support-cpu-maximum.patch
Normal file
99
001-cli-Support-cpu-maximum.patch
Normal file
@@ -0,0 +1,99 @@
|
||||
Subject: cli: Support --cpu maximum
|
||||
From: Andrea Bolognani abologna@redhat.com Fri Dec 6 22:10:31 2024 +0100
|
||||
Date: Tue Dec 10 14:01:32 2024 +0100:
|
||||
Git: fca41cfaa970ba5a4e695f482fd599f53572b6c7
|
||||
|
||||
This mode has been introduced in libvirt 7.1.0 (March 2021) and
|
||||
can be already used today with
|
||||
|
||||
--cpu mode=maximum
|
||||
|
||||
This is however slightly inconvenient to type and is not
|
||||
consistent with the special treatment that the other modes
|
||||
(host-passthrough, host-model) get.
|
||||
|
||||
Introduce a proper special mode for it.
|
||||
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
diff --git a/man/virt-install.rst b/man/virt-install.rst
|
||||
index 86152d214..775d7ce70 100644
|
||||
--- a/man/virt-install.rst
|
||||
+++ b/man/virt-install.rst
|
||||
@@ -438,6 +438,11 @@ Some examples:
|
||||
``--cpu host-passthrough,cache.mode=passthrough``
|
||||
Example of passing through the host cpu's cache information.
|
||||
|
||||
+``--cpu maximum``
|
||||
+ Expose the most feature-rich CPU possible. Useful when running a foreign
|
||||
+ architecture guest, for example a riscv64 guest on an x86_64 host. Not
|
||||
+ recommended when using KVM to run a same-architecture guest.
|
||||
+
|
||||
Use --cpu=? to see a list of all available sub options.
|
||||
Complete details at https://libvirt.org/formatdomain.html#cpu-model-and-topology
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-linux2020.xml b/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
index 5a7d7adf3..b37b87758 100644
|
||||
--- a/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
@@ -19,7 +19,7 @@
|
||||
<apic/>
|
||||
<vmport state="off"/>
|
||||
</features>
|
||||
- <cpu mode="host-passthrough"/>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc">
|
||||
<timer name="rtc" tickpolicy="catchup"/>
|
||||
<timer name="pit" tickpolicy="delay"/>
|
||||
@@ -102,7 +102,7 @@
|
||||
<apic/>
|
||||
<vmport state="off"/>
|
||||
</features>
|
||||
- <cpu mode="host-passthrough"/>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc">
|
||||
<timer name="rtc" tickpolicy="catchup"/>
|
||||
<timer name="pit" tickpolicy="delay"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 23ad1cadb..03c3316e1 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", "linux2020", prerun_check=no_osinfo_linux2020_virtio)
|
||||
+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
|
||||
diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py
|
||||
index df0ca2250..91a9481cf 100644
|
||||
--- a/virtinst/domain/cpu.py
|
||||
+++ b/virtinst/domain/cpu.py
|
||||
@@ -267,12 +267,13 @@ class DomainCpu(XMLBuilder):
|
||||
SPECIAL_MODE_HOST_COPY = "host-copy"
|
||||
SPECIAL_MODE_HOST_MODEL = "host-model"
|
||||
SPECIAL_MODE_HOST_PASSTHROUGH = "host-passthrough"
|
||||
+ SPECIAL_MODE_MAXIMUM = "maximum"
|
||||
SPECIAL_MODE_CLEAR = "clear"
|
||||
SPECIAL_MODE_APP_DEFAULT = "default"
|
||||
SPECIAL_MODES = [SPECIAL_MODE_HOST_MODEL_ONLY, SPECIAL_MODE_HV_DEFAULT,
|
||||
SPECIAL_MODE_HOST_COPY, SPECIAL_MODE_HOST_MODEL,
|
||||
- SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_CLEAR,
|
||||
- SPECIAL_MODE_APP_DEFAULT]
|
||||
+ SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_MAXIMUM,
|
||||
+ SPECIAL_MODE_CLEAR, SPECIAL_MODE_APP_DEFAULT]
|
||||
|
||||
def _get_app_default_mode(self, guest):
|
||||
# Depending on if libvirt+qemu is new enough, we prefer
|
||||
@@ -295,7 +296,8 @@ class DomainCpu(XMLBuilder):
|
||||
log.debug("Using default cpu mode=%s", val)
|
||||
|
||||
if (val == self.SPECIAL_MODE_HOST_MODEL or
|
||||
- val == self.SPECIAL_MODE_HOST_PASSTHROUGH):
|
||||
+ val == self.SPECIAL_MODE_HOST_PASSTHROUGH or
|
||||
+ val == self.SPECIAL_MODE_MAXIMUM):
|
||||
self.model = None
|
||||
self.vendor = None
|
||||
self.model_fallback = None
|
||||
47
002-gui-Support-maximum-CPU-mode.patch
Normal file
47
002-gui-Support-maximum-CPU-mode.patch
Normal file
@@ -0,0 +1,47 @@
|
||||
Subject: gui: Support maximum CPU mode
|
||||
From: Andrea Bolognani abologna@redhat.com Fri Dec 6 22:28:09 2024 +0100
|
||||
Date: Tue Dec 10 14:01:32 2024 +0100:
|
||||
Git: 11b70218d3b38efae36db8ba4149702a6d51afc0
|
||||
|
||||
Allow the user to set it and recognize it correctly when the
|
||||
domain is already using it.
|
||||
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
diff --git a/virtManager/details/details.py b/virtManager/details/details.py
|
||||
index e53c52ef0..0dc9d2d64 100644
|
||||
--- a/virtManager/details/details.py
|
||||
+++ b/virtManager/details/details.py
|
||||
@@ -775,6 +775,8 @@ class vmmDetails(vmmGObjectUI):
|
||||
virtinst.DomainCpu.SPECIAL_MODE_HOST_MODEL, False])
|
||||
model.append(["host-passthrough", "05",
|
||||
virtinst.DomainCpu.SPECIAL_MODE_HOST_PASSTHROUGH, False])
|
||||
+ model.append(["maximum", "06",
|
||||
+ virtinst.DomainCpu.SPECIAL_MODE_MAXIMUM, False])
|
||||
model.append([None, None, None, True])
|
||||
for name in domcaps.get_cpu_models():
|
||||
model.append([name, name, name, False])
|
||||
@@ -1915,7 +1917,8 @@ class vmmDetails(vmmGObjectUI):
|
||||
# CPU model config
|
||||
model = cpu.model or None
|
||||
is_host = (cpu.mode in ["host-model", "host-passthrough"])
|
||||
- if not model and is_host:
|
||||
+ is_special_mode = (cpu.mode in virtinst.DomainCpu.SPECIAL_MODES)
|
||||
+ if not model and is_special_mode:
|
||||
model = cpu.mode
|
||||
|
||||
if model:
|
||||
diff --git a/virtManager/preferences.py b/virtManager/preferences.py
|
||||
index 5022f7ed3..df599d044 100644
|
||||
--- a/virtManager/preferences.py
|
||||
+++ b/virtManager/preferences.py
|
||||
@@ -172,7 +172,8 @@ class vmmPreferences(vmmGObjectUI):
|
||||
[DomainCpu.SPECIAL_MODE_HOST_MODEL_ONLY,
|
||||
_("Nearest host CPU model")],
|
||||
[DomainCpu.SPECIAL_MODE_HOST_MODEL, "host-model"],
|
||||
- [DomainCpu.SPECIAL_MODE_HOST_PASSTHROUGH, "host-passthrough"]]:
|
||||
+ [DomainCpu.SPECIAL_MODE_HOST_PASSTHROUGH, "host-passthrough"],
|
||||
+ [DomainCpu.SPECIAL_MODE_MAXIMUM, "maximum"]]:
|
||||
model.append(row)
|
||||
combo.set_model(model)
|
||||
uiutil.init_combo_text_column(combo, 1)
|
||||
240
003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
Normal file
240
003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
Normal file
@@ -0,0 +1,240 @@
|
||||
Subject: cpu: Prefer maximum mode for many emulated guests
|
||||
From: Andrea Bolognani abologna@redhat.com Fri Dec 6 23:02:29 2024 +0100
|
||||
Date: Tue Dec 10 14:01:32 2024 +0100:
|
||||
Git: 8af438dd58cafe90d591eef25e7510c313cf3036
|
||||
|
||||
The actual default CPU at the QEMU level is often a relatively
|
||||
poor choice, which is stuck with just baseline functionality
|
||||
and can sometimes not run modern guests at all.
|
||||
|
||||
Whenever possible, prefer maximum mode for a much nicer out of
|
||||
the box experience.
|
||||
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-aarch64-machdefault.xml b/tests/data/cli/compare/virt-install-aarch64-machdefault.xml
|
||||
index f88a0fc17..d17c82573 100644
|
||||
--- a/tests/data/cli/compare/virt-install-aarch64-machdefault.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-aarch64-machdefault.xml
|
||||
@@ -18,9 +18,7 @@
|
||||
<features>
|
||||
<acpi/>
|
||||
</features>
|
||||
- <cpu mode="custom" match="exact">
|
||||
- <model>cortex-a57</model>
|
||||
- </cpu>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-aarch64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-aarch64-machvirt.xml b/tests/data/cli/compare/virt-install-aarch64-machvirt.xml
|
||||
index f88a0fc17..d17c82573 100644
|
||||
--- a/tests/data/cli/compare/virt-install-aarch64-machvirt.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-aarch64-machvirt.xml
|
||||
@@ -18,9 +18,7 @@
|
||||
<features>
|
||||
<acpi/>
|
||||
</features>
|
||||
- <cpu mode="custom" match="exact">
|
||||
- <model>cortex-a57</model>
|
||||
- </cpu>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-aarch64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml b/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml
|
||||
index b56d07880..bc8006252 100644
|
||||
--- a/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml
|
||||
@@ -15,6 +15,7 @@
|
||||
<initrd>/f19-arm.initrd</initrd>
|
||||
<cmdline>foo</cmdline>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-arm</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-arm-virt-f20.xml b/tests/data/cli/compare/virt-install-arm-virt-f20.xml
|
||||
index 9d2001697..dc74281b7 100644
|
||||
--- a/tests/data/cli/compare/virt-install-arm-virt-f20.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-arm-virt-f20.xml
|
||||
@@ -15,6 +15,7 @@
|
||||
<initrd>/f19-arm.initrd</initrd>
|
||||
<cmdline>console=ttyAMA0,1234 rw root=/dev/vda3</cmdline>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-arm</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-riscv64-cdrom.xml b/tests/data/cli/compare/virt-install-riscv64-cdrom.xml
|
||||
index 35cd1e712..1d6bd923c 100644
|
||||
--- a/tests/data/cli/compare/virt-install-riscv64-cdrom.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-riscv64-cdrom.xml
|
||||
@@ -14,6 +14,7 @@
|
||||
<boot dev="cdrom"/>
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
@@ -92,6 +93,7 @@
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml b/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml
|
||||
index b83937ca5..815f93ea0 100644
|
||||
--- a/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml
|
||||
@@ -12,6 +12,7 @@
|
||||
<os firmware="efi">
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
@@ -87,6 +88,7 @@
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-riscv64-graphics.xml b/tests/data/cli/compare/virt-install-riscv64-graphics.xml
|
||||
index 659dae74f..04ab41933 100644
|
||||
--- a/tests/data/cli/compare/virt-install-riscv64-graphics.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-riscv64-graphics.xml
|
||||
@@ -13,6 +13,7 @@
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-riscv64-headless.xml b/tests/data/cli/compare/virt-install-riscv64-headless.xml
|
||||
index 939e71b2a..27328a123 100644
|
||||
--- a/tests/data/cli/compare/virt-install-riscv64-headless.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-riscv64-headless.xml
|
||||
@@ -13,6 +13,7 @@
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml b/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml
|
||||
index 640e5ee0d..c3714594a 100644
|
||||
--- a/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml
|
||||
@@ -15,6 +15,7 @@
|
||||
<initrd>/initrd.img</initrd>
|
||||
<cmdline>root=/dev/vda2</cmdline>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
diff --git a/tests/data/cli/compare/virt-install-riscv64-unattended.xml b/tests/data/cli/compare/virt-install-riscv64-unattended.xml
|
||||
index 0a9f88b4e..7fdb32d04 100644
|
||||
--- a/tests/data/cli/compare/virt-install-riscv64-unattended.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-riscv64-unattended.xml
|
||||
@@ -12,6 +12,7 @@
|
||||
<os firmware="efi">
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
@@ -90,6 +91,7 @@
|
||||
<type arch="riscv64" machine="virt">hvm</type>
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
+ <cpu mode="maximum"/>
|
||||
<clock offset="utc"/>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-riscv64</emulator>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 03c3316e1..dc9c156da 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -1247,7 +1247,7 @@ c.add_compare("--connect %(URI-KVM-ARMV7L)s --disk %(EXISTIMG1)s --import --os-v
|
||||
|
||||
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
|
||||
c.add_invalid("--arch aarch64 --nodisks --pxe --connect " + utils.URIs.kvm_x86, grep="OS name is required") # catch missing osinfo for non-x86
|
||||
-c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
|
||||
+c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --cpu default --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
|
||||
c.add_compare("--arch aarch64 --osinfo fedora19 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machdefault")
|
||||
c.add_compare("--arch aarch64 --cdrom %(ISO-F26-NETINST)s --boot loader=CODE.fd,nvram.template=VARS.fd --disk %(EXISTIMG1)s --cpu none --events on_crash=preserve,on_reboot=destroy,on_poweroff=restart", "aarch64-cdrom") # cdrom test, but also --cpu none override, --events override, and headless
|
||||
c.add_compare("--connect %(URI-KVM-AARCH64)s --disk %(EXISTIMG1)s --import --os-variant fedora21 --panic default --graphics vnc", "aarch64-kvm-import") # --import test, but also test --panic no-op, and --graphics
|
||||
diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py
|
||||
index 91a9481cf..cc4053f88 100644
|
||||
--- a/virtinst/domain/cpu.py
|
||||
+++ b/virtinst/domain/cpu.py
|
||||
@@ -275,11 +275,26 @@ class DomainCpu(XMLBuilder):
|
||||
SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_MAXIMUM,
|
||||
SPECIAL_MODE_CLEAR, SPECIAL_MODE_APP_DEFAULT]
|
||||
|
||||
+ def _should_use_maximum_cpu_mode(self, guest, domcaps):
|
||||
+ if (domcaps.supports_maximum_cpu_mode() and
|
||||
+ guest.type == "qemu" and
|
||||
+ (guest.os.is_x86() or
|
||||
+ guest.os.is_arm_machvirt() or
|
||||
+ guest.os.is_riscv_virt() or
|
||||
+ guest.os.is_loongarch64())):
|
||||
+ return True
|
||||
+
|
||||
+ return False
|
||||
+
|
||||
def _get_app_default_mode(self, guest):
|
||||
# Depending on if libvirt+qemu is new enough, we prefer
|
||||
# host-passthrough, then host-model, and finally host-model-only
|
||||
+ # Emulated guests use maximum mode if available
|
||||
domcaps = guest.lookup_domcaps()
|
||||
|
||||
+ if (self._should_use_maximum_cpu_mode(guest, domcaps)):
|
||||
+ return self.SPECIAL_MODE_MAXIMUM
|
||||
+
|
||||
if domcaps.supports_safe_host_passthrough():
|
||||
return self.SPECIAL_MODE_HOST_PASSTHROUGH
|
||||
|
||||
@@ -460,9 +475,12 @@ class DomainCpu(XMLBuilder):
|
||||
if guest.os.is_arm_machvirt() and guest.type == "kvm":
|
||||
self.mode = self.SPECIAL_MODE_HOST_PASSTHROUGH
|
||||
|
||||
- elif guest.os.is_arm64() and guest.os.is_arm_machvirt():
|
||||
- # -M virt defaults to a 32bit CPU, even if using aarch64
|
||||
- self.set_model(guest, "cortex-a57")
|
||||
-
|
||||
elif guest.os.is_x86() and guest.type == "kvm":
|
||||
self._set_cpu_x86_kvm_default(guest)
|
||||
+
|
||||
+ else:
|
||||
+ domcaps = guest.lookup_domcaps()
|
||||
+
|
||||
+ # Prefer to emulate a feature-rich CPU instead of a basic one
|
||||
+ if (self._should_use_maximum_cpu_mode(guest, domcaps)):
|
||||
+ self.set_special_mode(guest, self.SPECIAL_MODE_MAXIMUM)
|
||||
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
|
||||
index 3a19591d9..5d82a351e 100644
|
||||
--- a/virtinst/domcapabilities.py
|
||||
+++ b/virtinst/domcapabilities.py
|
||||
@@ -382,6 +382,10 @@ class DomainCapabilities(XMLBuilder):
|
||||
return (m and m.supported and
|
||||
"on" in m.get_enum("hostPassthroughMigratable").get_values())
|
||||
|
||||
+ def supports_maximum_cpu_mode(self):
|
||||
+ m = self.cpu.get_mode("maximum")
|
||||
+ return (m and m.supported)
|
||||
+
|
||||
def get_cpu_models(self):
|
||||
models = []
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
Subject: virtinst: cloudinit: include empty meta-data file
|
||||
From: Pavel Hrdina phrdina@redhat.com Mon Sep 29 16:14:35 2025 +0200
|
||||
Date: Wed Oct 1 06:38:27 2025 -0400:
|
||||
Git: ea71cf9a8a4161ce6e19eacf5f0d86d40ab74f23
|
||||
|
||||
Refactor creation of cloud-init config files introduced a bug where we
|
||||
stopped including empty meta-data file.
|
||||
|
||||
Introduced-by: 5b2d0997a1d2d213b17c227169da64e2fa7d09a6
|
||||
Fixes: https://github.com/virt-manager/virt-manager/issues/975
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtinst/install/cloudinit.py b/virtinst/install/cloudinit.py
|
||||
index 3f565f399..b2378fbfa 100644
|
||||
--- a/virtinst/install/cloudinit.py
|
||||
+++ b/virtinst/install/cloudinit.py
|
||||
@@ -36,7 +36,7 @@ class _CloudInitConfig:
|
||||
def _create_file(self):
|
||||
content = self._content()
|
||||
|
||||
- if not content:
|
||||
+ if content is None:
|
||||
return None
|
||||
|
||||
fileobj = tempfile.NamedTemporaryFile(
|
||||
32
004-domcaps-get-list-of-supported-panic-device-models.patch
Normal file
32
004-domcaps-get-list-of-supported-panic-device-models.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
Subject: domcaps: get list of supported panic device models
|
||||
From: Lin Ma lma@suse.de Tue Dec 3 13:32:15 2024 +0800
|
||||
Date: Tue Dec 10 14:05:20 2024 +0100:
|
||||
Git: c859c7acec38a68a46b3ee98b1ff494fa88d508e
|
||||
|
||||
libvirt commit a52cd504 added support for advertisting panic device models.
|
||||
Let's use it in domcapabilities.
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
|
||||
index 5d82a351e..9e1b11932 100644
|
||||
--- a/virtinst/domcapabilities.py
|
||||
+++ b/virtinst/domcapabilities.py
|
||||
@@ -115,6 +115,7 @@ class _Devices(_CapsBlock):
|
||||
filesystem = XMLChildProperty(_make_capsblock("filesystem"), is_single=True)
|
||||
redirdev = XMLChildProperty(_make_capsblock("redirdev"), is_single=True)
|
||||
channel = XMLChildProperty(_make_capsblock("channel"), is_single=True)
|
||||
+ panic = XMLChildProperty(_make_capsblock("panic"), is_single=True)
|
||||
|
||||
|
||||
class _Features(_CapsBlock):
|
||||
@@ -508,3 +509,9 @@ class DomainCapabilities(XMLBuilder):
|
||||
return []
|
||||
|
||||
return self.features.hyperv.get_enum("features").get_values()
|
||||
+
|
||||
+ def supported_panic_models(self):
|
||||
+ """
|
||||
+ Return list of supported panic device models.
|
||||
+ """
|
||||
+ return self.devices.panic.get_enum("model").get_values()
|
||||
@@ -0,0 +1,131 @@
|
||||
Subject: tests: Update capabilities for advertisting panic device models
|
||||
From: Lin Ma lma@suse.de Tue Dec 3 18:45:52 2024 +0800
|
||||
Date: Tue Dec 10 14:05:20 2024 +0100:
|
||||
Git: f9ceec2b14cb4012cb40226f3c0c05ff1ac8f708
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/tests/data/capabilities/kvm-aarch64-domcaps.xml b/tests/data/capabilities/kvm-aarch64-domcaps.xml
|
||||
index eeef1a17a..af8354b08 100644
|
||||
--- a/tests/data/capabilities/kvm-aarch64-domcaps.xml
|
||||
+++ b/tests/data/capabilities/kvm-aarch64-domcaps.xml
|
||||
@@ -215,6 +215,11 @@
|
||||
<value>lkcf</value>
|
||||
</enum>
|
||||
</crypto>
|
||||
+ <panic supported='yes'>
|
||||
+ <enum name='model'>
|
||||
+ <value>pvpanic</value>
|
||||
+ </enum>
|
||||
+ </panic>
|
||||
</devices>
|
||||
<features>
|
||||
<gic supported='yes'>
|
||||
diff --git a/tests/data/capabilities/kvm-loongarch64-domcaps.xml b/tests/data/capabilities/kvm-loongarch64-domcaps.xml
|
||||
index e9836fec4..d2b348f4c 100644
|
||||
--- a/tests/data/capabilities/kvm-loongarch64-domcaps.xml
|
||||
+++ b/tests/data/capabilities/kvm-loongarch64-domcaps.xml
|
||||
@@ -152,6 +152,11 @@
|
||||
<value>lkcf</value>
|
||||
</enum>
|
||||
</crypto>
|
||||
+ <panic supported='yes'>
|
||||
+ <enum name='model'>
|
||||
+ <value>pvpanic</value>
|
||||
+ </enum>
|
||||
+ </panic>
|
||||
</devices>
|
||||
<features>
|
||||
<gic supported='no'/>
|
||||
diff --git a/tests/data/capabilities/kvm-ppc64le-domcaps.xml b/tests/data/capabilities/kvm-ppc64le-domcaps.xml
|
||||
index 7d40b12ff..46234fd19 100644
|
||||
--- a/tests/data/capabilities/kvm-ppc64le-domcaps.xml
|
||||
+++ b/tests/data/capabilities/kvm-ppc64le-domcaps.xml
|
||||
@@ -160,6 +160,12 @@
|
||||
<value>lkcf</value>
|
||||
</enum>
|
||||
</crypto>
|
||||
+ <panic supported='yes'>
|
||||
+ <enum name='model'>
|
||||
+ <value>pseries</value>
|
||||
+ <value>pvpanic</value>
|
||||
+ </enum>
|
||||
+ </panic>
|
||||
</devices>
|
||||
<features>
|
||||
<gic supported='no'/>
|
||||
diff --git a/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml b/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml
|
||||
index 91fabc5fa..b5e06eda6 100644
|
||||
--- a/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml
|
||||
+++ b/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml
|
||||
@@ -259,6 +259,13 @@
|
||||
<value>lkcf</value>
|
||||
</enum>
|
||||
</crypto>
|
||||
+ <panic supported='yes'>
|
||||
+ <enum name='model'>
|
||||
+ <value>isa</value>
|
||||
+ <value>hyperv</value>
|
||||
+ <value>pvpanic</value>
|
||||
+ </enum>
|
||||
+ </panic>
|
||||
</devices>
|
||||
<features>
|
||||
<gic supported='no'/>
|
||||
diff --git a/tests/data/capabilities/qemu-riscv64-domcaps.xml b/tests/data/capabilities/qemu-riscv64-domcaps.xml
|
||||
index c8a9e5915..30eca7129 100644
|
||||
--- a/tests/data/capabilities/qemu-riscv64-domcaps.xml
|
||||
+++ b/tests/data/capabilities/qemu-riscv64-domcaps.xml
|
||||
@@ -167,6 +167,11 @@
|
||||
<value>lkcf</value>
|
||||
</enum>
|
||||
</crypto>
|
||||
+ <panic supported='yes'>
|
||||
+ <enum name='model'>
|
||||
+ <value>pvpanic</value>
|
||||
+ </enum>
|
||||
+ </panic>
|
||||
</devices>
|
||||
<features>
|
||||
<gic supported='no'/>
|
||||
diff --git a/tests/test_capabilities.py b/tests/test_capabilities.py
|
||||
index 1ebd564d4..5351c8352 100644
|
||||
--- a/tests/test_capabilities.py
|
||||
+++ b/tests/test_capabilities.py
|
||||
@@ -101,6 +101,7 @@ def testDomainCapabilitiesx86():
|
||||
assert caps.supports_memorybacking_memfd()
|
||||
assert caps.supports_redirdev_usb()
|
||||
assert caps.supports_channel_spicevmc()
|
||||
+ assert caps.supported_panic_models() == ["isa", "hyperv", "pvpanic"]
|
||||
|
||||
xml = open(DATADIR + "/kvm-x86_64-domcaps-amd-sev.xml").read()
|
||||
caps = DomainCapabilities(utils.URIs.open_testdriver_cached(), xml)
|
||||
@@ -119,6 +120,7 @@ def testDomainCapabilitiesAArch64():
|
||||
assert caps.supports_memorybacking_memfd()
|
||||
assert caps.supports_redirdev_usb()
|
||||
assert caps.supports_channel_spicevmc()
|
||||
+ assert caps.supported_panic_models() == ["pvpanic"]
|
||||
|
||||
|
||||
def testDomainCapabilitiesPPC64le():
|
||||
@@ -137,6 +139,7 @@ def testDomainCapabilitiesPPC64le():
|
||||
assert caps.supports_memorybacking_memfd()
|
||||
assert caps.supports_redirdev_usb()
|
||||
assert not caps.supports_channel_spicevmc()
|
||||
+ assert caps.supported_panic_models() == ["pseries", "pvpanic"]
|
||||
|
||||
|
||||
def testDomainCapabilitiesRISCV64():
|
||||
@@ -167,6 +170,7 @@ def testDomainCapabilitiesRISCV64():
|
||||
assert caps.supports_memorybacking_memfd()
|
||||
assert caps.supports_redirdev_usb()
|
||||
assert caps.supports_channel_spicevmc()
|
||||
+ assert caps.supported_panic_models() == ["pvpanic"]
|
||||
|
||||
|
||||
def testDomainCapabilitiesLoongArch64():
|
||||
@@ -197,3 +201,4 @@ def testDomainCapabilitiesLoongArch64():
|
||||
assert caps.supports_memorybacking_memfd()
|
||||
assert caps.supports_redirdev_usb()
|
||||
assert caps.supports_channel_spicevmc()
|
||||
+ assert caps.supported_panic_models() == ["pvpanic"]
|
||||
@@ -0,0 +1,29 @@
|
||||
Subject: addhardware: panic: Fill in model combo with advertised values by libvirt
|
||||
From: Lin Ma lma@suse.de Tue Dec 3 18:46:28 2024 +0800
|
||||
Date: Tue Dec 10 14:05:20 2024 +0100:
|
||||
Git: f92c25749bcd88bb7412c74119b25802327916e6
|
||||
|
||||
The commit c5a46646 asks libvirt to fill in a default panic model for us.
|
||||
Now libvirt domcaps can advertise panic models, Let's fill in the panic
|
||||
model combo with the advertised values.
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
|
||||
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
|
||||
index e6e4ec1d1..0faf30a53 100644
|
||||
--- a/virtManager/addhardware.py
|
||||
+++ b/virtManager/addhardware.py
|
||||
@@ -860,8 +860,13 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
|
||||
|
||||
def _build_panic_model_combo(self):
|
||||
+ guest = self.vm.get_xmlobj()
|
||||
values = [[None, _("Hypervisor default")]]
|
||||
+ for m in guest.lookup_domcaps().supported_panic_models():
|
||||
+ values.append([m, m])
|
||||
+
|
||||
uiutil.build_simple_combo(self.widget("panic-model"), values)
|
||||
+ uiutil.set_list_selection(self.widget("panic-model"), None)
|
||||
|
||||
|
||||
def _build_controller_type_combo(self):
|
||||
385
007-cli-man-Always-list-osinfo-before-os-variant.patch
Normal file
385
007-cli-man-Always-list-osinfo-before-os-variant.patch
Normal file
@@ -0,0 +1,385 @@
|
||||
Subject: cli, man: Always list --osinfo before --os-variant
|
||||
From: Andrea Bolognani abologna@redhat.com Mon Dec 2 19:25:51 2024 +0100
|
||||
Date: Tue Dec 10 14:06:12 2024 +0100:
|
||||
Git: c3debb4eda6b251fdad87f1ba5326671bb558d2b
|
||||
|
||||
The former is the preferred spelling and it should always be
|
||||
presented first to the user.
|
||||
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
diff --git a/man/virt-install.rst b/man/virt-install.rst
|
||||
index 775d7ce70..dc0b6d9cc 100644
|
||||
--- a/man/virt-install.rst
|
||||
+++ b/man/virt-install.rst
|
||||
@@ -1022,7 +1022,7 @@ GUEST OS OPTIONS
|
||||
================
|
||||
|
||||
|
||||
-``--os-variant``, ``--osinfo``
|
||||
+``--osinfo``, ``--os-variant``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**Syntax:** ``--osinfo`` [OSNAME|OPT1=VAL1,...]
|
||||
@@ -1031,7 +1031,7 @@ Optimize the guest configuration for a specific operating system.
|
||||
For most cases, an OS must be specified or detected from the install
|
||||
media so performance critical features like virtio can be enabled.
|
||||
|
||||
-The simplest usage is ``--os-variant OSNAME`` or ``--osinfo OSNAME``,
|
||||
+The simplest usage is ``--osinfo OSNAME`` or ``--os-variant OSNAME``,
|
||||
for example ``--osinfo fedora32``. The supported suboptions are:
|
||||
|
||||
``name=``, ``short-id=``
|
||||
@@ -1076,7 +1076,7 @@ VIRTINSTALL_OSINFO_DISABLE_REQUIRE=1.
|
||||
Use the command ``virt-install --osinfo list`` to get the list of the
|
||||
accepted OS variants. See ``osinfo-query os`` for even more output.
|
||||
|
||||
-Note: ``--os-variant`` and ``--osinfo`` are aliases for one another.
|
||||
+Note: ``--osinfo`` and ``--os-variant`` are aliases for one another.
|
||||
``--osinfo`` is the preferred new style naming.
|
||||
|
||||
|
||||
diff --git a/man/virt-xml.rst b/man/virt-xml.rst
|
||||
index dfb6fd9fb..7bccffbf9 100644
|
||||
--- a/man/virt-xml.rst
|
||||
+++ b/man/virt-xml.rst
|
||||
@@ -180,7 +180,7 @@ These options decide what action to take after altering the XML. In the common c
|
||||
GUEST OS OPTIONS
|
||||
================
|
||||
|
||||
-``--os-variant``, ``--osinfo`` OS_VARIANT
|
||||
+``--osinfo``, ``--os-variant`` OS_VARIANT
|
||||
Optimize the guest configuration for a specific operating system (ex.
|
||||
'fedora29', 'rhel7', 'win10'). While not required, specifying this
|
||||
options is HIGHLY RECOMMENDED, as it can greatly increase performance
|
||||
@@ -194,7 +194,7 @@ GUEST OS OPTIONS
|
||||
Use the command ``virt-xml --osinfo list`` to get the list of the
|
||||
accepted OS variants. See ``osinfo-query os`` for even more output.
|
||||
|
||||
- See virt-install(1) documentation for more details about ``--os-variant/--osinfo``
|
||||
+ See virt-install(1) documentation for more details about ``--osinfo/--os-variant``
|
||||
|
||||
|
||||
CONVERSION OPTIONS
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index dc9c156da..51a1883c4 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -1039,8 +1039,8 @@ c.add_compare("--connect %(URI-KVM-X86)s --install fedora26", "osinfo-url") # g
|
||||
c.add_valid("--location https://foobar.com --os-variant detect=yes,name=win7", nogrep="Please file a bug against virt-install") # os detection succeeds, the fallback warning shouldn't be printed
|
||||
c.add_valid("--pxe --os-variant detect=yes,name=win7", grep="Please file a bug against virt-install") # os detection fails, so fallback warning should be printed
|
||||
c.add_valid("--cdrom http://example.com/path/to/some.iso --os-variant detect=yes,require=no", grep="Please file a bug against virt-install") # detection fails with require=no, we should print the error about using fallback name=
|
||||
-c.add_invalid("--pxe --os-variant detect=yes,require=yes", grep="--os-variant/--osinfo OS name is required") # No os-variant detected, but require=yes
|
||||
-c.add_invalid("--pxe --osinfo detect=yes", grep="--os-variant/--osinfo OS name is required") # --osinfo detect=on failed, but with implied require=yes
|
||||
+c.add_invalid("--pxe --os-variant detect=yes,require=yes", grep="--osinfo/--os-variant OS name is required") # No os-variant detected, but require=yes
|
||||
+c.add_invalid("--pxe --osinfo detect=yes", grep="--osinfo/--os-variant OS name is required") # --osinfo detect=on failed, but with implied require=yes
|
||||
c.add_invalid("--pxe --virt-type foobar", grep="Host does not support domain type")
|
||||
c.add_invalid("--pxe --os-variant farrrrrrrge", grep="Unknown OS name")
|
||||
c.add_invalid("--pxe --boot menu=foobar", grep="menu must be 'yes' or 'no'")
|
||||
@@ -1409,9 +1409,9 @@ c.add_valid("test-for-virtxml --edit --cpu host-passthrough --no-define --start
|
||||
c.add_valid("test-for-virtxml --edit --metadata name=test-for-virtxml", grep="requested changes will have no effect")
|
||||
c.add_valid("--print-diff test-for-virtxml --remove-device --disk boot.order=5", grep="boot order=\"5")
|
||||
c.add_invalid("test --edit 2 --events on_poweroff=destroy", grep="'--edit 2' doesn't make sense with --events")
|
||||
-c.add_invalid("test --os-variant fedora26 --edit --cpu host-passthrough", grep="--os-variant/--osinfo is not supported")
|
||||
-c.add_invalid("test-for-virtxml --os-variant fedora26 --remove-device --disk 1", grep="--os-variant/--osinfo is not supported")
|
||||
-c.add_invalid("--build-xml --os-variant fedora26 --disk path=foo", grep="--os-variant/--osinfo is not supported")
|
||||
+c.add_invalid("test --os-variant fedora26 --edit --cpu host-passthrough", grep="--osinfo/--os-variant is not supported")
|
||||
+c.add_invalid("test-for-virtxml --os-variant fedora26 --remove-device --disk 1", grep="--osinfo/--os-variant is not supported")
|
||||
+c.add_invalid("--build-xml --os-variant fedora26 --disk path=foo", grep="--osinfo/--os-variant is not supported")
|
||||
c.add_invalid("domain-idontexist --edit --cpu host-passthrough --start", grep="Could not find domain")
|
||||
c.add_invalid("test-state-shutoff --edit --update --boot menu=on --start", grep="Cannot use --update")
|
||||
c.add_invalid("test --edit --update --events on_poweroff=destroy", grep="Don't know how to --update for --events")
|
||||
diff --git a/virtManager/createvm.py b/virtManager/createvm.py
|
||||
index d5f49fb70..e37921603 100644
|
||||
--- a/virtManager/createvm.py
|
||||
+++ b/virtManager/createvm.py
|
||||
@@ -103,7 +103,7 @@ class _GuestData:
|
||||
self.init = None
|
||||
|
||||
self.machine = None
|
||||
- self.os_variant = None
|
||||
+ self.osinfo = None
|
||||
self.uefi_requested = None
|
||||
self.name = None
|
||||
|
||||
@@ -138,8 +138,8 @@ class _GuestData:
|
||||
# If no machine was explicitly selected, we don't overwrite
|
||||
# it, because we want to
|
||||
guest.os.machine = self.machine
|
||||
- if self.os_variant:
|
||||
- guest.set_os_name(self.os_variant)
|
||||
+ if self.osinfo:
|
||||
+ guest.set_os_name(self.osinfo)
|
||||
if self.uefi_requested:
|
||||
guest.uefi_requested = self.uefi_requested
|
||||
|
||||
@@ -1578,7 +1578,7 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
self._gdata.cdrom = cdrom
|
||||
self._gdata.extra_args = extra
|
||||
self._gdata.livecd = False
|
||||
- self._gdata.os_variant = osobj and osobj.name or None
|
||||
+ self._gdata.osinfo = osobj and osobj.name or None
|
||||
guest = self._gdata.build_guest()
|
||||
installer = self._gdata.build_installer()
|
||||
except Exception as e:
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index b58717ab2..43d45a508 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -494,7 +494,7 @@ def fail_conflicting(option1, option2):
|
||||
def _get_completer_parsers():
|
||||
return VIRT_PARSERS + [ParserCheck, ParserLocation,
|
||||
ParserUnattended, ParserInstall, ParserCloudInit,
|
||||
- ParserOSVariant]
|
||||
+ ParserOSInfo]
|
||||
|
||||
|
||||
def _virtparser_completer(prefix, **kwargs):
|
||||
@@ -930,7 +930,7 @@ def add_disk_option(stog, editexample=False):
|
||||
"--disk=?") + editmsg)
|
||||
|
||||
|
||||
-def add_os_variant_option(parser, virtinstall):
|
||||
+def add_osinfo_option(parser, virtinstall):
|
||||
osg = parser.add_argument_group(_("OS options"))
|
||||
|
||||
if virtinstall:
|
||||
@@ -942,7 +942,7 @@ def add_os_variant_option(parser, virtinstall):
|
||||
"Example values: fedora29, rhel7.0, win10, ...\n"
|
||||
"Use '--osinfo list' to see a full list.")
|
||||
|
||||
- osg.add_argument("--os-variant", "--osinfo", help=msg)
|
||||
+ osg.add_argument("--osinfo", "--os-variant", help=msg)
|
||||
return osg
|
||||
|
||||
|
||||
@@ -1880,11 +1880,11 @@ def parse_location(optstr):
|
||||
return parsedata.location, parsedata.kernel, parsedata.initrd
|
||||
|
||||
|
||||
-########################
|
||||
-# --os-variant parsing #
|
||||
-########################
|
||||
+####################
|
||||
+# --osinfo parsing #
|
||||
+####################
|
||||
|
||||
-class OSVariantData(object):
|
||||
+class OSInfoData(object):
|
||||
_REQUIRE_ON = 1
|
||||
_REQUIRE_AUTO = 3
|
||||
|
||||
@@ -1936,8 +1936,8 @@ class OSVariantData(object):
|
||||
return self._name
|
||||
|
||||
|
||||
-class ParserOSVariant(VirtCLIParser):
|
||||
- cli_arg_name = "os_variant"
|
||||
+class ParserOSInfo(VirtCLIParser):
|
||||
+ cli_arg_name = "osinfo"
|
||||
supports_clearxml = False
|
||||
|
||||
@classmethod
|
||||
@@ -1956,9 +1956,9 @@ class ParserOSVariant(VirtCLIParser):
|
||||
return super().parse(inst)
|
||||
|
||||
|
||||
-def parse_os_variant(optstr):
|
||||
- data = OSVariantData()
|
||||
- parser = ParserOSVariant(optstr)
|
||||
+def parse_osinfo(optstr):
|
||||
+ data = OSInfoData()
|
||||
+ parser = ParserOSInfo(optstr)
|
||||
parser.parse(data)
|
||||
data.validate()
|
||||
return data
|
||||
@@ -5051,7 +5051,7 @@ def check_option_introspection(options):
|
||||
|
||||
|
||||
def check_osinfo_list(options):
|
||||
- if options.os_variant != "list":
|
||||
+ if options.osinfo != "list":
|
||||
return False
|
||||
|
||||
for osobj in OSDB.list_os():
|
||||
diff --git a/virtinst/install/installertreemedia.py b/virtinst/install/installertreemedia.py
|
||||
index 8b208bf50..dc6519eef 100644
|
||||
--- a/virtinst/install/installertreemedia.py
|
||||
+++ b/virtinst/install/installertreemedia.py
|
||||
@@ -29,15 +29,15 @@ def _is_url(url):
|
||||
|
||||
|
||||
class _LocationData(object):
|
||||
- def __init__(self, os_variant, kernel_pairs, os_media, os_tree):
|
||||
- self.os_variant = os_variant
|
||||
+ def __init__(self, osinfo, kernel_pairs, os_media, os_tree):
|
||||
+ self.osinfo = osinfo
|
||||
self.kernel_pairs = kernel_pairs
|
||||
self.os_media = os_media
|
||||
self.os_tree = os_tree
|
||||
|
||||
self.kernel_url_arg = None
|
||||
- if self.os_variant:
|
||||
- osobj = OSDB.lookup_os(self.os_variant)
|
||||
+ if self.osinfo:
|
||||
+ osobj = OSDB.lookup_os(self.osinfo)
|
||||
self.kernel_url_arg = osobj.get_kernel_url_arg()
|
||||
|
||||
|
||||
@@ -171,7 +171,7 @@ class InstallerTreeMedia(object):
|
||||
return self._cached_data
|
||||
|
||||
store = None
|
||||
- os_variant = None
|
||||
+ osinfo = None
|
||||
os_media = None
|
||||
os_tree = None
|
||||
kernel_paths = []
|
||||
@@ -187,14 +187,14 @@ class InstallerTreeMedia(object):
|
||||
|
||||
if store:
|
||||
kernel_paths = store.get_kernel_paths()
|
||||
- os_variant = store.get_osdict_info()
|
||||
+ osinfo = store.get_osdict_info()
|
||||
os_media = store.get_os_media()
|
||||
os_tree = store.get_os_tree()
|
||||
if has_location_kernel:
|
||||
kernel_paths = [
|
||||
(self._location_kernel, self._location_initrd)]
|
||||
|
||||
- self._cached_data = _LocationData(os_variant, kernel_paths,
|
||||
+ self._cached_data = _LocationData(osinfo, kernel_paths,
|
||||
os_media, os_tree)
|
||||
return self._cached_data
|
||||
|
||||
@@ -236,8 +236,8 @@ class InstallerTreeMedia(object):
|
||||
self._initrd_injections.append((scriptpath, expected_filename))
|
||||
|
||||
def _prepare_kernel_url_arg(self, guest, cache):
|
||||
- os_variant = cache.os_variant or guest.osinfo.name
|
||||
- osobj = OSDB.lookup_os(os_variant)
|
||||
+ osinfo = cache.osinfo or guest.osinfo.name
|
||||
+ osobj = OSDB.lookup_os(osinfo)
|
||||
return osobj.get_kernel_url_arg()
|
||||
|
||||
def _prepare_kernel_args(self, guest, cache, unattended_scripts):
|
||||
@@ -304,7 +304,7 @@ class InstallerTreeMedia(object):
|
||||
def detect_distro(self, guest):
|
||||
fetcher = self._get_fetcher(guest, None)
|
||||
cache = self._get_cached_data(guest, fetcher)
|
||||
- return cache.os_variant
|
||||
+ return cache.osinfo
|
||||
|
||||
def get_os_media(self, guest, meter):
|
||||
fetcher = self._get_fetcher(guest, meter)
|
||||
diff --git a/virtinst/virtinstall.py b/virtinst/virtinstall.py
|
||||
index 15fd6ae9d..e56486055 100644
|
||||
--- a/virtinst/virtinstall.py
|
||||
+++ b/virtinst/virtinstall.py
|
||||
@@ -571,7 +571,7 @@ def installer_detect_distro(guest, installer, osdata):
|
||||
fail(_("Error validating install location: %s") % str(e))
|
||||
|
||||
msg = _(
|
||||
- "--os-variant/--osinfo OS name is required, but no value was\n"
|
||||
+ "--osinfo/--os-variant OS name is required, but no value was\n"
|
||||
"set or detected.")
|
||||
if os_set:
|
||||
return
|
||||
@@ -650,7 +650,7 @@ def _build_options_guest(conn, options):
|
||||
|
||||
def build_guest_instance(conn, options):
|
||||
installdata = cli.parse_install(options.install)
|
||||
- osdata = cli.parse_os_variant(options.os_variant or installdata.os)
|
||||
+ osdata = cli.parse_osinfo(options.osinfo or installdata.os)
|
||||
options.boot_was_set = bool(options.boot)
|
||||
|
||||
if options.reinstall:
|
||||
@@ -1076,7 +1076,7 @@ def parse_args():
|
||||
cli.add_boot_options(insg)
|
||||
insg.add_argument("--init", help=argparse.SUPPRESS)
|
||||
|
||||
- osg = cli.add_os_variant_option(parser, virtinstall=True)
|
||||
+ osg = cli.add_osinfo_option(parser, virtinstall=True)
|
||||
osg.add_argument("--os-type", dest="old_os_type", help=argparse.SUPPRESS)
|
||||
|
||||
devg = parser.add_argument_group(_("Device Options"))
|
||||
@@ -1188,8 +1188,8 @@ def set_test_stub_options(options): # pragma: no cover
|
||||
options.disk = "none"
|
||||
if not options.graphics:
|
||||
options.graphics = "none"
|
||||
- if not options.os_variant:
|
||||
- options.os_variant = "fedora27"
|
||||
+ if not options.osinfo:
|
||||
+ options.osinfo = "fedora27"
|
||||
|
||||
|
||||
def main(conn=None):
|
||||
diff --git a/virtinst/virtxml.py b/virtinst/virtxml.py
|
||||
index 6a16532cd..bcd25eb48 100644
|
||||
--- a/virtinst/virtxml.py
|
||||
+++ b/virtinst/virtxml.py
|
||||
@@ -44,11 +44,11 @@ def get_diff(origxml, newxml):
|
||||
return diff
|
||||
|
||||
|
||||
-def set_os_variant(guest, os_variant):
|
||||
- if os_variant is None:
|
||||
+def set_osinfo(guest, osinfo):
|
||||
+ if osinfo is None:
|
||||
return
|
||||
|
||||
- osdata = cli.parse_os_variant(os_variant)
|
||||
+ osdata = cli.parse_osinfo(osinfo)
|
||||
if osdata.get_name():
|
||||
guest.set_os_name(osdata.get_name())
|
||||
|
||||
@@ -97,13 +97,13 @@ class Action:
|
||||
|
||||
|
||||
def validate_action(action, conn, options):
|
||||
- if options.os_variant is not None:
|
||||
+ if options.osinfo is not None:
|
||||
if action.is_edit:
|
||||
- fail(_("--os-variant/--osinfo is not supported with --edit"))
|
||||
+ fail(_("--osinfo/--os-variant is not supported with --edit"))
|
||||
if action.is_remove_device:
|
||||
- fail(_("--os-variant/--osinfo is not supported with --remove-device"))
|
||||
+ fail(_("--osinfo/--os-variant is not supported with --remove-device"))
|
||||
if action.is_build_xml:
|
||||
- fail(_("--os-variant/--osinfo is not supported with --build-xml"))
|
||||
+ fail(_("--osinfo/--os-variant is not supported with --build-xml"))
|
||||
|
||||
if not action.parserclass.guest_propname and action.is_build_xml:
|
||||
fail(_("--build-xml not supported for {cli_flag}").format(
|
||||
@@ -251,11 +251,11 @@ def action_edit(action, guest):
|
||||
return devs
|
||||
|
||||
|
||||
-def action_add_device(action, guest, os_variant, input_devs):
|
||||
+def action_add_device(action, guest, osinfo, input_devs):
|
||||
parserclass = action.parserclass
|
||||
parservalue = action.parservalue
|
||||
|
||||
- set_os_variant(guest, os_variant)
|
||||
+ set_osinfo(guest, osinfo)
|
||||
|
||||
if input_devs:
|
||||
for dev in input_devs:
|
||||
@@ -294,7 +294,7 @@ def action_build_xml(action, guest):
|
||||
|
||||
def perform_action(action, guest, options, input_devs):
|
||||
if action.is_add_device:
|
||||
- return action_add_device(action, guest, options.os_variant, input_devs)
|
||||
+ return action_add_device(action, guest, options.osinfo, input_devs)
|
||||
if action.is_remove_device:
|
||||
return action_remove_device(action, guest)
|
||||
if action.is_edit:
|
||||
@@ -483,7 +483,7 @@ def parse_args():
|
||||
outg.add_argument("--confirm", action="store_true",
|
||||
help=_("Require confirmation before saving any results."))
|
||||
|
||||
- cli.add_os_variant_option(parser, virtinstall=False)
|
||||
+ cli.add_osinfo_option(parser, virtinstall=False)
|
||||
|
||||
conv = parser.add_argument_group(_("Conversion options"))
|
||||
cli.ParserConvertToQ35.register()
|
||||
@@ -0,0 +1,71 @@
|
||||
Subject: snapshots: default to same snapshot mode as currently used snapshot
|
||||
From: Pavel Hrdina phrdina@redhat.com Tue Jan 21 11:09:00 2025 +0100
|
||||
Date: Mon Jan 27 22:59:56 2025 +0100:
|
||||
Git: 40d86086b6b903982b5d0f97bd6763fc54bfb115
|
||||
|
||||
Using internal and external snapshot mode for the same VM has some
|
||||
limitations. When creating new snapshot default to the same mode as
|
||||
already existing currently used snapshot. If there is no existing
|
||||
snapshot default to external snapshot.
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/details/snapshots.py b/virtManager/details/snapshots.py
|
||||
index a4f38de6d..00aa00708 100644
|
||||
--- a/virtManager/details/snapshots.py
|
||||
+++ b/virtManager/details/snapshots.py
|
||||
@@ -138,7 +138,14 @@ class vmmSnapshotNew(vmmGObjectUI):
|
||||
mode_external = self.widget("snapshot-new-mode-external")
|
||||
mode_internal = self.widget("snapshot-new-mode-internal")
|
||||
|
||||
- if mode_external.is_sensitive():
|
||||
+ use_external = mode_external.is_sensitive()
|
||||
+
|
||||
+ if use_external:
|
||||
+ current_mode = self._get_current_mode()
|
||||
+ if current_mode == "internal":
|
||||
+ use_external = False
|
||||
+
|
||||
+ if use_external:
|
||||
mode_external.set_active(True)
|
||||
else:
|
||||
mode_internal.set_active(True)
|
||||
@@ -342,6 +349,17 @@ class vmmSnapshotNew(vmmGObjectUI):
|
||||
self.topwin)
|
||||
progWin.run()
|
||||
|
||||
+ def _get_current_mode(self):
|
||||
+ current = self.vm.get_current_snapshot()
|
||||
+
|
||||
+ if current is None:
|
||||
+ return None
|
||||
+
|
||||
+ if current.is_external():
|
||||
+ return "external"
|
||||
+
|
||||
+ return "internal"
|
||||
+
|
||||
|
||||
################
|
||||
# UI listeners #
|
||||
diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
|
||||
index dbb932162..5aade01d8 100644
|
||||
--- a/virtManager/object/domain.py
|
||||
+++ b/virtManager/object/domain.py
|
||||
@@ -1156,6 +1156,16 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self._snapshot_list = newlist
|
||||
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
|
||||
+
|
||||
+ return None
|
||||
+
|
||||
@vmmLibvirtObject.lifecycle_action
|
||||
def revert_to_snapshot(self, snap):
|
||||
# no use trying to set the guest time if is going to be switched off
|
||||
@@ -1,27 +0,0 @@
|
||||
Subject: Calling loader.close() before pixbuf assignment to avoid NoneType pixbuf
|
||||
From: ropbear ropbear@selfhosted.systems Fri Oct 31 17:41:15 2025 -0400
|
||||
Date: Tue Nov 11 08:48:15 2025 +0100:
|
||||
Git: f907ede75bbcfd87cc49f18d0da3e0bfec3d29f8
|
||||
|
||||
In the case loader.close() has more parsing to do, get_pixbuf() can
|
||||
return a NoneType which causes issues in the snapshot view. Calling
|
||||
loader.close() before this allows for proper cleanup before calling
|
||||
get_pixbuf().
|
||||
|
||||
https://docs.gtk.org/gdk-pixbuf/method.PixbufLoader.close.html
|
||||
https://docs.gtk.org/gdk-pixbuf/method.PixbufLoader.get_pixbuf.html
|
||||
|
||||
diff --git a/virtManager/details/snapshots.py b/virtManager/details/snapshots.py
|
||||
index 0d413a98d..f2b229f5e 100644
|
||||
--- a/virtManager/details/snapshots.py
|
||||
+++ b/virtManager/details/snapshots.py
|
||||
@@ -32,8 +32,8 @@ mimemap = {
|
||||
def _make_screenshot_pixbuf(mime, sdata):
|
||||
loader = GdkPixbuf.PixbufLoader.new_with_mime_type(mime)
|
||||
loader.write(sdata)
|
||||
- pixbuf = loader.get_pixbuf()
|
||||
loader.close()
|
||||
+ pixbuf = loader.get_pixbuf()
|
||||
|
||||
maxsize = 450
|
||||
|
||||
28
009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
Normal file
28
009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
Subject: snapshots: warn users to not mix snapshot modes
|
||||
From: Pavel Hrdina phrdina@redhat.com Tue Jan 21 12:11:10 2025 +0100
|
||||
Date: Mon Jan 27 22:59:56 2025 +0100:
|
||||
Git: 54dc858f79a973242394aa50c4db7c00385e9f5d
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/details/snapshots.py b/virtManager/details/snapshots.py
|
||||
index 00aa00708..3da7d5aca 100644
|
||||
--- a/virtManager/details/snapshots.py
|
||||
+++ b/virtManager/details/snapshots.py
|
||||
@@ -370,6 +370,16 @@ class vmmSnapshotNew(vmmGObjectUI):
|
||||
self._populate_memory_path()
|
||||
|
||||
def _ok_clicked_cb(self, src):
|
||||
+ current_mode = self._get_current_mode()
|
||||
+
|
||||
+ if current_mode and current_mode != self._get_mode():
|
||||
+ result = self.err.yes_no(_("Mixing external and internal snapshots for "
|
||||
+ "the same VM is not recommended. Are you "
|
||||
+ "sure you want to continue?"))
|
||||
+
|
||||
+ if not result:
|
||||
+ return
|
||||
+
|
||||
return self._create_new_snapshot()
|
||||
|
||||
def _mode_toggled_cb(self, src):
|
||||
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):
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,61 +0,0 @@
|
||||
Subject: virtinst: interface: add support for backend.hostname and backend.fqdn
|
||||
From: Pavel Hrdina phrdina@redhat.com Fri Nov 21 10:11:34 2025 +0100
|
||||
Date: Fri Nov 21 10:18:56 2025 +0100:
|
||||
Git: d57e2e738f37444a48c1e762ee63114583d6348f
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index 9b8b3c6ba..5edca096d 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -680,6 +680,11 @@
|
||||
<range start="5000" end="6000" to="5"/>
|
||||
</portForward>
|
||||
</interface>
|
||||
+ <interface type="user">
|
||||
+ <backend type="passt" hostname="test" fqdn="test.example.com"/>
|
||||
+ <mac address="00:11:22:33:44:55"/>
|
||||
+ <model type="virtio"/>
|
||||
+ </interface>
|
||||
<interface type="hostdev">
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index b371e604b..741f1b4c2 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -675,6 +675,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--network passt,portForward=8080
|
||||
--network passt,portForward0=7000-8000/udp,portForward1=127.0.0.1:2222:22
|
||||
--network passt,portForward0=2001:db8:ac10:fd01::1:10:3000-4000:30,portForward1=127.0.0.1:5000-6000:5
|
||||
+--network passt,backend.hostname=test,backend.fqdn=test.example.com
|
||||
--network type=hostdev,source.address.type=pci,source.address.domain=0x0,source.address.bus=0x00,source.address.slot=0x07,source.address.function=0x0
|
||||
--network hostdev=pci_0000_00_09_0
|
||||
--network hostdev=0:0:4.0
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 1203b0c8d..ed97e8809 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -4272,6 +4272,8 @@ class ParserNetwork(VirtCLIParser):
|
||||
# Standard XML options
|
||||
cls.add_arg("type", "type", cb=cls.set_type_cb)
|
||||
cls.add_arg("backend.type", "backend.type")
|
||||
+ cls.add_arg("backend.hostname", "backend.hostname")
|
||||
+ cls.add_arg("backend.fqdn", "backend.fqdn")
|
||||
cls.add_arg("backend.logFile", "backend.logFile")
|
||||
cls.add_arg("trustGuestRxFilters", "trustGuestRxFilters", is_onoff=True)
|
||||
|
||||
diff --git a/virtinst/devices/interface.py b/virtinst/devices/interface.py
|
||||
index 333b92eca..9d82ab586 100644
|
||||
--- a/virtinst/devices/interface.py
|
||||
+++ b/virtinst/devices/interface.py
|
||||
@@ -132,6 +132,8 @@ class _Backend(XMLBuilder):
|
||||
XML_NAME = "backend"
|
||||
|
||||
type = XMLProperty("./@type")
|
||||
+ hostname = XMLProperty("./@hostname")
|
||||
+ fqdn = XMLProperty("./@fqdn")
|
||||
logFile = XMLProperty("./@logFile", do_abspath=True)
|
||||
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
Subject: virtinst: add support for acpi-generic-initiator
|
||||
From: Nathan Chen nathanc@nvidia.com Thu Oct 23 20:42:55 2025 -0700
|
||||
Date: Fri Nov 21 10:43:04 2025 +0100:
|
||||
Git: 53df7b496b6fd0c1194608987d0de800da1e1c54
|
||||
|
||||
A minimal config to enable acpi-generic-initiator would be
|
||||
|
||||
$ virt-install
|
||||
...args...
|
||||
--hostdev net_00_1c_25_10_b1_e4,acpi.nodeset=0,2-4
|
||||
|
||||
Signed-off-by: Nathan Chen <nathanc@nvidia.com>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index 5edca096d..83d0b948c 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -891,6 +891,7 @@
|
||||
<address domain="0" bus="0" slot="25" function="0"/>
|
||||
</source>
|
||||
<rom bar="off"/>
|
||||
+ <acpi nodeset="0,2"/>
|
||||
<boot order="4"/>
|
||||
</hostdev>
|
||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
||||
@@ -942,6 +943,7 @@
|
||||
<address bus="0" target="0" unit="0"/>
|
||||
</source>
|
||||
<rom bar="on"/>
|
||||
+ <acpi nodeset="0-2"/>
|
||||
</hostdev>
|
||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
||||
<source>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 741f1b4c2..da4fd3f45 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -741,7 +741,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--console pty,target_type=virtio
|
||||
|
||||
|
||||
---hostdev net_00_1c_25_10_b1_e4,boot_order=4,rom_bar=off
|
||||
+--hostdev net_00_1c_25_10_b1_e4,boot_order=4,rom_bar=off,acpi.nodeset=0,2
|
||||
--host-device usb_device_781_5151_2004453082054CA1BEEE
|
||||
--host-device 001.003
|
||||
--hostdev 15:0.1
|
||||
@@ -749,7 +749,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--hostdev 0:15:0.3,address.type=pci,address.zpci.uid=0xffff,address.zpci.fid=0xffffffff
|
||||
--host-device 0x062a:0x0001,driver_name=vfio
|
||||
--host-device 0483:2016
|
||||
---host-device pci_8086_2829_scsi_host_scsi_device_lun0,rom.bar=on
|
||||
+--host-device pci_8086_2829_scsi_host_scsi_device_lun0,rom.bar=on,acpi.nodeset=0-2
|
||||
--hostdev usb_5_20 --hostdev usb_5_21
|
||||
--hostdev wlan0,type=net
|
||||
--hostdev /dev/vdz,type=storage
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index ed97e8809..c9cb3fcfe 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -5284,6 +5284,7 @@ class ParserHostdev(VirtCLIParser):
|
||||
cls.add_arg("name", None, cb=cls.set_name_cb, lookup_cb=cls.name_lookup_cb)
|
||||
cls.add_arg("driver.name", "driver_name")
|
||||
cls.add_arg("rom.bar", "rom_bar", is_onoff=True)
|
||||
+ cls.add_arg("acpi.nodeset", "acpi_nodeset", can_comma=True)
|
||||
cls.add_arg("source.startupPolicy", "startup_policy")
|
||||
|
||||
|
||||
diff --git a/virtinst/devices/hostdev.py b/virtinst/devices/hostdev.py
|
||||
index be9bf3eaf..43d5322f3 100644
|
||||
--- a/virtinst/devices/hostdev.py
|
||||
+++ b/virtinst/devices/hostdev.py
|
||||
@@ -128,6 +128,7 @@ class DeviceHostdev(Device):
|
||||
|
||||
driver_name = XMLProperty("./driver/@name")
|
||||
rom_bar = XMLProperty("./rom/@bar", is_onoff=True)
|
||||
+ acpi_nodeset = XMLProperty("./acpi/@nodeset")
|
||||
|
||||
# type=scsi handling
|
||||
scsi_adapter = XMLProperty("./source/adapter/@name")
|
||||
@@ -1,64 +0,0 @@
|
||||
Subject: virtinst: add support for pcihole64
|
||||
From: Nathan Chen nathanc@nvidia.com Fri Oct 24 21:39:45 2025 +0000
|
||||
Date: Fri Nov 21 10:47:37 2025 +0100:
|
||||
Git: 411f019f81a03ca99c8fa480c8af0974e7d4179a
|
||||
|
||||
A minimal config to specify high MMIO region size would be
|
||||
|
||||
$ virt-install
|
||||
...args...
|
||||
--controller pci,index=0,model=pcie-root,pcihole64=4294967296,pcihole64.unit=KiB
|
||||
|
||||
Signed-off-by: Nathan Chen <nathanc@nvidia.com>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index 83d0b948c..ddfbbe058 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -485,6 +485,7 @@
|
||||
</controller>
|
||||
<controller type="pci" index="1" model="pci-root">
|
||||
<target index="1"/>
|
||||
+ <pcihole64 unit="KiB">4294967296</pcihole64>
|
||||
</controller>
|
||||
<controller type="pci" index="2" model="pci-bridge">
|
||||
<target chassisNr="1" memReserve="8196"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index da4fd3f45..99f4a59dc 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -703,7 +703,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--controller scsi,,model=virtio-scsi,driver_queues=4,driver.queues=4,driver.iothread=2,vectors=15
|
||||
--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=1,model=pci-root,target.index=1,pcihole64=4294967296,pcihole64.unit=KiB
|
||||
--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
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index c9cb3fcfe..b1499ef67 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -4492,6 +4492,8 @@ class ParserController(VirtCLIParser):
|
||||
cls.add_arg("target.index", "target_index")
|
||||
cls.add_arg("target.node", "target_node")
|
||||
cls.add_arg("target.memReserve", "target_memReserve")
|
||||
+ cls.add_arg("pcihole64", "pcihole64")
|
||||
+ cls.add_arg("pcihole64.unit", "pcihole64_unit")
|
||||
|
||||
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 754bcd666..f3c4ce61d 100644
|
||||
--- a/virtinst/devices/controller.py
|
||||
+++ b/virtinst/devices/controller.py
|
||||
@@ -91,6 +91,8 @@ class DeviceController(Device):
|
||||
target_index = XMLProperty("./target/@index", is_int=True)
|
||||
target_node = XMLProperty("./target/node", is_int=True)
|
||||
target_memReserve = XMLProperty("./target/@memReserve", is_int=True)
|
||||
+ pcihole64 = XMLProperty("./pcihole64", is_int=True)
|
||||
+ pcihole64_unit = XMLProperty("./pcihole64/@unit")
|
||||
|
||||
def _get_attached_disk_devices(self, guest):
|
||||
ret = []
|
||||
@@ -1,122 +0,0 @@
|
||||
Subject: maint: use constants instead of strings for boot devices
|
||||
From: Pavel Hrdina phrdina@redhat.com Fri Oct 17 16:32:33 2025 +0200
|
||||
Date: Thu Dec 4 16:55:51 2025 +0100:
|
||||
Git: 161fb1baaff45f260b278e9df900293ab12da820
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/details/details.py b/virtManager/details/details.py
|
||||
index 22a44719c..6cadf8bf0 100644
|
||||
--- a/virtManager/details/details.py
|
||||
+++ b/virtManager/details/details.py
|
||||
@@ -2274,10 +2274,22 @@ class vmmDetails(vmmGObjectUI):
|
||||
def _make_boot_rows(self):
|
||||
if not self.vm.can_use_device_boot_order():
|
||||
return [
|
||||
- ["hd", _("Hard Disk"), "drive-harddisk", False, True],
|
||||
- ["cdrom", _("CDROM"), "media-optical", False, True],
|
||||
- ["network", _("Network (PXE)"), "network-idle", False, True],
|
||||
- ["fd", _("Floppy"), "media-floppy", False, True],
|
||||
+ [
|
||||
+ virtinst.DomainOs.BOOT_DEVICE_HARDDISK,
|
||||
+ _("Hard Disk"),
|
||||
+ "drive-harddisk",
|
||||
+ False,
|
||||
+ True,
|
||||
+ ],
|
||||
+ [virtinst.DomainOs.BOOT_DEVICE_CDROM, _("CDROM"), "media-optical", False, True],
|
||||
+ [
|
||||
+ virtinst.DomainOs.BOOT_DEVICE_NETWORK,
|
||||
+ _("Network (PXE)"),
|
||||
+ "network-idle",
|
||||
+ False,
|
||||
+ True,
|
||||
+ ],
|
||||
+ [virtinst.DomainOs.BOOT_DEVICE_FLOPPY, _("Floppy"), "media-floppy", False, True],
|
||||
]
|
||||
|
||||
ret = []
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index b1499ef67..346043287 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -29,6 +29,7 @@ from .devices import (
|
||||
DeviceHostdev,
|
||||
DeviceInterface,
|
||||
)
|
||||
+from .domain import DomainOs
|
||||
from .guest import Guest
|
||||
from .logger import log, reset_logging
|
||||
from .nodedev import NodeDevice
|
||||
@@ -3214,10 +3215,10 @@ class ParserBoot(VirtCLIParser):
|
||||
|
||||
# This is simply so the boot options are advertised with --boot help,
|
||||
# actual processing is handled by _parse
|
||||
- cls.add_arg("hd", None, lookup_cb=None, cb=cls.noset_cb)
|
||||
- cls.add_arg("cdrom", None, lookup_cb=None, cb=cls.noset_cb)
|
||||
- cls.add_arg("fd", None, lookup_cb=None, cb=cls.noset_cb)
|
||||
- cls.add_arg("network", None, lookup_cb=None, cb=cls.noset_cb)
|
||||
+ cls.add_arg(DomainOs.BOOT_DEVICE_HARDDISK, None, lookup_cb=None, cb=cls.noset_cb)
|
||||
+ cls.add_arg(DomainOs.BOOT_DEVICE_CDROM, None, lookup_cb=None, cb=cls.noset_cb)
|
||||
+ cls.add_arg(DomainOs.BOOT_DEVICE_FLOPPY, None, lookup_cb=None, cb=cls.noset_cb)
|
||||
+ cls.add_arg(DomainOs.BOOT_DEVICE_NETWORK, None, lookup_cb=None, cb=cls.noset_cb)
|
||||
|
||||
cls.add_arg(
|
||||
"refresh-machine-type",
|
||||
diff --git a/virtinst/guest.py b/virtinst/guest.py
|
||||
index 54754d49a..b790a9c8d 100644
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -469,13 +469,13 @@ class Guest(XMLBuilder):
|
||||
break
|
||||
|
||||
for b in boot_order:
|
||||
- if b == "network" and net:
|
||||
+ if b == DomainOs.BOOT_DEVICE_NETWORK and net:
|
||||
ret.append(net.get_xml_id())
|
||||
- elif b == "hd" and disk:
|
||||
+ elif b == DomainOs.BOOT_DEVICE_HARDDISK and disk:
|
||||
ret.append(disk.get_xml_id())
|
||||
- elif b == "cdrom" and cdrom:
|
||||
+ elif b == DomainOs.BOOT_DEVICE_CDROM and cdrom:
|
||||
ret.append(cdrom.get_xml_id())
|
||||
- elif b == "fd" and floppy:
|
||||
+ elif b == DomainOs.BOOT_DEVICE_FLOPPY and floppy:
|
||||
ret.append(floppy.get_xml_id())
|
||||
return ret
|
||||
|
||||
diff --git a/virtinst/install/installer.py b/virtinst/install/installer.py
|
||||
index 96250f61b..a507c3c7c 100644
|
||||
--- a/virtinst/install/installer.py
|
||||
+++ b/virtinst/install/installer.py
|
||||
@@ -87,7 +87,7 @@ class Installer:
|
||||
if cdrom:
|
||||
cdrom = InstallerTreeMedia.validate_path(self.conn, cdrom)
|
||||
self._cdrom = cdrom
|
||||
- self._install_bootdev = "cdrom"
|
||||
+ self._install_bootdev = DomainOs.BOOT_DEVICE_CDROM
|
||||
elif location or location_kernel or location_initrd or install_kernel or install_initrd:
|
||||
self._treemedia = InstallerTreeMedia(
|
||||
self.conn,
|
||||
@@ -226,7 +226,7 @@ class Installer:
|
||||
# windows virtio installs, and booting local disk from PXE)
|
||||
for disk in guest.devices.disk:
|
||||
if disk.device == disk.DEVICE_DISK:
|
||||
- bootdev = "hd"
|
||||
+ bootdev = DomainOs.BOOT_DEVICE_HARDDISK
|
||||
if bootdev not in bootorder:
|
||||
bootorder.append(bootdev)
|
||||
break
|
||||
diff --git a/virtinst/virtinstall.py b/virtinst/virtinstall.py
|
||||
index 612f19a52..5e22931de 100644
|
||||
--- a/virtinst/virtinstall.py
|
||||
+++ b/virtinst/virtinstall.py
|
||||
@@ -439,7 +439,7 @@ def build_installer(options, guest, installdata):
|
||||
if options.livecd:
|
||||
no_install = True
|
||||
elif options.pxe:
|
||||
- install_bootdev = "network"
|
||||
+ install_bootdev = virtinst.DomainOs.BOOT_DEVICE_NETWORK
|
||||
elif installdata.is_set:
|
||||
pass
|
||||
elif options.xmlonly:
|
||||
@@ -1,49 +0,0 @@
|
||||
Subject: virtinst: rework get_boot_order
|
||||
From: Pavel Hrdina phrdina@redhat.com Thu Oct 30 15:38:26 2025 +0100
|
||||
Date: Thu Dec 4 16:55:51 2025 +0100:
|
||||
Git: 25670b2ee8a31f4d66c75a5bd7f27bc742d1e545
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtinst/guest.py b/virtinst/guest.py
|
||||
index b790a9c8d..a9fbecaec 100644
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -439,15 +439,11 @@ class Guest(XMLBuilder):
|
||||
# Bootorder helpers #
|
||||
#####################
|
||||
|
||||
- def _get_old_boot_order(self):
|
||||
- return self.os.bootorder
|
||||
-
|
||||
- def _convert_old_boot_order(self):
|
||||
+ def _convert_old_boot_order(self, boot_order):
|
||||
"""Converts the old boot order (e.g. <boot dev='hd'/>) into the
|
||||
per-device boot order format.
|
||||
|
||||
"""
|
||||
- boot_order = self._get_old_boot_order()
|
||||
ret = []
|
||||
disk = None
|
||||
cdrom = None
|
||||
@@ -486,18 +482,13 @@ class Guest(XMLBuilder):
|
||||
continue
|
||||
order.append((dev.get_xml_id(), dev.boot.order))
|
||||
|
||||
- if not order:
|
||||
- # No devices individually marked bootable, convert traditional
|
||||
- # boot XML to fine grained
|
||||
- return self._convert_old_boot_order()
|
||||
-
|
||||
order.sort(key=lambda p: p[1])
|
||||
return [p[0] for p in order]
|
||||
|
||||
def get_boot_order(self, legacy=False):
|
||||
if legacy:
|
||||
- return self._get_old_boot_order()
|
||||
- return self._get_device_boot_order()
|
||||
+ return self.os.bootorder
|
||||
+ return self._get_device_boot_order() or self._convert_old_boot_order(self.os.bootorder)
|
||||
|
||||
def _set_device_boot_order(self, boot_order):
|
||||
"""Sets the new device boot order for the domain"""
|
||||
@@ -1,34 +0,0 @@
|
||||
Subject: virtinst: guest: introduce can_use_device_boot_order
|
||||
From: Pavel Hrdina phrdina@redhat.com Tue Dec 2 21:39:14 2025 +0100
|
||||
Date: Thu Dec 4 16:55:51 2025 +0100:
|
||||
Git: 3a25792d90d53ad81bfb4835a146d047a39ef1e5
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
|
||||
index 6fc4f45ce..b8273ba7d 100644
|
||||
--- a/virtManager/object/domain.py
|
||||
+++ b/virtManager/object/domain.py
|
||||
@@ -1396,7 +1396,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
|
||||
def can_use_device_boot_order(self):
|
||||
# Return 'True' if guest can use new style boot device ordering
|
||||
- return self.conn.support.conn_device_boot_order()
|
||||
+ return self.get_xmlobj().can_use_device_boot_order()
|
||||
|
||||
def get_bootable_devices(self):
|
||||
# redirdev can also be marked bootable, but it should be rarely
|
||||
diff --git a/virtinst/guest.py b/virtinst/guest.py
|
||||
index a9fbecaec..d13049be0 100644
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -475,6 +475,9 @@ class Guest(XMLBuilder):
|
||||
ret.append(floppy.get_xml_id())
|
||||
return ret
|
||||
|
||||
+ def can_use_device_boot_order(self):
|
||||
+ return self.conn.support.conn_device_boot_order()
|
||||
+
|
||||
def _get_device_boot_order(self):
|
||||
order = []
|
||||
for dev in self.get_bootable_devices():
|
||||
@@ -1,115 +0,0 @@
|
||||
Subject: virtinst: remove legacy attribute from set_boot_order/get_boot_order
|
||||
From: Pavel Hrdina phrdina@redhat.com Wed Dec 3 15:30:49 2025 +0100
|
||||
Date: Thu Dec 4 16:55:51 2025 +0100:
|
||||
Git: 3985b0746f79d108bab66a21b28e1ecf6e4c415f
|
||||
|
||||
Only tests used manual value for the attribute, otherwise we always used
|
||||
what was detected by conn_device_boot_order() function.
|
||||
|
||||
Remove that attribute and update tests to use unittest.mock.patch where
|
||||
needed.
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/tests/test_xmlparse.py b/tests/test_xmlparse.py
|
||||
index 052850437..6e641f33f 100644
|
||||
--- a/tests/test_xmlparse.py
|
||||
+++ b/tests/test_xmlparse.py
|
||||
@@ -3,6 +3,8 @@
|
||||
# This work is licensed under the GNU GPLv2 or later.
|
||||
# See the COPYING file in the top-level directory.
|
||||
|
||||
+import unittest
|
||||
+
|
||||
import pytest
|
||||
|
||||
import virtinst
|
||||
@@ -652,7 +654,8 @@ def testGuestBootorder():
|
||||
guest, outfile = _get_test_content(kvmconn, "bootorder")
|
||||
|
||||
assert guest.get_boot_order() == ["./devices/disk[1]"]
|
||||
- assert guest.get_boot_order(legacy=True) == ["hd"]
|
||||
+ with unittest.mock.patch("virtinst.Guest.can_use_device_boot_order", return_value=False):
|
||||
+ assert guest.get_boot_order() == ["hd"]
|
||||
|
||||
legacy_order = ["hd", "fd", "cdrom", "network"]
|
||||
dev_order = [
|
||||
@@ -661,13 +664,15 @@ def testGuestBootorder():
|
||||
"./devices/disk[2]",
|
||||
"./devices/interface[1]",
|
||||
]
|
||||
- guest.set_boot_order(legacy_order, legacy=True)
|
||||
+ with unittest.mock.patch("virtinst.Guest.can_use_device_boot_order", return_value=False):
|
||||
+ guest.set_boot_order(legacy_order)
|
||||
+ assert guest.get_boot_order() == legacy_order
|
||||
assert guest.get_boot_order() == dev_order
|
||||
- assert guest.get_boot_order(legacy=True) == legacy_order
|
||||
|
||||
guest.set_boot_order(dev_order)
|
||||
assert guest.get_boot_order() == dev_order
|
||||
- assert guest.get_boot_order(legacy=True) == []
|
||||
+ with unittest.mock.patch("virtinst.Guest.can_use_device_boot_order", return_value=False):
|
||||
+ assert guest.get_boot_order() == []
|
||||
|
||||
_alter_compare(kvmconn, guest.get_xml(), outfile)
|
||||
|
||||
diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
|
||||
index b8273ba7d..3e005c0f6 100644
|
||||
--- a/virtManager/object/domain.py
|
||||
+++ b/virtManager/object/domain.py
|
||||
@@ -762,8 +762,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
|
||||
guest = self._make_xmlobj_to_define()
|
||||
if boot_order != _SENTINEL:
|
||||
- legacy = not self.can_use_device_boot_order()
|
||||
- guest.set_boot_order(boot_order, legacy=legacy)
|
||||
+ guest.set_boot_order(boot_order)
|
||||
|
||||
if boot_menu != _SENTINEL:
|
||||
guest.os.bootmenu_enable = bool(boot_menu)
|
||||
@@ -1372,8 +1371,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
return self.get_xmlobj().description
|
||||
|
||||
def get_boot_order(self):
|
||||
- legacy = not self.can_use_device_boot_order()
|
||||
- return self.xmlobj.get_boot_order(legacy=legacy)
|
||||
+ return self.xmlobj.get_boot_order()
|
||||
|
||||
def get_boot_menu(self):
|
||||
guest = self.get_xmlobj()
|
||||
diff --git a/virtinst/guest.py b/virtinst/guest.py
|
||||
index d13049be0..3f9eb0079 100644
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -488,10 +488,10 @@ class Guest(XMLBuilder):
|
||||
order.sort(key=lambda p: p[1])
|
||||
return [p[0] for p in order]
|
||||
|
||||
- def get_boot_order(self, legacy=False):
|
||||
- if legacy:
|
||||
- return self.os.bootorder
|
||||
- return self._get_device_boot_order() or self._convert_old_boot_order(self.os.bootorder)
|
||||
+ def get_boot_order(self):
|
||||
+ if self.can_use_device_boot_order():
|
||||
+ return self._get_device_boot_order() or self._convert_old_boot_order(self.os.bootorder)
|
||||
+ return self.os.bootorder
|
||||
|
||||
def _set_device_boot_order(self, boot_order):
|
||||
"""Sets the new device boot order for the domain"""
|
||||
@@ -506,12 +506,12 @@ class Guest(XMLBuilder):
|
||||
for boot_idx, dev_xml_id in enumerate(boot_order, 1):
|
||||
dev_map[dev_xml_id].boot.order = boot_idx
|
||||
|
||||
- def set_boot_order(self, boot_order, legacy=False):
|
||||
+ def set_boot_order(self, boot_order):
|
||||
"""Modifies the boot order"""
|
||||
- if legacy:
|
||||
- self.os.bootorder = boot_order
|
||||
- else:
|
||||
+ if self.can_use_device_boot_order():
|
||||
self._set_device_boot_order(boot_order)
|
||||
+ else:
|
||||
+ self.os.bootorder = boot_order
|
||||
|
||||
def reorder_boot_order(self, dev, boot_index):
|
||||
"""Sets boot order of `dev` to `boot_index`
|
||||
@@ -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):
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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):
|
||||
@@ -1,26 +0,0 @@
|
||||
Subject: virtinst: Fix XDG_DATA_HOME handling
|
||||
From: Callum Farmer gmbr3@opensuse.org Wed Nov 19 13:38:22 2025 +0000
|
||||
Date: Thu Dec 11 09:43:06 2025 +0100:
|
||||
Git: 35ad9057fef319046ad1348097e2f813a52a9021
|
||||
|
||||
The default value of XDG_DATA_HOME should be ~/.local/share.
|
||||
|
||||
It will not by default contain libvirt at the end of the path,
|
||||
so subsequently append libvirt after retrieving the value of XDG_DATA_HOME
|
||||
|
||||
Signed-off-by: Callum Farmer <gmbr3@opensuse.org>
|
||||
|
||||
diff --git a/virtinst/connection.py b/virtinst/connection.py
|
||||
index f2fcdd0c3..b565f1b41 100644
|
||||
--- a/virtinst/connection.py
|
||||
+++ b/virtinst/connection.py
|
||||
@@ -186,7 +186,8 @@ class VirtinstConnection:
|
||||
def get_libvirt_data_root_dir(self):
|
||||
if self.is_privileged():
|
||||
return "/var/lib/libvirt"
|
||||
- return os.environ.get("XDG_DATA_HOME", os.path.expanduser("~/.local/share/libvirt"))
|
||||
+ path = os.environ.get("XDG_DATA_HOME", os.path.expanduser("~/.local/share"))
|
||||
+ return os.path.join(path, "libvirt")
|
||||
|
||||
####################
|
||||
# Polling routines #
|
||||
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") %
|
||||
@@ -1,23 +0,0 @@
|
||||
Subject: addhardware: Add usb as a recommended sound device
|
||||
From: Akihiko Odaki odaki@rsg.ci.i.u-tokyo.ac.jp Wed Aug 6 15:04:55 2025 +0900
|
||||
Date: Sat Jan 10 19:25:58 2026 +0100:
|
||||
Git: 10014e1505ac20569df8f92078073f9aa5f621f4
|
||||
|
||||
usb is an architecture-independent sound device and useful for
|
||||
Windows on Arm, which does not support PC sound devices.
|
||||
|
||||
Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
|
||||
|
||||
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
|
||||
index 7ce8db23c..e4db35d5b 100644
|
||||
--- a/virtManager/addhardware.py
|
||||
+++ b/virtManager/addhardware.py
|
||||
@@ -562,7 +562,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
|
||||
@staticmethod
|
||||
def sound_recommended_models(_guest):
|
||||
- return ["ich6", "ich9", "ac97"]
|
||||
+ return ["ich6", "ich9", "ac97", "usb"]
|
||||
|
||||
@staticmethod
|
||||
def sound_pretty_model(model):
|
||||
16
051-fix-default-start_folder-to-None.patch
Normal file
16
051-fix-default-start_folder-to-None.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
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
|
||||
|
||||
|
||||
--- a/virtManager/storagebrowse.py
|
||||
+++ b/virtManager/storagebrowse.py
|
||||
@@ -181,6 +181,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,19 @@
|
||||
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
|
||||
|
||||
--- a/virtManager/details/console.py
|
||||
+++ b/virtManager/details/console.py
|
||||
@@ -119,6 +119,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):
|
||||
339
053-virtinst-add-support-for-creating-TDX-guests.patch
Normal file
339
053-virtinst-add-support-for-creating-TDX-guests.patch
Normal file
@@ -0,0 +1,339 @@
|
||||
Subject: virtinst: add support for creating TDX guests
|
||||
From: Daniel P. Berrangé berrange@redhat.com Tue Jul 8 14:25:17 2025 +0100
|
||||
Date: Mon Jul 28 15:12:08 2025 +0200:
|
||||
Git: 1ead880b2e51ae3fab5e103c05fd9cb1c921ec89
|
||||
|
||||
A minimal config to enable TDX, with support for attestation
|
||||
would be
|
||||
|
||||
$ virt-install
|
||||
...args...
|
||||
--boot uefi \
|
||||
--machine q35 \
|
||||
--launchSecurity type=tdx,quoteGenerationService=on
|
||||
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
|
||||
--- /dev/null
|
||||
+++ b/tests/data/cli/compare/virt-install-x86_64-launch-security-tdx-full.xml
|
||||
@@ -0,0 +1,83 @@
|
||||
+<domain type="kvm">
|
||||
+ <name>vm1</name>
|
||||
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
|
||||
+ <memory>65536</memory>
|
||||
+ <currentMemory>65536</currentMemory>
|
||||
+ <vcpu>1</vcpu>
|
||||
+ <os firmware="efi">
|
||||
+ <type arch="x86_64" machine="q35">hvm</type>
|
||||
+ <boot dev="hd"/>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <acpi/>
|
||||
+ <apic/>
|
||||
+ <vmport state="off"/>
|
||||
+ </features>
|
||||
+ <cpu mode="host-passthrough"/>
|
||||
+ <clock offset="utc">
|
||||
+ <timer name="rtc" tickpolicy="catchup"/>
|
||||
+ <timer name="pit" tickpolicy="delay"/>
|
||||
+ <timer name="hpet" present="no"/>
|
||||
+ </clock>
|
||||
+ <pm>
|
||||
+ <suspend-to-mem enabled="no"/>
|
||||
+ <suspend-to-disk enabled="no"/>
|
||||
+ </pm>
|
||||
+ <devices>
|
||||
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
+ <controller type="usb" model="ich9-ehci1"/>
|
||||
+ <controller type="usb" model="ich9-uhci1">
|
||||
+ <master startport="0"/>
|
||||
+ </controller>
|
||||
+ <controller type="usb" model="ich9-uhci2">
|
||||
+ <master startport="2"/>
|
||||
+ </controller>
|
||||
+ <controller type="usb" model="ich9-uhci3">
|
||||
+ <master startport="4"/>
|
||||
+ </controller>
|
||||
+ <controller type="pci" model="pcie-root"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <interface type="bridge">
|
||||
+ <source bridge="testsuitebr0"/>
|
||||
+ <mac address="00:11:22:33:44:55"/>
|
||||
+ <model type="e1000e"/>
|
||||
+ </interface>
|
||||
+ <console type="pty"/>
|
||||
+ <channel type="spicevmc">
|
||||
+ <target type="virtio" name="com.redhat.spice.0"/>
|
||||
+ </channel>
|
||||
+ <input type="tablet" bus="usb"/>
|
||||
+ <tpm model="tpm-crb">
|
||||
+ <backend type="emulator"/>
|
||||
+ </tpm>
|
||||
+ <graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
|
||||
+ <image compression="off"/>
|
||||
+ </graphics>
|
||||
+ <sound model="ich9"/>
|
||||
+ <video>
|
||||
+ <model type="qxl"/>
|
||||
+ </video>
|
||||
+ <redirdev bus="usb" type="spicevmc"/>
|
||||
+ <redirdev bus="usb" type="spicevmc"/>
|
||||
+ </devices>
|
||||
+ <launchSecurity type="tdx">
|
||||
+ <policy>0x10000000</policy>
|
||||
+ <mrConfigId>ASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83v</mrConfigId>
|
||||
+ <mrOwner>ASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83v</mrOwner>
|
||||
+ <mrOwnerConfig>ASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83v</mrOwnerConfig>
|
||||
+ <quoteGenerationService path="/var/run/tdx-qgs/qgs.socket"/>
|
||||
+ </launchSecurity>
|
||||
+</domain>
|
||||
--- /dev/null
|
||||
+++ b/tests/data/cli/compare/virt-install-x86_64-launch-security-tdx-qgs.xml
|
||||
@@ -0,0 +1,79 @@
|
||||
+<domain type="kvm">
|
||||
+ <name>vm1</name>
|
||||
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
|
||||
+ <memory>65536</memory>
|
||||
+ <currentMemory>65536</currentMemory>
|
||||
+ <vcpu>1</vcpu>
|
||||
+ <os firmware="efi">
|
||||
+ <type arch="x86_64" machine="q35">hvm</type>
|
||||
+ <boot dev="hd"/>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <acpi/>
|
||||
+ <apic/>
|
||||
+ <vmport state="off"/>
|
||||
+ </features>
|
||||
+ <cpu mode="host-passthrough"/>
|
||||
+ <clock offset="utc">
|
||||
+ <timer name="rtc" tickpolicy="catchup"/>
|
||||
+ <timer name="pit" tickpolicy="delay"/>
|
||||
+ <timer name="hpet" present="no"/>
|
||||
+ </clock>
|
||||
+ <pm>
|
||||
+ <suspend-to-mem enabled="no"/>
|
||||
+ <suspend-to-disk enabled="no"/>
|
||||
+ </pm>
|
||||
+ <devices>
|
||||
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
+ <controller type="usb" model="ich9-ehci1"/>
|
||||
+ <controller type="usb" model="ich9-uhci1">
|
||||
+ <master startport="0"/>
|
||||
+ </controller>
|
||||
+ <controller type="usb" model="ich9-uhci2">
|
||||
+ <master startport="2"/>
|
||||
+ </controller>
|
||||
+ <controller type="usb" model="ich9-uhci3">
|
||||
+ <master startport="4"/>
|
||||
+ </controller>
|
||||
+ <controller type="pci" model="pcie-root"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <interface type="bridge">
|
||||
+ <source bridge="testsuitebr0"/>
|
||||
+ <mac address="00:11:22:33:44:55"/>
|
||||
+ <model type="e1000e"/>
|
||||
+ </interface>
|
||||
+ <console type="pty"/>
|
||||
+ <channel type="spicevmc">
|
||||
+ <target type="virtio" name="com.redhat.spice.0"/>
|
||||
+ </channel>
|
||||
+ <input type="tablet" bus="usb"/>
|
||||
+ <tpm model="tpm-crb">
|
||||
+ <backend type="emulator"/>
|
||||
+ </tpm>
|
||||
+ <graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
|
||||
+ <image compression="off"/>
|
||||
+ </graphics>
|
||||
+ <sound model="ich9"/>
|
||||
+ <video>
|
||||
+ <model type="qxl"/>
|
||||
+ </video>
|
||||
+ <redirdev bus="usb" type="spicevmc"/>
|
||||
+ <redirdev bus="usb" type="spicevmc"/>
|
||||
+ </devices>
|
||||
+ <launchSecurity type="tdx">
|
||||
+ <quoteGenerationService/>
|
||||
+ </launchSecurity>
|
||||
+</domain>
|
||||
--- /dev/null
|
||||
+++ b/tests/data/cli/compare/virt-install-x86_64-launch-security-tdx.xml
|
||||
@@ -0,0 +1,79 @@
|
||||
+<domain type="kvm">
|
||||
+ <name>vm1</name>
|
||||
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
|
||||
+ <memory>65536</memory>
|
||||
+ <currentMemory>65536</currentMemory>
|
||||
+ <vcpu>1</vcpu>
|
||||
+ <os firmware="efi">
|
||||
+ <type arch="x86_64" machine="q35">hvm</type>
|
||||
+ <boot dev="hd"/>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <acpi/>
|
||||
+ <apic/>
|
||||
+ <vmport state="off"/>
|
||||
+ </features>
|
||||
+ <cpu mode="host-passthrough"/>
|
||||
+ <clock offset="utc">
|
||||
+ <timer name="rtc" tickpolicy="catchup"/>
|
||||
+ <timer name="pit" tickpolicy="delay"/>
|
||||
+ <timer name="hpet" present="no"/>
|
||||
+ </clock>
|
||||
+ <pm>
|
||||
+ <suspend-to-mem enabled="no"/>
|
||||
+ <suspend-to-disk enabled="no"/>
|
||||
+ </pm>
|
||||
+ <devices>
|
||||
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
+ <controller type="usb" model="ich9-ehci1"/>
|
||||
+ <controller type="usb" model="ich9-uhci1">
|
||||
+ <master startport="0"/>
|
||||
+ </controller>
|
||||
+ <controller type="usb" model="ich9-uhci2">
|
||||
+ <master startport="2"/>
|
||||
+ </controller>
|
||||
+ <controller type="usb" model="ich9-uhci3">
|
||||
+ <master startport="4"/>
|
||||
+ </controller>
|
||||
+ <controller type="pci" model="pcie-root"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <controller type="pci" model="pcie-root-port"/>
|
||||
+ <interface type="bridge">
|
||||
+ <source bridge="testsuitebr0"/>
|
||||
+ <mac address="00:11:22:33:44:55"/>
|
||||
+ <model type="e1000e"/>
|
||||
+ </interface>
|
||||
+ <console type="pty"/>
|
||||
+ <channel type="spicevmc">
|
||||
+ <target type="virtio" name="com.redhat.spice.0"/>
|
||||
+ </channel>
|
||||
+ <input type="tablet" bus="usb"/>
|
||||
+ <tpm model="tpm-crb">
|
||||
+ <backend type="emulator"/>
|
||||
+ </tpm>
|
||||
+ <graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
|
||||
+ <image compression="off"/>
|
||||
+ </graphics>
|
||||
+ <sound model="ich9"/>
|
||||
+ <video>
|
||||
+ <model type="qxl"/>
|
||||
+ </video>
|
||||
+ <redirdev bus="usb" type="spicevmc"/>
|
||||
+ <redirdev bus="usb" type="spicevmc"/>
|
||||
+ </devices>
|
||||
+ <launchSecurity type="tdx">
|
||||
+ <policy>0x10000000</policy>
|
||||
+ </launchSecurity>
|
||||
+</domain>
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -1814,6 +1814,27 @@ def _make_testcases():
|
||||
testfunc = _create_testfunc(cmd, do_setup)
|
||||
globals()[name] = testfunc
|
||||
|
||||
+c.add_compare(
|
||||
+ "--boot uefi --machine q35 --launchSecurity type=tdx,policy=0x10000000",
|
||||
+ "x86_64-launch-security-tdx",
|
||||
+ prerun_check="11.6.0",
|
||||
+)
|
||||
+c.add_compare(
|
||||
+ "--boot uefi --machine q35 --launchSecurity type=tdx,quoteGenerationService=on",
|
||||
+ "x86_64-launch-security-tdx-qgs",
|
||||
+ prerun_check="11.6.0",
|
||||
+)
|
||||
+c.add_compare(
|
||||
+ "--boot uefi --machine q35 --launchSecurity type=tdx,policy=0x10000000,mrConfigId=ASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83v,mrOwner=ASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83v,mrOwnerConfig=ASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83v,quoteGenerationSocket=/var/run/tdx-qgs/qgs.socket",
|
||||
+ "x86_64-launch-security-tdx-full",
|
||||
+ prerun_check="11.6.0",
|
||||
+)
|
||||
+c.add_invalid(
|
||||
+ "--machine pc --launchSecurity type=tdx,policy=0x10000000",
|
||||
+ grep="TDX launch security requires a Q35 UEFI machine",
|
||||
+ prerun_check="11.6.0",
|
||||
+)
|
||||
+
|
||||
|
||||
_make_testcases()
|
||||
atexit.register(cleanup)
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -5041,6 +5041,11 @@ class ParserLaunchSecurity(VirtCLIParser
|
||||
cls.add_arg("kernelHashes", "kernelHashes", is_onoff=True)
|
||||
cls.add_arg("authorKey", "authorKey", is_onoff=True)
|
||||
cls.add_arg("vcek", "vcek", is_onoff=True)
|
||||
+ cls.add_arg("mrConfigId", "mrConfigId")
|
||||
+ cls.add_arg("mrOwner", "mrOwner")
|
||||
+ cls.add_arg("mrOwnerConfig", "mrOwnerConfig")
|
||||
+ cls.add_arg("quoteGenerationService", "quoteGenerationService", is_onoff=True)
|
||||
+ cls.add_arg("quoteGenerationSocket", "quoteGenerationSocket")
|
||||
|
||||
|
||||
###########################
|
||||
--- a/virtinst/domain/launch_security.py
|
||||
+++ b/virtinst/domain/launch_security.py
|
||||
@@ -23,6 +23,11 @@ class DomainLaunchSecurity(XMLBuilder):
|
||||
kernelHashes = XMLProperty("./@kernelHashes", is_yesno=True)
|
||||
authorKey = XMLProperty("./@authorKey", is_yesno=True)
|
||||
vcek = XMLProperty("./@vcek", is_yesno=True)
|
||||
+ mrConfigId = XMLProperty("./mrConfigId")
|
||||
+ mrOwner = XMLProperty("./mrOwner")
|
||||
+ mrOwnerConfig = XMLProperty("./mrOwnerConfig")
|
||||
+ quoteGenerationService = XMLProperty("./quoteGenerationService", is_bool=True)
|
||||
+ quoteGenerationSocket = XMLProperty("./quoteGenerationService/@path")
|
||||
|
||||
def _set_defaults_sev(self, guest):
|
||||
if not guest.os.is_q35() or not guest.is_uefi():
|
||||
@@ -42,8 +47,14 @@ class DomainLaunchSecurity(XMLBuilder):
|
||||
if not guest.os.is_q35() or not guest.is_uefi():
|
||||
raise RuntimeError(_("SEV-SNP launch security requires a Q35 UEFI machine"))
|
||||
|
||||
+ def _set_defaults_tdx(self, guest):
|
||||
+ if not guest.os.is_q35() or not guest.is_uefi():
|
||||
+ raise RuntimeError(_("TDX launch security requires a Q35 UEFI machine"))
|
||||
+
|
||||
def set_defaults(self, guest):
|
||||
if self.type == "sev":
|
||||
return self._set_defaults_sev(guest)
|
||||
elif self.type == "sev-snp":
|
||||
return self._set_defaults_sev_snp(guest)
|
||||
+ elif self.type == "tdx":
|
||||
+ return self._set_defaults_tdx(guest)
|
||||
@@ -1,56 +0,0 @@
|
||||
Subject: virtinst: Add serial controller option to cli
|
||||
From: 6543 6543@obermui.de Thu Jan 8 21:43:38 2026 +0100
|
||||
Date: Sun Jan 11 18:36:09 2026 +0100:
|
||||
Git: 6f1adcc9251429e1dc9f15ec68e3b00affdb9638
|
||||
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index ddfbbe058..fd972ef32 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -507,6 +507,9 @@
|
||||
<controller type="usb" model="ich9-uhci3">
|
||||
<master startport="4"/>
|
||||
</controller>
|
||||
+ <controller type="nvme">
|
||||
+ <serial>1</serial>
|
||||
+ </controller>
|
||||
<filesystem type="mount" accessmode="mapped">
|
||||
<driver ats="on" iommu="off" packed="on" page_per_vq="off"/>
|
||||
<alias name="testfsalias"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index 99f4a59dc..b0b236615 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -709,6 +709,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--controller usb3
|
||||
--controller scsi,model=virtio-scsi
|
||||
--controller usb2
|
||||
+--controller nvme,serial=1
|
||||
|
||||
|
||||
--input type=keyboard,bus=usb
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 346043287..1081cf115 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -4495,6 +4495,7 @@ class ParserController(VirtCLIParser):
|
||||
cls.add_arg("target.memReserve", "target_memReserve")
|
||||
cls.add_arg("pcihole64", "pcihole64")
|
||||
cls.add_arg("pcihole64.unit", "pcihole64_unit")
|
||||
+ cls.add_arg("serial", "serial")
|
||||
|
||||
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 f3c4ce61d..def85f10e 100644
|
||||
--- a/virtinst/devices/controller.py
|
||||
+++ b/virtinst/devices/controller.py
|
||||
@@ -77,6 +77,7 @@ class DeviceController(Device):
|
||||
ports = XMLProperty("./@ports", is_int=True)
|
||||
maxGrantFrames = XMLProperty("./@maxGrantFrames", is_int=True)
|
||||
index = XMLProperty("./@index", is_int=True)
|
||||
+ serial = XMLProperty("./serial")
|
||||
|
||||
driver_iothread = XMLProperty("./driver/@iothread", is_int=True)
|
||||
driver_queues = XMLProperty("./driver/@queues", is_int=True)
|
||||
@@ -1,26 +0,0 @@
|
||||
Subject: virtinst: Add NVMe Controller
|
||||
From: 6543 6543@obermui.de Thu Dec 18 03:37:40 2025 +0100
|
||||
Date: Sun Jan 11 18:36:09 2026 +0100:
|
||||
Git: 605b3d807078f8a67f6828ed84d4e0c2aa6d63bc
|
||||
|
||||
|
||||
diff --git a/virtinst/devices/controller.py b/virtinst/devices/controller.py
|
||||
index def85f10e..ff723d91c 100644
|
||||
--- a/virtinst/devices/controller.py
|
||||
+++ b/virtinst/devices/controller.py
|
||||
@@ -14,6 +14,7 @@ class DeviceController(Device):
|
||||
TYPE_IDE = "ide"
|
||||
TYPE_FDC = "fdc"
|
||||
TYPE_SCSI = "scsi"
|
||||
+ TYPE_NVME = "nvme"
|
||||
TYPE_SATA = "sata"
|
||||
TYPE_VIRTIOSERIAL = "virtio-serial"
|
||||
TYPE_USB = "usb"
|
||||
@@ -121,6 +122,6 @@ class DeviceController(Device):
|
||||
ret = []
|
||||
if self.type == "virtio-serial":
|
||||
ret = self._get_attached_virtioserial_devices(guest)
|
||||
- elif self.type in ["scsi", "sata", "ide", "fdc"]:
|
||||
+ elif self.type in ["scsi", "sata", "ide", "fdc", "nvme"]:
|
||||
ret = self._get_attached_disk_devices(guest)
|
||||
return ret
|
||||
@@ -1,147 +0,0 @@
|
||||
Subject: virtinst: implement NVMe disk target generation
|
||||
From: Pavel Hrdina phrdina@redhat.com Fri Jan 9 08:51:29 2026 +0100
|
||||
Date: Sun Jan 11 18:36:09 2026 +0100:
|
||||
Git: 97505a9feab1ecfd23d88dad0f90444108496f83
|
||||
|
||||
In libvirt NVMe disk targets are based on what linux uses for device
|
||||
names.
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
--- a/tests/test_disk.py
|
||||
+++ b/tests/test_disk.py
|
||||
@@ -40,13 +40,30 @@ def test_disk_numtotarget():
|
||||
assert DeviceDisk.target_to_num("xvdaaa") == 26 * 26 * 1 + 26 * 1 + 0
|
||||
|
||||
conn = utils.URIs.open_testdefault_cached()
|
||||
+ guest = virtinst.Guest(conn)
|
||||
disk = virtinst.DeviceDisk(conn)
|
||||
disk.bus = "ide"
|
||||
|
||||
- assert disk.generate_target([]) == "hda"
|
||||
- assert disk.generate_target(["hda"]) == "hdb"
|
||||
- assert disk.generate_target(["hdb", "sda"]) == "hdc"
|
||||
- assert disk.generate_target(["hda", "hdd"]) == "hdb"
|
||||
+ assert disk.generate_target([], guest) == "hda"
|
||||
+ assert disk.generate_target(["hda"], guest) == "hdb"
|
||||
+ assert disk.generate_target(["hdb", "sda"], guest) == "hdc"
|
||||
+ assert disk.generate_target(["hda", "hdd"], guest) == "hdb"
|
||||
+
|
||||
+ disk.bus = "nvme"
|
||||
+ disk.serial = "0"
|
||||
+
|
||||
+ assert disk.generate_target([], guest) == "nvme0n1"
|
||||
+
|
||||
+ controller = virtinst.DeviceController(conn)
|
||||
+ controller.type = "nvme"
|
||||
+ controller.serial = "0"
|
||||
+ controller.index = 0
|
||||
+ guest.add_device(controller)
|
||||
+
|
||||
+ assert disk.generate_target([], guest) == "nvme0n1"
|
||||
+
|
||||
+ controller.index = 1
|
||||
+ assert disk.generate_target(["nvme1n1"], guest) == "nvme1n2"
|
||||
|
||||
|
||||
def test_disk_dir_searchable(monkeypatch):
|
||||
--- a/virtManager/addhardware.py
|
||||
+++ b/virtManager/addhardware.py
|
||||
@@ -1453,7 +1453,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
used.append(d.target)
|
||||
|
||||
self._set_disk_controller(disk)
|
||||
- disk.generate_target(used)
|
||||
+ disk.generate_target(used, self.vm.xmlobj)
|
||||
return disk
|
||||
|
||||
def _build_network(self):
|
||||
--- a/virtinst/devices/disk.py
|
||||
+++ b/virtinst/devices/disk.py
|
||||
@@ -914,6 +914,19 @@ class DeviceDisk(Device):
|
||||
if path:
|
||||
self._set_xmlpath(path)
|
||||
|
||||
+ def get_nvme_namespace(self, guest):
|
||||
+ """
|
||||
+ Returns the NVMe namespace for disk based on it's bus and serial.
|
||||
+
|
||||
+ If no NVMe controller is defined return 0 as that is default used by
|
||||
+ libvirt and virt-manager.
|
||||
+ """
|
||||
+ for c in guest.devices.controller:
|
||||
+ if c.type == "nvme" and c.serial == self.serial:
|
||||
+ return c.index
|
||||
+
|
||||
+ return 0
|
||||
+
|
||||
def get_target_prefix(self):
|
||||
"""
|
||||
Returns the suggested disk target prefix (hd, xvd, sd ...) for the
|
||||
@@ -930,6 +943,7 @@ class DeviceDisk(Device):
|
||||
"fd": 2,
|
||||
"hd": 4,
|
||||
"sd": 1024,
|
||||
+ "nvme": 1024,
|
||||
}
|
||||
return prefix, nummap[prefix]
|
||||
|
||||
@@ -941,10 +955,12 @@ class DeviceDisk(Device):
|
||||
return _return("fd")
|
||||
elif self.bus == "ide":
|
||||
return _return("hd")
|
||||
+ elif self.bus == "nvme":
|
||||
+ return _return("nvme")
|
||||
# sata, scsi, usb, sd
|
||||
return _return("sd")
|
||||
|
||||
- def generate_target(self, skip_targets):
|
||||
+ def generate_target(self, skip_targets, guest):
|
||||
"""
|
||||
Generate target device ('hda', 'sdb', etc..) for disk, excluding
|
||||
any targets in 'skip_targets'.
|
||||
@@ -957,11 +973,17 @@ class DeviceDisk(Device):
|
||||
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
|
||||
skip_targets.sort()
|
||||
|
||||
+ if self.bus == "nvme":
|
||||
+ nvmen = self.get_nvme_namespace(guest)
|
||||
+
|
||||
def get_target():
|
||||
first_found = None
|
||||
|
||||
for i in range(maxnode):
|
||||
- gen_t = prefix + self.num_to_target(i + 1)
|
||||
+ if self.bus == "nvme":
|
||||
+ gen_t = f"{prefix}{nvmen}n{i + 1}"
|
||||
+ else:
|
||||
+ gen_t = prefix + self.num_to_target(i + 1)
|
||||
if gen_t in skip_targets:
|
||||
skip_targets.remove(gen_t)
|
||||
continue
|
||||
@@ -1008,7 +1030,7 @@ class DeviceDisk(Device):
|
||||
used.remove(self.target)
|
||||
|
||||
self.target = None
|
||||
- self.generate_target(used)
|
||||
+ self.generate_target(used, guest)
|
||||
|
||||
#########################
|
||||
# set_defaults handling #
|
||||
@@ -1078,4 +1100,4 @@ class DeviceDisk(Device):
|
||||
|
||||
if not self.target:
|
||||
used_targets = [d.target for d in guest.devices.disk if d.target]
|
||||
- self.generate_target(used_targets)
|
||||
+ self.generate_target(used_targets, guest)
|
||||
--- a/virtinst/guest.py
|
||||
+++ b/virtinst/guest.py
|
||||
@@ -877,7 +877,7 @@ class Guest(XMLBuilder):
|
||||
if dev.DEVICE_TYPE == "disk" and dev.bus == "ide":
|
||||
dev.bus = "sata"
|
||||
used_targets = [d.target for d in self.devices.disk if d.target]
|
||||
- dev.generate_target(used_targets)
|
||||
+ dev.generate_target(used_targets, self)
|
||||
dev.address.clear()
|
||||
|
||||
if dev.address.type == "pci":
|
||||
@@ -1,111 +0,0 @@
|
||||
Subject: virtManager: Add NVMe disk type
|
||||
From: 6543 6543@obermui.de Thu Dec 18 03:38:56 2025 +0100
|
||||
Date: Sun Jan 11 18:36:09 2026 +0100:
|
||||
Git: 08b547366fbc4037a737515ee0efab3c3e673a80
|
||||
|
||||
|
||||
--- a/virtManager/addhardware.py
|
||||
+++ b/virtManager/addhardware.py
|
||||
@@ -472,6 +472,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
def controller_recommended_types():
|
||||
return [
|
||||
DeviceController.TYPE_SCSI,
|
||||
+ DeviceController.TYPE_NVME,
|
||||
DeviceController.TYPE_USB,
|
||||
DeviceController.TYPE_VIRTIOSERIAL,
|
||||
DeviceController.TYPE_CCID,
|
||||
@@ -482,6 +483,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
labels = {
|
||||
DeviceController.TYPE_IDE: _("IDE"),
|
||||
DeviceController.TYPE_FDC: _("Floppy"),
|
||||
+ DeviceController.TYPE_NVME: _("NVMe"),
|
||||
DeviceController.TYPE_SCSI: _("SCSI"),
|
||||
DeviceController.TYPE_SATA: _("SATA"),
|
||||
DeviceController.TYPE_VIRTIOSERIAL: _("VirtIO Serial"),
|
||||
@@ -510,6 +512,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
ret.append("ide")
|
||||
ret.append("sata")
|
||||
ret.append("fdc")
|
||||
+ ret.append("nvme")
|
||||
ret.append("scsi")
|
||||
ret.append("usb")
|
||||
|
||||
@@ -531,7 +534,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
buses = vmmAddHardware.disk_old_recommended_buses(guest)
|
||||
|
||||
bus_map = {
|
||||
- "disk": ["ide", "sata", "scsi", "sd", "usb", "virtio", "xen"],
|
||||
+ "disk": ["ide", "nvme", "sata", "scsi", "sd", "usb", "virtio", "xen"],
|
||||
"floppy": ["fdc"],
|
||||
"cdrom": ["ide", "sata", "scsi", "usb"],
|
||||
"lun": ["scsi"],
|
||||
@@ -542,6 +545,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
def disk_pretty_bus(bus):
|
||||
bus_mappings = {
|
||||
"ide": _("IDE"),
|
||||
+ "nvme": _("NVMe"),
|
||||
"sata": _("SATA"),
|
||||
"scsi": _("SCSI"),
|
||||
"sd": _("SD"),
|
||||
@@ -1424,16 +1428,33 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
return dev
|
||||
|
||||
def _set_disk_controller(self, disk):
|
||||
- # Add a SCSI controller with model virtio-scsi if needed
|
||||
+ # Add a SCSI controller with model virtio-scsi if needed or
|
||||
+ # add an NVMe controller if needed
|
||||
disk.vmm_controller = None
|
||||
- if not self.vm.xmlobj.can_default_virtioscsi():
|
||||
- return
|
||||
|
||||
- controller = DeviceController(self.conn.get_backend())
|
||||
- controller.type = "scsi"
|
||||
- controller.model = "virtio-scsi"
|
||||
- controller.index = 0
|
||||
- disk.vmm_controller = controller
|
||||
+ if disk.bus == "scsi":
|
||||
+ if not self.vm.xmlobj.can_default_virtioscsi():
|
||||
+ return
|
||||
+
|
||||
+ controller = DeviceController(self.conn.get_backend())
|
||||
+ controller.type = "scsi"
|
||||
+ controller.model = "virtio-scsi"
|
||||
+ controller.index = 0
|
||||
+ disk.vmm_controller = controller
|
||||
+
|
||||
+ elif disk.bus == "nvme":
|
||||
+ nvme_controllers = [c for c in self.vm.xmlobj.devices.controller if c.type == "nvme"]
|
||||
+ if len(nvme_controllers) > 0:
|
||||
+ if not disk.serial:
|
||||
+ disk.serial = nvme_controllers[0].serial
|
||||
+ else:
|
||||
+ if not disk.serial:
|
||||
+ disk.serial = "0"
|
||||
+ controller = DeviceController(self.conn.get_backend())
|
||||
+ controller.type = "nvme"
|
||||
+ controller.index = 0
|
||||
+ controller.serial = disk.serial
|
||||
+ disk.vmm_controller = controller
|
||||
|
||||
def _build_storage(self):
|
||||
bus = uiutil.get_list_selection(self.widget("storage-bustype"))
|
||||
@@ -1585,12 +1606,18 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
controller_num = [x for x in controllers if (x.type == controller_type)]
|
||||
if len(controller_num) > 0:
|
||||
index_new = max(int(x.index or 0) for x in controller_num) + 1
|
||||
- dev.index = index_new
|
||||
+ else:
|
||||
+ index_new = 0
|
||||
+ dev.index = index_new
|
||||
|
||||
dev.type = controller_type
|
||||
|
||||
if model and model != "none":
|
||||
dev.model = model
|
||||
+
|
||||
+ if controller_type == DeviceController.TYPE_NVME:
|
||||
+ dev.serial = str(dev.index)
|
||||
+
|
||||
return dev
|
||||
|
||||
def _build_rng(self):
|
||||
@@ -1,87 +0,0 @@
|
||||
Subject: ui: Show NVMe Controller details
|
||||
From: 6543 6543@obermui.de Thu Dec 18 03:40:08 2025 +0100
|
||||
Date: Sun Jan 11 18:36:09 2026 +0100:
|
||||
Git: 90e425b59a30f1dd4827de5cc480031d89391d3d
|
||||
|
||||
display serial and atached disks
|
||||
|
||||
diff --git a/ui/details.ui b/ui/details.ui
|
||||
index ead89a8c0..2eb0d8a44 100644
|
||||
--- a/ui/details.ui
|
||||
+++ b/ui/details.ui
|
||||
@@ -4243,6 +4243,31 @@
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel" id="controller-serial-label">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can-focus">False</property>
|
||||
+ <property name="halign">end</property>
|
||||
+ <property name="label" translatable="yes">Serial:</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left-attach">0</property>
|
||||
+ <property name="top-attach">2</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel" id="controller-serial">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can-focus">False</property>
|
||||
+ <property name="halign">start</property>
|
||||
+ <property name="label">-</property>
|
||||
+ <property name="selectable">True</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="left-attach">1</property>
|
||||
+ <property name="top-attach">2</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="device-list-label">
|
||||
<property name="visible">True</property>
|
||||
@@ -4255,7 +4280,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
- <property name="top-attach">2</property>
|
||||
+ <property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -4290,7 +4315,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
- <property name="top-attach">2</property>
|
||||
+ <property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
diff --git a/virtManager/details/details.py b/virtManager/details/details.py
|
||||
index 6cadf8bf0..c927f1045 100644
|
||||
--- a/virtManager/details/details.py
|
||||
+++ b/virtManager/details/details.py
|
||||
@@ -2161,7 +2161,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
self._disable_device_remove(_("Hypervisor does not support removing this device"))
|
||||
if controller.type == "pci":
|
||||
self._disable_device_remove(_("Hypervisor does not support removing this device"))
|
||||
- elif controller.type in ["scsi", "sata", "ide", "fdc"]:
|
||||
+ elif controller.type in ["nvme", "scsi", "sata", "ide", "fdc"]:
|
||||
model = self.widget("controller-device-list").get_model()
|
||||
model.clear()
|
||||
disks = controller.get_attached_devices(self.vm.xmlobj)
|
||||
@@ -2188,6 +2188,12 @@ class vmmDetails(vmmGObjectUI):
|
||||
type_label = vmmAddHardware.controller_pretty_desc(controller)
|
||||
self.widget("controller-type").set_text(type_label)
|
||||
|
||||
+ has_serial = controller.type == "nvme" and controller.serial
|
||||
+ if has_serial:
|
||||
+ self.widget("controller-serial").set_text(controller.serial)
|
||||
+ uiutil.set_grid_row_visible(self.widget("controller-serial"), has_serial)
|
||||
+ uiutil.set_grid_row_visible(self.widget("controller-serial-label"), has_serial)
|
||||
+
|
||||
combo = self.widget("controller-model")
|
||||
vmmAddHardware.populate_controller_model_combo(combo, controller.type)
|
||||
show_model = controller.model or len(combo.get_model()) > 1
|
||||
@@ -1,23 +0,0 @@
|
||||
Subject: virtinst: fix locale when running in flatpak
|
||||
From: Pavel Hrdina phrdina@redhat.com Sun Jan 11 20:48:22 2026 +0100
|
||||
Date: Sun Jan 11 21:20:42 2026 +0100:
|
||||
Git: d13271422e47d9bc827d6ede3e7d5154568115c7
|
||||
|
||||
Module locale is used to configure C libraries. When running in flatpak
|
||||
we need to set correct path using locale module as well.
|
||||
|
||||
Resolves: https://github.com/virt-manager/virt-manager/issues/1023
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtinst/__init__.py b/virtinst/__init__.py
|
||||
index 621acb238..eb874063a 100644
|
||||
--- a/virtinst/__init__.py
|
||||
+++ b/virtinst/__init__.py
|
||||
@@ -24,6 +24,7 @@ def _setup_i18n():
|
||||
|
||||
gettext.install("virt-manager", BuildConfig.gettext_dir, names=["ngettext"])
|
||||
gettext.bindtextdomain("virt-manager", BuildConfig.gettext_dir)
|
||||
+ locale.bindtextdomain("virt-manager", BuildConfig.gettext_dir)
|
||||
|
||||
|
||||
def _set_libvirt_error_handler():
|
||||
@@ -1,66 +0,0 @@
|
||||
Subject: virtinst: add support for iommufd
|
||||
From: Nathan Chen nathanc@nvidia.com Mon Oct 27 18:34:27 2025 +0000
|
||||
Date: Tue Feb 3 07:17:03 2026 +0100:
|
||||
Git: 9ab2918face14ff4081b85bfd224342e1829880c
|
||||
|
||||
A minimal config to enable iommufd would be
|
||||
|
||||
$ virt-install
|
||||
...args...
|
||||
--host-device 0x062a:0x0001,driver.iommufd=yes
|
||||
|
||||
Signed-off-by: Nathan Chen <nathanc@nvidia.com>
|
||||
|
||||
diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
index fd972ef32..5e4aec35e 100644
|
||||
--- a/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
|
||||
@@ -928,6 +928,12 @@
|
||||
<zpci uid="0xffff" fid="0xffffffff"/>
|
||||
</address>
|
||||
</hostdev>
|
||||
+ <hostdev mode="subsystem" type="pci" managed="yes">
|
||||
+ <source>
|
||||
+ <address domain="0" bus="21" slot="0" function="4"/>
|
||||
+ </source>
|
||||
+ <driver name="vfio" iommufd="yes"/>
|
||||
+ </hostdev>
|
||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
||||
<source>
|
||||
<vendor id="0x062a"/>
|
||||
diff --git a/tests/test_cli.py b/tests/test_cli.py
|
||||
index b0b236615..8d1c24fe6 100644
|
||||
--- a/tests/test_cli.py
|
||||
+++ b/tests/test_cli.py
|
||||
@@ -748,6 +748,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--hostdev 15:0.1
|
||||
--host-device 2:15:0.2
|
||||
--hostdev 0:15:0.3,address.type=pci,address.zpci.uid=0xffff,address.zpci.fid=0xffffffff
|
||||
+--hostdev 0:15:0.4,driver_name=vfio,driver.iommufd=yes
|
||||
--host-device 0x062a:0x0001,driver_name=vfio
|
||||
--host-device 0483:2016
|
||||
--host-device pci_8086_2829_scsi_host_scsi_device_lun0,rom.bar=on,acpi.nodeset=0-2
|
||||
diff --git a/virtinst/cli.py b/virtinst/cli.py
|
||||
index 1081cf115..c6001644c 100644
|
||||
--- a/virtinst/cli.py
|
||||
+++ b/virtinst/cli.py
|
||||
@@ -5287,6 +5287,7 @@ class ParserHostdev(VirtCLIParser):
|
||||
cls.add_arg("type", "type")
|
||||
cls.add_arg("name", None, cb=cls.set_name_cb, lookup_cb=cls.name_lookup_cb)
|
||||
cls.add_arg("driver.name", "driver_name")
|
||||
+ cls.add_arg("driver.iommufd", "driver_iommufd")
|
||||
cls.add_arg("rom.bar", "rom_bar", is_onoff=True)
|
||||
cls.add_arg("acpi.nodeset", "acpi_nodeset", can_comma=True)
|
||||
cls.add_arg("source.startupPolicy", "startup_policy")
|
||||
diff --git a/virtinst/devices/hostdev.py b/virtinst/devices/hostdev.py
|
||||
index 43d5322f3..2a3dc048d 100644
|
||||
--- a/virtinst/devices/hostdev.py
|
||||
+++ b/virtinst/devices/hostdev.py
|
||||
@@ -127,6 +127,7 @@ class DeviceHostdev(Device):
|
||||
slot = XMLProperty("./source/address/@slot")
|
||||
|
||||
driver_name = XMLProperty("./driver/@name")
|
||||
+ driver_iommufd = XMLProperty("./driver/@iommufd", is_yesno=True)
|
||||
rom_bar = XMLProperty("./rom/@bar", is_onoff=True)
|
||||
acpi_nodeset = XMLProperty("./acpi/@nodeset")
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
References: bsc#1200691, an IBM request
|
||||
This patch reverts commit 363fca413cae336a0ca86cbdcbb2f65fead948ee.
|
||||
Only x86 will have a hard requirement for the --osinfo option.
|
||||
|
||||
From: Cole Robinson crobinso@redhat.com Sun Feb 20 11:40:35 2022 -0500
|
||||
Subject: virt-install: Require --osinfo for non-x86 HVM case too
|
||||
Date: Sun Feb 20 11:40:35 2022 -0500:
|
||||
Git: 363fca413cae336a0ca86cbdcbb2f65fead948ee
|
||||
|
||||
It's generally not as valuable for non-x86 where we don't have the
|
||||
history of supporting non-virtio OSes, but as time goes on it will
|
||||
likely become more relevant for non-x86 arches, so let's make this
|
||||
change now to get ahead of it.
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
Index: virt-manager-5.0.0/man/virt-install.rst
|
||||
===================================================================
|
||||
--- virt-manager-5.0.0.orig/man/virt-install.rst
|
||||
+++ virt-manager-5.0.0/man/virt-install.rst
|
||||
@@ -1067,8 +1067,8 @@ all other settings off or unset.
|
||||
|
||||
By default, virt-install will always attempt ``--osinfo detect=on``
|
||||
for appropriate install media. If no OS is detected, we will fail
|
||||
-in most common cases. This fatal error was added in 2022. You can
|
||||
-work around this by using the fallback example
|
||||
+in certain common cases (x86 KVM for example). This fatal error was
|
||||
+added in 2022. You can work around this by using the fallback example
|
||||
above, or disabling the ``require`` option. If you just need to get back
|
||||
to the old non-fatal behavior ASAP, set the environment variable
|
||||
VIRTINSTALL_OSINFO_DISABLE_REQUIRE=1.
|
||||
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
|
||||
@@ -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
|
||||
-c.add_invalid("--arch aarch64 --nodisks --pxe --connect " + utils.URIs.kvm_x86, grep="OS name is required") # catch missing osinfo for non-x86
|
||||
c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --cpu default --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
|
||||
c.add_compare("--arch aarch64 --osinfo fedora19 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machdefault")
|
||||
c.add_compare("--arch aarch64 --cdrom %(ISO-F26-NETINST)s --boot loader=CODE.fd,nvram.template=VARS.fd --disk %(EXISTIMG1)s --cpu none --events on_crash=preserve,on_reboot=destroy,on_poweroff=restart", "aarch64-cdrom") # cdrom test, but also --cpu none override, --events override, and headless
|
||||
Index: virt-manager-5.0.0/virtinst/virtinstall.py
|
||||
===================================================================
|
||||
--- virt-manager-5.0.0.orig/virtinst/virtinstall.py
|
||||
+++ virt-manager-5.0.0/virtinst/virtinstall.py
|
||||
@@ -355,13 +355,9 @@ def _show_memory_warnings(guest):
|
||||
|
||||
|
||||
def _needs_accurate_osinfo(guest):
|
||||
- # HVM is really the only case where OS impacts what we set for defaults,
|
||||
- # so far.
|
||||
- #
|
||||
- # Historically we would only warn about missing osinfo on x86, but
|
||||
- # with the change to make osinfo mandatory we relaxed the arch check,
|
||||
- # so virt-install behavior is more consistent.
|
||||
- return guest.os.is_hvm()
|
||||
+ # Limit it to hvm x86 guests which presently our defaults
|
||||
+ # only really matter for
|
||||
+ return guest.os.is_x86() and guest.os.is_hvm()
|
||||
|
||||
|
||||
def show_guest_warnings(options, guest):
|
||||
BIN
virt-manager-5.0.0.tar.xz
LFS
Normal file
BIN
virt-manager-5.0.0.tar.xz
LFS
Normal file
Binary file not shown.
BIN
virt-manager-5.1.0.tar.xz
LFS
BIN
virt-manager-5.1.0.tar.xz
LFS
Binary file not shown.
@@ -1,63 +1,3 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Feb 17 11:37:25 MST 2026 - carnold@suse.com
|
||||
|
||||
- jsc#PED-14636 - UEFI as default for new SLES 16 VMs
|
||||
virtinst-query-recommended-firmware.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 4 14:51:19 MST 2026 - carnold@suse.com
|
||||
|
||||
- Upstream features and bug fixes (bsc#1027942) (jsc#PED-14625)
|
||||
051-addhardware-Add-usb-as-a-recommended-sound-device.patch
|
||||
055-virtinst-Add-serial-controller-option-to-cli.patch
|
||||
056-virtinst-Add-NVMe-Controller.patch
|
||||
057-virtinst-implement-NVMe-disk-target-generation.patch
|
||||
058-virtManager-Add-NVMe-disk-type.patch
|
||||
059-ui-Show-NVMe-Controller-details.patch
|
||||
060-virtinst-fix-locale-when-running-in-flatpak.patch
|
||||
061-virtinst-add-support-for-iommufd.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 23 12:05:21 MST 2026 - carnold@suse.com
|
||||
|
||||
- bsc#1257182 - A VM will fail to boot with Intel TDX or AMD SNP
|
||||
with a TPM device defined in the VM
|
||||
virtinst-remove-tpm-device-for-tdx-and-snp.patch
|
||||
- Modified detection of SLES distros to be more flexible with
|
||||
media naming conventions
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 7 13:32:03 MST 2026 - carnold@suse.com
|
||||
|
||||
- Upstream features and bug fixes (bsc#1027942) (jsc#PED-14625)
|
||||
003-virtinst-cloudinit-include-empty-meta-data-file.patch
|
||||
009-avoid-NoneType-pixbuf.patch
|
||||
012-virtManager-wrapped-details-hw-panel-with-GtkScrolledWindow.patch
|
||||
013-virtinst-interface-add-support-for-backend.hostname-and-backend.fqdn.patch
|
||||
014-virtinst-add-support-for-acpi-generic-initiator.patch
|
||||
015-virtinst-add-support-for-pcihole64.patch
|
||||
017-maint-use-constants-instead-of-strings-for-boot-devices.patch
|
||||
018-virtinst-rework-get_boot_order.patch
|
||||
019-virtinst-guest-introduce-can_use_device_boot_order.patch
|
||||
020-virtinst-remove-legacy-attribute-from-set_boot_order-get_boot_order.patch
|
||||
021-installer-add-support-to-use-device-boot-order.patch
|
||||
024-virtinst-Fix-XDG_DATA_HOME-handling.patch
|
||||
- Dropped virtinst-fix-XDG_DATA_HOME-handling.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 9 11:48:43 UTC 2025 - Callum Farmer <gmbr3@opensuse.org>
|
||||
|
||||
- Add virtinst-fix-XDG_DATA_HOME-handling.patch: fix usage
|
||||
of XDG_DATA_HOME (bsc#1253017)
|
||||
- Use a more sensible XDG_DATA_HOME in test section
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 7 12:53:47 MST 2025 - carnold@suse.com
|
||||
|
||||
- bsc#1253017 - aaa_base: update to 84.87+git20251030.441f926
|
||||
breaks python-platformdirs:test and virt-manager:test
|
||||
virt-manager.spec
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 17 16:25:09 MDT 2025 - carnold@suse.com
|
||||
|
||||
@@ -75,99 +15,6 @@ Thu Sep 11 13:52:31 MDT 2025 - carnold@suse.com
|
||||
- Fix issues with detection of openSUSE Leap 16.
|
||||
virtinst-add-sle16-detection-support.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 8 06:21:53 MDT 2025 - carnold@suse.com
|
||||
|
||||
- Update to Version 5.1.0 (jsc#PED-8910)
|
||||
* cli: Support --cpu maximum (Andrea Bolognani)
|
||||
* Prefer maximum mode for many emulated guests (Andrea Bolognani)
|
||||
* virt-manager: Fill in model combo with advertised values by
|
||||
libvirt (Lin Ma)
|
||||
* virt-manager: Default to same snapshot mode as currently used
|
||||
snapshot
|
||||
* virt-manager: Warn users to not mix snapshot modes
|
||||
* cli: Add --memdev target.dynamicMemslots support for
|
||||
virtio-mem (Lin Ma)
|
||||
* cli: add target.memReserve for pci-bridge and pcie-root-port
|
||||
controllers (Lin Ma)
|
||||
* cli: Add --disk driver.queue_size support (Lin Ma)
|
||||
* cli: Add 'poll' settings for iothread (Lin Ma)
|
||||
* cli: Add --tpm backend.profile.{source,removeDisabled} support
|
||||
(Lin Ma)
|
||||
* cli: Add nvram.templateFormat to indicate template format
|
||||
(Lin Ma)
|
||||
* cli: Add --features hyperv.xmm_input.state=on/off (Lin Ma)
|
||||
* cli: Add --features hyperv.emsr_bitmap.state=on/off (Lin Ma)
|
||||
* cli: Add --features hyperv.tlbflush.direct.state=on/off
|
||||
(Lin Ma)
|
||||
* cli: Add --features hyperv.tlbflush.extended.state=on/off
|
||||
(Lin Ma)
|
||||
* virt-manager: Add riscv64 to prioritized architectures
|
||||
(Heinrich Schuchardt)
|
||||
* virtinst: Add --pstore backend=acpi-erst,path=XX,size=YY
|
||||
support (Lin Ma)
|
||||
* XML: Fix escaping special characters twice in some cases
|
||||
(Marius Vollmer)
|
||||
* Add riscv64 architecture for Debian ISO/URL detection
|
||||
(Heinrich Schuchardt)
|
||||
* virt-manager: list virtual networks when creating new QEMU
|
||||
Session VM
|
||||
* Add support for vDPA network devices (Joren)
|
||||
* virt-install: Detect wayland in order to start virt-viewer
|
||||
* Improve Debian/Ubuntu detection for ISO images
|
||||
* Allow spaces, disallow slashes in names
|
||||
(AbhinavTiruvee)
|
||||
* cli: Add support to fetch cloud-init config files from URL
|
||||
* virt-manager: Fix error when opening File Browser
|
||||
(Zahid Kizmaz)
|
||||
* virt-manager: Add Ctrl+Alt+Shift+Esc key command for logind's
|
||||
SecureAttentionKey (n3rdopolis)
|
||||
* cli: Add support for creating TDX VMs
|
||||
* virt-install: Improve default device models to improve Windows
|
||||
ARM support (Akihiko Odaki)
|
||||
* Add support to configure startup policy for USB passed through
|
||||
devices (Lin Ma)
|
||||
- Drop patches contained in new tarball
|
||||
001-cli-Support-cpu-maximum.patch
|
||||
002-gui-Support-maximum-CPU-mode.patch
|
||||
003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
|
||||
004-domcaps-get-list-of-supported-panic-device-models.patch
|
||||
005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
|
||||
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
|
||||
007-cli-man-Always-list-osinfo-before-os-variant.patch
|
||||
008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
|
||||
009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
|
||||
010-virtManager-domain-fix-indentation.patch
|
||||
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
|
||||
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
|
||||
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
|
||||
053-virtinst-add-support-for-creating-TDX-guests.patch
|
||||
revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 13 16:46:43 MDT 2025 - carnold@suse.com
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package virt-manager
|
||||
#
|
||||
# Copyright (c) 2026 SUSE LLC and contributors
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -38,7 +38,7 @@
|
||||
%endif
|
||||
|
||||
Name: virt-manager%{psuffix}
|
||||
Version: 5.1.0
|
||||
Version: 5.0.0
|
||||
Release: 0
|
||||
Summary: Virtual Machine Manager
|
||||
License: GPL-2.0-or-later
|
||||
@@ -49,26 +49,45 @@ Source1: virt-install.rb
|
||||
Source2: virt-install.desktop
|
||||
Source3: virt-manager-supportconfig
|
||||
# Upstream Patches
|
||||
Patch1: 003-virtinst-cloudinit-include-empty-meta-data-file.patch
|
||||
Patch2: 009-avoid-NoneType-pixbuf.patch
|
||||
Patch3: 012-virtManager-wrapped-details-hw-panel-with-GtkScrolledWindow.patch
|
||||
Patch4: 013-virtinst-interface-add-support-for-backend.hostname-and-backend.fqdn.patch
|
||||
Patch5: 014-virtinst-add-support-for-acpi-generic-initiator.patch
|
||||
Patch6: 015-virtinst-add-support-for-pcihole64.patch
|
||||
Patch7: 017-maint-use-constants-instead-of-strings-for-boot-devices.patch
|
||||
Patch8: 018-virtinst-rework-get_boot_order.patch
|
||||
Patch9: 019-virtinst-guest-introduce-can_use_device_boot_order.patch
|
||||
Patch10: 020-virtinst-remove-legacy-attribute-from-set_boot_order-get_boot_order.patch
|
||||
Patch11: 021-installer-add-support-to-use-device-boot-order.patch
|
||||
Patch12: 024-virtinst-Fix-XDG_DATA_HOME-handling.patch
|
||||
Patch13: 051-addhardware-Add-usb-as-a-recommended-sound-device.patch
|
||||
Patch14: 055-virtinst-Add-serial-controller-option-to-cli.patch
|
||||
Patch15: 056-virtinst-Add-NVMe-Controller.patch
|
||||
Patch16: 057-virtinst-implement-NVMe-disk-target-generation.patch
|
||||
Patch17: 058-virtManager-Add-NVMe-disk-type.patch
|
||||
Patch18: 059-ui-Show-NVMe-Controller-details.patch
|
||||
Patch19: 060-virtinst-fix-locale-when-running-in-flatpak.patch
|
||||
Patch20: 061-virtinst-add-support-for-iommufd.patch
|
||||
Patch1: 001-cli-Support-cpu-maximum.patch
|
||||
Patch2: 002-gui-Support-maximum-CPU-mode.patch
|
||||
Patch3: 003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
|
||||
Patch4: 004-domcaps-get-list-of-supported-panic-device-models.patch
|
||||
Patch5: 005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
|
||||
Patch6: 006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
|
||||
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
|
||||
Patch53: 053-virtinst-add-support-for-creating-TDX-guests.patch
|
||||
Patch100: revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch
|
||||
# SUSE Only
|
||||
Patch150: virtman-desktop.patch
|
||||
Patch151: virtman-kvm.patch
|
||||
@@ -90,7 +109,6 @@ Patch224: virtinst-s390x-disable-graphics.patch
|
||||
Patch225: virtinst-add-caasp-support.patch
|
||||
Patch226: virtinst-add-sle15-detection-support.patch
|
||||
Patch227: virtinst-media-detection.patch
|
||||
Patch228: virtinst-query-recommended-firmware.patch
|
||||
# Bug Fixes
|
||||
Patch251: virtman-increase-setKeepAlive-count.patch
|
||||
Patch252: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
|
||||
@@ -119,7 +137,6 @@ Patch284: virtinst-add-slem60-detection-support.patch
|
||||
Patch285: virtinst-windows-server-detection.patch
|
||||
Patch286: virtinst-drop-removeprefix-usage.patch
|
||||
Patch287: virtinst-add-sle16-detection-support.patch
|
||||
Patch288: virtinst-remove-tpm-device-for-tdx-and-snp.patch
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
@@ -240,63 +257,55 @@ chmod -x %{buildroot}%{_datadir}/virt-manager/virtManager/virtmanager.py
|
||||
|
||||
%if %{with test}
|
||||
%check
|
||||
# bsc#1253017: Set this for testCLI0181virt_install_kvm_session_defaults
|
||||
export XDG_DATA_HOME="/tmp/.local/share"
|
||||
# XML contains hda instead of hdc
|
||||
# TODO: check if these are genuine failures or due to the non-upstream patches
|
||||
# different device names
|
||||
donttest="test_disk_numtotarget"
|
||||
# XML contains sd{a,b,c,d} instead of sda{a,b,c,d}
|
||||
donttest="$donttest or testCLI0001virt_install_many_devices"
|
||||
# There are XML properties that are untested in the test suite.
|
||||
donttest="$donttest or testCLI0003virt_install_singleton_config_2"
|
||||
donttest="$donttest or testCLI0004virt_install_singleton_config_2"
|
||||
donttest="$donttest or testCLI0101virt_install_cloud_init_default"
|
||||
donttest="$donttest or testCLI0101virt_install_cloud_init_options1"
|
||||
donttest="$donttest or testCLI0102virt_install_cloud_init_options1"
|
||||
donttest="$donttest or testCLI0113virt_install_reinstall_cdrom"
|
||||
donttest="$donttest or testCLI0117virt_install_reinstall_cdrom"
|
||||
donttest="$donttest or testCLI0147virt_install_win11"
|
||||
donttest="$donttest or testCLI0147virt_install_win11_no_uefi"
|
||||
donttest="$donttest or testCLI0148virt_install_win11_no_uefi"
|
||||
donttest="$donttest or testCLI0151virt_install_location_iso_and_cloud_init"
|
||||
donttest="$donttest or testCLI0165virt_install"
|
||||
donttest="$donttest or testCLI0173virt_install"
|
||||
donttest="$donttest or testCLI0172virt_install_s390x_cdrom"
|
||||
donttest="$donttest or testCLI0180virt_install_s390x_cdrom"
|
||||
donttest="$donttest or testCLI0186virt_install_riscv64_cloud_init"
|
||||
donttest="$donttest or testCLI0187virt_install_riscv64_cdrom"
|
||||
donttest="$donttest or testCLI0188virt_install_riscv64_unattended"
|
||||
donttest="$donttest or testCLI0200virt_install_aarch64_cloud_init"
|
||||
donttest="$donttest or testCLI0204virt_install_loongarch64_cloud_init"
|
||||
donttest="$donttest or testCLI0205virt_install_loongarch64_cdrom"
|
||||
donttest="$donttest or testCLI0206virt_install_loongarch64_unattended"
|
||||
donttest="$donttest or testCLI0193virt_install_xen_default"
|
||||
donttest="$donttest or testCLI0216virt_install_xen_default"
|
||||
donttest="$donttest or testCLI0217virt_install_xenpvh"
|
||||
donttest="$donttest or testCLI0218virt_install_xen_pv"
|
||||
donttest="$donttest or testCLI0219virt_install_xen_hvm"
|
||||
donttest="$donttest or testCLI0220virt_install_xen_hvm"
|
||||
donttest="$donttest or testCLI0227virt_install_bhyve_default_f27"
|
||||
donttest="$donttest or testCLI0307virt_xml_build_disk_domain"
|
||||
donttest="$donttest or testCLI0315virt_xml_edit_cpu_host_copy"
|
||||
donttest="$donttest or testCLI0316virt_xml_build_pool_logical_disk"
|
||||
donttest="$donttest or testCLI0416virt_xml_add_disk_create_storage_start"
|
||||
donttest="$donttest or testCLI0438virt_clone_auto_unmanaged"
|
||||
donttest="$donttest or testCLI0442virt_clone"
|
||||
donttest="$donttest or testCLI0443virt_clone"
|
||||
donttest="$donttest or testCLI0457virt_clone"
|
||||
donttest="$donttest or testCLI0458virt_clone"
|
||||
donttest="$donttest or testCLI0460virt_clone"
|
||||
donttest="$donttest or testCLI0461virt_clone"
|
||||
donttest="$donttest or testCLI0468virt_clone"
|
||||
donttest="$donttest or testCLI0475virt_clone"
|
||||
donttest="$donttest or test_virtinstall_no_testsuite"
|
||||
donttest="$donttest or testCheckXMLBuilderProps"
|
||||
# There are command line arguments or aliases are not checked in the test suite.
|
||||
donttest="$donttest or testCheckCLISuboptions"
|
||||
# We insert cache="unsafe" during installation
|
||||
donttest="$donttest or testCLI0007virt_install_singleton_config_2"
|
||||
donttest="$donttest or testCLI0105virt_install_cloud_init_default"
|
||||
donttest="$donttest or testCLI0106virt_install_cloud_init_options1"
|
||||
donttest="$donttest or testCLI0111virt_install_cloud_init_options6"
|
||||
donttest="$donttest or testCLI0123virt_install_reinstall_cdrom"
|
||||
donttest="$donttest or testCLI0153virt_install_win11"
|
||||
donttest="$donttest or testCLI0154virt_install_win11_no_uefi"
|
||||
donttest="$donttest or testCLI0157virt_install_location_iso_and_cloud_init"
|
||||
# RuntimeError: SEV launch security requires a Q35 machine
|
||||
donttest="$donttest or testCLI0179virt_install"
|
||||
# Size must be specified for non existent volume '__virtinst_cli_exist1.img'
|
||||
donttest="$donttest or testCLI0186virt_install_s390x_cdrom"
|
||||
# We insert cache="unsafe" during installation
|
||||
donttest="$donttest or testCLI0192virt_install_riscv64_cloud_init"
|
||||
donttest="$donttest or testCLI0193virt_install_riscv64_cdrom"
|
||||
donttest="$donttest or testCLI0194virt_install_riscv64_unattended"
|
||||
donttest="$donttest or testCLI0207virt_install_aarch64_cloud_init"
|
||||
# We default to 4 vcpus instead of 1
|
||||
donttest="$donttest or testCLI0208virt_install_aarch64_win11"
|
||||
# We insert cache="unsafe" during installation
|
||||
donttest="$donttest or testCLI0212virt_install_loongarch64_cloud_init"
|
||||
donttest="$donttest or testCLI0213virt_install_loongarch64_cdrom"
|
||||
donttest="$donttest or testCLI0214virt_install_loongarch64_unattended"
|
||||
# We use grub.xen instead of pygrub
|
||||
donttest="$donttest or testCLI0228virt_install_xen_default"
|
||||
donttest="$donttest or testCLI0229virt_install_xenpvh"
|
||||
donttest="$donttest or testCLI0230virt_install_xen_pv"
|
||||
# We use qemu-system-i386 instead of the ancient qemu-dm and also no e1000 nic
|
||||
donttest="$donttest or testCLI0231virt_install_xen_hvm"
|
||||
donttest="$donttest or testCLI0232virt_install_xen_hvm"
|
||||
# foobhyve.qcow2 used instead of foobhyve.img
|
||||
donttest="$donttest or testCLI0239virt_install_bhyve_default_f27"
|
||||
# XML contains vda instead of vdaf
|
||||
donttest="$donttest or testCLI0319virt_xml_build_disk_domain"
|
||||
donttest="$donttest or testCLI0328virt_xml_build_pool_logical_disk"
|
||||
# XML contains hda instead of hdd
|
||||
donttest="$donttest or testCLI0428virt_xml_add_disk_create_storage_start"
|
||||
# Disk path '/tmp/__virtinst_cli_exist1.img' does not exist.
|
||||
donttest="$donttest or testCLI0450virt_clone_auto_unmanaged"
|
||||
donttest="$donttest or testCLI0454virt_clone"
|
||||
donttest="$donttest or testCLI0455virt_clone"
|
||||
donttest="$donttest or testCLI0469virt_clone"
|
||||
donttest="$donttest or testCLI0470virt_clone"
|
||||
donttest="$donttest or testCLI0472virt_clone"
|
||||
donttest="$donttest or testCLI0473virt_clone"
|
||||
donttest="$donttest or testCLI0480virt_clone"
|
||||
#
|
||||
pytest -v -rfEs -k "not ($donttest)"
|
||||
%endif
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
References: bsc#1010060
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -281,6 +281,12 @@ class _SUSEContent:
|
||||
sle_version = sle_version + "." + self.product_name.strip().rsplit(" ")[5][2]
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -278,6 +278,12 @@ class _SUSEContent(object):
|
||||
self.product_name.strip().rsplit(' ')[5][2])
|
||||
distro_version = sle_version
|
||||
|
||||
+ # SUSE Container as a Service Platform
|
||||
@@ -17,17 +17,17 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
return distro_version
|
||||
|
||||
|
||||
@@ -560,6 +566,9 @@ class _SuseDistro(_RHELDistro):
|
||||
@@ -564,6 +570,9 @@ class _SuseDistro(_RHELDistro):
|
||||
|
||||
version = distro_version.split(".", 1)[0].strip()
|
||||
version = distro_version.split('.', 1)[0].strip()
|
||||
|
||||
+ if self._variant_prefix.startswith(("caasp")):
|
||||
+ return self._variant_prefix + distro_version
|
||||
+
|
||||
if str(self._variant_prefix).startswith(("sles", "sled", "oes")):
|
||||
sp_version = ""
|
||||
if len(distro_version.split(".", 1)) == 2:
|
||||
@@ -629,6 +638,14 @@ class _OpensuseDistro(_SuseDistro):
|
||||
if len(distro_version.split('.', 1)) == 2:
|
||||
@@ -633,6 +642,14 @@ class _OpensuseDistro(_SuseDistro):
|
||||
famregex = ".*openSUSE.*"
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
class _OESDistro(_SuseDistro):
|
||||
PRETTY_NAME = "OES"
|
||||
matching_distros = ["oes"]
|
||||
@@ -867,6 +884,7 @@ def _build_distro_list(osobj):
|
||||
@@ -870,6 +887,7 @@ def _build_distro_list(osobj):
|
||||
_SLESDistro,
|
||||
_SLEDDistro,
|
||||
_OpensuseDistro,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: bsc#1192238, jsc#SLE-17764
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -718,6 +718,26 @@ class _OESDistro(_SuseDistro):
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -724,6 +724,26 @@ class _OESDistro(_SuseDistro):
|
||||
famregex = ".*Open Enterprise Server.*"
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
class _DebianDistro(_DistroTree):
|
||||
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
|
||||
# daily builds: https://d-i.debian.org/daily-images/amd64/
|
||||
@@ -945,6 +965,7 @@ def _build_distro_list(osobj):
|
||||
@@ -950,6 +970,7 @@ def _build_distro_list(osobj):
|
||||
_FedoraDistro,
|
||||
_RHELDistro,
|
||||
_CentOSDistro,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: bsc#1190215
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -278,11 +278,15 @@ class _SUSEContent:
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -274,12 +274,17 @@ class _SUSEContent(object):
|
||||
if "Enterprise" in self.product_name or "SLES" in self.product_name:
|
||||
if " SAP " in self.product_name:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[7]
|
||||
@@ -14,13 +14,15 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
if len(self.product_name.strip().rsplit(' ')) > 5 and not " Micro " in self.product_name:
|
||||
if " SAP " in self.product_name:
|
||||
sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[8][2])
|
||||
sle_version = (sle_version + '.' +
|
||||
self.product_name.strip().rsplit(' ')[8][2])
|
||||
+ if " High Performance " in self.product_name:
|
||||
+ sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[7][2])
|
||||
+ sle_version = (sle_version + '.' +
|
||||
+ self.product_name.strip().rsplit(' ')[7][2])
|
||||
else:
|
||||
sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[5][2])
|
||||
distro_version = sle_version
|
||||
@@ -666,6 +670,14 @@ class _SLESDistro(_SuseDistro):
|
||||
sle_version = (sle_version + '.' +
|
||||
self.product_name.strip().rsplit(' ')[5][2])
|
||||
@@ -671,6 +676,14 @@ class _SLESDistro(_SuseDistro):
|
||||
famregex = ".*SUSE Linux Enterprise.*"
|
||||
|
||||
|
||||
@@ -35,7 +37,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
class _SLEDDistro(_SuseDistro):
|
||||
PRETTY_NAME = "SLED"
|
||||
matching_distros = ["sled"]
|
||||
@@ -935,6 +947,7 @@ def _build_distro_list(osobj):
|
||||
@@ -939,6 +952,7 @@ def _build_distro_list(osobj):
|
||||
_CentOSDistro,
|
||||
_SLEDistro,
|
||||
_SLESDistro,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: bsc#1054986
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -593,6 +593,10 @@ class _SuseDistro(_RHELDistro):
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -597,6 +597,10 @@ class _SuseDistro(_RHELDistro):
|
||||
if re.search("openSUSE Tumbleweed", self.cache.treeinfo_name):
|
||||
return "opensusetumbleweed"
|
||||
|
||||
@@ -15,10 +15,10 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
version, update = self.cache.split_version()
|
||||
base = self._variant_prefix + str(version)
|
||||
while update >= 0:
|
||||
@@ -600,7 +604,10 @@ class _SuseDistro(_RHELDistro):
|
||||
@@ -604,7 +608,10 @@ class _SuseDistro(_RHELDistro):
|
||||
# SLE doesn't use '.0' for initial releases in
|
||||
# osinfo-db (sles11, sles12, etc)
|
||||
if update > 0 or not base.startswith("sle"):
|
||||
if update > 0 or not base.startswith('sle'):
|
||||
- tryvar += ".%s" % update
|
||||
+ if sp_version:
|
||||
+ tryvar += "sp%s" % update
|
||||
@@ -27,7 +27,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
if OSDB.lookup_os(tryvar):
|
||||
return tryvar
|
||||
update -= 1
|
||||
@@ -614,6 +621,14 @@ class _SuseDistro(_RHELDistro):
|
||||
@@ -618,6 +625,14 @@ class _SuseDistro(_RHELDistro):
|
||||
return var
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
class _SLESDistro(_SuseDistro):
|
||||
PRETTY_NAME = "SLES"
|
||||
matching_distros = ["sles"]
|
||||
@@ -881,6 +896,7 @@ def _build_distro_list(osobj):
|
||||
@@ -884,6 +899,7 @@ def _build_distro_list(osobj):
|
||||
_FedoraDistro,
|
||||
_RHELDistro,
|
||||
_CentOSDistro,
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-5.0.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -271,20 +271,27 @@ class _SUSEContent:
|
||||
--- virt-manager-5.0.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.0.0/virtinst/install/urldetect.py
|
||||
@@ -265,10 +265,11 @@ class _SUSEContent(object):
|
||||
|
||||
# Special case, parse version out of a line like this
|
||||
# cpe:/o:opensuse:opensuse:13.2,openSUSE
|
||||
- if not distro_version and re.match("^.*:.*,openSUSE*", self.content_dict["DISTRO"]):
|
||||
- distro_version = self.content_dict["DISTRO"].rsplit(",", 1)[0].strip().rsplit(":")[4]
|
||||
- if (not distro_version and
|
||||
- re.match("^.*:.*,openSUSE*", self.content_dict["DISTRO"])):
|
||||
- distro_version = self.content_dict["DISTRO"].rsplit(
|
||||
- ",", 1)[0].strip().rsplit(":")[4]
|
||||
+ if not distro_version:
|
||||
+ if "DISTRO" in self.content_dict and re.match("^.*:.*,openSUSE*", self.content_dict["DISTRO"]):
|
||||
+ distro_version = self.content_dict["DISTRO"].rsplit(",", 1)[0].strip().rsplit(":")[4]
|
||||
@@ -16,28 +18,22 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
distro_version = distro_version.strip()
|
||||
|
||||
if "Enterprise" in self.product_name or "SLES" in self.product_name or "Micro" in self.product_name:
|
||||
if " SAP " in self.product_name:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[7]
|
||||
- if " High Performance " in self.product_name:
|
||||
+ elif " High Performance " in self.product_name:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[6]
|
||||
+ elif "SUSE SL Micro" in self.product_name:
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')[3]
|
||||
@@ -279,6 +280,14 @@ class _SUSEContent(object):
|
||||
else:
|
||||
- if "SUSE SL Micro" in self.product_name:
|
||||
- sle_version = self.product_name.strip().rsplit(' ')[3]
|
||||
- else:
|
||||
- sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')
|
||||
+ for num in sle_version:
|
||||
+ num = num.replace(".0", "", 1)
|
||||
+ if num.isnumeric():
|
||||
+ sle_version = num
|
||||
+ break
|
||||
if "SUSE SL Micro" in self.product_name:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[3]
|
||||
+ elif "SLES Full" in self.product_name or "SUSE SLES" in self.product_name:
|
||||
+ # For SLES 16
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')
|
||||
+ for num in sle_version:
|
||||
+ num = num.rstrip(".0")
|
||||
+ if num.isnumeric():
|
||||
+ sle_version = num
|
||||
+ break
|
||||
else:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
if len(self.product_name.strip().rsplit(' ')) > 5 and not " Micro " in self.product_name:
|
||||
if " SAP " in self.product_name:
|
||||
sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[8][2])
|
||||
@@ -518,13 +525,20 @@ class _SuseDistro(_RHELDistro):
|
||||
@@ -518,13 +527,20 @@ class _SuseDistro(_RHELDistro):
|
||||
|
||||
if not cache.checked_for_suse_content:
|
||||
cache.checked_for_suse_content = True
|
||||
@@ -58,27 +54,27 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
if media_str:
|
||||
media_arch = "x86_64"
|
||||
if 'aarch64' in media_str:
|
||||
@@ -580,6 +594,10 @@ class _SuseDistro(_RHELDistro):
|
||||
if tree_arch == "ppc64":
|
||||
self._kernel_paths.append(("suseboot/linux64", "suseboot/initrd64"))
|
||||
@@ -582,6 +598,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, "boot/%s/initrd" % tree_arch))
|
||||
# Tested with Opensuse 10.0
|
||||
@@ -669,7 +687,7 @@ class _SLESDistro(_SuseDistro):
|
||||
self._kernel_paths.append(
|
||||
("boot/%s/linux" % tree_arch,
|
||||
@@ -675,7 +695,7 @@ class _SLESDistro(_SuseDistro):
|
||||
PRETTY_NAME = "SLES"
|
||||
matching_distros = ["sles"]
|
||||
_variant_prefix = "sles"
|
||||
- _suse_regex = [".*SUSE Linux Enterprise Server*", ".*SUSE SLES*"]
|
||||
+ _suse_regex = [".*SUSE Linux Enterprise Server*", ".*SLES*", ".*SUSE SLES*"]
|
||||
+ _suse_regex = [".*SUSE Linux Enterprise Server*", ".*SLES Full*", ".*SUSE SLES*"]
|
||||
famregex = ".*SUSE Linux Enterprise.*"
|
||||
|
||||
|
||||
@@ -965,17 +983,17 @@ def _build_distro_list(osobj):
|
||||
@@ -970,17 +990,17 @@ def _build_distro_list(osobj):
|
||||
allstores = [
|
||||
# Libosinfo takes priority
|
||||
_LibosinfoDistro,
|
||||
@@ -101,10 +97,10 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
_OESDistro,
|
||||
_DebianDistro,
|
||||
_UbuntuDistro,
|
||||
Index: virt-manager-5.1.0/virtManager/createvm.py
|
||||
Index: virt-manager-5.0.0/virtManager/createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-5.1.0/virtManager/createvm.py
|
||||
--- virt-manager-5.0.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-5.0.0/virtManager/createvm.py
|
||||
@@ -31,7 +31,7 @@ from .storagebrowse import vmmStorageBro
|
||||
from .vmwindow import vmmVMWindow
|
||||
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
Add support for detecting SUSE Linux Enterprise Micro.
|
||||
See also the osinfo-db package for the description file.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -280,7 +280,7 @@ class _SUSEContent:
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -276,7 +276,7 @@ class _SUSEContent(object):
|
||||
sle_version = self.product_name.strip().rsplit(' ')[7]
|
||||
else:
|
||||
sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
- if len(self.product_name.strip().rsplit(" ")) > 5:
|
||||
- if len(self.product_name.strip().rsplit(' ')) > 5:
|
||||
+ if len(self.product_name.strip().rsplit(' ')) > 5 and not " Micro " in self.product_name:
|
||||
if " SAP " in self.product_name:
|
||||
sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[8][2])
|
||||
else:
|
||||
@@ -592,6 +592,9 @@ class _SuseDistro(_RHELDistro):
|
||||
sle_version = (sle_version + '.' +
|
||||
self.product_name.strip().rsplit(' ')[8][2])
|
||||
@@ -597,6 +597,9 @@ class _SuseDistro(_RHELDistro):
|
||||
|
||||
version = distro_version.split(".", 1)[0].strip()
|
||||
version = distro_version.split('.', 1)[0].strip()
|
||||
|
||||
+ if self._variant_prefix.startswith(("slem")):
|
||||
+ return self._variant_prefix + distro_version
|
||||
@@ -24,7 +24,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
if self._variant_prefix.startswith(("caasp")):
|
||||
return self._variant_prefix + distro_version
|
||||
|
||||
@@ -679,6 +682,14 @@ class _OpensuseDistro(_SuseDistro):
|
||||
@@ -684,6 +687,14 @@ class _OpensuseDistro(_SuseDistro):
|
||||
famregex = ".*openSUSE.*"
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
class _CAASPDistro(_SuseDistro):
|
||||
PRETTY_NAME = "SLES"
|
||||
matching_distros = ["caasp"]
|
||||
@@ -926,6 +937,7 @@ def _build_distro_list(osobj):
|
||||
@@ -930,6 +941,7 @@ def _build_distro_list(osobj):
|
||||
_SLESDistro,
|
||||
_SLEDDistro,
|
||||
_OpensuseDistro,
|
||||
|
||||
@@ -5,12 +5,12 @@ temporarily dropped from the Micro version name, then added
|
||||
back as the official name upon release but the ISO media does not
|
||||
have the word Enterprise.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-4.1.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -275,13 +275,16 @@ class _SUSEContent:
|
||||
distro_version = self.content_dict["DISTRO"].rsplit(",", 1)[0].strip().rsplit(":")[4]
|
||||
--- virt-manager-4.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-4.1.0/virtinst/install/urldetect.py
|
||||
@@ -271,13 +271,16 @@ class _SUSEContent(object):
|
||||
",", 1)[0].strip().rsplit(":")[4]
|
||||
distro_version = distro_version.strip()
|
||||
|
||||
- if "Enterprise" in self.product_name or "SLES" in self.product_name:
|
||||
@@ -27,8 +27,8 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
if len(self.product_name.strip().rsplit(' ')) > 5 and not " Micro " in self.product_name:
|
||||
if " SAP " in self.product_name:
|
||||
sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[8][2])
|
||||
@@ -698,7 +701,7 @@ class _MICRODistro(_SuseDistro):
|
||||
sle_version = (sle_version + '.' +
|
||||
@@ -704,7 +707,7 @@ class _MICRODistro(_SuseDistro):
|
||||
PRETTY_NAME = "SLES"
|
||||
matching_distros = ["slem"]
|
||||
_variant_prefix = "slem"
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: fate#326960, bsc#1123942
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
Index: virt-manager-4.2.0/virtinst/install/installer.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/installer.py
|
||||
@@ -621,7 +621,10 @@ class Installer:
|
||||
--- virt-manager-4.2.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-4.2.0/virtinst/install/installer.py
|
||||
@@ -622,7 +622,10 @@ class Installer(object):
|
||||
guest.bootloader = "pygrub"
|
||||
else:
|
||||
guest.bootloader = None
|
||||
@@ -16,11 +16,11 @@ Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
log.debug("Using grub.xen to boot guest")
|
||||
on_reboot_value = guest.on_reboot
|
||||
self._alter_bootconfig(guest)
|
||||
Index: virt-manager-5.1.0/virtManager/delete.py
|
||||
Index: virt-manager-4.2.0/virtManager/delete.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/delete.py
|
||||
+++ virt-manager-5.1.0/virtManager/delete.py
|
||||
@@ -472,7 +472,7 @@ def _populate_storage_list(storage_list,
|
||||
--- virt-manager-4.2.0.orig/virtManager/delete.py
|
||||
+++ virt-manager-4.2.0/virtManager/delete.py
|
||||
@@ -459,7 +459,7 @@ def _populate_storage_list(storage_list,
|
||||
model.clear()
|
||||
|
||||
for diskdata in diskdatas:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
Reference: bnc#885380
|
||||
Allow Xen based VMs to default to using qcow2
|
||||
Index: virt-manager-5.1.0/virtinst/support.py
|
||||
Index: virt-manager-3.0.0/virtinst/support.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/support.py
|
||||
+++ virt-manager-5.1.0/virtinst/support.py
|
||||
@@ -246,7 +246,7 @@ class SupportCache:
|
||||
--- virt-manager-3.0.0.orig/virtinst/support.py
|
||||
+++ virt-manager-3.0.0/virtinst/support.py
|
||||
@@ -242,7 +242,7 @@ class SupportCache:
|
||||
# This is an arbitrary check to say whether it's a good idea to
|
||||
# default to qcow2. It might be fine for xen or qemu older than the versions
|
||||
# here, but until someone tests things I'm going to be a bit conservative.
|
||||
@@ -12,4 +12,4 @@ Index: virt-manager-5.1.0/virtinst/support.py
|
||||
+ conn_default_qcow2 = _make(hv_version={"qemu": "1.2.0", "all": 0})
|
||||
conn_autosocket = _make(hv_libvirt_version={"qemu": "1.0.6"})
|
||||
conn_pm_disable = _make(hv_version={"qemu": "1.2.0", "test": 0})
|
||||
conn_qcow2_lazy_refcounts = _make(version="1.1.0", hv_version={"qemu": "1.2.0", "test": 0})
|
||||
conn_qcow2_lazy_refcounts = _make(
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
Enhancement to correctly detect Open Enterprise Server media is
|
||||
selected as the installation source.
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -560,7 +560,7 @@ class _SuseDistro(_RHELDistro):
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -564,7 +564,7 @@ class _SuseDistro(_RHELDistro):
|
||||
|
||||
version = distro_version.split(".", 1)[0].strip()
|
||||
version = distro_version.split('.', 1)[0].strip()
|
||||
|
||||
- if str(self._variant_prefix).startswith(("sles", "sled")):
|
||||
+ if str(self._variant_prefix).startswith(("sles", "sled", "oes")):
|
||||
sp_version = ""
|
||||
if len(distro_version.split(".", 1)) == 2:
|
||||
sp_version = "sp" + distro_version.split(".", 1)[1].strip()
|
||||
@@ -629,6 +629,14 @@ class _OpensuseDistro(_SuseDistro):
|
||||
if len(distro_version.split('.', 1)) == 2:
|
||||
sp_version = 'sp' + distro_version.split('.', 1)[1].strip()
|
||||
@@ -633,6 +633,14 @@ class _OpensuseDistro(_SuseDistro):
|
||||
famregex = ".*openSUSE.*"
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
class _DebianDistro(_DistroTree):
|
||||
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
|
||||
# daily builds: https://d-i.debian.org/daily-images/amd64/
|
||||
@@ -859,6 +867,7 @@ def _build_distro_list(osobj):
|
||||
@@ -862,6 +870,7 @@ def _build_distro_list(osobj):
|
||||
_SLESDistro,
|
||||
_SLEDDistro,
|
||||
_OpensuseDistro,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: bsc#1234215
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
@@ -703,7 +703,10 @@ class DeviceDisk(Device):
|
||||
--- 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:
|
||||
@@ -15,4 +15,4 @@ Index: virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
+ newpath = newpath[len(prefix):]
|
||||
|
||||
if self._storage_backend.will_create_storage():
|
||||
raise xmlutil.DevError("Can't change disk path if storage creation info has been set.")
|
||||
raise xmlutil.DevError(
|
||||
|
||||
@@ -2,11 +2,11 @@ Older SLE guests have a two stage installation that need the ISO.
|
||||
Newer SLE PV guests hang when a cdrom device is attached without
|
||||
an ISO file.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/installer.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/installer.py
|
||||
@@ -178,7 +178,8 @@ class Installer:
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/installer.py
|
||||
@@ -168,7 +168,8 @@ class Installer(object):
|
||||
def _remove_install_cdrom_media(self, guest):
|
||||
if not self._install_cdrom_device_added:
|
||||
return
|
||||
|
||||
@@ -2,14 +2,14 @@ References: bsc#1180897
|
||||
Removing the cdrom iso file from the device prevents booting
|
||||
with a qemu error.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/installer.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/installer.py
|
||||
@@ -184,8 +184,9 @@ class Installer:
|
||||
return
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/installer.py
|
||||
@@ -175,8 +175,9 @@ class Installer(object):
|
||||
for disk in guest.devices.disk:
|
||||
if disk.is_cdrom() and disk.get_source_path() == self._cdrom_path():
|
||||
if (disk.is_cdrom() and
|
||||
disk.get_source_path() == self._cdrom_path()):
|
||||
- disk.set_source_path(None)
|
||||
- disk.sync_path_props()
|
||||
+ if not guest.os.is_xenpv():
|
||||
|
||||
@@ -2,11 +2,11 @@ When both the content file and .treeinfo file are missing from the media
|
||||
look in the media.1/products and media.1/media files for information.
|
||||
Caasp 4.0 has not content or .treeinfo file on the media
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -507,8 +507,23 @@ class _SuseDistro(_RHELDistro):
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -505,8 +505,23 @@ class _SuseDistro(_RHELDistro):
|
||||
cache.checked_for_suse_content = True
|
||||
content_str = cache.acquire_file_content("content")
|
||||
if content_str is None:
|
||||
|
||||
@@ -2,11 +2,11 @@ Reference: bnc#863821
|
||||
grub.xen is required to boot PV VMs that use the BTRFS filesystem.
|
||||
This patch forces the use of grub.xen (instead of using pygrub) for
|
||||
suse distros SLE12GA, openSUSE 13.2, and newer.
|
||||
Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
Index: virt-manager-4.2.0/virtinst/install/installer.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/installer.py
|
||||
@@ -240,7 +240,8 @@ class Installer:
|
||||
--- virt-manager-4.2.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-4.2.0/virtinst/install/installer.py
|
||||
@@ -229,7 +229,8 @@ class Installer(object):
|
||||
|
||||
def _alter_treemedia_bootconfig(self, guest):
|
||||
if not self._treemedia:
|
||||
@@ -16,10 +16,10 @@ Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
|
||||
kernel, initrd, kernel_args = self._treemedia_bootconfig
|
||||
if kernel:
|
||||
@@ -611,6 +612,21 @@ class Installer:
|
||||
final_xml = guest.get_xml()
|
||||
@@ -612,6 +613,21 @@ class Installer(object):
|
||||
if self.requires_postboot_xml_changes():
|
||||
initial_xml, final_xml = self._build_postboot_xml(guest, final_xml, meter)
|
||||
initial_xml, final_xml = self._build_postboot_xml(
|
||||
guest, final_xml, meter)
|
||||
+ if (guest.os.is_xenpv() and
|
||||
+ not guest.os.kernel):
|
||||
+ os_ver = guest.osinfo.name
|
||||
@@ -37,4 +37,4 @@ Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
+ final_xml = guest.get_xml()
|
||||
final_xml = self._pre_reinstall_xml or final_xml
|
||||
|
||||
log.debug(
|
||||
log.debug("Generated initial_xml: %s",
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
References: jsc#PED-14636 - Impl: UEFI as default for new VMs
|
||||
This patch depends on an upstream libosinfo patch.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/osdict.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/osdict.py
|
||||
+++ virt-manager-5.1.0/virtinst/osdict.py
|
||||
@@ -445,21 +445,27 @@ class _OsVariant:
|
||||
|
||||
def _supports_firmware_type(self, name, arch, default):
|
||||
firmwares = self._get_firmware_list()
|
||||
+ is_supported = default
|
||||
+ is_recommended = False
|
||||
|
||||
for firmware in firmwares: # pragma: no cover
|
||||
if firmware.get_architecture() != arch:
|
||||
continue
|
||||
if firmware.get_firmware_type() == name:
|
||||
- return firmware.is_supported()
|
||||
+ is_supported = firmware.is_supported()
|
||||
+ if hasattr(firmware, "is_recommended"):
|
||||
+ is_recommended = firmware.is_recommended()
|
||||
|
||||
- return default
|
||||
+ return (is_supported, is_recommended)
|
||||
|
||||
def requires_firmware_efi(self, arch):
|
||||
ret = False
|
||||
try:
|
||||
- supports_efi = self._supports_firmware_type("efi", arch, False)
|
||||
- supports_bios = self._supports_firmware_type("bios", arch, True)
|
||||
- ret = supports_efi and not supports_bios
|
||||
+ supports_efi, recommended_efi = self._supports_firmware_type("efi", arch, False)
|
||||
+ supports_bios, recommended_bios = self._supports_firmware_type("bios", arch, True)
|
||||
+ if supports_efi:
|
||||
+ if not supports_bios or recommended_efi:
|
||||
+ ret = True
|
||||
except Exception: # pragma: no cover
|
||||
log.debug("Error checking osinfo firmware support", exc_info=True)
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
References: bsc#1257182
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.1.0/virtinst/guest.py
|
||||
@@ -1049,6 +1049,16 @@ class Guest(XMLBuilder):
|
||||
self.pm.set_defaults(self)
|
||||
self.os.set_defaults(self)
|
||||
self.launchSecurity.set_defaults(self)
|
||||
+ # Currently TPM does not work with SEV-SNP and TDX.
|
||||
+ # Remove TPM device if present.
|
||||
+ if self.have_default_tpm:
|
||||
+ domcaps = self.lookup_domcaps()
|
||||
+ if domcaps.get_launch_security_type() is not None:
|
||||
+ for dev in self.devices.get_all():
|
||||
+ if dev.type == DeviceTpm.TYPE_EMULATOR:
|
||||
+ self.remove_device(dev)
|
||||
+ self.have_default_tpm = False
|
||||
+ break
|
||||
|
||||
for dev in self.devices.get_all():
|
||||
dev.set_defaults(self)
|
||||
--- virt-manager-5.1.0/tests/data/cli/compare/virt-install-amd-sev.xml.orig 2026-01-23 13:52:18.196433822 -0700
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-amd-sev.xml 2026-01-23 13:53:20.340435342 -0700
|
||||
@@ -66,9 +66,6 @@
|
||||
<target type="virtio" name="com.redhat.spice.0"/>
|
||||
</channel>
|
||||
<input type="tablet" bus="usb"/>
|
||||
- <tpm model="tpm-crb">
|
||||
- <backend type="emulator"/>
|
||||
- </tpm>
|
||||
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
|
||||
<image compression="off"/>
|
||||
</graphics>
|
||||
@@ -1,10 +1,10 @@
|
||||
Reference: bnc#869024
|
||||
Disable graphics on s390x
|
||||
Index: virt-manager-5.1.0/virtinst/guest.py
|
||||
Index: virt-manager-5.0.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.1.0/virtinst/guest.py
|
||||
@@ -265,7 +265,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,16 @@ Index: virt-manager-5.1.0/virtinst/guest.py
|
||||
self.skip_default_rng = False
|
||||
self.skip_default_tpm = False
|
||||
self.skip_default_input = False
|
||||
@@ -1192,7 +1195,7 @@ class Guest(XMLBuilder):
|
||||
@@ -365,7 +368,7 @@ class Guest(XMLBuilder):
|
||||
if not os_support:
|
||||
return False
|
||||
|
||||
- if self.os.is_x86():
|
||||
+ if self.os.is_x86() or self.os.is_s390x():
|
||||
return True
|
||||
|
||||
return False # pragma: no cover
|
||||
@@ -1153,7 +1156,7 @@ class Guest(XMLBuilder):
|
||||
self.add_device(dev)
|
||||
|
||||
def _add_default_video_device(self):
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -276,9 +276,15 @@ class _SUSEContent:
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -272,9 +272,16 @@ class _SUSEContent(object):
|
||||
distro_version = distro_version.strip()
|
||||
|
||||
if "Enterprise" in self.product_name or "SLES" in self.product_name:
|
||||
- sle_version = self.product_name.strip().rsplit(" ")[4]
|
||||
- sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
+ if " SAP " in self.product_name:
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')[7]
|
||||
+ else:
|
||||
+ sle_version = self.product_name.strip().rsplit(' ')[4]
|
||||
if len(self.product_name.strip().rsplit(" ")) > 5:
|
||||
- sle_version = sle_version + "." + self.product_name.strip().rsplit(" ")[5][2]
|
||||
if len(self.product_name.strip().rsplit(' ')) > 5:
|
||||
- sle_version = (sle_version + '.' +
|
||||
+ if " SAP " in self.product_name:
|
||||
+ sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[8][2])
|
||||
+ sle_version = (sle_version + '.' +
|
||||
+ self.product_name.strip().rsplit(' ')[8][2])
|
||||
+ else:
|
||||
+ sle_version = (sle_version + '.' + self.product_name.strip().rsplit(' ')[5][2])
|
||||
+ sle_version = (sle_version + '.' +
|
||||
self.product_name.strip().rsplit(' ')[5][2])
|
||||
distro_version = sle_version
|
||||
|
||||
# SUSE Container as a Service Platform
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
Set cache mode for target installation disk to unsafe for better
|
||||
performance.
|
||||
Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
Index: virt-manager-4.2.0/virtinst/install/installer.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/installer.py
|
||||
@@ -572,6 +572,15 @@ class Installer:
|
||||
--- virt-manager-4.2.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-4.2.0/virtinst/install/installer.py
|
||||
@@ -571,6 +571,15 @@ class Installer(object):
|
||||
|
||||
def _build_postboot_xml(self, guest_ro, final_xml, meter):
|
||||
initial_guest = Guest(self.conn, parsexml=final_xml)
|
||||
@@ -20,8 +20,8 @@ Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
self._alter_bootconfig(initial_guest)
|
||||
self._alter_install_resources(initial_guest, meter)
|
||||
if self.has_cloudinit():
|
||||
@@ -601,11 +610,15 @@ class Installer:
|
||||
)
|
||||
@@ -601,11 +610,15 @@ class Installer(object):
|
||||
"TPM for the first boot")
|
||||
initial_guest.remove_device(initial_guest.devices.tpm[0])
|
||||
|
||||
+ install_xml = initial_guest.get_xml()
|
||||
@@ -37,23 +37,23 @@ Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
|
||||
def _build_xml(self, guest, meter):
|
||||
initial_xml = None
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cdrom-url.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cdrom-url.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cdrom-url.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cdrom-url.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cdrom-url.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cdrom-url.xml
|
||||
@@ -24,6 +24,7 @@
|
||||
</source>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<readonly/>
|
||||
<boot order="1"/>
|
||||
+ <driver cache="unsafe"/>
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
@@ -33,7 +33,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
@@ -35,7 +35,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -61,23 +61,23 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-memory-hotplug.xml
|
||||
+ <driver name="qemu" type="qcow2" discard="unmap" cache="unsafe"/>
|
||||
<source file="/var/lib/libvirt/images/fedora.qcow2"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cdrom-double.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cdrom-double.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cdrom-double.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cdrom-double.xml
|
||||
@@ -21,6 +21,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cdrom-double.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cdrom-double.xml
|
||||
@@ -22,6 +22,7 @@
|
||||
<disk type="file" device="disk">
|
||||
<source file="/var/lib/libvirt/images/vm1.qcow2"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<boot order="2"/>
|
||||
+ <driver cache="unsafe"/>
|
||||
</disk>
|
||||
<disk type="file" device="cdrom">
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-default.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-default.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cloud-init-default.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-default.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cloud-init-default.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-default.xml
|
||||
@@ -33,6 +33,7 @@
|
||||
<driver name="qemu" type="qcow2"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
@@ -86,10 +86,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-default
|
||||
</disk>
|
||||
<controller type="usb" model="qemu-xhci" ports="15"/>
|
||||
<controller type="pci" model="pcie-root"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options1.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options1.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cloud-init-options1.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options1.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cloud-init-options1.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options1.xml
|
||||
@@ -44,6 +44,7 @@ chpasswd:
|
||||
<driver name="qemu" type="qcow2"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
@@ -98,10 +98,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options
|
||||
</disk>
|
||||
<controller type="usb" model="qemu-xhci" ports="15"/>
|
||||
<controller type="pci" model="pcie-root"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options2.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options2.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cloud-init-options2.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options2.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cloud-init-options2.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options2.xml
|
||||
@@ -39,6 +39,7 @@ ssh_authorized_keys:
|
||||
<disk type="file" device="disk">
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
@@ -110,10 +110,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options3.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options3.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cloud-init-options3.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options3.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cloud-init-options3.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options3.xml
|
||||
@@ -33,6 +33,7 @@ users:
|
||||
<disk type="file" device="disk">
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
@@ -122,10 +122,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options4.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options4.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cloud-init-options4.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options4.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cloud-init-options4.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options4.xml
|
||||
@@ -26,6 +26,7 @@
|
||||
<disk type="file" device="disk">
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
@@ -134,10 +134,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options5.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options5.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cloud-init-options5.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options5.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cloud-init-options5.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cloud-init-options5.xml
|
||||
@@ -26,6 +26,7 @@
|
||||
<disk type="file" device="disk">
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
@@ -146,11 +146,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cloud-init-options
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-multiple-short-id.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-multiple-short-id.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-osinfo-multiple-short-id.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-multiple-short-id.xml
|
||||
@@ -29,7 +29,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-osinfo-multiple-short-id.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-multiple-short-id.xml
|
||||
@@ -31,7 +31,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -158,11 +158,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-multiple-sh
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-url-with-disk.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-url-with-disk.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-osinfo-url-with-disk.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-url-with-disk.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-osinfo-url-with-disk.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-url-with-disk.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -172,11 +172,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-url-with-di
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
|
||||
@@ -44,7 +44,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
|
||||
@@ -45,7 +45,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="cdrom">
|
||||
@@ -185,22 +185,22 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unatte
|
||||
<source file="TESTSUITE_SCRUBBED/tests/data/fakemedia/fake-win7.iso"/>
|
||||
<target dev="sda" bus="sata"/>
|
||||
<readonly/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osvariant-defaults-pxe.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-osvariant-defaults-pxe.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-osvariant-defaults-pxe.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-osvariant-defaults-pxe.xml
|
||||
@@ -27,6 +27,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-osvariant-defaults-pxe.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-osvariant-defaults-pxe.xml
|
||||
@@ -28,6 +28,7 @@
|
||||
<disk type="file" device="disk">
|
||||
<source file="/var/lib/libvirt/images/fedora26.qcow2"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<boot order="2"/>
|
||||
+ <driver cache="unsafe"/>
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-reinstall-location.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-reinstall-location.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-reinstall-location.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-reinstall-location.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-reinstall-location.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-reinstall-location.xml
|
||||
@@ -22,7 +22,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
|
||||
@@ -210,11 +210,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-reinstall-location
|
||||
<source file="/pool-dir/test-clone-simple.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
@@ -19,7 +19,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
@@ -21,7 +21,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -223,23 +223,23 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-reinstall-pxe.xml
|
||||
<source file="/pool-dir/test-clone-simple.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
|
||||
@@ -29,6 +29,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
|
||||
@@ -30,6 +30,7 @@
|
||||
<disk type="file" device="disk">
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<boot order="2"/>
|
||||
+ <driver cache="unsafe"/>
|
||||
</disk>
|
||||
<disk type="file" device="cdrom">
|
||||
<source file="/pool-dir/testvol2.img"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
@@ -24,7 +24,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
@@ -26,7 +26,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-aarch64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -247,37 +247,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-aarch64-cdrom.xml
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-cdrom-centos-label.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-cdrom-centos-label.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-cdrom-centos-label.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-cdrom-centos-label.xml
|
||||
@@ -30,7 +30,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
- <driver name="qemu" type="qcow2"/>
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-centos7.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-centos7.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-centos7.xml
|
||||
@@ -30,7 +30,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
- <driver name="qemu" type="qcow2"/>
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-cpu-default-fallback.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-cpu-default-fallback.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-cpu-default-fallback.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-cdrom-centos-label.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-cdrom-centos-label.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -286,12 +260,12 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-cpu-default-fa
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-fallback.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-centos7.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-fallback.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-fallback.xml
|
||||
@@ -30,7 +30,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-centos7.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-centos7.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -299,11 +273,37 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-fedoralatest-url.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-cpu-default-fallback.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-fedoralatest-url.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-fedoralatest-url.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-cpu-default-fallback.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-cpu-default-fallback.xml
|
||||
@@ -34,7 +34,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
- <driver name="qemu" type="qcow2"/>
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-fallback.xml
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-fallback.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-cpu-hostmodel-fallback.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
- <driver name="qemu" type="qcow2"/>
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-fedoralatest-url.xml
|
||||
===================================================================
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-fedoralatest-url.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-fedoralatest-url.xml
|
||||
@@ -33,7 +33,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -313,11 +313,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-fedoralatest-u
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
@@ -30,7 +30,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -325,11 +325,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel5.xml
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
@@ -33,7 +33,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -339,10 +339,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel6.xml
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
@@ -33,7 +33,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -352,11 +352,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-rhel7.xml
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-session-defaults.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-session-defaults.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-session-defaults.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-session-defaults.xml
|
||||
@@ -30,7 +30,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-session-defaults.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-session-defaults.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -364,12 +364,12 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-session-defaul
|
||||
+ <driver name="qemu" type="qcow2" discard="unmap" cache="unsafe"/>
|
||||
<source file="/tmp/.local/share/libvirt/images/fedora21.qcow2"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
@@ -45,7 +45,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
@@ -47,7 +47,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -377,12 +377,12 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="sda" bus="sata"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
|
||||
@@ -45,7 +45,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
|
||||
@@ -47,7 +47,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -390,12 +390,12 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.x
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
@@ -30,7 +30,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -403,11 +403,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-linux2020.xml
|
||||
+ <driver name="qemu" type="qcow2" discard="unmap" cache="unsafe"/>
|
||||
<source file="/var/lib/libvirt/images/linux2020.qcow2"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -417,10 +417,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-location-iso.xml
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-location-manual-kernel.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-location-manual-kernel.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-location-manual-kernel.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-location-manual-kernel.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-location-manual-kernel.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-location-manual-kernel.xml
|
||||
@@ -27,7 +27,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -430,10 +430,10 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-location-manual-ke
|
||||
<source file="TESTSUITE_SCRUBBED/tests/data/fakemedia/fake-no-osinfo.iso"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<readonly/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-netinst-unattended.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-netinst-unattended.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-osinfo-netinst-unattended.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-netinst-unattended.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-osinfo-netinst-unattended.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-osinfo-netinst-unattended.xml
|
||||
@@ -32,7 +32,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
@@ -443,11 +443,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-osinfo-netinst-una
|
||||
<source file="TESTSUITE_SCRUBBED/tests/data/fakemedia/fake-f26-netinst.iso"/>
|
||||
<target dev="sda" bus="sata"/>
|
||||
<readonly/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
@@ -25,7 +25,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
@@ -27,7 +27,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -455,36 +455,36 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-q35-defaults.xml
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="sda" bus="sata"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-remote-storage.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-remote-storage.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-remote-storage.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-remote-storage.xml
|
||||
@@ -21,6 +21,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-remote-storage.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-remote-storage.xml
|
||||
@@ -22,6 +22,7 @@
|
||||
<disk type="file" device="disk">
|
||||
<source file="/foo/bar/baz"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<boot order="2"/>
|
||||
+ <driver cache="unsafe"/>
|
||||
</disk>
|
||||
<disk type="block" device="disk">
|
||||
<source dev="/dev/zde"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
|
||||
@@ -27,6 +27,7 @@
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<readonly/>
|
||||
<boot order="1"/>
|
||||
+ <driver cache="unsafe"/>
|
||||
</disk>
|
||||
<controller type="usb" model="ich9-ehci1"/>
|
||||
<controller type="usb" model="ich9-uhci1">
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
@@ -47,7 +47,7 @@
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
@@ -49,7 +49,7 @@
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
@@ -492,11 +492,11 @@ Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
|
||||
+ <driver name="qemu" type="qcow2" cache="unsafe"/>
|
||||
<source file="/pool-dir/testvol1.img"/>
|
||||
<target dev="sda" bus="sata"/>
|
||||
<boot order="2"/>
|
||||
Index: virt-manager-5.1.0/tests/data/cli/compare/virt-install-xen-pv.xml
|
||||
</disk>
|
||||
Index: virt-manager-4.2.0/tests/data/cli/compare/virt-install-xen-pv.xml
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/tests/data/cli/compare/virt-install-xen-pv.xml
|
||||
+++ virt-manager-5.1.0/tests/data/cli/compare/virt-install-xen-pv.xml
|
||||
--- virt-manager-4.2.0.orig/tests/data/cli/compare/virt-install-xen-pv.xml
|
||||
+++ virt-manager-4.2.0/tests/data/cli/compare/virt-install-xen-pv.xml
|
||||
@@ -16,7 +16,7 @@
|
||||
</os>
|
||||
<devices>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
References: bsc#1172356, bsc#1177620
|
||||
Libvirt doesn't accept "Hypervisor default" as a model name
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/devices/interface.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/interface.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/devices/interface.py
|
||||
+++ virt-manager-5.1.0/virtinst/devices/interface.py
|
||||
@@ -372,6 +372,9 @@ class DeviceInterface(Device):
|
||||
--- virt-manager-5.0.0.orig/virtinst/devices/interface.py
|
||||
+++ virt-manager-5.0.0/virtinst/devices/interface.py
|
||||
@@ -363,6 +363,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-5.1.0/virtinst/guest.py
|
||||
Index: virt-manager-5.0.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.1.0/virtinst/guest.py
|
||||
@@ -1033,6 +1033,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,13 +1,13 @@
|
||||
References: bsc#1180069
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/guest.py
|
||||
Index: virt-manager-5.0.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-5.1.0/virtinst/guest.py
|
||||
@@ -785,6 +785,8 @@ class Guest(XMLBuilder):
|
||||
|
||||
if wants_default_type and self.conn.is_qemu() and self.os.is_x86() and self.type != "kvm":
|
||||
log.warning("KVM acceleration not available, using '%s'", self.type) # pragma: no cover
|
||||
--- 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)
|
||||
+ if self.os.is_xenpv() and self.os.smbios_mode is not None:
|
||||
+ raise RuntimeError(_("The --sysinfo flag (smbios) is not supported for Xen PV guests."))
|
||||
|
||||
|
||||
@@ -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-5.1.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
@@ -590,7 +590,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
|
||||
|
||||
@@ -4,25 +4,25 @@ a non pae version. The sles10 sp4 32bit kernel will only boot para-
|
||||
virtualized if the pae kernel is selected.
|
||||
Note that sles12 and newer has no 32bit release.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
Index: virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/urldetect.py
|
||||
@@ -552,9 +552,14 @@ class _SuseDistro(_RHELDistro):
|
||||
--- virt-manager-3.3.0.orig/virtinst/install/urldetect.py
|
||||
+++ virt-manager-3.3.0/virtinst/install/urldetect.py
|
||||
@@ -550,9 +550,14 @@ class _SuseDistro(_RHELDistro):
|
||||
|
||||
if self.type == "xen":
|
||||
# Matches Opensuse > 10.2 and sles 10
|
||||
- self._kernel_paths.append(
|
||||
- ("boot/%s/vmlinuz-xen" % tree_arch, "boot/%s/initrd-xen" % tree_arch)
|
||||
- )
|
||||
- ("boot/%s/vmlinuz-xen" % tree_arch,
|
||||
- "boot/%s/initrd-xen" % tree_arch))
|
||||
+ if tree_arch == "i386":
|
||||
+ self._kernel_paths.append(
|
||||
+ ("boot/%s/vmlinuz-xenpae" % tree_arch, "boot/%s/initrd-xenpae" % tree_arch)
|
||||
+ )
|
||||
+ ("boot/%s/vmlinuz-xenpae" % tree_arch,
|
||||
+ "boot/%s/initrd-xenpae" % tree_arch))
|
||||
+ else:
|
||||
+ self._kernel_paths.append(
|
||||
+ ("boot/%s/vmlinuz-xen" % tree_arch, "boot/%s/initrd-xen" % tree_arch)
|
||||
+ )
|
||||
+ ("boot/%s/vmlinuz-xen" % tree_arch,
|
||||
+ "boot/%s/initrd-xen" % tree_arch))
|
||||
|
||||
if str(self._os_variant).startswith(("sles11", "sled11")):
|
||||
if tree_arch == "s390x":
|
||||
|
||||
@@ -4,28 +4,27 @@ issue on btrfs.
|
||||
|
||||
Signed-off-by: Chunyan Liu <cyliu@suse.com>
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/storage.py
|
||||
Index: virt-manager-4.2.0/virtinst/storage.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/storage.py
|
||||
+++ virt-manager-5.1.0/virtinst/storage.py
|
||||
@@ -584,6 +584,12 @@ class StorageVolume(_StorageObject):
|
||||
|
||||
--- virt-manager-4.2.0.orig/virtinst/storage.py
|
||||
+++ virt-manager-4.2.0/virtinst/storage.py
|
||||
@@ -572,6 +572,11 @@ class StorageVolume(_StorageObject):
|
||||
return self._pool_xml.get_disk_type()
|
||||
file_type = property(_get_vol_type)
|
||||
|
||||
+ def _nocow_default_cb(self):
|
||||
+ return self.conn.check_support(self.conn.conn_nocow)
|
||||
+
|
||||
+ return self.conn.check_support(
|
||||
+ self.conn.conn_nocow)
|
||||
+ nocow = XMLProperty("./target/nocow", is_bool=True)
|
||||
+
|
||||
+
|
||||
|
||||
##################
|
||||
# XML properties #
|
||||
##################
|
||||
Index: virt-manager-5.1.0/virtinst/support.py
|
||||
Index: virt-manager-4.2.0/virtinst/support.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/support.py
|
||||
+++ virt-manager-5.1.0/virtinst/support.py
|
||||
@@ -270,6 +270,7 @@ class SupportCache:
|
||||
--- virt-manager-4.2.0.orig/virtinst/support.py
|
||||
+++ virt-manager-4.2.0/virtinst/support.py
|
||||
@@ -267,6 +267,7 @@ class SupportCache:
|
||||
conn_vnc_none_auth = _make(hv_version={"qemu": "2.9.0"})
|
||||
conn_device_boot_order = _make(hv_version={"qemu": 0, "test": 0})
|
||||
conn_riscv_virt_pci_default = _make(version="5.3.0", hv_version={"qemu": "4.0.0"})
|
||||
|
||||
@@ -4,11 +4,11 @@ so libosinfo can't really tell them apart.
|
||||
This hack after detecting a windows ISO just looks at the
|
||||
ISO filename for an extra clue.
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/install/installer.py
|
||||
Index: virt-manager-5.0.0/virtinst/install/installer.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.1.0/virtinst/install/installer.py
|
||||
@@ -546,6 +546,16 @@ class Installer:
|
||||
--- virt-manager-5.0.0.orig/virtinst/install/installer.py
|
||||
+++ virt-manager-5.0.0/virtinst/install/installer.py
|
||||
@@ -545,6 +545,16 @@ class Installer(object):
|
||||
osguess = OSDB.guess_os_by_iso(self.cdrom)
|
||||
if osguess:
|
||||
ret = osguess[0]
|
||||
|
||||
@@ -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-5.1.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
@@ -607,6 +607,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-5.1.0/virtinst/devices/disk.py
|
||||
Index: virt-manager-5.0.0/virtinst/devices/disk.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/devices/disk.py
|
||||
+++ virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
@@ -977,6 +977,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,17 +28,17 @@ Index: virt-manager-5.1.0/virtinst/devices/disk.py
|
||||
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
|
||||
skip_targets.sort()
|
||||
|
||||
@@ -990,11 +1001,18 @@ class DeviceDisk(Device):
|
||||
if self.bus == "nvme":
|
||||
gen_t = f"{prefix}{nvmen}n{i + 1}"
|
||||
else:
|
||||
- gen_t = prefix + self.num_to_target(i + 1)
|
||||
+ postfix = self.num_to_target(i + 1)
|
||||
+ gen_t = prefix + postfix
|
||||
+ if self.conn.is_xen() and postfix in postfix_targets:
|
||||
+ if gen_t in skip_targets:
|
||||
+ skip_targets.remove(gen_t)
|
||||
+ continue
|
||||
@@ -949,11 +960,18 @@ class DeviceDisk(Device):
|
||||
first_found = None
|
||||
|
||||
for i in range(maxnode):
|
||||
- gen_t = prefix + self.num_to_target(i + 1)
|
||||
+ postfix = self.num_to_target(i + 1)
|
||||
+ gen_t = prefix + postfix
|
||||
+ if self.conn.is_xen() and postfix in postfix_targets:
|
||||
+ if gen_t in skip_targets:
|
||||
+ skip_targets.remove(gen_t)
|
||||
+ continue
|
||||
if gen_t in skip_targets:
|
||||
skip_targets.remove(gen_t)
|
||||
continue
|
||||
|
||||
@@ -3,12 +3,12 @@ Add a button on the Customize dialog for launch security.
|
||||
Support AMD SEV, SEV-ES, and SEV-SNP
|
||||
Support Intel TDX
|
||||
|
||||
Index: virt-manager-5.1.0/ui/details.ui
|
||||
Index: virt-manager-5.0.0/ui/details.ui
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/ui/details.ui
|
||||
+++ virt-manager-5.1.0/ui/details.ui
|
||||
@@ -2908,7 +2908,20 @@
|
||||
<placeholder/>
|
||||
--- virt-manager-5.0.0.orig/ui/details.ui
|
||||
+++ virt-manager-5.0.0/ui/details.ui
|
||||
@@ -1927,7 +1927,20 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
- <placeholder/>
|
||||
@@ -29,46 +29,46 @@ Index: virt-manager-5.1.0/ui/details.ui
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
Index: virt-manager-5.1.0/virtManager/details/details.py
|
||||
Index: virt-manager-5.0.0/virtManager/details/details.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/details/details.py
|
||||
+++ virt-manager-5.1.0/virtManager/details/details.py
|
||||
@@ -46,6 +46,7 @@ from ..delete import vmmDeleteStorage
|
||||
EDIT_TOPOLOGY,
|
||||
EDIT_MEM,
|
||||
EDIT_MEM_SHARED,
|
||||
+ EDIT_MEM_LS,
|
||||
EDIT_AUTOSTART,
|
||||
EDIT_BOOTORDER,
|
||||
EDIT_BOOTMENU,
|
||||
@@ -72,7 +73,7 @@ from ..delete import vmmDeleteStorage
|
||||
EDIT_FS,
|
||||
EDIT_HOSTDEV_ROMBAR,
|
||||
EDIT_HOSTDEV_USB_STARTUPPOLICY,
|
||||
-) = range(1, 39)
|
||||
+) = range(1, 40)
|
||||
--- virt-manager-5.0.0.orig/virtManager/details/details.py
|
||||
+++ virt-manager-5.0.0/virtManager/details/details.py
|
||||
@@ -49,6 +49,7 @@ from ..delete import vmmDeleteStorage
|
||||
|
||||
EDIT_MEM,
|
||||
EDIT_MEM_SHARED,
|
||||
+ EDIT_MEM_LS,
|
||||
|
||||
EDIT_AUTOSTART,
|
||||
EDIT_BOOTORDER,
|
||||
@@ -86,7 +87,7 @@ from ..delete import vmmDeleteStorage
|
||||
|
||||
EDIT_FS,
|
||||
|
||||
- EDIT_HOSTDEV_ROMBAR) = range(1, 38)
|
||||
+ EDIT_HOSTDEV_ROMBAR) = range(1, 39)
|
||||
|
||||
|
||||
# Columns in hw list model
|
||||
@@ -416,6 +417,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
"on_mem_maxmem_changed": _e(EDIT_MEM),
|
||||
"on_mem_memory_changed": self._curmem_changed_cb,
|
||||
"on_mem_shared_access_toggled": _e(EDIT_MEM_SHARED),
|
||||
+ "on_mem_launch_security_toggled": _e(EDIT_MEM_LS),
|
||||
"on_boot_list_changed": self._boot_list_changed_cb,
|
||||
"on_boot_moveup_clicked": self._boot_moveup_clicked_cb,
|
||||
"on_boot_movedown_clicked": self._boot_movedown_clicked_cb,
|
||||
@@ -1484,6 +1486,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
@@ -422,6 +423,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
"on_mem_maxmem_changed": _e(EDIT_MEM),
|
||||
"on_mem_memory_changed": self._curmem_changed_cb,
|
||||
"on_mem_shared_access_toggled": _e(EDIT_MEM_SHARED),
|
||||
+ "on_mem_launch_security_toggled": _e(EDIT_MEM_LS),
|
||||
|
||||
"on_boot_list_changed": self._boot_list_changed_cb,
|
||||
"on_boot_moveup_clicked": self._boot_moveup_clicked_cb,
|
||||
@@ -1500,6 +1502,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
if self._edited(EDIT_MEM_SHARED):
|
||||
kwargs["mem_shared"] = self.widget("shared-memory").get_active()
|
||||
|
||||
+ if self._edited(EDIT_MEM_LS):
|
||||
+ kwargs["lsmem"] = self.widget("launch-security").get_active()
|
||||
+
|
||||
return self._change_config(self.vm.define_memory, kwargs, hotplug_args=hotplug_args)
|
||||
|
||||
def _apply_boot_options(self):
|
||||
@@ -1973,6 +1978,14 @@ class vmmDetails(vmmGObjectUI):
|
||||
return self._change_config(
|
||||
self.vm.define_memory, kwargs,
|
||||
hotplug_args=hotplug_args)
|
||||
@@ -2007,6 +2012,14 @@ class vmmDetails(vmmGObjectUI):
|
||||
curmem.set_value(int(round(vm_cur_mem)))
|
||||
maxmem.set_value(int(round(vm_max_mem)))
|
||||
|
||||
@@ -83,20 +83,20 @@ Index: virt-manager-5.1.0/virtManager/details/details.py
|
||||
shared_mem, shared_mem_err = self.vm.has_shared_mem()
|
||||
self.widget("shared-memory").set_active(shared_mem)
|
||||
self.widget("shared-memory").set_sensitive(not bool(shared_mem_err))
|
||||
Index: virt-manager-5.1.0/virtManager/object/domain.py
|
||||
Index: virt-manager-5.0.0/virtManager/object/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-5.1.0/virtManager/object/domain.py
|
||||
@@ -680,7 +680,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
if access_mode != _SENTINEL:
|
||||
--- virt-manager-5.0.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-5.0.0/virtManager/object/domain.py
|
||||
@@ -675,7 +675,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
guest.memoryBacking.access_mode = access_mode
|
||||
|
||||
- def define_memory(self, memory=_SENTINEL, maxmem=_SENTINEL, mem_shared=_SENTINEL):
|
||||
+ def define_memory(self, memory=_SENTINEL, maxmem=_SENTINEL, mem_shared=_SENTINEL, lsmem=_SENTINEL):
|
||||
def define_memory(self, memory=_SENTINEL, maxmem=_SENTINEL,
|
||||
- mem_shared=_SENTINEL):
|
||||
+ mem_shared=_SENTINEL, lsmem=_SENTINEL):
|
||||
guest = self._make_xmlobj_to_define()
|
||||
|
||||
if memory != _SENTINEL:
|
||||
@@ -689,6 +689,18 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -684,6 +684,18 @@ class vmmDomain(vmmLibvirtObject):
|
||||
guest.memory = int(maxmem)
|
||||
if mem_shared != _SENTINEL:
|
||||
self._edit_shared_mem(guest, mem_shared)
|
||||
@@ -115,7 +115,7 @@ Index: virt-manager-5.1.0/virtManager/object/domain.py
|
||||
|
||||
self._redefine_xmlobj(guest)
|
||||
|
||||
@@ -1370,6 +1382,9 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -1319,6 +1331,9 @@ class vmmDomain(vmmLibvirtObject):
|
||||
def get_description(self):
|
||||
return self.get_xmlobj().description
|
||||
|
||||
@@ -123,13 +123,13 @@ Index: virt-manager-5.1.0/virtManager/object/domain.py
|
||||
+ return self.get_xmlobj().launchSecurity.type
|
||||
+
|
||||
def get_boot_order(self):
|
||||
return self.xmlobj.get_boot_order()
|
||||
|
||||
Index: virt-manager-5.1.0/virtinst/domcapabilities.py
|
||||
legacy = not self.can_use_device_boot_order()
|
||||
return self.xmlobj.get_boot_order(legacy=legacy)
|
||||
Index: virt-manager-5.0.0/virtinst/domcapabilities.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/domcapabilities.py
|
||||
+++ virt-manager-5.1.0/virtinst/domcapabilities.py
|
||||
@@ -89,16 +89,24 @@ def _make_capsblock(xml_root_name):
|
||||
--- virt-manager-5.0.0.orig/virtinst/domcapabilities.py
|
||||
+++ virt-manager-5.0.0/virtinst/domcapabilities.py
|
||||
@@ -86,9 +86,16 @@ def _make_capsblock(xml_root_name):
|
||||
return TmpClass
|
||||
|
||||
|
||||
@@ -139,25 +139,29 @@ Index: virt-manager-5.1.0/virtinst/domcapabilities.py
|
||||
+###################
|
||||
+# Launch security #
|
||||
+###################
|
||||
|
||||
|
||||
+
|
||||
+
|
||||
+class _LAUNCHSECURITY(XMLBuilder):
|
||||
+ XML_NAME = "launchSecurity"
|
||||
+ supported = XMLProperty("./@supported", is_yesno=True)
|
||||
+ sectype = XMLProperty("./@sectype")
|
||||
+
|
||||
|
||||
class _SEV(XMLBuilder):
|
||||
XML_NAME = "sev"
|
||||
supported = XMLProperty("./@supported", is_yesno=True)
|
||||
@@ -96,6 +103,11 @@ class _SEV(XMLBuilder):
|
||||
maxESGuests = XMLProperty("./maxESGuests")
|
||||
|
||||
|
||||
+class _TDX(XMLBuilder):
|
||||
+ XML_NAME = "tdx"
|
||||
+ supported = XMLProperty("./@supported", is_yesno=True)
|
||||
|
||||
+
|
||||
+
|
||||
#############################
|
||||
# Misc toplevel XML classes #
|
||||
@@ -127,6 +135,8 @@ class _Features(_CapsBlock):
|
||||
#############################
|
||||
@@ -122,6 +134,8 @@ class _Features(_CapsBlock):
|
||||
XML_NAME = "features"
|
||||
gic = XMLChildProperty(_make_capsblock("gic"), is_single=True)
|
||||
sev = XMLChildProperty(_SEV, is_single=True)
|
||||
@@ -166,10 +170,10 @@ Index: virt-manager-5.1.0/virtinst/domcapabilities.py
|
||||
hyperv = XMLChildProperty(_make_capsblock("hyperv"), is_single=True)
|
||||
|
||||
|
||||
@@ -413,19 +423,57 @@ class DomainCapabilities(XMLBuilder):
|
||||
self._features = _lookup_cpu_security_features(self) or []
|
||||
@@ -405,20 +419,58 @@ class DomainCapabilities(XMLBuilder):
|
||||
return self._features
|
||||
|
||||
|
||||
- ########################
|
||||
- # Misc support methods #
|
||||
- ########################
|
||||
@@ -185,7 +189,8 @@ Index: virt-manager-5.1.0/virtinst/domcapabilities.py
|
||||
on the platform
|
||||
"""
|
||||
- if check_es:
|
||||
- return bool(self.features.sev.supported and self.features.sev.maxESGuests)
|
||||
- return bool(self.features.sev.supported and
|
||||
- self.features.sev.maxESGuests)
|
||||
- return bool(self.features.sev.supported)
|
||||
+ if bool(self.features.sev.supported):
|
||||
+ return True
|
||||
@@ -225,22 +230,23 @@ Index: virt-manager-5.1.0/virtinst/domcapabilities.py
|
||||
+ return "tdx"
|
||||
+ return None
|
||||
+
|
||||
+
|
||||
+ ########################
|
||||
+ # Misc support methods #
|
||||
+ ########################
|
||||
|
||||
def supports_video_bochs(self):
|
||||
"""
|
||||
Index: virt-manager-5.1.0/virtinst/domain/launch_security.py
|
||||
Index: virt-manager-5.0.0/virtinst/domain/launch_security.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtinst/domain/launch_security.py
|
||||
+++ virt-manager-5.1.0/virtinst/domain/launch_security.py
|
||||
--- virt-manager-5.0.0.orig/virtinst/domain/launch_security.py
|
||||
+++ virt-manager-5.0.0/virtinst/domain/launch_security.py
|
||||
@@ -1,3 +1,4 @@
|
||||
+from ..logger import log
|
||||
from ..xmlbuilder import XMLBuilder, XMLProperty
|
||||
|
||||
|
||||
@@ -29,31 +30,38 @@ class DomainLaunchSecurity(XMLBuilder):
|
||||
@@ -30,31 +31,38 @@ class DomainLaunchSecurity(XMLBuilder):
|
||||
quoteGenerationSocket = XMLProperty("./quoteGenerationService/@path")
|
||||
|
||||
def _set_defaults_sev(self, guest):
|
||||
|
||||
@@ -2,10 +2,10 @@ References:
|
||||
When a particular firmware is selected, read the json file for a description.
|
||||
Add a tooltip of the json description when the mouse move overs the selected firmware.
|
||||
|
||||
Index: virt-manager-5.1.0/virtManager/details/details.py
|
||||
Index: virt-manager-5.0.0/virtManager/details/details.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/details/details.py
|
||||
+++ virt-manager-5.1.0/virtManager/details/details.py
|
||||
--- virt-manager-5.0.0.orig/virtManager/details/details.py
|
||||
+++ virt-manager-5.0.0/virtManager/details/details.py
|
||||
@@ -4,6 +4,10 @@
|
||||
# This work is licensed under the GNU GPLv2 or later.
|
||||
# See the COPYING file in the top-level directory.
|
||||
@@ -17,16 +17,16 @@ Index: virt-manager-5.1.0/virtManager/details/details.py
|
||||
from gi.repository import Gtk
|
||||
|
||||
import libvirt
|
||||
@@ -398,7 +402,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
"on_overview_name_changed": _e(EDIT_NAME),
|
||||
"on_overview_title_changed": _e(EDIT_TITLE),
|
||||
"on_machine_type_changed": _e(EDIT_MACHTYPE),
|
||||
- "on_overview_firmware_changed": _e(EDIT_FIRMWARE),
|
||||
+ "on_overview_firmware_changed": self._uefi_combobox_changed_cb,
|
||||
"on_overview_chipset_changed": _e(EDIT_MACHTYPE),
|
||||
"on_details_inspection_refresh_clicked": self._inspection_refresh_clicked_cb,
|
||||
"on_cpu_vcpus_changed": self._config_vcpus_changed_cb,
|
||||
@@ -1076,6 +1080,52 @@ class vmmDetails(vmmGObjectUI):
|
||||
@@ -402,7 +406,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
"on_overview_name_changed": _e(EDIT_NAME),
|
||||
"on_overview_title_changed": _e(EDIT_TITLE),
|
||||
"on_machine_type_changed": _e(EDIT_MACHTYPE),
|
||||
- "on_overview_firmware_changed": _e(EDIT_FIRMWARE),
|
||||
+ "on_overview_firmware_changed": self._uefi_combobox_changed_cb,
|
||||
"on_overview_chipset_changed": _e(EDIT_MACHTYPE),
|
||||
|
||||
"on_details_inspection_refresh_clicked": self._inspection_refresh_clicked_cb,
|
||||
@@ -1100,6 +1104,52 @@ class vmmDetails(vmmGObjectUI):
|
||||
self.storage_browser.set_browse_reason(reason)
|
||||
self.storage_browser.show(self.topwin)
|
||||
|
||||
@@ -78,4 +78,4 @@ Index: virt-manager-5.1.0/virtManager/details/details.py
|
||||
+
|
||||
def _inspection_refresh_clicked_cb(self, src):
|
||||
from ..lib.inspection import vmmInspection
|
||||
|
||||
inspection = vmmInspection.get_instance()
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
References: bsc#919692
|
||||
Because openSUSE repos combine 32 and 64 bit sources we need to
|
||||
continue showing the 'Architecture' pop-up.
|
||||
Index: virt-manager-5.1.0/virtManager/createvm.py
|
||||
Index: virt-manager-4.2.0/virtManager/createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-5.1.0/virtManager/createvm.py
|
||||
@@ -836,10 +836,6 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
--- virt-manager-4.2.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-4.2.0/virtManager/createvm.py
|
||||
@@ -866,11 +866,6 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
for guest in self.conn.caps.guests:
|
||||
if guest.os_type == self._capsinfo.os_type:
|
||||
archs.append(guest.arch)
|
||||
-
|
||||
- # Combine x86/i686 to avoid confusion
|
||||
- if self.conn.caps.host.cpu.arch == "x86_64" and "x86_64" in archs and "i686" in archs:
|
||||
- if (self.conn.caps.host.cpu.arch == "x86_64" and
|
||||
- "x86_64" in archs and "i686" in archs):
|
||||
- archs.remove("i686")
|
||||
archs.sort()
|
||||
|
||||
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le", "riscv64", "s390x"]
|
||||
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",
|
||||
|
||||
@@ -6,11 +6,11 @@ Steps to get a KVM VM in the crashed state:
|
||||
4) Edit the VM's /etc/default/grub file and remove the crashkernel information
|
||||
and then run grub2-mkconfig /boot/grub2/grub.cfg.
|
||||
5) Start the VM and within the VM's terminal type "echo 'c' > /proc/sysrq-trigger"
|
||||
Index: virt-manager-5.1.0/virtManager/manager.py
|
||||
Index: virt-manager-3.3.0/virtManager/manager.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-5.1.0/virtManager/manager.py
|
||||
@@ -770,7 +770,7 @@ class vmmManager(vmmGObjectUI):
|
||||
--- virt-manager-3.3.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-3.3.0/virtManager/manager.py
|
||||
@@ -776,7 +776,7 @@ class vmmManager(vmmGObjectUI):
|
||||
show_pause = bool(vm and vm.is_unpauseable())
|
||||
else:
|
||||
show_pause = bool(vm and vm.is_pauseable())
|
||||
@@ -19,11 +19,11 @@ Index: virt-manager-5.1.0/virtManager/manager.py
|
||||
|
||||
if vm and vm.managedsave_supported:
|
||||
self.change_run_text(vm.has_managed_save())
|
||||
Index: virt-manager-5.1.0/virtManager/vmmenu.py
|
||||
Index: virt-manager-3.3.0/virtManager/vmmenu.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-5.1.0/virtManager/vmmenu.py
|
||||
@@ -22,6 +22,7 @@ class _VMMenu(Gtk.Menu):
|
||||
--- virt-manager-3.3.0.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-3.3.0/virtManager/vmmenu.py
|
||||
@@ -21,6 +21,7 @@ class _VMMenu(Gtk.Menu):
|
||||
self._parent = src
|
||||
self._current_vm_cb = current_vm_cb
|
||||
self._show_open = show_open
|
||||
@@ -31,7 +31,7 @@ Index: virt-manager-5.1.0/virtManager/vmmenu.py
|
||||
|
||||
self._init_state()
|
||||
|
||||
@@ -77,6 +78,7 @@ class VMShutdownMenu(_VMMenu):
|
||||
@@ -72,6 +73,7 @@ class VMShutdownMenu(_VMMenu):
|
||||
name = getattr(child, "vmm_widget_name", None)
|
||||
if name in statemap:
|
||||
child.set_sensitive(statemap[name])
|
||||
@@ -39,7 +39,7 @@ Index: virt-manager-5.1.0/virtManager/vmmenu.py
|
||||
|
||||
|
||||
class VMActionMenu(_VMMenu):
|
||||
@@ -89,7 +91,8 @@ class VMActionMenu(_VMMenu):
|
||||
@@ -83,7 +85,8 @@ class VMActionMenu(_VMMenu):
|
||||
self._add_action(_("_Pause"), "suspend", VMActionUI.suspend)
|
||||
self._add_action(_("R_esume"), "resume", VMActionUI.resume)
|
||||
s = self._add_action(_("_Shut Down"), "shutdown", None)
|
||||
@@ -49,7 +49,7 @@ Index: virt-manager-5.1.0/virtManager/vmmenu.py
|
||||
|
||||
self.add(Gtk.SeparatorMenuItem())
|
||||
self._add_action(_("Clone..."), "clone", VMActionUI.clone)
|
||||
@@ -106,7 +109,7 @@ class VMActionMenu(_VMMenu):
|
||||
@@ -100,7 +103,7 @@ class VMActionMenu(_VMMenu):
|
||||
def update_widget_states(self, vm):
|
||||
statemap = {
|
||||
"run": bool(vm and vm.is_runable()),
|
||||
@@ -58,7 +58,7 @@ Index: virt-manager-5.1.0/virtManager/vmmenu.py
|
||||
"suspend": bool(vm and vm.is_stoppable()),
|
||||
"resume": bool(vm and vm.is_paused()),
|
||||
"migrate": bool(vm and vm.is_stoppable()),
|
||||
@@ -123,6 +126,8 @@ class VMActionMenu(_VMMenu):
|
||||
@@ -117,6 +120,8 @@ class VMActionMenu(_VMMenu):
|
||||
child.get_submenu().update_widget_states(vm)
|
||||
if name in statemap:
|
||||
child.set_sensitive(statemap[name])
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
Index: virt-manager-5.1.0/data/virt-manager.desktop.in
|
||||
Index: virt-manager-4.1.0/data/virt-manager.desktop.in
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/data/virt-manager.desktop.in
|
||||
+++ virt-manager-5.1.0/data/virt-manager.desktop.in
|
||||
@@ -1,10 +1,21 @@
|
||||
--- virt-manager-4.1.0.orig/data/virt-manager.desktop.in
|
||||
+++ virt-manager-4.1.0/data/virt-manager.desktop.in
|
||||
@@ -1,9 +1,20 @@
|
||||
[Desktop Entry]
|
||||
Name=Virtual Machine Manager
|
||||
GenericName=Virtual machine viewer/manager
|
||||
-Comment=Manage virtual machines
|
||||
+Comment=Manage Virtual Machines for Xen and KVM
|
||||
Icon=virt-manager
|
||||
@@ -14,9 +13,9 @@ Index: virt-manager-5.1.0/data/virt-manager.desktop.in
|
||||
+Exec=/usr/bin/virt-manager
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=System;Emulator;GTK;
|
||||
Keywords=virtualization;libvirt;vm;vmm;qemu;xen;lxc;kvm;
|
||||
Keywords=vmm;
|
||||
+Encoding=UTF-8
|
||||
Categories=System;
|
||||
+X-KDE-ModuleType=Library
|
||||
+X-KDE-RootOnly=true
|
||||
+X-KDE-HasReadOnlyMode=false
|
||||
|
||||
@@ -4,11 +4,11 @@ in this patch anyways to correctly set up a bus if a floppy were
|
||||
added.
|
||||
|
||||
|
||||
Index: virt-manager-5.1.0/virtManager/addhardware.py
|
||||
Index: virt-manager-4.2.0/virtManager/addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-5.1.0/virtManager/addhardware.py
|
||||
@@ -532,6 +532,9 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
--- virt-manager-4.2.0.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-4.2.0/virtManager/addhardware.py
|
||||
@@ -489,6 +489,9 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
buses = domcaps.devices.disk.get_enum("bus").get_values()
|
||||
else:
|
||||
buses = vmmAddHardware.disk_old_recommended_buses(guest)
|
||||
@@ -17,8 +17,8 @@ Index: virt-manager-5.1.0/virtManager/addhardware.py
|
||||
+ buses.append("fdc")
|
||||
|
||||
bus_map = {
|
||||
"disk": ["ide", "nvme", "sata", "scsi", "sd", "usb", "virtio", "xen"],
|
||||
@@ -552,6 +555,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
"disk": ["ide", "sata", "scsi", "sd", "usb", "virtio", "xen"],
|
||||
@@ -508,6 +511,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
"usb": _("USB"),
|
||||
"virtio": _("VirtIO"),
|
||||
"xen": _("Xen"),
|
||||
@@ -26,13 +26,15 @@ Index: virt-manager-5.1.0/virtManager/addhardware.py
|
||||
}
|
||||
return bus_mappings.get(bus, bus)
|
||||
|
||||
@@ -707,7 +711,8 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
target_list.add_attribute(text, "text", 2)
|
||||
target_model.append([DeviceDisk.DEVICE_DISK, "drive-harddisk", _("Disk device")])
|
||||
target_model.append([DeviceDisk.DEVICE_CDROM, "media-optical", _("CDROM device")])
|
||||
- target_model.append([DeviceDisk.DEVICE_FLOPPY, "media-floppy", _("Floppy device")])
|
||||
@@ -665,8 +669,9 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
"drive-harddisk", _("Disk device")])
|
||||
target_model.append([DeviceDisk.DEVICE_CDROM,
|
||||
"media-optical", _("CDROM device")])
|
||||
- target_model.append([DeviceDisk.DEVICE_FLOPPY,
|
||||
- "media-floppy", _("Floppy device")])
|
||||
+ if not self.conn.is_xen():
|
||||
+ target_model.append([DeviceDisk.DEVICE_FLOPPY, "media-floppy", _("Floppy device")])
|
||||
+ target_model.append([DeviceDisk.DEVICE_FLOPPY,
|
||||
+ "media-floppy", _("Floppy device")])
|
||||
if self.conn.is_qemu() or self.conn.is_test():
|
||||
target_model.append([DeviceDisk.DEVICE_LUN, "drive-harddisk", _("LUN Passthrough")])
|
||||
target_list.set_active(0)
|
||||
target_model.append([DeviceDisk.DEVICE_LUN,
|
||||
"drive-harddisk", _("LUN Passthrough")])
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Reference: bnc#885094
|
||||
grub.xen is required to boot Xen PV VMs using BTRFS. It belongs to
|
||||
the grub2-x86_64-xen RPM and should never be deleted.
|
||||
Index: virt-manager-5.1.0/virtManager/delete.py
|
||||
Index: virt-manager-3.3.0/virtManager/delete.py
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/virtManager/delete.py
|
||||
+++ virt-manager-5.1.0/virtManager/delete.py
|
||||
@@ -472,7 +472,7 @@ def _populate_storage_list(storage_list,
|
||||
--- virt-manager-3.3.0.orig/virtManager/delete.py
|
||||
+++ virt-manager-3.3.0/virtManager/delete.py
|
||||
@@ -459,7 +459,7 @@ def _populate_storage_list(storage_list,
|
||||
model.clear()
|
||||
|
||||
for diskdata in diskdatas:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
References: bsc#1213790
|
||||
|
||||
Index: virt-manager-5.1.0/ui/details.ui
|
||||
Index: virt-manager-4.1.0/ui/details.ui
|
||||
===================================================================
|
||||
--- virt-manager-5.1.0.orig/ui/details.ui
|
||||
+++ virt-manager-5.1.0/ui/details.ui
|
||||
@@ -780,7 +780,7 @@
|
||||
--- virt-manager-4.1.0.orig/ui/details.ui
|
||||
+++ virt-manager-4.1.0/ui/details.ui
|
||||
@@ -810,7 +810,7 @@
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user