- Update to virt-manager 3.0.0 (fate#326786)

virt-manager-3.0.0.tar.bz2
  * virt-install –cloud-init support (Athina Plaskasoviti, Cole
    Robinson)
  * The virt-convert tool has been removed. Please use virt-v2v
    instead
  * A handful of UI XML configuration options have been removed.
    The XML editor can be used instead. For a larger discussion see
    this thread: https://www.redhat.com/archives/virt-tools-list/
    2019-June/msg00117.html
  * The ‘New VM’ UI now has a ‘Manual Install’ option which creates
    a VM without any required install media
  * In the ‘New VM’ UI, the network/pxe install option has been
    removed. If you need network boot, choose ‘Manual Install’ and
    set the boot device after initial VM creation
  * ‘Clone VM’ UI has been reworked and simplified
  * ‘Migrate VM’ UI now has an XML editor for the destination VM
  * Global and per-vm option to disable graphical console
    autoconnect. This makes it easier to use virt-manager alongside
    another client like virt-viewer
  * virt-manager: set guest time after VM restore (Michael Weiser)
  * virt-manager: option to delete storage when removing disk
    device (Lily Nie)
  * virt-manager: show warnings if snapshot operation is unsafe
    (Michael Weiser)
  * Unattended install improvements (Fabiano Fidêncio)
  * cli: new –xml XPATH=VAL option for making direct XML changes
  * virt-install: new –reinstall=DOMAIN option
  * virt-install: new –autoconsole text|graphical|none option
  * virt-install: new –os-variant detect=on,require=on suboptions

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=509
This commit is contained in:
Charles Arnold 2020-09-16 17:23:41 +00:00 committed by Git OBS Bridge
parent f48ef10e68
commit 6de106691e
64 changed files with 355 additions and 1518 deletions

View File

@ -1,38 +0,0 @@
From cb90bbc8671aa25e23e55341745cc2682547e5f0 Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Thu, 7 Dec 2017 11:17:03 +0100
Subject: [PATCH 2/4] virtinst: python3: avoid comparison of None and int
This avoids the following error in python3:
File "/usr/share/virt-manager/virtinst/progress.py", line 249, in _do_update
ave_dl = format_number(self.re.average_rate())
File "/usr/share/virt-manager/virtinst/progress.py", line 481, in format_number
while number > thresh and depth < max_depth:
TypeError: '>' not supported between instances of 'NoneType' and 'int'
---
virtinst/progress.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: virt-manager-2.1.0/virtinst/progress.py
===================================================================
--- virt-manager-2.1.0.orig/virtinst/progress.py
+++ virt-manager-2.1.0/virtinst/progress.py
@@ -350,7 +350,7 @@ class RateEstimator:
self.start_time = now
self.last_update_time = now
self.last_amount_read = 0
- self.ave_rate = None
+ self.ave_rate = 0
def update(self, amount_read, now=None):
if now is None:
@@ -363,7 +363,7 @@ class RateEstimator:
# if we just started this file, all bets are off
self.last_update_time = now
self.last_amount_read = amount_read
- self.ave_rate = None
+ self.ave_rate = 0
return
time_diff = now - self.last_update_time

View File

@ -1,110 +0,0 @@
Subject: guest: Don't set default uefi if firmware= is set
From: Cole Robinson crobinso@redhat.com Fri Jul 12 15:58:22 2019 -0400
Date: Fri Jul 12 16:01:21 2019 -0400:
Git: 0c223ab21f0cff216b4a1ab2070a43f0e943d308
diff --git a/tests/cli-test-xml/compare/virt-install-aarch64-firmware-no-override.xml b/tests/cli-test-xml/compare/virt-install-aarch64-firmware-no-override.xml
new file mode 100644
index 00000000..b062e805
--- /dev/null
+++ b/tests/cli-test-xml/compare/virt-install-aarch64-firmware-no-override.xml
@@ -0,0 +1,55 @@
+<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="aarch64" machine="virt">hvm</type>
+ <boot dev="network"/>
+ </os>
+ <cpu mode="host-passthrough"/>
+ <clock offset="utc"/>
+ <on_reboot>destroy</on_reboot>
+ <devices>
+ <emulator>/usr/bin/qemu-system-aarch64</emulator>
+ <controller type="usb" index="0" model="qemu-xhci" ports="15"/>
+ <interface type="bridge">
+ <source bridge="testsuitebr0"/>
+ <mac address="00:11:22:33:44:55"/>
+ <model type="virtio"/>
+ </interface>
+ <console type="pty"/>
+ <channel type="unix">
+ <source mode="bind"/>
+ <target type="virtio" name="org.qemu.guest_agent.0"/>
+ </channel>
+ </devices>
+</domain>
+<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="aarch64" machine="virt">hvm</type>
+ <boot dev="network"/>
+ </os>
+ <cpu mode="host-passthrough"/>
+ <clock offset="utc"/>
+ <devices>
+ <emulator>/usr/bin/qemu-system-aarch64</emulator>
+ <controller type="usb" index="0" model="qemu-xhci" ports="15"/>
+ <interface type="bridge">
+ <source bridge="testsuitebr0"/>
+ <mac address="00:11:22:33:44:55"/>
+ <model type="virtio"/>
+ </interface>
+ <console type="pty"/>
+ <channel type="unix">
+ <source mode="bind"/>
+ <target type="virtio" name="org.qemu.guest_agent.0"/>
+ </channel>
+ </devices>
+</domain>
diff --git a/tests/clitest.py b/tests/clitest.py
index 7ef324bc..a309f937 100644
--- a/tests/clitest.py
+++ b/tests/clitest.py
@@ -990,6 +990,7 @@ c.add_compare("--arch aarch64 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.init
c.add_compare("--arch aarch64 --cdrom %(EXISTIMG2)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")
c.add_compare("--connect %(URI-KVM-AARCH64)s --disk %(EXISTIMG1)s --import --os-variant fedora21 --panic default", "aarch64-kvm-import") # the --panic is a no-op
c.add_compare("--connect %(URI-KVM-AARCH64)s --disk size=1 --os-variant fedora22 --features gic_version=host --network network=default,address.type=pci --controller type=scsi,model=virtio-scsi,address.type=pci", "aarch64-kvm-gic")
+c.add_compare("--connect %(URI-KVM-AARCH64)s --arch aarch64 --disk none --pxe --boot firmware=efi", "aarch64-firmware-no-override")
# Simple headless guests for various architectures
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 41357644..f0fcfe7d 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -561,8 +561,9 @@ class Guest(XMLBuilder):
return path
def is_uefi(self):
- return bool(self.os.loader and
- self.os.loader_type == "pflash")
+ if self.os.loader and self.os.loader_type == "pflash":
+ return True
+ return self.os.firmware == "efi"
def set_uefi_path(self, path):
"""
@@ -781,11 +782,13 @@ class Guest(XMLBuilder):
not self.os.kernel and
not self.os.loader and
self.os.loader_ro is None and
- self.os.nvram is None)
+ self.os.nvram is None and
+ self.os.firmware is None)
if use_default_uefi or self.uefi_requested:
try:
path = self.get_uefi_path()
+ log.debug("Setting UEFI path=%s", path)
self.set_uefi_path(path)
except RuntimeError as e:
if self.uefi_requested:

View File

@ -1,22 +0,0 @@
Subject: domcapabilities: Get video devices
From: Fabiano Fidêncio fidencio@redhat.com Thu Oct 3 10:44:52 2019 +0200
Date: Fri Oct 4 11:15:09 2019 -0400:
Git: 1547e16d62736c861a0e4dadeb86ef372d2698bd
domcapabilities already handles disk and hostdev. Let's add support for
getting video devices as well.
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index f11f18aa..9cc27bc2 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -95,6 +95,7 @@ class _Devices(_CapsBlock):
XML_NAME = "devices"
hostdev = XMLChildProperty(_make_capsblock("hostdev"), is_single=True)
disk = XMLChildProperty(_make_capsblock("disk"), is_single=True)
+ video = XMLChildProperty(_make_capsblock("video"), is_single=True)
class _Features(_CapsBlock):

View File

@ -1,34 +0,0 @@
Subject: details: Fix showing the firmware type in case of firmware auto selection
From: Lin Ma lma@suse.com Wed Jan 15 10:34:12 2020 +0800
Date: Wed Jan 15 10:21:46 2020 -0500:
Git: 15a9502b7b7a263c4d66ff2b3f31c209f58fe0b4
For a shutoff VM, If user select uefi firmware auto selection, e.g.
<os firmware='efi'>
...
</os>
Its firmware information is set to 'BIOS' in details, This is incorrect.
This fixes it.
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Lin Ma <lma@suse.com>
Index: virt-manager-2.2.1/virtManager/details/details.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/details/details.py
+++ virt-manager-2.2.1/virtManager/details/details.py
@@ -2017,8 +2017,11 @@ class vmmDetails(vmmGObjectUI):
# Firmware
domcaps = self.vm.get_domain_capabilities()
- firmware = domcaps.label_for_firmware_path(
- self.vm.get_xmlobj().os.loader)
+ if self.vm.get_xmlobj().is_uefi():
+ firmware = 'UEFI'
+ else:
+ firmware = domcaps.label_for_firmware_path(
+ self.vm.get_xmlobj().os.loader)
if self.widget("overview-firmware").is_visible():
uiutil.set_list_selection(
self.widget("overview-firmware"), firmware)

View File

@ -1,27 +0,0 @@
Subject: virt-xml: fix defined_xml_is_unchanged
From: Pavel Hrdina phrdina@redhat.com Tue Dec 3 13:02:21 2019 +0100
Date: Tue Dec 3 13:04:37 2019 +0100:
Git: 29f9f5f2d7f47fe6cc3333f2a9e6c6209db5a8f3
Commit <53f075ab76e1c372474ae0d88f202e487d9f213f> added a warning if the
VM XML is not changed after removing default devices but the code was
incorrect. We have to compare strings instead of string vs Guest object
and also the condition was inverted.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virt-xml b/virt-xml
index 71445c9f..7b0174c9 100755
--- a/virt-xml
+++ b/virt-xml
@@ -105,8 +105,8 @@ def get_domain_and_guest(conn, domstr):
def defined_xml_is_unchanged(conn, domain, original_xml):
rawxml = get_xmldesc(domain, inactive=True)
- new_xml = virtinst.Guest(conn, parsexml=rawxml)
- return new_xml != original_xml
+ new_xml = virtinst.Guest(conn, parsexml=rawxml).get_xml()
+ return new_xml == original_xml
################

View File

@ -1,29 +0,0 @@
Subject: domcapabilities: Add supports_video_bochs()
From: Fabiano Fidêncio fidencio@redhat.com Thu Oct 3 10:47:15 2019 +0200
Date: Fri Oct 4 11:15:09 2019 -0400:
Git: 2e20b128a1a1f064c5036d3d3d0cf5b09117b9da
Returns whether bochs display is supported, according to the domain
capabilities.
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Index: virt-manager-2.2.1/virtinst/domcapabilities.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/domcapabilities.py
+++ virt-manager-2.2.1/virtinst/domcapabilities.py
@@ -325,6 +325,14 @@ class DomainCapabilities(XMLBuilder):
"""
return bool(self.features.sev.supported)
+ def supports_video_bochs(self):
+ """
+ Returns False if either libvirt or qemu do not have support to bochs
+ video type.
+ """
+ models = self.devices.video.get_enum("modelType").get_values()
+ return bool("bochs" in models)
+
XML_NAME = "domainCapabilities"
os = XMLChildProperty(_OS, is_single=True)
cpu = XMLChildProperty(_CPU, is_single=True)

View File

@ -1,27 +0,0 @@
Subject: urlfetcher: Don't override fullurl when it's explicitly set
From: Fabiano Fidêncio fidencio@redhat.com Fri Aug 2 17:01:44 2019 +0200
Date: Tue Aug 6 17:59:05 2019 -0400:
Git: 3009888a0ed200a4f472dd32239a7c5157fef391
acquireFile method receives an optional "fullurl" argument. In case it's
not passed, its value is set as the same value of the filename. However,
when fullurl is passed, it should be used and not overriden by the
filename, otherwise fetcher.acquireFile() will just bail.
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virtinst/install/urlfetcher.py b/virtinst/install/urlfetcher.py
index 07f8b5ea..6084bf01 100644
--- a/virtinst/install/urlfetcher.py
+++ b/virtinst/install/urlfetcher.py
@@ -411,7 +411,8 @@ class DirectFetcher(_URLFetcher):
return filename
def acquireFile(self, filename, fullurl=None):
- fullurl = filename
+ if not fullurl:
+ fullurl = filename
filename = os.path.basename(filename)
fetcher = fetcherForURI(fullurl, self.scratchdir, self.meter, direct=True)
return fetcher.acquireFile(filename, fullurl) # pylint: disable=protected-access

View File

@ -1,25 +0,0 @@
Subject: guest: fix warning message when machine type is changed for secure boot
From: Pavel Hrdina phrdina@redhat.com Mon Jul 8 10:44:43 2019 +0200
Date: Mon Jul 8 10:57:46 2019 +0200:
Git: 3c6e85375d0cd87dcf8ac70b41db0d899851338e
Introduced by commit <3586d1897>.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1727811
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virtinst/guest.py b/virtinst/guest.py
index ef227d17..41357644 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -586,7 +586,8 @@ class Guest(XMLBuilder):
self.os.loader_secure = True
if self.os.machine and "q35" not in self.os.machine:
log.warning("Changing machine type from '%s' to 'q35' "
- "which is required for UEFI secure boot.")
+ "which is required for UEFI secure boot.",
+ self.os.machine)
self.os.machine = "q35"
def disable_hyperv_for_uefi(self):

View File

@ -1,29 +0,0 @@
Subject: virt-install: Use minutes instead of seconds on get_time_string()
From: Fabiano Fidêncio fidencio@redhat.com Thu Jul 25 14:09:53 2019 +0200
Date: Thu Jul 25 19:13:13 2019 -0400:
Git: 414ffa5ef82548d502a4de98d40228a68bdb29c1
get_time_string() currently uses self._wait_secs, while it should use
self._wait_mins, resulting on confusing messages when using `--wait`
option, as shown below:
fidencio@laerte ~/src/upstream/virt-manager $ ./virt-install --install fedora30 --unattended --wait 20
...
Waiting 1200 minutes for installation to complete.
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virt-install b/virt-install
index af6c75bf..8efa4960 100755
--- a/virt-install
+++ b/virt-install
@@ -610,7 +610,7 @@ class WaitHandler:
self._start_time = time.time()
def get_time_string(self):
- timestr = _(" %d minutes") % self._wait_secs
+ timestr = _(" %d minutes") % self._wait_mins
if self._wait_forever:
timestr = ""
ret = _("Waiting%(time_string)s for installation to complete.") % {

View File

@ -1,52 +0,0 @@
Subject: connection: Avoid repeated default pool creation attempts
From: Michael Weiser michael.weiser@gmx.de Fri Oct 25 21:27:18 2019 +0200
Date: Tue Nov 12 12:28:34 2019 -0500:
Git: 51d84c54cb63350145f4ad3a2adba17313e1f227
During startup virtinst.StoragePool.build_default_pool() tries to
determine whether the default storage pool already exists. Because
events have not yet been processed, the list of existing storage pools
is still empty. Therefore it seems as if it does not exist yet and
build_default_pool() falls back to creating it which causes an error
message from libvirtd in the system log:
libvirtd: operation failed: pool 'default' already exists with uuid.
Move default pool creation after event processing to avoid these
redundant creation attempts.
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
diff --git a/virtManager/connection.py b/virtManager/connection.py
index f6dc5f5b..e526d495 100644
--- a/virtManager/connection.py
+++ b/virtManager/connection.py
@@ -990,13 +990,6 @@ class vmmConnection(vmmGObject):
log.debug("%s capabilities:\n%s",
self.get_uri(), self.caps.get_xml())
- # Try to create the default storage pool
- # We want this before events setup to save some needless polling
- try:
- virtinst.StoragePool.build_default_pool(self.get_backend())
- except Exception as e:
- log.debug("Building default pool failed: %s", str(e))
-
self._add_conn_events()
try:
@@ -1025,6 +1018,14 @@ class vmmConnection(vmmGObject):
self._init_object_event = None
self._init_object_count = None
+ # Try to create the default storage pool
+ # We need this after events setup so we can determine if the default
+ # pool already exists
+ try:
+ virtinst.StoragePool.build_default_pool(self.get_backend())
+ except Exception as e:
+ log.debug("Building default pool failed: %s", str(e))
+
def _open_thread(self):
ConnectError = None
try:

View File

@ -1,39 +0,0 @@
Subject: urlfetcher: Force a flush after writing to a file
From: Fabiano Fidêncio fidencio@redhat.com Mon Aug 5 13:47:25 2019 +0200
Date: Tue Aug 6 17:59:05 2019 -0400:
Git: 5324582747a57c5df1574ed99dbe20d3d0f65747
While downloading really small files, on some file systems, the files
may not be flushed on time for whatever reason they've been downloaded.
This issue was noticed after trying to perform unattended installations
and noticing that some files, particularly really small ones, where just
empty.
While the original issue would be fixed by doing the flush on
_HTTPURLFetcher::_write(), let's also force it on _URLFetcher::_write()
to do the same.
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virtinst/install/urlfetcher.py b/virtinst/install/urlfetcher.py
index e48c801c..07f8b5ea 100644
--- a/virtinst/install/urlfetcher.py
+++ b/virtinst/install/urlfetcher.py
@@ -156,6 +156,7 @@ class _URLFetcher(object):
fileobj.write(buff)
total += len(buff)
self.meter.update(total)
+ fileobj.flush()
return total
def _grabber(self, url):
@@ -291,6 +292,7 @@ class _HTTPURLFetcher(_URLFetcher):
fileobj.write(data)
total += len(data)
self.meter.update(total)
+ fileobj.flush()
return total

View File

@ -1,63 +0,0 @@
Subject: createnet: Fix XML editor error when dhcp fields are empty
From: Cole Robinson crobinso@redhat.com Wed Jan 29 18:43:58 2020 -0500
Date: Wed Jan 29 18:53:31 2020 -0500:
Git: 5573aeb44100bcabdc24ab1cd19ec96bb4cb9d62
We need to handle the case when ip == None
https://bugzilla.redhat.com/show_bug.cgi?id=1726586
Signed-off-by: Cole Robinson <crobinso@redhat.com>
--- virt-manager-2.2.1.orig/virtManager/createnet.py
+++ virt-manager-2.2.1/virtManager/createnet.py
@@ -414,31 +414,35 @@ class vmmCreateNetwork(vmmGObjectUI):
if self.get_config_ipv4_enable():
ip = self.get_config_ip4()
ipobj = net.ips.add_new()
- ipobj.address = str(ip.network_address + 1)
- ipobj.netmask = str(ip.netmask)
+ if ip:
+ ipobj.address = str(ip.network_address + 1)
+ ipobj.netmask = str(ip.netmask)
if self.get_config_dhcpv4_enable():
dhcpobj = ipobj.ranges.add_new()
- dhcpobj.start = str(
- self.get_config_dhcpv4_start().network_address
- )
- dhcpobj.end = str(self.get_config_dhcpv4_end().network_address)
+ start = self.get_config_dhcpv4_start()
+ end = self.get_config_dhcpv4_end()
+ if start:
+ dhcpobj.start = str(start.network_address)
+ if end:
+ dhcpobj.end = str(end.network_address)
if self.get_config_ipv6_enable():
ip = self.get_config_ip6()
ipobj = net.ips.add_new()
ipobj.family = "ipv6"
- ipobj.address = str(ip.network_address + 1)
- ipobj.prefix = str(ip.prefixlen)
+ if ip:
+ ipobj.address = str(ip.network_address + 1)
+ ipobj.prefix = str(ip.prefixlen)
if self.get_config_dhcpv6_enable():
dhcpobj = ipobj.ranges.add_new()
- dhcpobj.start = str(
- self.get_config_dhcpv6_start().network_address
- )
- dhcpobj.end = str(
- self.get_config_dhcpv6_end().network_address
- )
+ start = self.get_config_dhcpv6_start()
+ end = self.get_config_dhcpv6_end()
+ if start:
+ dhcpobj.start = str(start.network_address)
+ if end:
+ dhcpobj.end = str(end.network_address)
return net

View File

@ -1,35 +0,0 @@
Subject: devices: video: Simplify model hvm check
From: Cole Robinson crobinso@redhat.com Thu Oct 3 15:41:44 2019 -0400
Date: Thu Oct 3 15:41:44 2019 -0400:
Git: 651e5b6d753930a2e7536efa4e6d20f57b038e80
Signed-off-by: Cole Robinson <crobinso@redhat.com>
diff --git a/virtinst/devices/video.py b/virtinst/devices/video.py
index 3d8ab939..3ebc561f 100644
--- a/virtinst/devices/video.py
+++ b/virtinst/devices/video.py
@@ -27,6 +27,8 @@ class DeviceVideo(Device):
@staticmethod
def default_model(guest):
+ if not guest.os.is_hvm():
+ return None
if guest.os.is_pseries():
return "vga"
if guest.os.is_arm_machvirt() or guest.os.is_riscv_virt():
@@ -37,11 +39,9 @@ class DeviceVideo(Device):
if guest.has_gl():
return "virtio"
return "qxl"
- if guest.os.is_hvm():
- if guest.conn.is_qemu():
- return "qxl"
- return "vga"
- return None
+ if guest.conn.is_qemu():
+ return "qxl"
+ return "vga"
def set_defaults(self, guest):
if not self.model:

View File

@ -1,39 +0,0 @@
Subject: graphics: Default to 'vga' instead of 'qxl' for non-spice
From: Cole Robinson crobinso@redhat.com Mon Aug 31 13:43:56 2020 -0400
Date: Mon Aug 31 13:43:56 2020 -0400:
Git: 7e3fb3f281835ba6779886a89b27376cc423ef94
qxl doesn't add anything for the VNC case, and qxl is more likely
to be compiled out of qemu since it is dependent on spice, so vga
is the safer default for getting a working config
https://bugzilla.redhat.com/show_bug.cgi?id=1833704
Signed-off-by: Cole Robinson <crobinso@redhat.com>
diff --git a/tests/cli-test-xml/compare/virt-install-x86_64-graphics.xml b/tests/cli-test-xml/compare/virt-install-x86_64-graphics.xml
index ea9b184f..c1b06ca1 100644
--- a/tests/cli-test-xml/compare/virt-install-x86_64-graphics.xml
+++ b/tests/cli-test-xml/compare/virt-install-x86_64-graphics.xml
@@ -48,7 +48,7 @@
<input type="tablet" bus="usb"/>
<graphics type="vnc" port="-1"/>
<video>
- <model type="qxl"/>
+ <model type="vga"/>
</video>
<memballoon model="virtio"/>
<rng model="virtio">
diff --git a/virtinst/devices/video.py b/virtinst/devices/video.py
index fcca91b6..f9383131 100644
--- a/virtinst/devices/video.py
+++ b/virtinst/devices/video.py
@@ -42,8 +42,6 @@ class DeviceVideo(Device):
if (guest.is_uefi() and
guest.lookup_domcaps().supports_video_bochs()):
return "bochs"
- if guest.conn.is_qemu():
- return "qxl"
return "vga"
def set_defaults(self, guest):

View File

@ -1,27 +0,0 @@
Subject: video: Prefer "bochs" when it's supported.
From: Fabiano Fidêncio fidencio@redhat.com Thu Oct 3 10:50:34 2019 +0200
Date: Fri Oct 4 11:17:10 2019 -0400:
Git: 8f4c53ea960459516794ba533060a176cc26f121
Preferring "bochs" display device is the way to go when dealing with a
Linux guest using UEFI and that's quite well described here:
https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/
https://bugzilla.redhat.com/show_bug.cgi?id=1753644
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virtinst/devices/video.py b/virtinst/devices/video.py
index 3ebc561f..fcca91b6 100644
--- a/virtinst/devices/video.py
+++ b/virtinst/devices/video.py
@@ -39,6 +39,9 @@ class DeviceVideo(Device):
if guest.has_gl():
return "virtio"
return "qxl"
+ if (guest.is_uefi() and
+ guest.lookup_domcaps().supports_video_bochs()):
+ return "bochs"
if guest.conn.is_qemu():
return "qxl"
return "vga"

View File

@ -1,37 +0,0 @@
Subject: urlfetcher: Deal with 'file://' in _LocalURLFetcher()
From: Fabiano Fidêncio fidencio@redhat.com Tue Sep 24 14:26:43 2019 +0200
Date: Wed Oct 2 11:58:34 2019 -0400:
Git: 9465da4174e778e7607908f18d74fd8aa2cba2fe
osinfo-db may contain files pointing to local paths, which will have the
format 'file:///usr/share/...'.
With the current code, virt-install would just bail as it doesn't
understand the 'file://' schema. Let's start using urllib (which is
already imported in the very same file) and parse the URL so both
'file:///usr/share/...' and '/usr/share/...' would work.
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virtinst/install/urlfetcher.py b/virtinst/install/urlfetcher.py
index 6084bf01..e52efc8e 100644
--- a/virtinst/install/urlfetcher.py
+++ b/virtinst/install/urlfetcher.py
@@ -365,11 +365,13 @@ class _LocalURLFetcher(_URLFetcher):
For grabbing files from a local directory
"""
def _hasFile(self, url):
- return os.path.exists(url)
+ parsed = urllib.parse.urlparse(url)
+ return os.path.exists(parsed.path)
def _grabber(self, url):
- urlobj = open(url, "rb")
- size = os.path.getsize(url)
+ parsed = urllib.parse.urlparse(url)
+ urlobj = open(parsed.path, "rb")
+ size = os.path.getsize(parsed.path)
return urlobj, size

View File

@ -1,23 +0,0 @@
Subject: fix resizing of spice clients with guest resizing enabled
From: Florian Ludwig f.ludwig@greyrook.com Wed Oct 9 11:18:53 2019 +0200
Date: Tue Nov 12 11:46:35 2019 -0500:
Git: ae19d6d6ec0b48085ce1c765fb2264e27fb51c63
Fixes 1414718
diff --git a/virtManager/details/console.py b/virtManager/details/console.py
index 8ef8631a..193e79eb 100644
--- a/virtManager/details/console.py
+++ b/virtManager/details/console.py
@@ -374,7 +374,10 @@ class vmmConsolePages(vmmGObjectUI):
if is_resizeguest:
# With resize guest, we don't want to maintain aspect ratio,
# since the guest can resize to arbitrary resolutions.
- self._viewer.console_set_size_request(req.width, req.height)
+ viewer_alloc = Gdk.Rectangle()
+ viewer_alloc.width = req.width
+ viewer_alloc.height = req.height
+ self._viewer.console_size_allocate(viewer_alloc)
return
if not is_scale:

View File

@ -1,24 +0,0 @@
Subject: domcaps: Fix check for uncached security features
From: Cole Robinson crobinso@redhat.com Tue Nov 12 14:15:56 2019 -0500
Date: Tue Nov 12 14:17:21 2019 -0500:
Git: d934d6f266e1731a5b881bbb9ae4cd60acd7887e
We need to check against None, which is the initial value, otherwise
a host with none of the security features present will repeatedly poll
libvirt baseline APIs
Signed-off-by: Cole Robinson <crobinso@redhat.com>
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index ea0ffd1f..34991ed7 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -296,7 +296,7 @@ class DomainCapabilities(XMLBuilder):
'virt-ssbd',
'md-clear']
- if self._features:
+ if self._features is not None:
return self._features
self._features = []

View File

@ -1,22 +0,0 @@
Subject: addhardware: Add "bochs" display to the video list
From: Fabiano Fidêncio fidencio@redhat.com Wed Oct 2 10:45:28 2019 +0200
Date: Fri Oct 4 11:17:14 2019 -0400:
Git: d9736db9d983d01c03929de226365dbf56a791a3
https://bugzilla.redhat.com/show_bug.cgi?id=1753644
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index 842eada1..881f0e02 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -663,7 +663,7 @@ class vmmAddHardware(vmmGObjectUI):
if guest.conn.is_xen():
return ["xen", "vga"]
if guest.conn.is_qemu() or guest.conn.is_test():
- return ["vga", "qxl", "virtio"]
+ return ["vga", "bochs", "qxl", "virtio"]
return []
@staticmethod

View File

@ -1,25 +0,0 @@
Subject: details: fix detection of firmware auto-selection
From: Pavel Hrdina phrdina@redhat.com Tue Jul 21 12:33:56 2020 +0200
Date: Thu Aug 13 16:40:53 2020 +0200:
Git: e8bf16b983558010cc9645e09eb36117e9e4fba4
Commit <15a9502b7b7a263c4d66ff2b3f31c209f58fe0b4> fixed firmware
detection but incorrectly. It will always show only "UEFI" even if
the firmware auto-selection is not used because the function is_uefi()
checks both the old style and the new auto-selection.
We have to check only for the auto-selection option.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
--- virt-manager-2.2.1.orig/virtManager/details/details.py
+++ virt-manager-2.2.1/virtManager/details/details.py
@@ -2017,7 +2017,7 @@ class vmmDetails(vmmGObjectUI):
# Firmware
domcaps = self.vm.get_domain_capabilities()
- if self.vm.get_xmlobj().is_uefi():
+ if self.vm.get_xmlobj().os.firmware == "efi":
firmware = 'UEFI'
else:
firmware = domcaps.label_for_firmware_path(

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e1c28128eee24bc5fdd3f67a3b3e6713cac14ed9664619948f98f1ca71ec992f
size 1483469

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:01103f0ac50fa783bb130d7b3330a32abfcb4d2bc112024e490c5cdce5908651
size 1584794

View File

@ -1,3 +1,77 @@
-------------------------------------------------------------------
Wed Sep 16 05:24:21 MDT 2020 - carnold@suse.com
- Update to virt-manager 3.0.0 (fate#326786)
virt-manager-3.0.0.tar.bz2
* virt-install cloud-init support (Athina Plaskasoviti, Cole
Robinson)
* The virt-convert tool has been removed. Please use virt-v2v
instead
* A handful of UI XML configuration options have been removed.
The XML editor can be used instead. For a larger discussion see
this thread: https://www.redhat.com/archives/virt-tools-list/
2019-June/msg00117.html
* The New VM UI now has a Manual Install option which creates
a VM without any required install media
* In the New VM UI, the network/pxe install option has been
removed. If you need network boot, choose Manual Install and
set the boot device after initial VM creation
* Clone VM UI has been reworked and simplified
* Migrate VM UI now has an XML editor for the destination VM
* Global and per-vm option to disable graphical console
autoconnect. This makes it easier to use virt-manager alongside
another client like virt-viewer
* virt-manager: set guest time after VM restore (Michael Weiser)
* virt-manager: option to delete storage when removing disk
device (Lily Nie)
* virt-manager: show warnings if snapshot operation is unsafe
(Michael Weiser)
* Unattended install improvements (Fabiano Fidêncio)
* cli: new xml XPATH=VAL option for making direct XML changes
* virt-install: new reinstall=DOMAIN option
* virt-install: new autoconsole text|graphical|none option
* virt-install: new os-variant detect=on,require=on suboptions
* cli: clock, keywrap, blkiotune, cputune additions (Athina
Plaskasoviti)
* cli: add features kvm.hint-dedicated.state= (Menno Lageman)
* cli:iommu option (Menno Lageman)
* cli: Add graphics websocket= support (Petr Benes)
* cli: Add disk type=nvme source.* suboptions
* cli: Fill in all filesystem suboptions
* Translation string improvements (Pino Toscano)
* Convert from .pod to .rst for man pages
* Switch to pytest as our test runner
* Massively improved unittest and uitest code coverage
* Now using github issues as our bug tracker
- Drop patches contained in new tarball
3c6e8537-guest-fix-warning-message-when-machine-type-is-changed-for-secure-boot.patch
0c223ab2-guest-Dont-set-default-uefi-if-firmware-is-set.patch
414ffa5e-virt-install-Use-minutes-instead-of-seconds-on-get_time_string.patch
53245827-urlfetcher-Force-a-flush-after-writing-to-a-file.patch
3009888a-urlfetcher-Dont-override-fullurl-when-its-explicitly-set.patch
9465da41-urlfetcher-Deal-with-file-in-_LocalURLFetcher.patch
651e5b6d-devices-video-Simplify-model-hvm-check.patch
1547e16d-domcapabilities-Get-video-devices.patch
2e20b128-domcapabilities-Add-supports_video_bochs.patch
d9736db9-addhardware-Add-bochs-display-to-the-video-list.patch
8f4c53ea-video-Prefer-bochs-when-its-supported..patch
ae19d6d6-fix-resizing-of-spice-clients-with-guest-resizing-enabled.patch
51d84c54-connection-Avoid-repeated-default-pool-creation-attempts.patch
d934d6f2-domcaps-Fix-check-for-uncached-security-features.patch
29f9f5f2-virt-xml-fix-defined_xml_is_unchanged.patch
15a9502b-Fix-showing-the-firmware-type-in-case-of-firmware-auto-selection.patch
5573aeb4-createnet-Fix-XML-editor-error-when-dhcp-fields-are-empty.patch
e8bf16b9-details-fix-detection-of-firmware-auto-selection.patch
7e3fb3f2-graphics-Default-to-vga-instead-of-qxl-for-non-spice.patch
- Drop deprecated patches
virtman-fix-env-script-interpreter.patch
virtinst-osdict-get_supported.patch
virtconv-python2-to-python3-conversion.patch
virtinst-python2-to-python3-conversion.patch
virtman-python2-to-python3-conversion.patch
virttests-python2-to-python3-conversion.patch
0002-virtinst-python3-avoid-comparison-of-None-and-int.patch
-------------------------------------------------------------------
Thu Sep 3 13:59:39 MDT 2020 - carnold@suse.com

View File

@ -21,7 +21,7 @@
%global default_hvs "qemu,xen,lxc"
Name: virt-manager
Version: 2.2.1
Version: 3.0.0
Release: 0
Summary: Virtual Machine Manager
License: GPL-2.0-or-later
@ -32,25 +32,6 @@ Source1: virt-install.rb
Source2: virt-install.desktop
Source3: virt-manager-supportconfig
# Upstream Patches
Patch1: 3c6e8537-guest-fix-warning-message-when-machine-type-is-changed-for-secure-boot.patch
Patch2: 0c223ab2-guest-Dont-set-default-uefi-if-firmware-is-set.patch
Patch3: 414ffa5e-virt-install-Use-minutes-instead-of-seconds-on-get_time_string.patch
Patch4: 53245827-urlfetcher-Force-a-flush-after-writing-to-a-file.patch
Patch5: 3009888a-urlfetcher-Dont-override-fullurl-when-its-explicitly-set.patch
Patch6: 9465da41-urlfetcher-Deal-with-file-in-_LocalURLFetcher.patch
Patch7: 651e5b6d-devices-video-Simplify-model-hvm-check.patch
Patch8: 1547e16d-domcapabilities-Get-video-devices.patch
Patch9: 2e20b128-domcapabilities-Add-supports_video_bochs.patch
Patch10: d9736db9-addhardware-Add-bochs-display-to-the-video-list.patch
Patch11: 8f4c53ea-video-Prefer-bochs-when-its-supported..patch
Patch12: ae19d6d6-fix-resizing-of-spice-clients-with-guest-resizing-enabled.patch
Patch13: 51d84c54-connection-Avoid-repeated-default-pool-creation-attempts.patch
Patch14: d934d6f2-domcaps-Fix-check-for-uncached-security-features.patch
Patch15: 29f9f5f2-virt-xml-fix-defined_xml_is_unchanged.patch
Patch16: 15a9502b-Fix-showing-the-firmware-type-in-case-of-firmware-auto-selection.patch
Patch17: 5573aeb4-createnet-Fix-XML-editor-error-when-dhcp-fields-are-empty.patch
Patch18: e8bf16b9-details-fix-detection-of-firmware-auto-selection.patch
Patch19: 7e3fb3f2-graphics-Default-to-vga-instead-of-qxl-for-non-spice.patch
# SUSE Only
Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch
@ -58,8 +39,7 @@ Patch72: virtman-show-suse-install-repos.patch
Patch73: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch74: virtinst-pvgrub2-bootloader.patch
Patch75: virtinst-change-location-for-grub_xen.patch
Patch76: virtman-fix-env-script-interpreter.patch
Patch77: virtinst-set-qemu-emulator.patch
Patch76: virtinst-set-qemu-emulator.patch
# Features or Enhancements
Patch103: virtman-load-stored-uris.patch
Patch120: virtinst-default-xen-to-qcow2-format.patch
@ -81,22 +61,15 @@ Patch155: virtman-dont-specify-vte-version.patch
Patch156: virtman-dont-specify-gtksource-version.patch
Patch157: virtman-fix-restore-vm-menu-selection.patch
Patch158: virtman-disallow-adding-floppy-disk.patch
Patch160: virtinst-xen-drive-type.patch
Patch161: virtinst-xenbus-disk-index-fix.patch
Patch162: virtinst-refresh_before_fetch_pool.patch
Patch163: virtinst-use-xenpae-kernel-for-32bit.patch
Patch164: virtinst-use-qemu-for-cdrom-device.patch
Patch165: virtinst-keep-install-iso-attached.patch
Patch166: virtinst-osdict-get_supported.patch
Patch167: virtinst-dont-use-special-copy-cpu-features.patch
Patch168: virtinst-set-default-nic.patch
# Python2 to Python3 patches
Patch200: virtconv-python2-to-python3-conversion.patch
Patch201: virtinst-python2-to-python3-conversion.patch
Patch202: virtman-python2-to-python3-conversion.patch
Patch203: virttests-python2-to-python3-conversion.patch
Patch204: 0002-virtinst-python3-avoid-comparison-of-None-and-int.patch
Patch205: virtman-register-delete-event-for-details-dialog.patch
Patch159: virtman-register-delete-event-for-details-dialog.patch
Patch170: virtinst-xen-drive-type.patch
Patch171: virtinst-xenbus-disk-index-fix.patch
Patch172: virtinst-refresh_before_fetch_pool.patch
Patch173: virtinst-use-xenpae-kernel-for-32bit.patch
Patch174: virtinst-use-qemu-for-cdrom-device.patch
Patch175: virtinst-keep-install-iso-attached.patch
Patch176: virtinst-dont-use-special-copy-cpu-features.patch
Patch177: virtinst-set-default-nic.patch
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -123,6 +96,7 @@ BuildRequires: gtk3-tools
BuildRequires: intltool
BuildRequires: perl
BuildRequires: python3-devel
BuildRequires: python3-docutils
BuildRequires: python3-gobject
BuildRequires: python3-libvirt-python >= 0.7.0
BuildRequires: python3-libxml2-python
@ -168,7 +142,6 @@ Requires: virt-manager-common = %{verrel}
Requires: python3-requests
Provides: python3-virtinst
Provides: virt-clone
Provides: virt-convert
Obsoletes: python-virtinst <= 0.600.4
Supplements: virt-manager
@ -181,25 +154,6 @@ machine).
%prep
%setup -q
# Upstream Patches
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
# SUSE Only
%patch70 -p1
%patch71 -p1
@ -208,7 +162,6 @@ machine).
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch77 -p1
# Enhancements
%patch103 -p1
%patch120 -p1
@ -230,22 +183,15 @@ machine).
%patch156 -p1
%patch157 -p1
%patch158 -p1
%patch160 -p1
%patch161 -p1
%patch162 -p1
%patch163 -p1
%patch164 -p1
%patch165 -p1
%patch166 -p1
%patch167 -p1
%patch168 -p1
# Python2 to Python3 patches
%patch200 -p1
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1
%patch205 -p1
%patch159 -p1
%patch170 -p1
%patch171 -p1
%patch172 -p1
%patch173 -p1
%patch174 -p1
%patch175 -p1
%patch176 -p1
%patch177 -p1
%build
%if %{default_hvs}
@ -295,9 +241,9 @@ fi
%{_mandir}/man1/%{name}.1*
%dir %{_datadir}/virt-manager/ui
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/ui
%{_datadir}/%{name}/ui/*.ui
%{_datadir}/%{name}/virt-manager
%{_datadir}/%{name}/virtManager
%dir %{_datadir}/icons/hicolor
@ -306,7 +252,7 @@ fi
%{_datadir}/%{name}/icons
%{_datadir}/icons/hicolor/*/apps/*
%{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/metainfo/%{name}.appdata.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/applications/YaST2/virt-install.desktop
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml
@ -318,33 +264,24 @@ fi
%defattr(-,root,root,-)
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/virtconv
%{_datadir}/%{name}/virtinst
%files -n virt-install
%defattr(-,root,root,-)
%{_mandir}/man1/virt-install.1*
%{_mandir}/man1/virt-clone.1*
%{_mandir}/man1/virt-convert.1*
%{_mandir}/man1/virt-xml.1*
%{_datadir}/%{name}/virt-install
%{_bindir}/virt-install
%{_datadir}/bash-completion/completions/virt-install
%{_datadir}/%{name}/virt-clone
%{_bindir}/virt-clone
%{_datadir}/bash-completion/completions/virt-clone
%{_datadir}/%{name}/virt-convert
%{_datadir}/bash-completion/completions/virt-convert
%{_datadir}/%{name}/virt-xml
%{_bindir}/virt-xml
%{_datadir}/bash-completion/completions/virt-xml
%dir %{_datadir}/YaST2
%dir %{_datadir}/YaST2/clients
%dir %{_datadir}/applications/YaST2
%dir %{_datadir}/appdata
%{_datadir}/YaST2/clients/virt-install.rb
%{_bindir}/virt-install
%{_bindir}/virt-clone
%{_bindir}/virt-convert
%{_bindir}/virt-xml
%changelog

View File

@ -1,13 +0,0 @@
Index: virt-manager-2.2.0/virtconv/vmx.py
===================================================================
--- virt-manager-2.2.0.orig/virtconv/vmx.py
+++ virt-manager-2.2.0/virtconv/vmx.py
@@ -259,7 +259,7 @@ class vmx_parser(parser_class):
def _find_keys(prefixes):
ret = []
- for key, value in config.items():
+ for key, value in list(config.items()):
for p in xmlutil.listify(prefixes):
if key.startswith(p):
ret.append((key, value))

View File

@ -1,10 +1,10 @@
References: bsc#1010060
Index: virt-manager-2.2.1/virtinst/install/urldetect.py
Index: virt-manager-3.0.0/virtinst/install/urldetect.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/urldetect.py
+++ virt-manager-2.2.1/virtinst/install/urldetect.py
@@ -273,6 +273,12 @@ class _SUSEContent(object):
--- virt-manager-3.0.0.orig/virtinst/install/urldetect.py
+++ virt-manager-3.0.0/virtinst/install/urldetect.py
@@ -277,6 +277,12 @@ class _SUSEContent(object):
self.product_name.strip().rsplit(' ')[5][2])
distro_version = sle_version
@ -17,17 +17,17 @@ Index: virt-manager-2.2.1/virtinst/install/urldetect.py
return distro_version
@@ -550,6 +556,9 @@ class _SuseDistro(_RHELDistro):
# Tumbleweed 8 digit date
return "opensusetumbleweed"
@@ -563,6 +569,9 @@ class _SuseDistro(_RHELDistro):
version = distro_version.split('.', 1)[0].strip()
+ if self._variant_prefix.startswith(("caasp")):
+ return self._variant_prefix + distro_version
+
if int(version) < 10:
return self._variant_prefix + "9"
@@ -622,6 +631,14 @@ class _OpensuseDistro(_SuseDistro):
if str(self._variant_prefix).startswith(("sles", "sled", "oes")):
sp_version = ""
if len(distro_version.split('.', 1)) == 2:
@@ -632,6 +641,14 @@ class _OpensuseDistro(_SuseDistro):
famregex = ".*openSUSE.*"
@ -42,7 +42,7 @@ Index: virt-manager-2.2.1/virtinst/install/urldetect.py
class _OESDistro(_SuseDistro):
PRETTY_NAME = "OES"
matching_distros = ["oes"]
@@ -838,6 +855,7 @@ def _build_distro_list(osobj):
@@ -869,6 +886,7 @@ def _build_distro_list(osobj):
_SLESDistro,
_SLEDDistro,
_OpensuseDistro,

View File

@ -1,24 +1,24 @@
References: fate#326698 - Add pvh support to virt-manager
At this time support is disabled in this patch.
Index: virt-manager-2.2.1/virtManager/createvm.py
Index: virt-manager-3.0.0/virtManager/createvm.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -792,6 +792,9 @@ class vmmCreateVM(vmmGObjectUI):
for guest in guests:
if not guest.domains:
--- virt-manager-3.0.0.orig/virtManager/createvm.py
+++ virt-manager-3.0.0/virtManager/createvm.py
@@ -837,6 +837,9 @@ class vmmCreateVM(vmmGObjectUI):
break
if label is None:
continue
+ # xenpvh is currently unsupported
+ if guest.os_type == "xenpvh":
+ continue
gtype = guest.os_type
dom = guest.domains[0]
Index: virt-manager-2.2.1/virtinst/domain/os.py
# Determine if this is the default given by guest_lookup
if (gtype == self._capsinfo.os_type and
Index: virt-manager-3.0.0/virtinst/domain/os.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/domain/os.py
+++ virt-manager-2.2.1/virtinst/domain/os.py
--- virt-manager-3.0.0.orig/virtinst/domain/os.py
+++ virt-manager-3.0.0/virtinst/domain/os.py
@@ -32,6 +32,8 @@ class DomainOs(XMLBuilder):
return self.os_type == "hvm"
def is_xenpv(self):
@ -28,11 +28,11 @@ Index: virt-manager-2.2.1/virtinst/domain/os.py
def is_container(self):
return self.os_type == "exe"
Index: virt-manager-2.2.1/virtinst/guest.py
Index: virt-manager-3.0.0/virtinst/guest.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/guest.py
+++ virt-manager-2.2.1/virtinst/guest.py
@@ -824,7 +824,7 @@ class Guest(XMLBuilder):
--- virt-manager-3.0.0.orig/virtinst/guest.py
+++ virt-manager-3.0.0/virtinst/guest.py
@@ -814,7 +814,7 @@ class Guest(XMLBuilder):
usb_tablet = False
usb_keyboard = False
@ -41,11 +41,11 @@ Index: virt-manager-2.2.1/virtinst/guest.py
usb_tablet = self.osinfo.supports_usbtablet()
if (self.os.is_arm_machvirt() or
self.os.is_riscv_virt() or
Index: virt-manager-2.2.1/virtManager/object/domain.py
Index: virt-manager-3.0.0/virtManager/object/domain.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/object/domain.py
+++ virt-manager-2.2.1/virtManager/object/domain.py
@@ -1150,6 +1150,8 @@ class vmmDomain(vmmLibvirtObject):
--- virt-manager-3.0.0.orig/virtManager/object/domain.py
+++ virt-manager-3.0.0/virtManager/object/domain.py
@@ -1223,6 +1223,8 @@ class vmmDomain(vmmLibvirtObject):
return self.get_xmlobj().os.is_xenpv()
def is_hvm(self):
return self.get_xmlobj().os.is_hvm()
@ -54,11 +54,11 @@ Index: virt-manager-2.2.1/virtManager/object/domain.py
def get_uuid(self):
if self._uuid is None:
Index: virt-manager-2.2.1/virtManager/connection.py
Index: virt-manager-3.0.0/virtManager/connection.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/connection.py
+++ virt-manager-2.2.1/virtManager/connection.py
@@ -223,6 +223,8 @@ class vmmConnection(vmmGObject):
--- virt-manager-3.0.0.orig/virtManager/connection.py
+++ virt-manager-3.0.0/virtManager/connection.py
@@ -211,6 +211,8 @@ class vmmConnection(vmmGObject):
label = "xen (paravirt)"
elif gtype == "hvm":
label = "xen (fullvirt)"

View File

@ -1,10 +1,10 @@
References: bsc#1054986
Index: virt-manager-2.2.1/virtinst/install/urldetect.py
Index: virt-manager-3.0.0/virtinst/install/urldetect.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/urldetect.py
+++ virt-manager-2.2.1/virtinst/install/urldetect.py
@@ -586,6 +586,10 @@ class _SuseDistro(_RHELDistro):
--- virt-manager-3.0.0.orig/virtinst/install/urldetect.py
+++ virt-manager-3.0.0/virtinst/install/urldetect.py
@@ -596,6 +596,10 @@ class _SuseDistro(_RHELDistro):
if re.search("openSUSE Tumbleweed", self.cache.treeinfo_name):
return "opensusetumbleweed"
@ -15,7 +15,7 @@ Index: virt-manager-2.2.1/virtinst/install/urldetect.py
version, update = self.cache.split_version()
base = self._variant_prefix + str(version)
while update >= 0:
@@ -593,7 +597,10 @@ class _SuseDistro(_RHELDistro):
@@ -603,7 +607,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'):
@ -27,7 +27,7 @@ Index: virt-manager-2.2.1/virtinst/install/urldetect.py
if OSDB.lookup_os(tryvar):
return tryvar
update -= 1
@@ -607,6 +614,14 @@ class _SuseDistro(_RHELDistro):
@@ -617,6 +624,14 @@ class _SuseDistro(_RHELDistro):
return var
@ -42,7 +42,7 @@ Index: virt-manager-2.2.1/virtinst/install/urldetect.py
class _SLESDistro(_SuseDistro):
PRETTY_NAME = "SLES"
matching_distros = ["sles"]
@@ -852,6 +867,7 @@ def _build_distro_list(osobj):
@@ -883,6 +898,7 @@ def _build_distro_list(osobj):
_FedoraDistro,
_RHELDistro,
_CentOSDistro,

View File

@ -1,10 +1,10 @@
References: fate#326960, bsc#1123942
Index: virt-manager-2.2.1/virtinst/install/installer.py
Index: virt-manager-3.0.0/virtinst/install/installer.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/installer.py
+++ virt-manager-2.2.1/virtinst/install/installer.py
@@ -446,7 +446,10 @@ class Installer(object):
--- virt-manager-3.0.0.orig/virtinst/install/installer.py
+++ virt-manager-3.0.0/virtinst/install/installer.py
@@ -594,7 +594,10 @@ class Installer(object):
guest.bootloader = "pygrub"
else:
guest.bootloader = None
@ -16,16 +16,16 @@ Index: virt-manager-2.2.1/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-2.2.1/virtManager/delete.py
Index: virt-manager-3.0.0/virtManager/delete.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/delete.py
+++ virt-manager-2.2.1/virtManager/delete.py
@@ -246,7 +246,7 @@ def populate_storage_list(storage_list,
diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False, True))
--- virt-manager-3.0.0.orig/virtManager/delete.py
+++ virt-manager-3.0.0/virtManager/delete.py
@@ -458,7 +458,7 @@ def _populate_storage_list(storage_list,
model.clear()
for target, path, ro, shared, is_media in diskdata:
- if not path or path == "/usr/lib/grub2/x86_64-xen/grub.xen":
+ if not path or "grub.xen" in path:
for diskdata in diskdatas:
- if not diskdata.path or diskdata.path == "/usr/lib/grub2/x86_64-xen/grub.xen":
+ if not diskdata.path or "grub.xen" in diskdata.path:
continue
# There are a few pieces here

View File

@ -1,10 +1,10 @@
Reference: bnc#885380
Allow Xen based VMs to default to using qcow2
Index: virt-manager-2.2.0/virtinst/support.py
Index: virt-manager-3.0.0/virtinst/support.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/support.py
+++ virt-manager-2.2.0/virtinst/support.py
@@ -249,7 +249,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.

View File

@ -1,19 +1,19 @@
Enhancement to correctly detect Open Enterprise Server media is
selected as the installation source.
Index: virt-manager-2.2.1/virtinst/install/urldetect.py
Index: virt-manager-3.0.0/virtinst/install/urldetect.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/urldetect.py
+++ virt-manager-2.2.1/virtinst/install/urldetect.py
@@ -553,7 +553,7 @@ class _SuseDistro(_RHELDistro):
if int(version) < 10:
return self._variant_prefix + "9"
--- virt-manager-3.0.0.orig/virtinst/install/urldetect.py
+++ virt-manager-3.0.0/virtinst/install/urldetect.py
@@ -563,7 +563,7 @@ class _SuseDistro(_RHELDistro):
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()
@@ -622,6 +622,14 @@ class _OpensuseDistro(_SuseDistro):
@@ -632,6 +632,14 @@ class _OpensuseDistro(_SuseDistro):
famregex = ".*openSUSE.*"
@ -28,7 +28,7 @@ Index: virt-manager-2.2.1/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/
@@ -830,6 +838,7 @@ def _build_distro_list(osobj):
@@ -861,6 +869,7 @@ def _build_distro_list(osobj):
_SLESDistro,
_SLEDDistro,
_OpensuseDistro,

View File

@ -12,11 +12,11 @@ It should be noted that selecting "Customize configuration before install"
and "CPUs" -> "Copy host CPU definition" also inserts 'host-model' so
this change mirrors what is already done there.
Index: virt-manager-2.2.0/virtinst/domain/cpu.py
Index: virt-manager-3.0.0/virtinst/domain/cpu.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/domain/cpu.py
+++ virt-manager-2.2.0/virtinst/domain/cpu.py
@@ -89,12 +89,16 @@ class DomainCpu(XMLBuilder):
--- virt-manager-3.0.0.orig/virtinst/domain/cpu.py
+++ virt-manager-3.0.0/virtinst/domain/cpu.py
@@ -122,12 +122,16 @@ class DomainCpu(XMLBuilder):
val = self.SPECIAL_MODE_HOST_MODEL
if (val == self.SPECIAL_MODE_HOST_MODEL or

View File

@ -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-2.2.0/virtinst/install/installer.py
Index: virt-manager-3.0.0/virtinst/install/installer.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/install/installer.py
+++ virt-manager-2.2.0/virtinst/install/installer.py
@@ -111,7 +111,8 @@ class Installer(object):
--- virt-manager-3.0.0.orig/virtinst/install/installer.py
+++ virt-manager-3.0.0/virtinst/install/installer.py
@@ -166,7 +166,8 @@ class Installer(object):
def _remove_install_cdrom_media(self, guest):
if not self._install_cdrom_device_added:
return

View File

@ -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-2.2.0/virtinst/install/urldetect.py
Index: virt-manager-3.0.0/virtinst/install/urldetect.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/install/urldetect.py
+++ virt-manager-2.2.0/virtinst/install/urldetect.py
@@ -488,8 +488,23 @@ class _SuseDistro(_RHELDistro):
--- virt-manager-3.0.0.orig/virtinst/install/urldetect.py
+++ virt-manager-3.0.0/virtinst/install/urldetect.py
@@ -504,8 +504,23 @@ class _SuseDistro(_RHELDistro):
cache.checked_for_suse_content = True
content_str = cache.acquire_file_content("content")
if content_str is None:
@ -31,4 +31,4 @@ Index: virt-manager-2.2.0/virtinst/install/urldetect.py
+ content_str = products_str + "\n" + media_str
try:
cache.suse_content = _SUSEContent(content_str)
except Exception as e:
except Exception as e: # pragma: no cover

View File

@ -1,11 +1,11 @@
Enhancement for the following GUI wizard installation option.
1) If Xen, leave 'Architecture options' expanded so users know PV
is the default
Index: virt-manager-2.2.1/virtManager/createvm.py
Index: virt-manager-3.0.0/virtManager/createvm.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -404,8 +404,20 @@ class vmmCreateVM(vmmGObjectUI):
--- virt-manager-3.0.0.orig/virtManager/createvm.py
+++ virt-manager-3.0.0/virtManager/createvm.py
@@ -460,8 +460,20 @@ class vmmCreateVM(vmmGObjectUI):
self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1)
activeconn = self._populate_conn_list(urihint)

View File

@ -1,18 +0,0 @@
Some distros are out of support for normal customers but continue
to be supported through LTSS contracts for others. Hence the EOL
date in the osinfo-db file may be past but we want the distro to
continue to show up in the list.
Index: virt-manager-2.2.0/virtinst/osdict.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/osdict.py
+++ virt-manager-2.2.0/virtinst/osdict.py
@@ -445,7 +445,7 @@ class _OsVariant(object):
# If no EOL is present, assume EOL if release was > 5 years ago
if rel is not None:
- rel5 = _glib_to_datetime(rel) + datetime.timedelta(days=365 * 5)
+ rel5 = _glib_to_datetime(rel) + datetime.timedelta(days=365 * 10)
return now > rel5
return False

View File

@ -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-2.2.1/virtinst/install/installer.py
Index: virt-manager-3.0.0/virtinst/install/installer.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/installer.py
+++ virt-manager-2.2.1/virtinst/install/installer.py
@@ -167,7 +167,8 @@ class Installer(object):
--- virt-manager-3.0.0.orig/virtinst/install/installer.py
+++ virt-manager-3.0.0/virtinst/install/installer.py
@@ -218,7 +218,8 @@ class Installer(object):
def _alter_treemedia_bootconfig(self, guest):
if not self._treemedia:
@ -16,7 +16,7 @@ Index: virt-manager-2.2.1/virtinst/install/installer.py
kernel, initrd, kernel_args = self._treemedia_bootconfig
if kernel:
@@ -436,6 +437,20 @@ class Installer(object):
@@ -584,6 +585,20 @@ class Installer(object):
install_xml = None
if self.has_install_phase():
install_xml = self._get_install_xml(guest, meter)
@ -34,6 +34,6 @@ Index: virt-manager-2.2.1/virtinst/install/installer.py
+ on_reboot_value = guest.on_reboot
+ self._alter_bootconfig(guest)
+ guest.on_reboot = on_reboot_value
final_xml = guest.get_xml()
final_xml = self._pre_reinstall_xml or guest.get_xml()
log.debug("Generated install XML: %s",

View File

@ -1,92 +0,0 @@
Index: virt-manager-2.2.1/virtinst/osdict.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/osdict.py
+++ virt-manager-2.2.1/virtinst/osdict.py
@@ -54,7 +54,7 @@ def _sort(tosort):
distro_mappings = {}
retlist = []
- for key, osinfo in tosort.items():
+ for key, osinfo in list(tosort.items()):
# Libosinfo has some duplicate version numbers here, so append .1
# if there's a collision
sortby = _sortby(osinfo)
Index: virt-manager-2.2.1/virtinst/install/installertreemedia.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/installertreemedia.py
+++ virt-manager-2.2.1/virtinst/install/installertreemedia.py
@@ -20,7 +20,7 @@ from ..osdict import OSDB
(MEDIA_DIR,
MEDIA_ISO,
MEDIA_URL,
- MEDIA_KERNEL) = range(1, 5)
+ MEDIA_KERNEL) = list(range(1, 5))
def _is_url(url):
Index: virt-manager-2.2.1/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/xmlbuilder.py
+++ virt-manager-2.2.1/virtinst/xmlbuilder.py
@@ -661,7 +661,7 @@ class XMLBuilder(object):
whenever child objects are added or removed
"""
typecount = {}
- for propname, xmlprop in self._all_child_props().items():
+ for propname, xmlprop in list(self._all_child_props().items()):
for obj in xmlutil.listify(getattr(self, propname)):
idxstr = ""
if not xmlprop.is_single:
Index: virt-manager-2.2.1/virtinst/domcapabilities.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/domcapabilities.py
+++ virt-manager-2.2.1/virtinst/domcapabilities.py
@@ -218,7 +218,7 @@ class DomainCapabilities(XMLBuilder):
return _("BIOS")
return _("None")
- for arch, patterns in self._uefi_arch_patterns.items():
+ for arch, patterns in list(self._uefi_arch_patterns.items()):
for pattern in patterns:
if re.match(pattern, path):
return (_("UEFI %(arch)s: %(path)s") %
Index: virt-manager-2.2.1/virtinst/devices/disk.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/devices/disk.py
+++ virt-manager-2.2.1/virtinst/devices/disk.py
@@ -269,7 +269,7 @@ class DeviceDisk(Device):
digit = 1
seen_valid = True
- gen_t += "%c" % (ord('a') + digit - 1)
+ gen_t += "%c" % int(ord('a') + digit - 1)
return gen_t
@@ -879,11 +879,11 @@ class DeviceDisk(Device):
def get_target():
first_found = None
- ran = range(maxnode)
+ ran = list(range(maxnode))
if pref_ctrl is not None:
# We assume narrow SCSI bus and libvirt assigning 7
# (1-7, 8-14, etc.) devices per controller
- ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
+ ran = list(range(pref_ctrl * 7, (pref_ctrl + 1) * 7))
for i in ran:
postfix = self.num_to_target(i + 1)
Index: virt-manager-2.2.1/virtinst/pollhelpers.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/pollhelpers.py
+++ virt-manager-2.2.1/virtinst/pollhelpers.py
@@ -129,7 +129,7 @@ def fetch_pools(backend, origmap, build_
for obj in objs:
try:
obj.refresh(0)
- except Exception, e:
+ except Exception as e:
pass
return _new_poll_helper(origmap, name,

View File

@ -13,27 +13,27 @@ status affects the hypervisor connection.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-2.2.0/virtinst/pollhelpers.py
Index: virt-manager-3.0.0/virtinst/pollhelpers.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/pollhelpers.py
+++ virt-manager-2.2.0/virtinst/pollhelpers.py
@@ -119,6 +119,19 @@ def fetch_pools(backend, origmap, build_
name = "pool"
--- virt-manager-3.0.0.orig/virtinst/pollhelpers.py
+++ virt-manager-3.0.0/virtinst/pollhelpers.py
@@ -48,6 +48,19 @@ def fetch_pools(backend, origmap, build_
typename = "pool"
list_cb = backend.listAllStoragePools
support_cb = backend.support.conn_storage
+
+ # Refresh pools before poll_helper. For those
+ # 'active' but target path not exist (or other reasons
+ # causing the pool not working), but libvirtd not
+ # refresh the status, this will make it refreshed
+ # and mark that pool as 'inactive'.
+ objs = backend.listAllStoragePools()
+ for obj in objs:
+ try:
+ obj.refresh(0)
+ except Exception as e: # pragma: no cover
+ pass
+
return _new_poll_helper(origmap, typename, list_cb, build_cb, support_cb)
if backend.support.conn_listallstoragepools() and not FORCE_OLD_POLL:
+
+ # Refresh pools before poll_helper. For those
+ # 'active' but target path not exist (or other reasons
+ # causing the pool not working), but libvirtd not
+ # refresh the status, this will make it refreshed
+ # and mark that pool as 'inactive'.
+ objs = backend.listAllStoragePools()
+ for obj in objs:
+ try:
+ obj.refresh(0)
+ except Exception, e:
+ pass
+
return _new_poll_helper(origmap, name,
backend.listAllStoragePools, build_func)
else:

View File

@ -1,10 +1,10 @@
Reference: bnc#869024
Disable graphics on s390x
Index: virt-manager-2.2.1/virtinst/guest.py
Index: virt-manager-3.0.0/virtinst/guest.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/guest.py
+++ virt-manager-2.2.1/virtinst/guest.py
@@ -225,7 +225,10 @@ class Guest(XMLBuilder):
--- virt-manager-3.0.0.orig/virtinst/guest.py
+++ virt-manager-3.0.0/virtinst/guest.py
@@ -195,7 +195,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False
self.skip_default_sound = False
self.skip_default_usbredir = False
@ -14,9 +14,9 @@ Index: virt-manager-2.2.1/virtinst/guest.py
+ else:
+ self.skip_default_graphics = False
self.skip_default_rng = False
self.disable_default_memballoon = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_APP_DEFAULT
@@ -480,7 +483,7 @@ class Guest(XMLBuilder):
@@ -337,7 +340,7 @@ class Guest(XMLBuilder):
if not os_support:
return False
@ -24,8 +24,8 @@ Index: virt-manager-2.2.1/virtinst/guest.py
+ if self.os.is_x86() or self.os.is_s390x():
return True
return False
@@ -864,7 +867,7 @@ class Guest(XMLBuilder):
return False # pragma: no cover
@@ -854,7 +857,7 @@ class Guest(XMLBuilder):
self.add_device(dev)
def _add_default_video_device(self):

View File

@ -1,10 +1,10 @@
Set cache mode for target installation disk to unsafe for better
performance.
Index: virt-manager-2.2.1/virtinst/install/installer.py
Index: virt-manager-3.0.0/virtinst/install/installer.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/installer.py
+++ virt-manager-2.2.1/virtinst/install/installer.py
@@ -422,11 +422,22 @@ class Installer(object):
--- virt-manager-3.0.0.orig/virtinst/install/installer.py
+++ virt-manager-3.0.0/virtinst/install/installer.py
@@ -570,11 +570,22 @@ class Installer(object):
guest.memory) = data
def _get_install_xml(self, guest, meter):

View File

@ -1,11 +1,11 @@
References: bsc#1172356
Libvirt doesn't accept "Hypervisor default" as a model name
Index: virt-manager-2.2.1/virtinst/devices/interface.py
Index: virt-manager-3.0.0/virtinst/devices/interface.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/devices/interface.py
+++ virt-manager-2.2.1/virtinst/devices/interface.py
@@ -256,6 +256,8 @@ class DeviceInterface(Device):
--- virt-manager-3.0.0.orig/virtinst/devices/interface.py
+++ virt-manager-3.0.0/virtinst/devices/interface.py
@@ -284,6 +284,8 @@ class DeviceInterface(Device):
return "e1000e"
if not guest.os.is_x86():
return None

View File

@ -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-2.2.1/virtinst/guest.py
Index: virt-manager-3.0.0/virtinst/guest.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/guest.py
+++ virt-manager-2.2.1/virtinst/guest.py
@@ -740,6 +740,10 @@ class Guest(XMLBuilder):
--- virt-manager-3.0.0.orig/virtinst/guest.py
+++ virt-manager-3.0.0/virtinst/guest.py
@@ -727,6 +727,10 @@ class Guest(XMLBuilder):
self._add_default_memballoon()
self.clock.set_defaults(self)

View File

@ -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-2.2.0/virtinst/devices/disk.py
Index: virt-manager-3.0.0/virtinst/devices/disk.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/devices/disk.py
+++ virt-manager-2.2.0/virtinst/devices/disk.py
@@ -389,7 +389,8 @@ class DeviceDisk(Device):
--- virt-manager-3.0.0.orig/virtinst/devices/disk.py
+++ virt-manager-3.0.0/virtinst/devices/disk.py
@@ -384,7 +384,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

View File

@ -4,11 +4,11 @@ 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-2.2.0/virtinst/install/urldetect.py
Index: virt-manager-3.0.0/virtinst/install/urldetect.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/install/urldetect.py
+++ virt-manager-2.2.0/virtinst/install/urldetect.py
@@ -533,9 +533,14 @@ class _SuseDistro(_RHELDistro):
--- virt-manager-3.0.0.orig/virtinst/install/urldetect.py
+++ virt-manager-3.0.0/virtinst/install/urldetect.py
@@ -549,9 +549,14 @@ class _SuseDistro(_RHELDistro):
if self.type == "xen":
# Matches Opensuse > 10.2 and sles 10

View File

@ -4,11 +4,11 @@ issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-2.2.1/virtinst/storage.py
Index: virt-manager-3.0.0/virtinst/storage.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/storage.py
+++ virt-manager-2.2.1/virtinst/storage.py
@@ -548,6 +548,11 @@ class StorageVolume(_StorageObject):
--- virt-manager-3.0.0.orig/virtinst/storage.py
+++ virt-manager-3.0.0/virtinst/storage.py
@@ -569,6 +569,11 @@ class StorageVolume(_StorageObject):
return self._pool_xml.get_disk_type()
file_type = property(_get_vol_type)
@ -20,11 +20,11 @@ Index: virt-manager-2.2.1/virtinst/storage.py
##################
# XML properties #
Index: virt-manager-2.2.1/virtinst/support.py
Index: virt-manager-3.0.0/virtinst/support.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/support.py
+++ virt-manager-2.2.1/virtinst/support.py
@@ -283,6 +283,7 @@ class SupportCache:
--- virt-manager-3.0.0.orig/virtinst/support.py
+++ virt-manager-3.0.0/virtinst/support.py
@@ -269,6 +269,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"})

View File

@ -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-2.2.0/virtinst/devices/disk.py
Index: virt-manager-3.0.0/virtinst/devices/disk.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/devices/disk.py
+++ virt-manager-2.2.0/virtinst/devices/disk.py
@@ -406,6 +406,10 @@ class DeviceDisk(Device):
--- virt-manager-3.0.0.orig/virtinst/devices/disk.py
+++ virt-manager-3.0.0/virtinst/devices/disk.py
@@ -401,6 +401,10 @@ class DeviceDisk(Device):
https://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
"""
if self.driver_name != self.DRIVER_NAME_QEMU:

View File

@ -6,14 +6,14 @@ 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-2.2.0/virtinst/devices/disk.py
Index: virt-manager-3.0.0/virtinst/devices/disk.py
===================================================================
--- virt-manager-2.2.0.orig/virtinst/devices/disk.py
+++ virt-manager-2.2.0/virtinst/devices/disk.py
@@ -861,6 +861,17 @@ class DeviceDisk(Device):
--- virt-manager-3.0.0.orig/virtinst/devices/disk.py
+++ virt-manager-3.0.0/virtinst/devices/disk.py
@@ -850,6 +850,17 @@ class DeviceDisk(Device):
:returns: generated target
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
prefix, maxnode = self.get_target_prefix()
+ postfix_targets = []
+ if self.conn.is_xen():
+ prefixes = [ "hd", "xvd", "vd", "sd", "fd" ]
@ -28,10 +28,10 @@ Index: virt-manager-2.2.0/virtinst/devices/disk.py
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort()
@@ -874,7 +885,12 @@ class DeviceDisk(Device):
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
@@ -857,7 +868,12 @@ class DeviceDisk(Device):
first_found = None
for i in ran:
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

View File

@ -1,11 +1,11 @@
References: bsc#919692
Because openSUSE repos combine 32 and 64 bit sources we need to
continue showing the 'Architecture' pop-up.
Index: virt-manager-2.2.1/virtManager/createvm.py
Index: virt-manager-3.0.0/virtManager/createvm.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -830,11 +830,6 @@ class vmmCreateVM(vmmGObjectUI):
--- virt-manager-3.0.0.orig/virtManager/createvm.py
+++ virt-manager-3.0.0/virtManager/createvm.py
@@ -862,11 +862,6 @@ class vmmCreateVM(vmmGObjectUI):
for guest in self.conn.caps.guests:
if guest.os_type == self._capsinfo.os_type:
archs.append(guest.arch)

View File

@ -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-2.2.0/virtManager/manager.py
Index: virt-manager-3.0.0/virtManager/manager.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/manager.py
+++ virt-manager-2.2.0/virtManager/manager.py
@@ -784,7 +784,7 @@ class vmmManager(vmmGObjectUI):
--- virt-manager-3.0.0.orig/virtManager/manager.py
+++ virt-manager-3.0.0/virtManager/manager.py
@@ -779,7 +779,7 @@ class vmmManager(vmmGObjectUI):
show_pause = bool(vm and vm.is_unpauseable())
else:
show_pause = bool(vm and vm.is_pauseable())
@ -19,10 +19,10 @@ Index: virt-manager-2.2.0/virtManager/manager.py
if vm and vm.managedsave_supported:
self.change_run_text(vm.has_managed_save())
Index: virt-manager-2.2.0/virtManager/vmmenu.py
Index: virt-manager-3.0.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/vmmenu.py
+++ virt-manager-2.2.0/virtManager/vmmenu.py
--- virt-manager-3.0.0.orig/virtManager/vmmenu.py
+++ virt-manager-3.0.0/virtManager/vmmenu.py
@@ -21,6 +21,7 @@ class _VMMenu(Gtk.Menu):
self._parent = src
self._current_vm_cb = current_vm_cb
@ -31,15 +31,15 @@ Index: virt-manager-2.2.0/virtManager/vmmenu.py
self._init_state()
@@ -84,6 +85,7 @@ class VMShutdownMenu(_VMMenu):
@@ -85,6 +86,7 @@ class VMShutdownMenu(_VMMenu):
name = getattr(child, "vmm_widget_name", None)
if name in statemap:
child.set_sensitive(statemap[name])
+ child.set_visible(statemap[name])
if name == "reset":
child.set_tooltip_text(None)
@@ -105,7 +107,8 @@ class VMActionMenu(_VMMenu):
class VMActionMenu(_VMMenu):
@@ -99,7 +101,8 @@ class VMActionMenu(_VMMenu):
self._add_action(_("R_esume"), "resume", VMActionUI.resume,
Gtk.STOCK_MEDIA_PAUSE)
s = self._add_action(_("_Shut Down"), "shutdown", None)
@ -49,7 +49,7 @@ Index: virt-manager-2.2.0/virtManager/vmmenu.py
self.add(Gtk.SeparatorMenuItem())
self._add_action(_("Clone..."), "clone",
@@ -125,7 +128,7 @@ class VMActionMenu(_VMMenu):
@@ -120,7 +123,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-2.2.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()),
@@ -142,6 +145,8 @@ class VMActionMenu(_VMMenu):
@@ -137,6 +140,8 @@ class VMActionMenu(_VMMenu):
child.get_submenu().update_widget_states(vm)
if name in statemap:
child.set_sensitive(statemap[name])

View File

@ -1,16 +1,16 @@
References: bnc#907958
Sanity check for those who forget '-X' on ssh and try to start virt-manager
Index: virt-manager-2.2.0/virt-manager
Index: virt-manager-3.0.0/virtManager/virtmanager.py
===================================================================
--- virt-manager-2.2.0.orig/virt-manager
+++ virt-manager-2.2.0/virt-manager
@@ -66,8 +66,11 @@ def _import_gtk(leftovers):
--- virt-manager-3.0.0.orig/virtManager/virtmanager.py
+++ virt-manager-3.0.0/virtManager/virtmanager.py
@@ -67,8 +67,11 @@ def _import_gtk(leftovers):
print("gtk3 3.22.0 or later is required.")
sys.exit(1)
- # This will error if Gtk wasn't correctly initialized
- Gtk.init()
+ if os.environ.has_key('DISPLAY') and os.environ['DISPLAY']:
+ if 'DISPLAY' in os.environ and os.environ['DISPLAY']:
+ # This will error if Gtk wasn't correctly initialized
+ Gtk.Window()
+ else:

View File

@ -1,12 +1,12 @@
Index: virt-manager-2.0.0/data/virt-manager.desktop.in
Index: virt-manager-3.0.0/data/virt-manager.desktop.in
===================================================================
--- virt-manager-2.0.0.orig/data/virt-manager.desktop.in
+++ virt-manager-2.0.0/data/virt-manager.desktop.in
--- virt-manager-3.0.0.orig/data/virt-manager.desktop.in
+++ virt-manager-3.0.0/data/virt-manager.desktop.in
@@ -1,8 +1,19 @@
[Desktop Entry]
_Name=Virtual Machine Manager
-_Comment=Manage virtual machines
+_Comment=Manage Virtual Machines for Xen and KVM
Name=Virtual Machine Manager
-Comment=Manage virtual machines
+Comment=Manage Virtual Machines for Xen and KVM
Icon=virt-manager
-Exec=virt-manager
+Version=1.0

View File

@ -4,11 +4,11 @@ in this patch anyways to correctly set up a bus if a floppy were
added.
Index: virt-manager-2.2.1/virtManager/addhardware.py
Index: virt-manager-3.0.0/virtManager/addhardware.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/addhardware.py
+++ virt-manager-2.2.1/virtManager/addhardware.py
@@ -528,6 +528,9 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-3.0.0.orig/virtManager/addhardware.py
+++ virt-manager-3.0.0/virtManager/addhardware.py
@@ -481,6 +481,9 @@ class vmmAddHardware(vmmGObjectUI):
buses = domcaps.devices.disk.get_enum("bus").get_values()
else:
buses = vmmAddHardware.disk_old_recommended_buses(guest)
@ -18,16 +18,15 @@ Index: virt-manager-2.2.1/virtManager/addhardware.py
bus_map = {
"disk": ["ide", "sata", "scsi", "sd", "usb", "virtio", "xen"],
@@ -539,7 +542,7 @@ class vmmAddHardware(vmmGObjectUI):
@@ -500,6 +503,7 @@ class vmmAddHardware(vmmGObjectUI):
"usb": _("USB"),
"virtio": _("VirtIO"),
"xen": _("Xen"),
+ "fdc": _("FDC"),
}
return bus_mappings.get(bus, bus)
@staticmethod
def disk_pretty_bus(bus):
- if bus in ["ide", "sata", "scsi", "usb", "sd"]:
+ if bus in ["ide", "sata", "scsi", "usb", "sd", "fdc"]:
return bus.upper()
if bus in ["xen"]:
return bus.capitalize()
@@ -724,8 +727,9 @@ class vmmAddHardware(vmmGObjectUI):
@@ -681,8 +685,9 @@ class vmmAddHardware(vmmGObjectUI):
"drive-harddisk", _("Disk device")])
target_model.append([DeviceDisk.DEVICE_CDROM,
"media-optical", _("CDROM device")])

View File

@ -1,16 +1,16 @@
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-2.0.0/virtManager/delete.py
Index: virt-manager-3.0.0/virtManager/delete.py
===================================================================
--- virt-manager-2.0.0.orig/virtManager/delete.py
+++ virt-manager-2.0.0/virtManager/delete.py
@@ -246,7 +246,7 @@ def populate_storage_list(storage_list,
diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False, True))
--- virt-manager-3.0.0.orig/virtManager/delete.py
+++ virt-manager-3.0.0/virtManager/delete.py
@@ -458,7 +458,7 @@ def _populate_storage_list(storage_list,
model.clear()
for target, path, ro, shared, is_media in diskdata:
- if not path:
+ if not path or path == "/usr/lib/grub2/x86_64-xen/grub.xen":
for diskdata in diskdatas:
- if not diskdata.path:
+ if not diskdata.path or diskdata.path == "/usr/lib/grub2/x86_64-xen/grub.xen":
continue
# There are a few pieces here

View File

@ -1,5 +1,7 @@
--- virt-manager-2.2.0/virtManager/xmleditor.py.orig 2019-06-25 12:21:53.267971599 -0600
+++ virt-manager-2.2.0/virtManager/xmleditor.py 2019-06-25 12:22:20.854908884 -0600
Index: virt-manager-3.0.0/virtManager/xmleditor.py
===================================================================
--- virt-manager-3.0.0.orig/virtManager/xmleditor.py
+++ virt-manager-3.0.0/virtManager/xmleditor.py
@@ -7,12 +7,12 @@ import gi
from virtinst import log
@ -7,13 +9,13 @@
-try:
- gi.require_version("GtkSource", "4")
- log.debug("Using GtkSource 4")
-except ValueError:
-except ValueError: # pragma: no cover
- gi.require_version("GtkSource", "3.0")
- log.debug("Using GtkSource 3.0")
+#try:
+# gi.require_version("GtkSource", "4")
+# log.debug("Using GtkSource 4")
+#except ValueError:
+#except ValueError: # pragma: no cover
+# gi.require_version("GtkSource", "3.0")
+# log.debug("Using GtkSource 3.0")
from gi.repository import GtkSource

View File

@ -2,10 +2,10 @@ Creates a problem for gobject-introspection identifying what
version of vte is really allowed. Vte 2.91 is installed on the
host but the RPM is built requiring 2.90.
Index: virt-manager-2.2.0/virtManager/details/serialcon.py
Index: virt-manager-3.0.0/virtManager/details/serialcon.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/details/serialcon.py
+++ virt-manager-2.2.0/virtManager/details/serialcon.py
--- virt-manager-3.0.0.orig/virtManager/details/serialcon.py
+++ virt-manager-3.0.0/virtManager/details/serialcon.py
@@ -12,12 +12,12 @@ from gi.repository import Gtk
from virtinst import log
@ -13,13 +13,13 @@ Index: virt-manager-2.2.0/virtManager/details/serialcon.py
-try:
- gi.require_version("Vte", "2.91")
- log.debug("Using VTE API 2.91")
-except ValueError:
-except ValueError: # pragma: no cover
- gi.require_version("Vte", "2.90")
- log.debug("Using VTE API 2.90")
+#try:
+# gi.require_version("Vte", "2.91")
+# log.debug("Using VTE API 2.91")
+#except ValueError:
+#except ValueError: # pragma: no cover
+# gi.require_version("Vte", "2.90")
+# log.debug("Using VTE API 2.90")
from gi.repository import Vte

View File

@ -1,40 +0,0 @@
--- virt-manager-2.1.0/virt-clone.orig 2019-02-04 10:40:20.390102363 -0700
+++ virt-manager-2.1.0/virt-clone 2019-02-04 10:40:41.122360052 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Copyright(c) FUJITSU Limited 2007.
#
--- virt-manager-2.1.0/virt-convert.orig 2019-02-04 10:41:50.275219728 -0700
+++ virt-manager-2.1.0/virt-convert 2019-02-04 10:41:55.563285476 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Copyright 2008, 2013, 2014 Red Hat, Inc.
#
--- virt-manager-2.1.0/virt-install.orig 2019-02-04 10:41:17.258809255 -0700
+++ virt-manager-2.1.0/virt-install 2019-02-04 10:41:22.370872807 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Copyright 2005-2014 Red Hat, Inc.
#
--- virt-manager-2.1.0/virt-manager.orig 2019-02-04 10:41:02.902630789 -0700
+++ virt-manager-2.1.0/virt-manager 2019-02-04 10:41:11.870742273 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Copyright (C) 2006, 2014 Red Hat, Inc.
# Copyright (C) 2006 Daniel P. Berrange <berrange@redhat.com>
--- virt-manager-2.1.0/virt-xml.orig 2019-02-04 10:41:32.923003992 -0700
+++ virt-manager-2.1.0/virt-xml 2019-02-04 10:41:38.803077096 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Copyright 2013-2014 Red Hat, Inc.
#

View File

@ -3,11 +3,11 @@ virt-manager no longer tracks the saved state but leaves it up to libvirt.
Libvirt returns libvirt.VIR_DOMAIN_PMSUSPENDED after a vm has been 'saved'.
Index: virt-manager-2.2.0/virtManager/object/domain.py
Index: virt-manager-3.0.0/virtManager/object/domain.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/object/domain.py
+++ virt-manager-2.2.0/virtManager/object/domain.py
@@ -1454,7 +1454,8 @@ class vmmDomain(vmmLibvirtObject):
--- virt-manager-3.0.0.orig/virtManager/object/domain.py
+++ virt-manager-3.0.0/virtManager/object/domain.py
@@ -1530,7 +1530,8 @@ class vmmDomain(vmmLibvirtObject):
return (self.is_stoppable() or
self.status() in [libvirt.VIR_DOMAIN_CRASHED])
def is_runable(self):

View File

@ -2,16 +2,16 @@ References: bnc#892003
For very large memory VMs Xen takes a long time scrubbing memory
which causes the libvirt connection to timeout. Upstream was not
interested in making this a preferences option (4/11/2015)
Index: virt-manager-2.2.1/virtManager/connection.py
Index: virt-manager-3.0.0/virtManager/connection.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/connection.py
+++ virt-manager-2.2.1/virtManager/connection.py
@@ -995,7 +995,7 @@ class vmmConnection(vmmGObject):
--- virt-manager-3.0.0.orig/virtManager/connection.py
+++ virt-manager-3.0.0/virtManager/connection.py
@@ -970,7 +970,7 @@ class vmmConnection(vmmGObject):
self._add_conn_events()
try:
- self._backend.setKeepAlive(20, 1)
+ self._backend.setKeepAlive(20, 10)
except Exception as e:
if (not isinstance(e, AttributeError) and
not self.support.is_error_nosupport(e)):
log.debug("Failed to setKeepAlive: %s", str(e))

View File

@ -1,15 +1,15 @@
/usr/bin/kvm doesn't exist on suse distros so check instead for
/usr/bin/qemu-system-x86_64
Index: virt-manager-2.2.0/virtManager/createconn.py
Index: virt-manager-3.0.0/virtManager/createconn.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/createconn.py
+++ virt-manager-2.2.0/virtManager/createconn.py
@@ -67,7 +67,7 @@ class vmmCreateConn(vmmGObjectUI):
--- virt-manager-3.0.0.orig/virtManager/createconn.py
+++ virt-manager-3.0.0/virtManager/createconn.py
@@ -33,7 +33,7 @@ def _default_uri(): # pragma: no cover
if (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or
- os.path.exists("/usr/bin/kvm") or
+ os.path.exists("/usr/bin/qemu-system-x86_64") or
os.path.exists("/usr/libexec/qemu-kvm") or
glob.glob("/usr/bin/qemu-system-*")):
return "qemu:///system"
if (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or
- os.path.exists("/usr/bin/kvm") or
+ os.path.exists("/usr/bin/qemu-system-x86_64") or
os.path.exists("/usr/libexec/qemu-kvm") or
glob.glob("/usr/bin/qemu-system-*")):
return "qemu:///system"

View File

@ -1,250 +0,0 @@
Index: virt-manager-2.2.1/virt-manager
===================================================================
--- virt-manager-2.2.1.orig/virt-manager
+++ virt-manager-2.2.1/virt-manager
@@ -66,7 +66,7 @@ def _import_gtk(leftovers):
print("gtk3 3.22.0 or later is required.")
sys.exit(1)
- if os.environ.has_key('DISPLAY') and os.environ['DISPLAY']:
+ if 'DISPLAY' in os.environ and os.environ['DISPLAY']:
# This will error if Gtk wasn't correctly initialized
Gtk.Window()
else:
Index: virt-manager-2.2.1/virtManager/details/console.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/details/console.py
+++ virt-manager-2.2.1/virtManager/details/console.py
@@ -21,7 +21,7 @@ from ..vmwindow import DETAILS_PAGE_CONS
(_CONSOLE_PAGE_UNAVAILABLE,
_CONSOLE_PAGE_AUTHENTICATE,
_CONSOLE_PAGE_SERIAL,
- _CONSOLE_PAGE_VIEWER) = range(4)
+ _CONSOLE_PAGE_VIEWER) = list(range(4))
class _TimedRevealer(vmmGObject):
Index: virt-manager-2.2.1/virtManager/connection.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/connection.py
+++ virt-manager-2.2.1/virtManager/connection.py
@@ -159,7 +159,7 @@ class vmmConnection(vmmGObject):
(_STATE_DISCONNECTED,
_STATE_CONNECTING,
- _STATE_ACTIVE) = range(1, 4)
+ _STATE_ACTIVE) = list(range(1, 4))
def __init__(self, uri):
self._uri = uri
Index: virt-manager-2.2.1/virtManager/addhardware.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/addhardware.py
+++ virt-manager-2.2.1/virtManager/addhardware.py
@@ -44,7 +44,7 @@ from .xmleditor import vmmXMLEditor
PAGE_TPM,
PAGE_RNG,
PAGE_PANIC,
- PAGE_VSOCK) = range(17)
+ PAGE_VSOCK) = list(range(17))
def _build_combo(combo, values, default_value=None, sort=True):
Index: virt-manager-2.2.1/virtManager/details/snapshots.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/details/snapshots.py
+++ virt-manager-2.2.1/virtManager/details/snapshots.py
@@ -55,7 +55,7 @@ def _make_screenshot_pixbuf(mime, sdata)
def _mime_to_ext(val, reverse=False):
- for m, e in mimemap.items():
+ for m, e in list(mimemap.items()):
if val == m and not reverse:
return e
if val == e and reverse:
Index: virt-manager-2.2.1/virtManager/engine.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/engine.py
+++ virt-manager-2.2.1/virtManager/engine.py
@@ -22,7 +22,7 @@ from .lib.inspection import vmmInspectio
from .systray import vmmSystray
(PRIO_HIGH,
- PRIO_LOW) = range(1, 3)
+ PRIO_LOW) = list(range(1, 3))
def _show_startup_error(fn):
Index: virt-manager-2.2.1/virtManager/device/mediacombo.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/device/mediacombo.py
+++ virt-manager-2.2.1/virtManager/device/mediacombo.py
@@ -22,7 +22,7 @@ class vmmMediaCombo(vmmGObjectUI):
(MEDIA_FIELD_PATH,
MEDIA_FIELD_LABEL,
MEDIA_FIELD_HAS_MEDIA,
- MEDIA_FIELD_KEY) = range(MEDIA_FIELDS_NUM)
+ MEDIA_FIELD_KEY) = list(range(MEDIA_FIELDS_NUM))
def __init__(self, conn, builder, topwin):
vmmGObjectUI.__init__(self, None, None, builder=builder, topwin=topwin)
Index: virt-manager-2.2.1/virtManager/manager.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/manager.py
+++ virt-manager-2.2.1/virtManager/manager.py
@@ -33,7 +33,7 @@ ROW_IS_CONN_CONNECTED,
ROW_IS_VM,
ROW_IS_VM_RUNNING,
ROW_COLOR,
-ROW_INSPECTION_OS_ICON) = range(11)
+ROW_INSPECTION_OS_ICON) = list(range(11))
# Columns in the tree view
(COL_NAME,
@@ -41,7 +41,7 @@ COL_GUEST_CPU,
COL_HOST_CPU,
COL_MEM,
COL_DISK,
-COL_NETWORK) = range(6)
+COL_NETWORK) = list(range(6))
def _style_get_prop(widget, propname):
Index: virt-manager-2.2.1/virtManager/device/addstorage.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/device/addstorage.py
+++ virt-manager-2.2.1/virtManager/device/addstorage.py
@@ -108,7 +108,7 @@ class vmmAddStorage(vmmGObjectUI):
errmsg = _("Errors were encountered changing permissions for the "
"following directories:")
details = ""
- for p, error in errors.items():
+ for p, error in list(errors.items()):
if p not in broken_paths:
continue
details += "%s : %s\n" % (p, error)
Index: virt-manager-2.2.1/virtManager/details/details.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/details/details.py
+++ virt-manager-2.2.1/virtManager/details/details.py
@@ -104,7 +104,7 @@ from ..xmleditor import vmmXMLEditor
EDIT_FS,
- EDIT_HOSTDEV_ROMBAR) = range(1, 59)
+ EDIT_HOSTDEV_ROMBAR) = list(range(1, 59))
# Columns in hw list model
@@ -112,7 +112,7 @@ from ..xmleditor import vmmXMLEditor
HW_LIST_COL_ICON_NAME,
HW_LIST_COL_TYPE,
HW_LIST_COL_DEVICE,
- HW_LIST_COL_KEY) = range(5)
+ HW_LIST_COL_KEY) = list(range(5))
# Types for the hw list model: numbers specify what order they will be listed
(HW_LIST_TYPE_GENERAL,
@@ -137,7 +137,7 @@ from ..xmleditor import vmmXMLEditor
HW_LIST_TYPE_TPM,
HW_LIST_TYPE_RNG,
HW_LIST_TYPE_PANIC,
- HW_LIST_TYPE_VSOCK) = range(23)
+ HW_LIST_TYPE_VSOCK) = list(range(23))
remove_pages = [HW_LIST_TYPE_NIC, HW_LIST_TYPE_INPUT,
HW_LIST_TYPE_GRAPHICS, HW_LIST_TYPE_SOUND, HW_LIST_TYPE_CHAR,
@@ -152,7 +152,7 @@ remove_pages = [HW_LIST_TYPE_NIC, HW_LIS
BOOT_LABEL,
BOOT_ICON,
BOOT_ACTIVE,
- BOOT_CAN_SELECT) = range(5)
+ BOOT_CAN_SELECT) = list(range(5))
def _calculate_disk_bus_index(disklist):
Index: virt-manager-2.2.1/virtManager/createvm.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -40,7 +40,7 @@ DEFAULT_MEM = 1024
PAGE_INSTALL,
PAGE_MEM,
PAGE_STORAGE,
- PAGE_FINISH) = range(5)
+ PAGE_FINISH) = list(range(5))
(INSTALL_PAGE_ISO,
INSTALL_PAGE_URL,
@@ -48,13 +48,13 @@ DEFAULT_MEM = 1024
INSTALL_PAGE_IMPORT,
INSTALL_PAGE_CONTAINER_APP,
INSTALL_PAGE_CONTAINER_OS,
- INSTALL_PAGE_VZ_TEMPLATE) = range(7)
+ INSTALL_PAGE_VZ_TEMPLATE) = list(range(7))
# Column numbers for os type/version list models
(OS_COL_ID,
OS_COL_LABEL,
OS_COL_IS_SEP,
- OS_COL_IS_SHOW_ALL) = range(4)
+ OS_COL_IS_SHOW_ALL) = list(range(4))
#####################
@@ -2123,7 +2123,7 @@ class vmmCreateVM(vmmGObjectUI):
'insecure': self._get_config_oscontainer_isecure,
'root_password': self._get_config_oscontainer_root_password,
}
- for key, getter in bootstrap_arg_keys.items():
+ for key, getter in list(bootstrap_arg_keys.items()):
bootstrap_args[key] = getter()
parentobj = self._customize_window or self
Index: virt-manager-2.2.1/virtManager/preferences.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/preferences.py
+++ virt-manager-2.2.1/virtManager/preferences.py
@@ -129,7 +129,7 @@ class vmmPreferences(vmmGObjectUI):
}
model.append([-1, _("System default (%s)") %
vals[self.config.default_console_resizeguest]])
- for key, val in vals.items():
+ for key, val in list(vals.items()):
model.append([key, val])
combo.set_model(model)
uiutil.init_combo_text_column(combo, 1)
Index: virt-manager-2.2.1/virtManager/migrate.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/migrate.py
+++ virt-manager-2.2.1/virtManager/migrate.py
@@ -23,7 +23,7 @@ from .object.domain import vmmDomain
NUM_COLS = 3
(COL_LABEL,
COL_URI,
- COL_CAN_MIGRATE) = range(NUM_COLS)
+ COL_CAN_MIGRATE) = list(range(NUM_COLS))
class vmmMigrateDialog(vmmGObjectUI):
Index: virt-manager-2.2.1/virtManager/hoststorage.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/hoststorage.py
+++ virt-manager-2.2.1/virtManager/hoststorage.py
@@ -32,13 +32,13 @@ VOL_NUM_COLUMNS = 7
VOL_COLUMN_SIZESTR,
VOL_COLUMN_FORMAT,
VOL_COLUMN_INUSEBY,
- VOL_COLUMN_SENSITIVE) = range(VOL_NUM_COLUMNS)
+ VOL_COLUMN_SENSITIVE) = list(range(VOL_NUM_COLUMNS))
POOL_NUM_COLUMNS = 4
(POOL_COLUMN_CONNKEY,
POOL_COLUMN_LABEL,
POOL_COLUMN_ISACTIVE,
- POOL_COLUMN_PERCENT) = range(POOL_NUM_COLUMNS)
+ POOL_COLUMN_PERCENT) = list(range(POOL_NUM_COLUMNS))
ICON_RUNNING = "state_running"
ICON_SHUTOFF = "state_shutoff"

View File

@ -6,12 +6,12 @@ it is not recognized as a top level dialog on python3 and therefore we explicitl
need to set the connection event. Not getting the event to cleanup leaves us in a
bad state for when the details dialog is reopened.
Index: virt-manager-2.2.0/virtManager/vmwindow.py
Index: virt-manager-3.0.0/virtManager/vmwindow.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/vmwindow.py
+++ virt-manager-2.2.0/virtManager/vmwindow.py
@@ -141,6 +141,9 @@ class vmmVMWindow(vmmGObjectUI):
self.console.details_auth_login),
--- virt-manager-3.0.0.orig/virtManager/vmwindow.py
+++ virt-manager-3.0.0/virtManager/vmwindow.py
@@ -131,6 +131,9 @@ class vmmVMWindow(vmmGObjectUI):
"on_details_menu_view_autoconnect_activate": self._autoconnect_ui_changed_cb,
})
+ # Make sure the delete event is properly registered for the details dialog

View File

@ -1,12 +1,12 @@
Enhancement that gets installation repos from zypper.
These locations are then presented as potential installation
sources when creating a VM.
Index: virt-manager-2.2.1/virtManager/createvm.py
Index: virt-manager-3.0.0/virtManager/createvm.py
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -99,6 +99,70 @@ def is_virt_bootstrap_installed():
return pkgutil.find_loader('virtBootstrap') is not None
--- virt-manager-3.0.0.orig/virtManager/createvm.py
+++ virt-manager-3.0.0/virtManager/createvm.py
@@ -164,6 +164,70 @@ class _GuestData:
return guest
+################################################
@ -76,7 +76,7 @@ Index: virt-manager-2.2.1/virtManager/createvm.py
##############
# Main class #
##############
@@ -368,7 +432,13 @@ class vmmCreateVM(vmmGObjectUI):
@@ -422,7 +486,13 @@ class vmmCreateVM(vmmGObjectUI):
self.widget("install-url-entry").set_text("")
self.widget("install-url-options").set_expanded(False)
urlmodel = self.widget("install-url-combo").get_model()

View File

@ -1,35 +0,0 @@
Index: virt-manager-2.2.0/tests/clitest.py
===================================================================
--- virt-manager-2.2.0.orig/tests/clitest.py
+++ virt-manager-2.2.0/tests/clitest.py
@@ -300,7 +300,7 @@ class Command(object):
def _run(self):
conn = None
- for idx in reversed(range(len(self.argv))):
+ for idx in reversed(list(range(len(self.argv)))):
if self.argv[idx] == "--connect":
conn = utils.URIs.openconn(self.argv[idx + 1])
break
Index: virt-manager-2.2.0/tests/test_inject.py
===================================================================
--- virt-manager-2.2.0.orig/tests/test_inject.py
+++ virt-manager-2.2.0/tests/test_inject.py
@@ -15,7 +15,7 @@ FEDORA_URL = "http://dl.fedoraproject.or
(WARN_RHEL5,
WARN_DEBIAN,
- WARN_FEDORA) = range(1, 4)
+ WARN_FEDORA) = list(range(1, 4))
def prompt():
@@ -117,7 +117,7 @@ def _make_tests():
return lambda s: _test_distro(_d)
idx = 0
- for dname, dobj in _alldistros.items():
+ for dname, dobj in list(_alldistros.items()):
idx += 1
setattr(InjectTests, "testInitrd%.3d_%s" %
(idx, dname.replace("-", "_")), _make_check_cb(dobj))