Hello community, here is the log from the commit of package virt-manager for openSUSE:Factory checked in at 2018-11-10 16:58:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/virt-manager (Old) and /work/SRC/openSUSE:Factory/.virt-manager.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virt-manager" Sat Nov 10 16:58:33 2018 rev:184 rq:645919 version:2.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/virt-manager/virt-manager.changes 2018-10-25 09:13:02.654264591 +0200 +++ /work/SRC/openSUSE:Factory/.virt-manager.new/virt-manager.changes 2018-11-10 16:59:40.607731638 +0100 @@ -1,0 +2,58 @@ +Tue Oct 30 16:06:51 MDT 2018 - carn...@suse.com + +- Upstream bug fixes (bsc#1027942) + b8aff280-virtinst-quickfix-ubuntu-net-preseed-insert-cdrom-error.patch + 25b88733-urldetect-Dont-overload-suse_content-variable.patch + 9308bae3-util-Fix-typo-vpcu-vcpu.patch + +------------------------------------------------------------------- +Tue Oct 30 15:37:09 MDT 2018 - carn...@suse.com + +- Update to virt-manager 2.0.0 (fate#326786) + virt-manager-2.0.0.tar.bz2 + * Finish port to Python 3 (Radostin Stoyanov, Cole Robinson) + * Improved VM defaults for supported OS: q35 PCIe, usb3, CPU host-model + * Search based OS selection UI for new VMs (Daniel P. Berrangé, Cole Robinson) + * Track OS name for lifetime of domain in XML + * Host interface management UI has been completely removed + * Show domain IP on interface details page (Lin Ma, Cole Robinson) + * More efficient stats polling with AllDomainStats (Simon Kobyda, Cole Robinson) + * TPM device model and backend UI (Marc-André Lureau, Stefan Berger) + * Show connection state in UI (Lin Ma) + * Show attached devices in UI (Lin Ma) + * UI option to plug/unplug VM nic link (Simon Kobyda) + * UI support for disk discard and detect_zeroes (Povilas Kanapickas, Lin Ma) + * Improved SUSE –location URL/ISO detection (Charles Arnold) + * cli and UI support for SCSI persistent reservations (Lin Ma) + * cli: Add –network mtu.size= option (Anya Harter) + * cli: Add –disk driver.copy_on_read (Anya Harter) + * cli: Add –disk geometry support (Anya Harter) + * cli: Add –sound codec support (Anya Harter) + * cli: Add –hostdev net/char/block for LXC (Lubomir Rintel) + * cli: Add –memorybacking access_mode and source_type (Marc-André Lureau) + * cli: Add –boot rebootTimout (Yossi Ovadia) + * cli: Add –boot bootloader= + * cli: Add –destroy-on-exit +- Drop patches contained in new tarball or not required + 0004-virtinst-python3-use-binary-mode-for-kernel.patch + 27d4b167-virtinst-update-location-for-opensuse.patch + 5a7698c7-fix-select-network-vol.patch + d15b78ab-virtinst-read-CPU-model-from-domain-capabilities.patch + fd6a8154-virtinst-compare-host-and-domain-cpu-models.patch + 5a7698c7-fix-select-network-vol.patch + virtcli-python2-to-python3-conversion.patch + virtinst-add-ppc64-arch-support.patch + virtinst-check-date-format.patch + virtinst-fix-sle-distro-parsing.patch + virtinst-handle-tumbleweed-treeinfo-file.patch + virtinst-nfs-install-sanitize.patch + virtinst-no-usb-tablet-for-xenpv.patch + virtinst-set-qemu-emulator.patch + virtinst-storage-ocfs2.patch + virtman-add-connect-default.patch + virtman-fix-missing-translations.patch + virtman-libvirtd-not-running.patch + virtman-packages.patch + virtmisc-python2-to-python3-conversion.patch + +------------------------------------------------------------------- Old: ---- 0004-virtinst-python3-use-binary-mode-for-kernel.patch 27d4b167-virtinst-update-location-for-opensuse.patch 5a7698c7-fix-select-network-vol.patch d15b78ab-virtinst-read-CPU-model-from-domain-capabilities.patch fd6a8154-virtinst-compare-host-and-domain-cpu-models.patch virt-manager-1.5.1.tar.bz2 virtcli-python2-to-python3-conversion.patch virtinst-add-ppc64-arch-support.patch virtinst-check-date-format.patch virtinst-fix-sle-distro-parsing.patch virtinst-handle-tumbleweed-treeinfo-file.patch virtinst-nfs-install-sanitize.patch virtinst-no-usb-tablet-for-xenpv.patch virtinst-set-qemu-emulator.patch virtinst-storage-ocfs2.patch virtman-add-connect-default.patch virtman-fix-missing-translations.patch virtman-libvirtd-not-running.patch virtman-packages.patch virtmisc-python2-to-python3-conversion.patch New: ---- 25b88733-urldetect-Dont-overload-suse_content-variable.patch 9308bae3-util-Fix-typo-vpcu-vcpu.patch b8aff280-virtinst-quickfix-ubuntu-net-preseed-insert-cdrom-error.patch virt-manager-2.0.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ virt-manager.spec ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:15.263689281 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:15.267689277 +0100 @@ -12,22 +12,16 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # -%define with_guestfs 0 -%define askpass_package "openssh-askpass" -%define qemu_user "qemu" -%define libvirt_kvm_packages "" -%define libvirt_xen_packages "" -%define preferred_distros "sles15,opensuse15" -%define kvm_packages "" -%define _version 1.5.1 -%define _release 0 +%global __python %{__python3} +%global with_guestfs 0 +%global default_hvs "qemu,xen,lxc" Name: virt-manager -Version: 1.5.1 +Version: 2.0.0 Release: 0 Summary: Virtual Machine Manager License: GPL-2.0-or-later @@ -38,35 +32,28 @@ Source2: virt-install.desktop Source3: virt-manager-supportconfig # Upstream Patches -Patch1: 27d4b167-virtinst-update-location-for-opensuse.patch -Patch2: d15b78ab-virtinst-read-CPU-model-from-domain-capabilities.patch -Patch3: fd6a8154-virtinst-compare-host-and-domain-cpu-models.patch -Patch4: 5a7698c7-fix-select-network-vol.patch +Patch1: b8aff280-virtinst-quickfix-ubuntu-net-preseed-insert-cdrom-error.patch +Patch2: 25b88733-urldetect-Dont-overload-suse_content-variable.patch +Patch3: 9308bae3-util-Fix-typo-vpcu-vcpu.patch # SUSE Only Patch70: virtman-desktop.patch Patch71: virtman-kvm.patch Patch72: virtman-keycombo.patch Patch73: virtman-show-suse-install-repos.patch -Patch74: virtman-libvirtd-not-running.patch -Patch75: virtman-dont-allow-grub.xen-to-be-deleted.patch -Patch76: virtinst-pvgrub2-bootloader.patch -Patch77: virtinst-nfs-install-sanitize.patch +Patch74: virtman-dont-allow-grub.xen-to-be-deleted.patch +Patch75: virtinst-pvgrub2-bootloader.patch # Features or Enhancements Patch101: virtman-default-guest-from-host-os.patch Patch102: virtman-default-to-xen-pv.patch -Patch103: virtman-packages.patch -Patch104: virtman-load-stored-uris.patch -Patch105: virtman-add-connect-default.patch -Patch120: virtinst-storage-ocfs2.patch -Patch121: virtinst-default-xen-to-qcow2-format.patch -Patch122: virtinst-detect-oes-distros.patch -Patch123: virtinst-modify-gui-defaults.patch -Patch124: virtinst-vol-default-nocow.patch -Patch125: virtinst-set-cache-mode-unsafe-for-install.patch -Patch126: virtinst-set-qemu-emulator.patch -Patch127: virtinst-add-ppc64-arch-support.patch -Patch128: virtinst-s390x-disable-graphics.patch -Patch129: virtinst-add-caasp-support.patch +Patch103: virtman-load-stored-uris.patch +Patch120: virtinst-default-xen-to-qcow2-format.patch +Patch121: virtinst-detect-oes-distros.patch +Patch122: virtinst-modify-gui-defaults.patch +Patch123: virtinst-vol-default-nocow.patch +Patch124: virtinst-set-cache-mode-unsafe-for-install.patch +Patch125: virtinst-s390x-disable-graphics.patch +Patch126: virtinst-add-caasp-support.patch +Patch127: virtinst-add-sle15-detection-support.patch # Bug Fixes Patch150: virtman-prevent-double-click-starting-vm-twice.patch Patch151: virtman-increase-setKeepAlive-count.patch @@ -74,32 +61,23 @@ Patch153: virtman-check-for-valid-display.patch Patch154: virtman-allow-creating-i686-vm.patch Patch155: virtman-dont-specify-vte-version.patch -Patch156: virtman-fix-missing-translations.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-fix-sle-distro-parsing.patch -Patch166: virtinst-check-date-format.patch -Patch167: virtinst-no-usb-tablet-for-xenpv.patch -Patch168: virtinst-add-sle15-detection-support.patch -Patch169: virtinst-keep-install-iso-attached.patch -Patch170: virtinst-osdict-get_supported.patch -Patch171: virtinst-dont-use-special-copy-cpu-features.patch -Patch172: virtinst-use-latest-opensuse-version-when-unknown-media.patch -Patch173: virtinst-handle-tumbleweed-treeinfo-file.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-use-latest-opensuse-version-when-unknown-media.patch # Python2 to Python3 patches -Patch200: virtmisc-python2-to-python3-conversion.patch -Patch201: virtcli-python2-to-python3-conversion.patch -Patch202: virtconv-python2-to-python3-conversion.patch -Patch203: virtinst-python2-to-python3-conversion.patch -Patch204: virtman-python2-to-python3-conversion.patch -Patch205: virttests-python2-to-python3-conversion.patch -Patch206: 0002-virtinst-python3-avoid-comparison-of-None-and-int.patch -Patch207: 0003-virtinst-python3-avoid-using-long-type.patch -Patch208: 0004-virtinst-python3-use-binary-mode-for-kernel.patch -Patch209: virtman-register-delete-event-for-details-dialog.patch +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: 0003-virtinst-python3-avoid-using-long-type.patch +Patch206: virtman-register-delete-event-for-details-dialog.patch BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -189,7 +167,6 @@ %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 # SUSE Only %patch70 -p1 %patch71 -p1 @@ -197,14 +174,10 @@ %patch73 -p1 %patch74 -p1 %patch75 -p1 -%patch76 -p1 -%patch77 -p1 # Enhancements %patch101 -p1 %patch102 -p1 %patch103 -p1 -%patch104 -p1 -%patch105 -p1 %patch120 -p1 %patch121 -p1 %patch122 -p1 @@ -213,8 +186,6 @@ %patch125 -p1 %patch126 -p1 %patch127 -p1 -%patch128 -p1 -%patch129 -p1 # Bug Fixes %patch150 -p1 %patch151 -p1 @@ -222,7 +193,6 @@ %patch153 -p1 %patch154 -p1 %patch155 -p1 -%patch156 -p1 %patch160 -p1 %patch161 -p1 %patch162 -p1 @@ -232,11 +202,6 @@ %patch166 -p1 %patch167 -p1 %patch168 -p1 -%patch169 -p1 -%patch170 -p1 -%patch171 -p1 -%patch172 -p1 -%patch173 -p1 # Python2 to Python3 patches %patch200 -p1 %patch201 -p1 @@ -245,45 +210,16 @@ %patch204 -p1 %patch205 -p1 %patch206 -p1 -%patch207 -p1 -%patch208 -p1 -%patch209 -p1 %build -%if %{qemu_user} -%define _qemu_user --qemu-user=%{qemu_user} -%endif - -%if %{kvm_packages} -%define _kvm_packages --kvm-package-names=%{kvm_packages} -%endif - -%if %{preferred_distros} -%define _preferred_distros --preferred-distros=%{preferred_distros} -%endif - -%if %{libvirt_kvm_packages} -%define _libvirt_kvm_packages --libvirt-kvm-package-names=%{libvirt_kvm_packages} -%endif - -%if %{libvirt_xen_packages} -%define _libvirt_xen_packages --libvirt-xen-package-names=%{libvirt_xen_packages} -%endif - -%if %{askpass_package} -%define _askpass_package --askpass-package-names=%{askpass_package} +%if %{default_hvs} +%global _default_hvs --default-hvs %{default_hvs} %endif python3 setup.py configure \ --prefix=%{_prefix} \ --default-graphics="spice" \ - %{?_qemu_user} \ - %{?_kvm_packages} \ - %{?_libvirt_kvm_packages} \ - %{?_libvirt_xen_packages} \ - %{?_askpass_package} \ - %{?_preferred_distros} \ - %{?_default_graphics} + %{?_default_hvs} %install python3 setup.py \ @@ -338,7 +274,6 @@ %{_datadir}/applications/%{name}.desktop %{_datadir}/applications/YaST2/virt-install.desktop %{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml -%{_datadir}/GConf/gsettings/org.virt-manager.virt-manager.convert %dir /usr/lib/supportconfig %dir /usr/lib/supportconfig/plugins /usr/lib/supportconfig/plugins/virt_manager @@ -365,8 +300,6 @@ %dir %{_datadir}/YaST2 %dir %{_datadir}/YaST2/clients %dir %{_datadir}/applications/YaST2 -%dir %{_datadir}/GConf -%dir %{_datadir}/GConf/gsettings %dir %{_datadir}/appdata %{_datadir}/YaST2/clients/virt-install.rb ++++++ 0002-virtinst-python3-avoid-comparison-of-None-and-int.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:15.331689198 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:15.331689198 +0100 @@ -14,11 +14,11 @@ virtinst/progress.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/virtinst/progress.py b/virtinst/progress.py -index e07591a14fa0..eef3f7613506 100644 ---- a/virtinst/progress.py -+++ b/virtinst/progress.py -@@ -339,7 +339,7 @@ class RateEstimator: +Index: virt-manager-2.0.0/virtinst/progress.py +=================================================================== +--- virt-manager-2.0.0.orig/virtinst/progress.py ++++ virt-manager-2.0.0/virtinst/progress.py +@@ -321,7 +321,7 @@ class RateEstimator: self.start_time = now self.last_update_time = now self.last_amount_read = 0 @@ -27,7 +27,7 @@ def update(self, amount_read, now=None): if now is None: now = time.time() -@@ -351,7 +351,7 @@ class RateEstimator: +@@ -333,7 +333,7 @@ class RateEstimator: # if we just started this file, all bets are off self.last_update_time = now self.last_amount_read = amount_read @@ -36,6 +36,3 @@ return #print 'times', now, self.last_update_time --- -2.15.1 - ++++++ 0003-virtinst-python3-avoid-using-long-type.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:15.339689188 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:15.343689184 +0100 @@ -12,27 +12,24 @@ virtinst/progress.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -diff --git a/virtinst/progress.py b/virtinst/progress.py -index eef3f7613506..bea4fad98938 100644 ---- a/virtinst/progress.py -+++ b/virtinst/progress.py -@@ -30,6 +30,7 @@ import math +Index: virt-manager-2.0.0/virtinst/progress.py +=================================================================== +--- virt-manager-2.0.0.orig/virtinst/progress.py ++++ virt-manager-2.0.0/virtinst/progress.py +@@ -16,6 +16,7 @@ import math import fcntl import struct import termios +from six import integer_types - # Code from http://mail.python.org/pipermail/python-list/2000-May/033365.html + # Code from https://mail.python.org/pipermail/python-list/2000-May/033365.html def terminal_width(fd=1): -@@ -481,7 +482,7 @@ def format_number(number, SI=0, space=' '): +@@ -464,7 +465,7 @@ def format_number(number, SI=0, space=' depth = depth + 1 number = number / step -- if isinstance(number, int) or isinstance(number, int): +- if isinstance(number, int): + if isinstance(number, integer_types): # it's an int or a long, which means it didn't get divided, # which means it's already short enough fmt = '%i%s%s' --- -2.15.1 - ++++++ 25b88733-urldetect-Dont-overload-suse_content-variable.patch ++++++ Subject: urldetect: Don't overload suse_content variable From: Cole Robinson crobi...@redhat.com Thu Oct 18 17:16:14 2018 -0400 Date: Thu Oct 18 17:16:14 2018 -0400: Git: 25b8873340cd7523a74babbd5b6c0f5c66935a05 Use an explicit check_for_suse_content variable rather than stuffing -1 into suse_content diff --git a/virtinst/urldetect.py b/virtinst/urldetect.py index 4196b10..455ae00 100644 --- a/virtinst/urldetect.py +++ b/virtinst/urldetect.py @@ -28,6 +28,7 @@ class _DistroCache(object): self.treeinfo_name = None self.suse_content = None + self.checked_for_suse_content = False self.debian_media_type = None def acquire_file_content(self, path): @@ -493,8 +494,8 @@ class SuseDistro(Distro): if cache.treeinfo_family_regex(cls.famregex): return True - if not cache.suse_content: - cache.suse_content = -1 + if not cache.checked_for_suse_content: + cache.checked_for_suse_content = True content_str = cache.acquire_file_content("content") if content_str is None: return False @@ -505,7 +506,7 @@ class SuseDistro(Distro): logging.debug("Error parsing SUSE content file: %s", str(e)) return False - if cache.suse_content == -1: + if not cache.suse_content: return False for regex in cls._suse_regex: if re.match(regex, cache.suse_content.product_name): @@ -515,7 +516,7 @@ class SuseDistro(Distro): def __init__(self, *args, **kwargs): Distro.__init__(self, *args, **kwargs) - if not self.cache.suse_content or self.cache.suse_content == -1: + if not self.cache.suse_content: # This means we matched on treeinfo self._kernel_paths = self.cache.get_treeinfo_media(self.type) return ++++++ 9308bae3-util-Fix-typo-vpcu-vcpu.patch ++++++ Subject: util: Fix typo vpcu -> vcpu From: Martin Kletzander mklet...@redhat.com Mon Oct 22 14:46:03 2018 +0100 Date: Mon Oct 22 15:05:30 2018 +0100: Git: 9308bae310ff7889876d8c9d6f0187356e0fa2ce Signed-off-by: Martin Kletzander <mklet...@redhat.com> diff --git a/man/virt-install.pod b/man/virt-install.pod index 8cd56fe..062c785 100644 --- a/man/virt-install.pod +++ b/man/virt-install.pod @@ -262,7 +262,7 @@ Tune CPU parameters for the guest. Configure which of the host's physical CPUs the domain VCPU will be pinned to. Example invocation - --cputune vpcupin0.vcpu=0,vpcupin0.cpuset=0-3,vpcupin1.vcpu=1,vpcupin1.cpuset=4-7 + --cputune vcpupin0.vcpu=0,vcpupin0.cpuset=0-3,vcpupin1.vcpu=1,vcpupin1.cpuset=4-7 Use --cputune=? to see a list of all available sub options. Complete details at L<https://libvirt.org/formatdomain.html#elementsCPUTuning> ++++++ b8aff280-virtinst-quickfix-ubuntu-net-preseed-insert-cdrom-error.patch ++++++ Subject: virtinst: quickfix ubuntu net-preseed insert cdrom error From: Johannes Tiefenbacher johannes.tiefenbac...@svc.co.at Tue Oct 9 15:52:23 2018 +0200 Date: Thu Oct 18 13:21:41 2018 -0400: Git: b8aff28087d593f570b13aabe337b659bc260ae3 the proper kernel/initrd pair for booting from an http server is found in install/netboot/... on a mounted ubuntu iso. this last worked in v1.4.2 Discussion: https://github.com/virt-manager/virt-manager/pull/34 (crobinso: add the fetcher.is_iso handling and add a comment) diff --git a/virtinst/urldetect.py b/virtinst/urldetect.py index 5da15d0..4196b10 100644 --- a/virtinst/urldetect.py +++ b/virtinst/urldetect.py @@ -30,7 +30,6 @@ class _DistroCache(object): self.suse_content = None self.debian_media_type = None - def acquire_file_content(self, path): if path not in self._filecache: try: @@ -133,6 +132,9 @@ class _DistroCache(object): verstr, version, update) return version, update + def fetcher_is_iso(self): + return self._fetcher.is_iso() + class _SUSEContent(object): """ @@ -664,7 +666,16 @@ class DebianDistro(Distro): media_type = "daily" elif cache.content_regex(".disk/info", "%s.*" % cls._debname.capitalize()): - media_type = "disk" + # There's two cases here: + # 1) Direct access ISO, attached as CDROM afterwards. We + # use one set of kernels in that case which seem to + # assume the prescence of CDROM media + # 2) ISO mounted and exported over URL. We use a different + # set of kernels that expect to boot from the network + if cache.fetcher_is_iso(): + media_type = "disk" + else: + media_type = "mounted_iso_url" if media_type: cache.debian_media_type = media_type @@ -710,6 +721,8 @@ class DebianDistro(Distro): url_prefix = "current/images" if self.cache.debian_media_type == "daily": url_prefix = "daily" + elif self.cache.debian_media_type == "mounted_iso_url": + url_prefix = "install" tree_arch = self._find_treearch() hvmroot = "%s/netboot/%s-installer/%s/" % (url_prefix, diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py index 56c024a..e18fe98 100644 --- a/virtinst/urlfetcher.py +++ b/virtinst/urlfetcher.py @@ -26,6 +26,7 @@ class _URLFetcher(object): a media source, such as CD ISO, or HTTP/HTTPS/FTP server """ _block_size = 16384 + _is_iso = False def __init__(self, location, scratchdir, meter): self.location = location @@ -101,6 +102,12 @@ class _URLFetcher(object): # Public API # ############## + def is_iso(self): + """ + If this is a fetcher for local CDROM/ISO + """ + return self._is_iso + def prepareLocation(self): """ Perform any necessary setup @@ -288,6 +295,7 @@ class _LocalURLFetcher(_URLFetcher): class _ISOURLFetcher(_URLFetcher): _cache_file_list = None + _is_iso = True def _make_full_url(self, filename): return "/" + filename ++++++ virt-manager-1.5.1.tar.bz2 -> virt-manager-2.0.0.tar.bz2 ++++++ ++++ 460172 lines of diff (skipped) ++++++ virtconv-python2-to-python3-conversion.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:18.815684942 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:18.819684936 +0100 @@ -1,18 +1,8 @@ -Index: virt-manager-1.4.3/virt-convert +Index: virt-manager-2.0.0/virtconv/vmx.py =================================================================== ---- virt-manager-1.4.3.orig/virt-convert -+++ virt-manager-1.4.3/virt-convert -@@ -1,4 +1,4 @@ --#!/usr/bin/env python2 -+#!/usr/bin/python3 - # - # Copyright 2008, 2013, 2014 Red Hat, Inc. - # Joey Boggs <jbo...@redhat.com> -Index: virt-manager-1.4.3/virtconv/vmx.py -=================================================================== ---- virt-manager-1.4.3.orig/virtconv/vmx.py -+++ virt-manager-1.4.3/virtconv/vmx.py -@@ -271,7 +271,7 @@ class vmx_parser(parser_class): +--- virt-manager-2.0.0.orig/virtconv/vmx.py ++++ virt-manager-2.0.0/virtconv/vmx.py +@@ -259,7 +259,7 @@ class vmx_parser(parser_class): def _find_keys(prefixes): ret = [] @@ -21,29 +11,3 @@ for p in util.listify(prefixes): if key.startswith(p): ret.append((key, value)) -Index: virt-manager-1.4.3/virtconv/ovf.py -=================================================================== ---- virt-manager-1.4.3.orig/virtconv/ovf.py -+++ virt-manager-1.4.3/virtconv/ovf.py -@@ -90,7 +90,7 @@ def node_list(node): - child = node.children - while child: - child_list.append(child) -- child = child.next -+ child = child.__next__ - return child_list - - -Index: virt-manager-1.4.3/virtconv/formats.py -=================================================================== ---- virt-manager-1.4.3.orig/virtconv/formats.py -+++ virt-manager-1.4.3/virtconv/formats.py -@@ -19,7 +19,7 @@ - # MA 02110-1301 USA. - # - --from __future__ import print_function -+ - - from distutils.spawn import find_executable - import logging ++++++ virtinst-add-caasp-support.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:19.023684687 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:19.039684668 +0100 @@ -1,40 +1,43 @@ References: bsc#1010060 -Index: virt-manager-1.5.1/virtinst/urlfetcher.py +Index: virt-manager-2.0.0/virtinst/urldetect.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/urlfetcher.py -+++ virt-manager-1.5.1/virtinst/urlfetcher.py -@@ -490,6 +490,12 @@ def _distroFromSUSEContent(fetcher, arch - dclass = OESDistro - if distro_version is None: - distro_version = _parse_sle_distribution(distribution) -+ elif re.match(".*SUSE Container as a Service Platform*", distribution[1]) or \ -+ re.match(".*SUSE CaaS Platform*", distribution[1]): -+ dclass = CAASPDistro -+ if distro_version is None: -+ dparts = distribution[1].strip().rsplit(' ') -+ distro_version = ['VERSION', dparts[len(dparts)-1]] - elif re.match(".*openSUSE.*", distribution[1]): - dclass = OpensuseDistro - if distro_version is None: -@@ -1076,6 +1082,8 @@ class SuseDistro(Distro): - self.os_variant += major_version + 'sp' + sp_version - else: - self.os_variant += major_version -+ elif self.os_variant.startswith("caasp"): -+ self.os_variant = "caasp" + distro_version - else: - self.os_variant += "9" - -@@ -1122,6 +1130,11 @@ class SLESDistro(SuseDistro): - class SLEDDistro(SuseDistro): - urldistro = "sled" +--- virt-manager-2.0.0.orig/virtinst/urldetect.py ++++ virt-manager-2.0.0/virtinst/urldetect.py +@@ -238,6 +238,12 @@ class _SUSEContent(object): + self.product_name.strip().rsplit(' ')[5][2]) + distro_version = sle_version ++ # SUSE Container as a Service Platform ++ if "Container" in self.product_name: ++ distro_version = self.product_name.strip().rsplit(' ')[6] ++ elif "CaaS" in self.product_name: ++ distro_version = self.product_name.strip().rsplit(' ')[3] + + return distro_version + + +@@ -570,6 +576,9 @@ class SuseDistro(Distro): + # Tumbleweed 8 digit date + return "opensusetumbleweed" + ++ if self._variant_prefix.startswith(("caasp")): ++ return self._variant_prefix + distro_version ++ + if int(version) < 10: + return self._variant_prefix + "9" + +@@ -645,6 +654,13 @@ class OpensuseDistro(SuseDistro): + famregex = ".*openSUSE.*" + + +class CAASPDistro(SuseDistro): -+ urldistro = "caasp" ++ PRETTY_NAME = "SLES" ++ _variant_prefix = "caasp" ++ _suse_regex = [".*SUSE Container as a Service Platform*", ".*SUSE CaaS Platform*"] ++ famregex = ".*SUSE Container as a Service Platform.*" + + class OESDistro(SuseDistro): - urldistro = "oes" - + PRETTY_NAME = "OES" + _variant_prefix = "oes" ++++++ virtinst-add-sle15-detection-support.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:19.199684472 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:19.223684442 +0100 @@ -1,143 +1,43 @@ References: bsc#1054986 -With SLE15 and openSUSE 15 the content file has been removed from the media. -This file was used for SUSE distro version and arch detection. Now detection -must be done by parsing the .treeinfo file. -We must continue to keep the content parsing code for the older distros. -As a fallback, detection is also setup to look at the media.1/products and -media.1/build files. -Index: virt-manager-1.5.1/virtinst/urlfetcher.py +Index: virt-manager-2.0.0/virtinst/urldetect.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/urlfetcher.py -+++ virt-manager-1.5.1/virtinst/urlfetcher.py -@@ -416,7 +416,23 @@ def _distroFromSUSEContent(fetcher, arch - try: - cbuf = fetcher.acquireFileContent("content") - except ValueError: -- return None -+ try: -+ # If no content file, try media.1/products and media.1/build and create -+ # a cbuf with enough info for the content file parsing code below to work -+ pbuf = fetcher.acquireFileContent("media.1/products").strip() -+ pbuf = pbuf.split(' ', 1)[1].strip() -+ # The media.1/products file naming convention changed between SLE11 and SLE12 -+ if pbuf.startswith('SLE'): -+ pbuf = pbuf.split(' ')[0] -+ pbuf = " ".join(re.split('(\d+)', pbuf, 1)) -+ cbuf = "\nDISTRO ," + pbuf.replace('-', ' ') -+ try: -+ bbuf = fetcher.acquireFileContent("media.1/build").split('-') -+ except: -+ bbuf = ["x86_64"] -+ cbuf = cbuf + "\n" + " ".join(bbuf) -+ except ValueError: -+ return None - - distribution = None - distro_version = None -@@ -489,7 +505,7 @@ def _distroFromSUSEContent(fetcher, arch - dclass = GenericDistro - if distribution: - if re.match(".*SUSE Linux Enterprise Server*", distribution[1]) or \ -- re.match(".*SUSE SLES*", distribution[1]): -+ re.match(".*SUSE SLES*", distribution[1]) or re.match("SLES*", distribution[1]): - dclass = SLESDistro - if distro_version is None: - distro_version = _parse_sle_distribution(distribution) -@@ -507,10 +523,13 @@ def _distroFromSUSEContent(fetcher, arch - if distro_version is None: - dparts = distribution[1].strip().rsplit(' ') - distro_version = ['VERSION', dparts[len(dparts)-1]] -- elif re.match(".*openSUSE.*", distribution[1]): -+ elif re.match(".*openSUSE.*", distribution[1]) or re.match("openSUSE *", distribution[1]): - dclass = OpensuseDistro - if distro_version is None: -- distro_version = ['VERSION', distribution[0].strip().rsplit(':')[4]] -+ if ':' in distribution[0]: -+ distro_version = ['VERSION', distribution[0].strip().rsplit(':')[4]] +--- virt-manager-2.0.0.orig/virtinst/urldetect.py ++++ virt-manager-2.0.0/virtinst/urldetect.py +@@ -606,6 +606,10 @@ class SuseDistro(Distro): + if re.search("openSUSE Tumbleweed", self.cache.treeinfo_name): + return "opensusetumbleweed" + ++ sp_version = False ++ if ' SP' in self.cache.treeinfo_version: ++ sp_version = True ++ self.cache.treeinfo_version = self.cache.treeinfo_version.replace(' SP', '.') + version, update = self.cache.split_version() + base = self._variant_prefix + str(version) + while update >= 0: +@@ -613,7 +617,10 @@ class SuseDistro(Distro): + # SLE doesn't use '.0' for initial releases in + # osinfo-db (sles11, sles12, etc) + if update > 0 or not base.startswith('sle'): +- tryvar += ".%s" % update ++ if sp_version: ++ tryvar += "sp%s" % update + else: -+ distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[2]] - - if distro_version is None: - return None -@@ -1029,6 +1048,7 @@ class SLDistro(RHELDistro): - - class SuseDistro(Distro): - name = "SUSE" -+ uses_treeinfo = True - - _boot_iso_paths = ["boot/boot.iso"] - -@@ -1066,8 +1086,11 @@ class SuseDistro(Distro): - self._xen_kernel_paths = [("boot/%s/vmlinuz-xenpae" % self.arch, - "boot/%s/initrd-xenpae" % self.arch)] - else: -- self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch, -- "boot/%s/initrd-xen" % self.arch)] -+ self._xen_kernel_paths = [("boot/%s/loader/linux" % self.arch, -+ "boot/%s/loader/initrd" % self.arch)] -+ # By appending this gets searched for first -+ self._xen_kernel_paths.append(("boot/%s/vmlinuz-xen" % self.arch, -+ "boot/%s/initrd-xen" % self.arch)) - - def _variantFromVersion(self): - distro_version = self.version_from_content[1].strip() -@@ -1075,11 +1098,11 @@ class SuseDistro(Distro): - self.os_variant = self.urldistro - - sp_version = None -- if self.os_variant.startswith(("sles", "sled")): -+ if self.os_variant.startswith(("sle")): - if len(distro_version.split('.', 1)) == 2: - sp_version = 'sp' + distro_version.split('.', 1)[1].strip() - self.os_variant += version -- if sp_version: -+ if sp_version and sp_version != 'sp0': - self.os_variant += sp_version - elif self.os_variant.startswith("opensuse"): - if len(version) == 8: -@@ -1103,6 +1126,24 @@ class SuseDistro(Distro): - self.os_variant += "9" - - def isValidStore(self): -+ if self.treeinfo: -+ ret = False -+ if self.urldistro: -+ family = self.treeinfo.get("general", "family") -+ if "SUSE Linux Enterprise Server" in family and 'sles' in self.urldistro or \ -+ "SUSE Linux Enterprise Desktop" in family and 'sled' in self.urldistro or \ -+ "SUSE Linux Enterprise" in family and 'sle' in self.urldistro or \ -+ "SUSE Containers" in family and 'caasp' in self.urldistro or \ -+ "openSUSE" in family and 'opensuse' in self.urldistro or \ -+ "Open Enterprise" in family and 'oes' in self.urldistro: -+ ret = True -+ if ret: -+ version = self.treeinfo.get("general", "version") -+ distro_version = ['VERSION', version] -+ self.version_from_content = distro_version -+ self._variantFromVersion() -+ return ret -+ - # self.version_from_content is the VERSION line from the contents file - if (not self.version_from_content or - self.version_from_content[1] is None): -@@ -1138,6 +1179,10 @@ class SuseDistro(Distro): - return self.os_variant ++ tryvar += ".%s" % update + if OSDB.lookup_os(tryvar): + return tryvar + update -= 1 +@@ -630,6 +637,13 @@ class SuseDistro(Distro): + return "install" +class SLEDistro(SuseDistro): -+ urldistro = "sle" ++ PRETTY_NAME = "SLE" ++ _variant_prefix = "sle" ++ _suse_regex = ["SUSE Linux Enterprise$"] ++ famregex = "SUSE Linux Enterprise$" + + class SLESDistro(SuseDistro): - urldistro = "sles" - -@@ -1154,8 +1199,6 @@ class OESDistro(SuseDistro): - urldistro = "oes" - - --# Suse image store is harder - we fetch the kernel RPM and a helper --# RPM and then munge bits together to generate a initrd - class OpensuseDistro(SuseDistro): - urldistro = "opensuse" - + PRETTY_NAME = "SLES" + matching_distros = ["sles"] ++++++ virtinst-default-xen-to-qcow2-format.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:19.423684199 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:19.443684174 +0100 @@ -1,15 +1,15 @@ Reference: bnc#885380 Allow Xen based VMs to default to using qcow2 -Index: virt-manager-1.4.3/virtinst/support.py +Index: virt-manager-2.0.0/virtinst/support.py =================================================================== ---- virt-manager-1.4.3.orig/virtinst/support.py -+++ virt-manager-1.4.3/virtinst/support.py -@@ -259,7 +259,7 @@ SUPPORT_CONN_DISK_SD = _make(version="1. +--- virt-manager-2.0.0.orig/virtinst/support.py ++++ virt-manager-2.0.0/virtinst/support.py +@@ -233,7 +233,7 @@ SUPPORT_CONN_WORKING_XEN_EVENTS = _make( + # 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. - SUPPORT_CONN_DEFAULT_QCOW2 = _make( -- version="0.8.0", hv_version={"qemu": "1.2.0", "test": 0}) -+ version="0.8.0", hv_version={"qemu": "1.2.0", "all": 0}) - SUPPORT_CONN_DEFAULT_USB2 = _make( - version="0.9.7", hv_version={"qemu": "1.0.0", "test": 0}) - SUPPORT_CONN_CAN_ACPI = _make(hv_version={"xen": "3.1.0", "all": 0}) +-SUPPORT_CONN_DEFAULT_QCOW2 = _make(hv_version={"qemu": "1.2.0", "test": 0}) ++SUPPORT_CONN_DEFAULT_QCOW2 = _make(hv_version={"qemu": "1.2.0", "all": 0}) + SUPPORT_CONN_AUTOSOCKET = _make(hv_libvirt_version={"qemu": "1.0.6"}) + SUPPORT_CONN_PM_DISABLE = _make(hv_version={"qemu": "1.2.0", "test": 0}) + SUPPORT_CONN_QCOW2_LAZY_REFCOUNTS = _make( ++++++ virtinst-detect-oes-distros.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:19.659683910 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:19.699683861 +0100 @@ -1,71 +1,29 @@ Enhancement to correctly detect Open Enterprise Server media is selected as the installation source. -Index: virt-manager-1.5.0/virtinst/urlfetcher.py +Index: virt-manager-2.0.0/virtinst/urldetect.py =================================================================== ---- virt-manager-1.5.0.orig/virtinst/urlfetcher.py -+++ virt-manager-1.5.0/virtinst/urlfetcher.py -@@ -482,6 +482,10 @@ def _distroFromSUSEContent(fetcher, arch - dclass = SLEDDistro - if distro_version is None: - distro_version = _parse_sle_distribution(distribution) -+ elif re.match(".*Open Enterprise Server*", distribution[1]): -+ dclass = OESDistro -+ if distro_version is None: -+ distro_version = _parse_sle_distribution(distribution) - elif re.match(".*openSUSE.*", distribution[1]): - dclass = OpensuseDistro - if distro_version is None: -@@ -1042,20 +1046,30 @@ class SuseDistro(Distro): - distro_version = self.version_from_content[1].strip() - version = distro_version.split('.', 1)[0].strip() - self.os_variant = self.urldistro -- if int(version) >= 10: -- if self.os_variant.startswith(("sles", "sled")): -- sp_version = None -- if len(distro_version.split('.', 1)) == 2: -- sp_version = 'sp' + distro_version.split('.', 1)[1].strip() -- self.os_variant += version -- if sp_version: -- self.os_variant += sp_version -+ -+ sp_version = None -+ if self.os_variant.startswith(("sles", "sled")): -+ if len(distro_version.split('.', 1)) == 2: -+ sp_version = 'sp' + distro_version.split('.', 1)[1].strip() -+ self.os_variant += version -+ if sp_version: -+ self.os_variant += sp_version -+ elif self.os_variant.startswith("opensuse"): -+ if len(version) == 8: -+ self.os_variant += "tumbleweed" - else: -- # Tumbleweed 8 digit date -- if len(version) == 8: -- self.os_variant += "tumbleweed" -- else: -- self.os_variant += distro_version -+ self.os_variant += distro_version -+ elif self.os_variant.startswith("oes"): -+ versions = distro_version.split('.') -+ major_version = versions[0] -+ if len(versions) == 3: -+ sp_version = versions[2] -+ elif len(versions) == 2: -+ sp_version = versions[1] -+ if sp_version: -+ self.os_variant += major_version + 'sp' + sp_version -+ else: -+ self.os_variant += major_version - else: - self.os_variant += "9" +--- virt-manager-2.0.0.orig/virtinst/urldetect.py ++++ virt-manager-2.0.0/virtinst/urldetect.py +@@ -573,7 +573,7 @@ class SuseDistro(Distro): + if int(version) < 10: + return self._variant_prefix + "9" + +- 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() +@@ -645,6 +645,13 @@ class OpensuseDistro(SuseDistro): + famregex = ".*openSUSE.*" -@@ -1102,6 +1116,9 @@ class SLESDistro(SuseDistro): - class SLEDDistro(SuseDistro): - urldistro = "sled" +class OESDistro(SuseDistro): -+ urldistro = "oes" ++ PRETTY_NAME = "OES" ++ _variant_prefix = "oes" ++ _suse_regex = [".*Open Enterprise Server*"] ++ famregex = ".*Open Enterprise Server.*" + - - # Suse image store is harder - we fetch the kernel RPM and a helper - # RPM and then munge bits together to generate a initrd ++ + class DebianDistro(Distro): + # ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/ + # daily builds: https://d-i.debian.org/daily-images/amd64/ ++++++ virtinst-dont-use-special-copy-cpu-features.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:19.895683621 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:19.911683602 +0100 @@ -12,13 +12,13 @@ and "CPUs" -> "Copy host CPU definition" also inserts 'host-model' so this change mirrors what is already done there. -Index: virt-manager-1.5.0/virtinst/cpu.py +Index: virt-manager-2.0.0/virtinst/domain/cpu.py =================================================================== ---- virt-manager-1.5.0.orig/virtinst/cpu.py -+++ virt-manager-1.5.0/virtinst/cpu.py -@@ -98,12 +98,16 @@ class CPU(XMLBuilder): - SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_CLEAR] - def set_special_mode(self, val): +--- virt-manager-2.0.0.orig/virtinst/domain/cpu.py ++++ virt-manager-2.0.0/virtinst/domain/cpu.py +@@ -88,12 +88,16 @@ class DomainCpu(XMLBuilder): + val = self.SPECIAL_MODE_HOST_MODEL + if (val == self.SPECIAL_MODE_HOST_MODEL or - val == self.SPECIAL_MODE_HOST_PASSTHROUGH): + val == self.SPECIAL_MODE_HOST_PASSTHROUGH or @@ -27,10 +27,10 @@ self.vendor = None self.model_fallback = None for f in self.features: - self.remove_feature(f) + self.remove_child(f) + if val == self.SPECIAL_MODE_HOST_COPY: + val = self.SPECIAL_MODE_HOST_MODEL + self.match = "exact" self.mode = val elif val == self.SPECIAL_MODE_HOST_COPY: - self.copy_host_cpu() + self.copy_host_cpu(guest) ++++++ virtinst-keep-install-iso-attached.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:20.055683426 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:20.075683402 +0100 @@ -2,17 +2,17 @@ Newer SLE PV guests hang when a cdrom device is attached without an ISO file. -Index: virt-manager-1.4.3/virtinst/guest.py +Index: virt-manager-2.0.0/virtinst/installer.py =================================================================== ---- virt-manager-1.4.3.orig/virtinst/guest.py -+++ virt-manager-1.4.3/virtinst/guest.py -@@ -805,7 +805,8 @@ class Guest(XMLBuilder): - # install. - if (dev.is_cdrom() and - getattr(dev, "installer_media", False) and -- not self._os_object.is_windows()): -+ not self._os_object.is_windows() and -+ not self.os_variant.startswith(("sles", "sled", "opensuse"))): - dev.path = None - - def _set_defaults(self): +--- virt-manager-2.0.0.orig/virtinst/installer.py ++++ virt-manager-2.0.0/virtinst/installer.py +@@ -103,7 +103,8 @@ class Installer(object): + return + if self.livecd: + return +- if guest.osinfo.is_windows(): ++ if (guest.osinfo.is_windows() or ++ guest.osinfo.name.startswith(("sles", "sled", "opensuse"))): + # Keep media attached for windows which has a multi stage install + return + self._install_cdrom_device.path = None ++++++ virtinst-modify-gui-defaults.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:20.235683206 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:20.247683191 +0100 @@ -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-1.4.2/virtManager/create.py +Index: virt-manager-2.0.0/virtManager/create.py =================================================================== ---- virt-manager-1.4.2.orig/virtManager/create.py -+++ virt-manager-1.4.2/virtManager/create.py -@@ -397,8 +397,20 @@ class vmmCreate(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/create.py ++++ virt-manager-2.0.0/virtManager/create.py +@@ -346,8 +346,20 @@ class vmmCreate(vmmGObjectUI): self.widget("method-local").set_active(True) self.widget("create-conn").set_active(-1) activeconn = self._populate_conn_list(urihint) ++++++ virtinst-osdict-get_supported.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:20.411682991 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:20.427682971 +0100 @@ -3,20 +3,16 @@ 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-1.5.1/virtinst/osdict.py +Index: virt-manager-2.0.0/virtinst/osdict.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/osdict.py -+++ virt-manager-1.5.1/virtinst/osdict.py -@@ -376,8 +376,11 @@ class _OsVariant(object): - # EOL date. So assume None == EOL, add some manual work arounds. - # We should fix this in a new libosinfo version, and then drop - # this hack -+ # SUSE: How to handle EOL distros that still have LTSS support - if self._is_related_to(["fedora24", "rhel7.0", "debian6", -- "ubuntu13.04", "win8", "win2k12", "mageia5", "centos7.0"], -+ "ubuntu13.04", "win8", "win2k12", "mageia5", "centos7.0", -+ "sle15", "sles12sp3", "sles12sp2", "sles12sp1", "sles11sp4", -+ "tumbleweed", "opensuse15", "opensuse42.3" ], - check_clones=False, check_derives=False): - return True +--- virt-manager-2.0.0.orig/virtinst/osdict.py ++++ virt-manager-2.0.0/virtinst/osdict.py +@@ -337,7 +337,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 + ++++++ virtinst-pvgrub2-bootloader.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:20.583682781 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:20.607682752 +0100 @@ -1,53 +1,29 @@ 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 -newer suse distros like SLE12 and openSUSE 13.2. -Index: virt-manager-1.4.3/virtinst/guest.py +suse distros SLE12GA, openSUSE 13.2, and newer. +Index: virt-manager-2.0.0/virtinst/installer.py =================================================================== ---- virt-manager-1.4.3.orig/virtinst/guest.py -+++ virt-manager-1.4.3/virtinst/guest.py -@@ -366,8 +366,20 @@ class Guest(XMLBuilder): - if (not install and - self.os.is_xenpv() and - not self.os.kernel): -- self.bootloader = "/usr/bin/pygrub" -- self.os.clear() -+ os_ver = self._get_os_variant() -+ if self.os.arch != 'x86_64' or os_ver.startswith("sles9") or \ +--- virt-manager-2.0.0.orig/virtinst/installer.py ++++ virt-manager-2.0.0/virtinst/installer.py +@@ -307,6 +307,20 @@ class Installer(object): + install_xml = None + if self.has_install_phase(): + install_xml = self._get_install_xml(guest) ++ if (guest.os.is_xenpv() and ++ not guest.os.kernel): ++ os_ver = guest.osinfo.name ++ if guest.os.arch != 'x86_64' or os_ver.startswith("sles9") or \ + os_ver.startswith("sles10") or os_ver.startswith("sled10") or \ + os_ver.startswith("opensuse10") or os_ver.startswith("opensuse11"): -+ self.bootloader = "pygrub" -+ self.os.clear() ++ guest.os.bootloader = "pygrub" + else: -+ self.installer._install_kernel = "/usr/lib/grub2/x86_64-xen/grub.xen" -+ self.installer._install_initrd = None -+ self.installer.extraargs = None -+ # alter_bootconfig won't update the osxml unless it thinks -+ # we are in an install phase. Add force_update param to call -+ self.installer.alter_bootconfig(self, True, True) ++ guest.os.bootloader = None ++ self._install_kernel = "/usr/lib/grub2/x86_64-xen/grub.xen" ++ self._install_initrd = None ++ self.extraargs = None + logging.info("Using grub.xen to boot guest") ++ self._alter_bootconfig(guest) + final_xml = guest.get_xml() - return self.get_xml_config() - -Index: virt-manager-1.4.3/virtinst/installer.py -=================================================================== ---- virt-manager-1.4.3.orig/virtinst/installer.py -+++ virt-manager-1.4.3/virtinst/installer.py -@@ -99,7 +99,7 @@ class Installer(object): - break - return bootorder - -- def alter_bootconfig(self, guest, isinstall): -+ def alter_bootconfig(self, guest, isinstall, force_update=False): - """ - Generate the portion of the guest xml that determines boot devices - and parameters. (typically the <os></os> block) -@@ -110,7 +110,7 @@ class Installer(object): - 'post-install' phase. - @type isinstall: C{bool} - """ -- if isinstall and not self.has_install_phase(): -+ if isinstall and not force_update and not self.has_install_phase(): - return - - bootorder = guest.os.bootorder + logging.debug("Generated install XML: %s", ++++++ virtinst-python2-to-python3-conversion.patch ++++++ ++++ 667 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/virt-manager/virtinst-python2-to-python3-conversion.patch ++++ and /work/SRC/openSUSE:Factory/.virt-manager.new/virtinst-python2-to-python3-conversion.patch ++++++ virtinst-refresh_before_fetch_pool.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:20.763682561 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:20.787682531 +0100 @@ -13,11 +13,11 @@ Signed-off-by: Chunyan Liu <cy...@suse.com> -Index: virt-manager-1.4.3/virtinst/pollhelpers.py +Index: virt-manager-2.0.0/virtinst/pollhelpers.py =================================================================== ---- virt-manager-1.4.3.orig/virtinst/pollhelpers.py -+++ virt-manager-1.4.3/virtinst/pollhelpers.py -@@ -133,6 +133,19 @@ def fetch_pools(backend, origmap, build_ +--- virt-manager-2.0.0.orig/virtinst/pollhelpers.py ++++ virt-manager-2.0.0/virtinst/pollhelpers.py +@@ -121,6 +121,19 @@ def fetch_pools(backend, origmap, build_ if backend.check_support( backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS) and not FORCE_OLD_POLL: ++++++ virtinst-s390x-disable-graphics.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:20.931682355 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:20.951682331 +0100 @@ -1,10 +1,10 @@ Reference: bnc#869024 Disable graphics on s390x -Index: virt-manager-1.5.0/virtinst/guest.py +Index: virt-manager-2.0.0/virtinst/guest.py =================================================================== ---- virt-manager-1.5.0.orig/virtinst/guest.py -+++ virt-manager-1.5.0/virtinst/guest.py -@@ -126,7 +126,10 @@ class Guest(XMLBuilder): +--- virt-manager-2.0.0.orig/virtinst/guest.py ++++ virt-manager-2.0.0/virtinst/guest.py +@@ -159,7 +159,10 @@ class Guest(XMLBuilder): self.skip_default_channel = False self.skip_default_sound = False self.skip_default_usbredir = False @@ -14,41 +14,32 @@ + else: + self.skip_default_graphics = False self.skip_default_rng = False - self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY + self.x86_cpu_default = self.cpu.SPECIAL_MODE_APP_DEFAULT -@@ -687,7 +690,7 @@ class Guest(XMLBuilder): +@@ -289,7 +292,7 @@ class Guest(XMLBuilder): + if not os_support: + return False + +- if self.os.is_x86(): ++ if self.os.is_x86() or self.os.is_s390x(): + return True + + return False +@@ -592,7 +595,7 @@ class Guest(XMLBuilder): self.add_device(dev) - def add_default_video_device(self): + def _add_default_video_device(self): - if self.os.is_container(): + if self.os.is_container() or self.os.is_s390x(): return - if self.get_devices("video"): + if self.devices.video: return -@@ -742,6 +745,8 @@ class Guest(XMLBuilder): - dev.target_type = "virtio" - dev.target_name = dev.CHANNEL_NAME_QEMUGA - self.add_device(dev) -+ elif self.os.is_s390x(): -+ dev.target_type = "sclp" - - def add_default_graphics(self): - if self.skip_default_graphics: -@@ -750,7 +755,7 @@ class Guest(XMLBuilder): +@@ -656,7 +659,7 @@ class Guest(XMLBuilder): return if self.os.is_container() and not self.conn.is_vz(): return - if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le"]: + if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "s390x"]: return - self.add_device(VirtualGraphics(self.conn)) - -@@ -1110,7 +1115,7 @@ class Guest(XMLBuilder): - if not os_support: - return False - -- if self.os.is_x86(): -+ if self.os.is_x86() or self.os.is_s390x(): - return True + self.add_device(DeviceGraphics(self.conn)) - if (self.os.is_arm_vexpress() and ++++++ virtinst-set-cache-mode-unsafe-for-install.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.011682258 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.011682258 +0100 @@ -1,36 +1,28 @@ Set cache mode for target installation disk to unsafe for better performance. -Index: virt-manager-1.4.3/virtinst/guest.py +Index: virt-manager-2.0.0/virtinst/installer.py =================================================================== ---- virt-manager-1.4.3.orig/virtinst/guest.py -+++ virt-manager-1.4.3/virtinst/guest.py -@@ -362,6 +362,17 @@ class Guest(XMLBuilder): - - self._set_osxml_defaults() +--- virt-manager-2.0.0.orig/virtinst/installer.py ++++ virt-manager-2.0.0/virtinst/installer.py +@@ -294,10 +294,21 @@ class Installer(object): + guest.os.kernel_args, guest.on_reboot) = data + def _get_install_xml(self, guest): + # At install time set the target disk to 'unsafe' for + # better performance if the target is not a block device + saved_cache = "None" -+ if install: -+ disk_devices = self.get_devices("disk") -+ if disk_devices: -+ target_disk = self.get_devices("disk")[0] -+ saved_cache = target_disk.driver_cache -+ if target_disk.type != VirtualDisk.TYPE_BLOCK: -+ target_disk.driver_cache = VirtualDisk.CACHE_MODE_UNSAFE ++ if guest.devices.disk: ++ target_disk = guest.devices.disk[0] ++ saved_cache = target_disk.driver_cache ++ if target_disk.type != DeviceDisk.TYPE_BLOCK: ++ target_disk.driver_cache = DeviceDisk.CACHE_MODE_UNSAFE + - self.bootloader = None - if (not install and - self.os.is_xenpv() and -@@ -381,7 +392,10 @@ class Guest(XMLBuilder): - self.installer.alter_bootconfig(self, True, True) - logging.info("Using grub.xen to boot guest") - -- return self.get_xml_config() -+ xml_config = self.get_xml_config() -+ if install and saved_cache != "None": -+ target_disk.driver_cache = saved_cache -+ return xml_config - - - ########################### + data = self._prepare_get_install_xml(guest) + try: + self._alter_bootconfig(guest) + ret = guest.get_xml() ++ if saved_cache != "None": ++ target_disk.driver_cache = saved_cache + return ret + finally: + self._remove_install_cdrom_media(guest) ++++++ virtinst-use-latest-opensuse-version-when-unknown-media.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.027682238 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.027682238 +0100 @@ -5,11 +5,11 @@ When 'opensuse-unknown' is detected, look up the most current version of openSUSE and default to that. This is the same way fedora does it. -Index: virt-manager-1.5.0/virtinst/osdict.py +Index: virt-manager-2.0.0/virtinst/osdict.py =================================================================== ---- virt-manager-1.5.0.orig/virtinst/osdict.py -+++ virt-manager-1.5.0/virtinst/osdict.py -@@ -241,6 +241,12 @@ class _OSDB(object): +--- virt-manager-2.0.0.orig/virtinst/osdict.py ++++ virt-manager-2.0.0/virtinst/osdict.py +@@ -214,6 +214,12 @@ class _OSDB(object): "Converting that to the latest fedora OS version=%s", location, osname) @@ -21,10 +21,10 @@ + return osname - def list_types(self): -@@ -275,6 +281,16 @@ class _OSDB(object): - # First fedora* occurrence should be the newest - return osinfo.name + def list_os(self): +@@ -239,6 +245,16 @@ class _OSDB(object): + def latest_fedora_version(self): + return self.latest_regex("fedora[0-9]+") + def latest_opensuse_version(self): + os_info = None ++++++ virtinst-use-qemu-for-cdrom-device.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.127682116 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.139682101 +0100 @@ -2,11 +2,11 @@ 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-1.5.1/virtinst/devicedisk.py +Index: virt-manager-2.0.0/virtinst/devices/disk.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/devicedisk.py -+++ virt-manager-1.5.1/virtinst/devicedisk.py -@@ -563,7 +563,8 @@ class VirtualDisk(VirtualDevice): +--- virt-manager-2.0.0.orig/virtinst/devices/disk.py ++++ virt-manager-2.0.0/virtinst/devices/disk.py +@@ -435,7 +435,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 ++++++ virtinst-use-xenpae-kernel-for-32bit.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.283681925 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.303681901 +0100 @@ -4,22 +4,25 @@ virtualized if the pae kernel is selected. Note that sles12 and newer has no 32bit release. -Index: virt-manager-1.5.1/virtinst/urlfetcher.py +Index: virt-manager-2.0.0/virtinst/urldetect.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/urlfetcher.py -+++ virt-manager-1.5.1/virtinst/urlfetcher.py -@@ -1051,8 +1051,12 @@ class SuseDistro(Distro): - "boot/%s/initrd" % self.arch)) - +--- virt-manager-2.0.0.orig/virtinst/urldetect.py ++++ virt-manager-2.0.0/virtinst/urldetect.py +@@ -541,9 +541,14 @@ class SuseDistro(Distro): + self._kernel_paths = [] + if self.type == "xen": # Matches Opensuse > 10.2 and sles 10 -- self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch, -- "boot/%s/initrd-xen" % self.arch)] +- self._kernel_paths.append( +- ("boot/%s/vmlinuz-xen" % tree_arch, +- "boot/%s/initrd-xen" % tree_arch)) + if self.arch == "i386": -+ self._xen_kernel_paths = [("boot/%s/vmlinuz-xenpae" % self.arch, -+ "boot/%s/initrd-xenpae" % self.arch)] ++ self._kernel_paths.append( ++ ("boot/%s/vmlinuz-xen" % tree_arch, ++ "boot/%s/initrd-xen" % tree_arch)) + else: -+ self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch, -+ "boot/%s/initrd-xen" % self.arch)] ++ self._kernel_paths.append( ++ ("boot/%s/vmlinuz-xenpae" % tree_arch, ++ "boot/%s/initrd-xenpae" % tree_arch)) - def _variantFromVersion(self): - distro_version = self.version_from_content[1].strip() + if (tree_arch == "s390x" and + (self._os_variant == "sles11" or self._os_variant == "sled11")): ++++++ virtinst-vol-default-nocow.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.483681681 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.515681642 +0100 @@ -4,33 +4,32 @@ Signed-off-by: Chunyan Liu <cy...@suse.com> -Index: virt-manager-1.5.0/virtinst/storage.py +Index: virt-manager-2.0.0/virtinst/storage.py =================================================================== ---- virt-manager-1.5.0.orig/virtinst/storage.py -+++ virt-manager-1.5.0/virtinst/storage.py -@@ -701,6 +701,12 @@ class StorageVolume(_StorageObject): +--- virt-manager-2.0.0.orig/virtinst/storage.py ++++ virt-manager-2.0.0/virtinst/storage.py +@@ -618,6 +618,11 @@ class StorageVolume(_StorageObject): return self._pool_xml.get_disk_type() file_type = property(_get_vol_type) + def _nocow_default_cb(self): + return self.conn.check_support( + self.conn.SUPPORT_CONN_NOCOW) -+ nocow = XMLProperty("./target/nocow", -+ is_bool=True, default_cb=_nocow_default_cb) ++ nocow = XMLProperty("./target/nocow", is_bool=True) + ################## # XML properties # -Index: virt-manager-1.5.0/virtinst/support.py +Index: virt-manager-2.0.0/virtinst/support.py =================================================================== ---- virt-manager-1.5.0.orig/virtinst/support.py -+++ virt-manager-1.5.0/virtinst/support.py -@@ -326,6 +326,8 @@ SUPPORT_CONN_USB3_PORTS = _make(version= +--- virt-manager-2.0.0.orig/virtinst/support.py ++++ virt-manager-2.0.0/virtinst/support.py +@@ -267,6 +267,8 @@ SUPPORT_CONN_USB3_PORTS = _make(version= SUPPORT_CONN_MACHVIRT_PCI_DEFAULT = _make(version="3.0.0") - SUPPORT_CONN_QEMU_XHCI = _make(version="3.3.0") + SUPPORT_CONN_QEMU_XHCI = _make(version="3.3.0", hv_version={"qemu": "2.9.0"}) SUPPORT_CONN_VNC_NONE_AUTH = _make(hv_version={"qemu": "2.9.0"}) +SUPPORT_CONN_NOCOW = _make( + version="1.2.18", hv_version={"qemu": "2.2.0", "test": 0}) - - # This is for disk <driver name=qemu>. xen supports this, but it's + # We choose qemu 2.11.0 as the first version to target for q35 default. + # That's not really based on anything except reasonably modern at the ++++++ virtinst-xen-drive-type.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.687681432 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.723681388 +0100 @@ -2,12 +2,12 @@ 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-1.5.1/virtinst/devicedisk.py +Index: virt-manager-2.0.0/virtinst/devices/disk.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/devicedisk.py -+++ virt-manager-1.5.1/virtinst/devicedisk.py -@@ -581,6 +581,10 @@ class VirtualDisk(VirtualDevice): - http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html +--- virt-manager-2.0.0.orig/virtinst/devices/disk.py ++++ virt-manager-2.0.0/virtinst/devices/disk.py +@@ -453,6 +453,10 @@ class DeviceDisk(Device): + https://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html """ if self.driver_name != self.DRIVER_NAME_QEMU: + if self.driver_name and \ ++++++ virtinst-xenbus-disk-index-fix.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.815681275 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.835681251 +0100 @@ -6,12 +6,12 @@ passed to qemu where it error'ed out with the disks having the same index (in this case both are 0). -Index: virt-manager-1.5.1/virtinst/devicedisk.py +Index: virt-manager-2.0.0/virtinst/devices/disk.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/devicedisk.py -+++ virt-manager-1.5.1/virtinst/devicedisk.py -@@ -1038,6 +1038,17 @@ class VirtualDisk(VirtualDevice): - @rtype C{str} +--- virt-manager-2.0.0.orig/virtinst/devices/disk.py ++++ virt-manager-2.0.0/virtinst/devices/disk.py +@@ -900,6 +900,17 @@ class DeviceDisk(Device): + :returns: generated target """ prefix, maxnode = self.get_target_prefix(skip_targets) + postfix_targets = [] @@ -28,7 +28,7 @@ skip_targets = [t for t in skip_targets if t and t.startswith(prefix)] skip_targets.sort() -@@ -1051,7 +1062,12 @@ class VirtualDisk(VirtualDevice): +@@ -913,7 +924,12 @@ class DeviceDisk(Device): ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7) for i in ran: ++++++ virtman-allow-creating-i686-vm.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:21.951681109 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:21.967681089 +0100 @@ -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-1.5.0/virtManager/create.py +Index: virt-manager-2.0.0/virtManager/create.py =================================================================== ---- virt-manager-1.5.0.orig/virtManager/create.py -+++ virt-manager-1.5.0/virtManager/create.py -@@ -849,11 +849,6 @@ class vmmCreate(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/create.py ++++ virt-manager-2.0.0/virtManager/create.py +@@ -774,11 +774,6 @@ class vmmCreate(vmmGObjectUI): for guest in self.conn.caps.guests: if guest.os_type == self._capsinfo.os_type: archs.append(guest.arch) ++++++ virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:22.091680939 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:22.111680913 +0100 @@ -6,11 +6,11 @@ 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-1.5.0/virtManager/manager.py +Index: virt-manager-2.0.0/virtManager/manager.py =================================================================== ---- virt-manager-1.5.0.orig/virtManager/manager.py -+++ virt-manager-1.5.0/virtManager/manager.py -@@ -844,7 +844,7 @@ class vmmManager(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/manager.py ++++ virt-manager-2.0.0/virtManager/manager.py +@@ -789,7 +789,7 @@ class vmmManager(vmmGObjectUI): show_pause = bool(vm and vm.is_unpauseable()) else: show_pause = bool(vm and vm.is_pauseable()) @@ -19,11 +19,11 @@ if vm and vm.managedsave_supported: self.change_run_text(vm.has_managed_save()) -Index: virt-manager-1.5.0/virtManager/vmmenu.py +Index: virt-manager-2.0.0/virtManager/vmmenu.py =================================================================== ---- virt-manager-1.5.0.orig/virtManager/vmmenu.py -+++ virt-manager-1.5.0/virtManager/vmmenu.py -@@ -31,6 +31,7 @@ class _VMMenu(Gtk.Menu): +--- virt-manager-2.0.0.orig/virtManager/vmmenu.py ++++ virt-manager-2.0.0/virtManager/vmmenu.py +@@ -21,6 +21,7 @@ class _VMMenu(Gtk.Menu): self._parent = src self._current_vm_cb = current_vm_cb self._show_open = show_open @@ -31,7 +31,7 @@ self._init_state() -@@ -92,6 +93,7 @@ class VMShutdownMenu(_VMMenu): +@@ -84,6 +85,7 @@ class VMShutdownMenu(_VMMenu): name = getattr(child, "vmm_widget_name", None) if name in statemap: child.set_sensitive(statemap[name]) @@ -39,17 +39,17 @@ if name == "reset": child.set_tooltip_text(None) -@@ -108,7 +110,8 @@ class VMActionMenu(_VMMenu): - self._add_action(_("_Pause"), "suspend", Gtk.STOCK_MEDIA_PAUSE) - self._add_action(_("R_esume"), "resume", Gtk.STOCK_MEDIA_PAUSE) - s = self._add_action(_("_Shut Down"), "shutdown", addcb=False) +@@ -106,7 +108,8 @@ class VMActionMenu(_VMMenu): + self._add_action(_("R_esume"), "resume", VMActionUI.resume, + Gtk.STOCK_MEDIA_PAUSE) + s = self._add_action(_("_Shut Down"), "shutdown", None) - s.set_submenu(VMShutdownMenu(self._parent, self._current_vm_cb)) + self._shutdown = VMShutdownMenu(self._parent, self._current_vm_cb) + s.set_submenu(self._shutdown) self.add(Gtk.SeparatorMenuItem()) - self._add_action(_("Clone..."), "clone", None) -@@ -124,7 +127,7 @@ class VMActionMenu(_VMMenu): + self._add_action(_("Clone..."), "clone", +@@ -126,7 +129,7 @@ class VMActionMenu(_VMMenu): def update_widget_states(self, vm): statemap = { "run": bool(vm and vm.is_runable()), @@ -58,7 +58,7 @@ "suspend": bool(vm and vm.is_stoppable()), "resume": bool(vm and vm.is_paused()), "migrate": bool(vm and vm.is_stoppable()), -@@ -141,6 +144,8 @@ class VMActionMenu(_VMMenu): +@@ -143,6 +146,8 @@ class VMActionMenu(_VMMenu): child.get_submenu().update_widget_states(vm) if name in statemap: child.set_sensitive(statemap[name]) ++++++ virtman-check-for-valid-display.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:22.279680708 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:22.287680698 +0100 @@ -1,10 +1,10 @@ References: bnc#907958 Sanity check for those who forget '-X' on ssh and try to start virt-manager -Index: virt-manager-1.4.2/virt-manager +Index: virt-manager-2.0.0/virt-manager =================================================================== ---- virt-manager-1.4.2.orig/virt-manager -+++ virt-manager-1.4.2/virt-manager -@@ -81,8 +81,11 @@ def _import_gtk(leftovers): +--- virt-manager-2.0.0.orig/virt-manager ++++ virt-manager-2.0.0/virt-manager +@@ -66,8 +66,11 @@ def _import_gtk(leftovers): print("gtk3 3.14.0 or later is required.") sys.exit(1) @@ -15,6 +15,6 @@ + Gtk.Window() + else: + raise Exception("Error starting virt-manager: No graphical display found") - globals()["Gtk"] = Gtk - import virtManager.config + + # This ensures we can init gsettings correctly ++++++ virtman-default-guest-from-host-os.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:22.399680562 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:22.411680548 +0100 @@ -1,10 +1,10 @@ Enhancement to default to the host os version when creating a VM and media detection of the install source is turned off. -Index: virt-manager-1.5.1/virtManager/create.py +Index: virt-manager-2.0.0/virtManager/create.py =================================================================== ---- virt-manager-1.5.1.orig/virtManager/create.py -+++ virt-manager-1.5.1/virtManager/create.py -@@ -24,6 +24,9 @@ import pkgutil +--- virt-manager-2.0.0.orig/virtManager/create.py ++++ virt-manager-2.0.0/virtManager/create.py +@@ -10,6 +10,9 @@ import pkgutil import os import threading import time @@ -12,16 +12,16 @@ +import os +import re - from gi.repository import GObject + from gi.repository import Gdk from gi.repository import Gtk -@@ -1511,6 +1514,63 @@ class vmmCreate(vmmGObjectUI): - def _cdrom_changed(self, src): - self._detectable_media_widget_changed(src) +@@ -1183,6 +1186,63 @@ class vmmCreate(vmmGObjectUI): + def _iso_activated_cb(self, mediacombo, entry): + self._detectable_media_widget_changed(entry, checkfocus=False) + def _lookup_host_os(self): + def _lookup_sp(line): + sp = "" -+ m = re.search(' SP[1234] ', line) ++ m = re.search(' SP[12345] ', line) + if m: + sp = m.group(0).strip().lower() + return sp @@ -44,7 +44,7 @@ + if "SUSE Linux Enterprise Server 11" in line: + return 'linux', ('sles11' + _lookup_sp(line)) + if "SUSE Linux Enterprise Desktop 15" in line: -+ return 'linux', ('sle15' + _lookup_sp(line)) ++ return 'linux', ('sled15' + _lookup_sp(line)) + if "SUSE Linux Enterprise Desktop 12" in line: + return 'linux', ('sled12' + _lookup_sp(line)) + if "SUSE Linux Enterprise Desktop 11" in line: @@ -75,15 +75,15 @@ + break + index += 1 + - def _toggle_detect_os(self, src): - dodetect = src.get_active() - -@@ -1523,6 +1583,8 @@ class vmmCreate(vmmGObjectUI): - self.widget("install-os-version-entry").set_text("") + def _detect_os_toggled_cb(self, src): + if not src.is_visible(): + return +@@ -1193,6 +1253,8 @@ class vmmCreate(vmmGObjectUI): + if dodetect: self._os_already_detected_for_media = False self._start_detect_os_if_needed() + else: + self.detect_host_os() - def _selected_os_row(self): - return uiutil.get_list_selected_row(self.widget("install-os-type")) + def _browse_oscontainer(self, ignore): + self._browse_file("install-oscontainer-fs", is_dir=True) ++++++ virtman-default-to-xen-pv.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:22.543680386 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:22.555680372 +0100 @@ -1,9 +1,9 @@ Enhancement to default to PV instead of HVM on Xen host. -Index: virt-manager-1.5.0/virtManager/create.py +Index: virt-manager-2.0.0/virtManager/create.py =================================================================== ---- virt-manager-1.5.0.orig/virtManager/create.py -+++ virt-manager-1.5.0/virtManager/create.py -@@ -759,7 +759,12 @@ class vmmCreate(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/create.py ++++ virt-manager-2.0.0/virtManager/create.py +@@ -683,7 +683,12 @@ class vmmCreate(vmmGObjectUI): if gtype is None: # If none specified, prefer HVM so install options aren't limited # with a default PV choice. ++++++ virtman-desktop.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:22.699680196 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:22.719680171 +0100 @@ -1,7 +1,7 @@ -Index: virt-manager-1.4.0/data/virt-manager.desktop.in +Index: virt-manager-2.0.0/data/virt-manager.desktop.in =================================================================== ---- virt-manager-1.4.0.orig/data/virt-manager.desktop.in -+++ virt-manager-1.4.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 @@ -1,8 +1,19 @@ [Desktop Entry] _Name=Virtual Machine Manager ++++++ virtman-dont-allow-grub.xen-to-be-deleted.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:22.843680020 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:22.871679985 +0100 @@ -1,11 +1,11 @@ Reference: bnc#885094 grub.xen is required to boot Xen PV VMs using BTRFS. It belongs to the grub2-x86_64-xen RPM and should never be deleted. -Index: virt-manager-1.4.3/virtManager/delete.py +Index: virt-manager-2.0.0/virtManager/delete.py =================================================================== ---- virt-manager-1.4.3.orig/virtManager/delete.py -+++ virt-manager-1.4.3/virtManager/delete.py -@@ -241,7 +241,7 @@ def populate_storage_list(storage_list, +--- 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)) for target, path, ro, shared, is_media in diskdata: ++++++ virtman-dont-specify-vte-version.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.007679819 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.031679790 +0100 @@ -2,9 +2,11 @@ version of vte is really allowed. Vte 2.91 is installed on the host but the RPM is built requiring 2.90. ---- virt-manager-1.4.0/virtManager/serialcon.py.orig 2016-06-21 15:35:45.109272839 -0600 -+++ virt-manager-1.4.0/virtManager/serialcon.py 2016-06-21 15:35:56.637272738 -0600 -@@ -32,12 +32,12 @@ from gi.repository import Gtk +Index: virt-manager-2.0.0/virtManager/serialcon.py +=================================================================== +--- virt-manager-2.0.0.orig/virtManager/serialcon.py ++++ virt-manager-2.0.0/virtManager/serialcon.py +@@ -12,12 +12,12 @@ from gi.repository import Gtk # We can use either 2.91 or 2.90. This is just to silence runtime warnings # pylint: disable=wrong-import-position ++++++ virtman-increase-setKeepAlive-count.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.211679570 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.239679535 +0100 @@ -2,11 +2,11 @@ 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-1.4.3/virtManager/connection.py +Index: virt-manager-2.0.0/virtManager/connection.py =================================================================== ---- virt-manager-1.4.3.orig/virtManager/connection.py -+++ virt-manager-1.4.3/virtManager/connection.py -@@ -1088,7 +1088,7 @@ class vmmConnection(vmmGObject): +--- virt-manager-2.0.0.orig/virtManager/connection.py ++++ virt-manager-2.0.0/virtManager/connection.py +@@ -1059,7 +1059,7 @@ class vmmConnection(vmmGObject): self.caps.get_cpu_values(self.caps.host.cpu.arch) try: ++++++ virtman-keycombo.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.315679442 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.319679438 +0100 @@ -1,9 +1,9 @@ Enhancement adding Send Keys for mostly NetWare and also Windows -Index: virt-manager-1.4.0/virtManager/console.py +Index: virt-manager-2.0.0/virtManager/console.py =================================================================== ---- virt-manager-1.4.0.orig/virtManager/console.py -+++ virt-manager-1.4.0/virtManager/console.py -@@ -218,6 +218,16 @@ class vmmConsolePages(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/console.py ++++ virt-manager-2.0.0/virtManager/console.py +@@ -204,6 +204,16 @@ class vmmConsolePages(vmmGObjectUI): make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"]) make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"]) menu.add(Gtk.SeparatorMenuItem()) ++++++ virtman-kvm.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.327679428 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.327679428 +0100 @@ -1,10 +1,10 @@ /usr/bin/kvm doesn't exist on suse distros so check instead for /usr/bin/qemu-system-x86_64 -Index: virt-manager-1.5.0/virtManager/connect.py +Index: virt-manager-2.0.0/virtManager/connect.py =================================================================== ---- virt-manager-1.5.0.orig/virtManager/connect.py -+++ virt-manager-1.5.0/virtManager/connect.py -@@ -117,7 +117,7 @@ class vmmConnect(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/connect.py ++++ virt-manager-2.0.0/virtManager/connect.py +@@ -66,7 +66,7 @@ class vmmConnect(vmmGObjectUI): if (os.path.exists("/usr/bin/qemu") or os.path.exists("/usr/bin/qemu-kvm") or ++++++ virtman-load-stored-uris.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.363679384 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.363679384 +0100 @@ -1,27 +1,31 @@ -Index: virt-manager-1.5.0/virtManager/engine.py +If booted Xen, don't try connecting to local qemu +Likewise if booted native, don't try connecting to local xen + +Index: virt-manager-2.0.0/virtManager/connmanager.py =================================================================== ---- virt-manager-1.5.0.orig/virtManager/engine.py -+++ virt-manager-1.5.0/virtManager/engine.py -@@ -260,9 +260,22 @@ class vmmEngine(vmmGObject): +--- virt-manager-2.0.0.orig/virtManager/connmanager.py ++++ virt-manager-2.0.0/virtManager/connmanager.py +@@ -26,12 +26,23 @@ class vmmConnectionManager(vmmGObject): - def load_stored_uris(self): - uris = self.config.get_conn_uris() or [] + def __init__(self): + vmmGObject.__init__(self) ++ from .connect import vmmConnect + tryuri = vmmConnect.default_uri() -+ found_uri = None - for uri in uris: -+ # If booted Xen, don't try connecting to local qemu -+ # Likewise if booted native, don't try connecting to local xen ++ found_uri = False + + self._conns = {} + + # Load URIs from gsettings + for uri in self.config.get_conn_uris(): + if uri == 'xen:///' or uri == 'qemu:///system': + if tryuri and tryuri != uri: + logging.debug("Skipping %s because it is incompatible with local host", uri) + continue + found_uri = True - conn = self.make_conn(uri) - self.register_conn(conn, skip_config=True) -+ if tryuri and found_uri is None: -+ logging.debug("Didn't connect with anything, try default %s", tryuri) -+ conn = self.make_conn(tryuri) -+ self.register_conn(conn, skip_config=False) + self.add_conn(uri) ++ if tryuri and found_uri is False: ++ logging.debug("CEA:: Didn't connect with anything, use default %s", tryuri) ++ self.add_conn(tryuri) - def autostart_conns(self): - """ + def _cleanup(self): + for conn in self._conns.values(): ++++++ virtman-prevent-double-click-starting-vm-twice.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.431679301 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.447679281 +0100 @@ -3,17 +3,17 @@ virt-manager issues two start commands to start the VM which results in a failure. There is code elsewhere to desensitize the button but this patch does it earlier. -Index: virt-manager-1.4.3/virtManager/details.py +Index: virt-manager-2.0.0/virtManager/details.py =================================================================== ---- virt-manager-1.4.3.orig/virtManager/details.py -+++ virt-manager-1.4.3/virtManager/details.py -@@ -1449,6 +1449,9 @@ class vmmDetails(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/details.py ++++ virt-manager-2.0.0/virtManager/details.py +@@ -1489,6 +1489,9 @@ class vmmDetails(vmmGObjectUI): def control_vm_run(self, src_ignore): if self.has_unapplied_changes(self.get_hw_row()): return + # De-sensitize widget so a double click on the icon won't attempt to + # start the VM twice + self.widget("control-run").set_sensitive(False) - self.emit("action-run-domain", - self.vm.conn.get_uri(), self.vm.get_connkey()) + vmmenu.VMActionUI.run(self, self.vm) + def control_vm_shutdown(self, src_ignore): ++++++ virtman-python2-to-python3-conversion.patch ++++++ ++++ 875 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/virt-manager/virtman-python2-to-python3-conversion.patch ++++ and /work/SRC/openSUSE:Factory/.virt-manager.new/virtman-python2-to-python3-conversion.patch ++++++ virtman-register-delete-event-for-details-dialog.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.539679169 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.555679149 +0100 @@ -6,11 +6,11 @@ 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-1.4.3/virtManager/details.py +Index: virt-manager-2.0.0/virtManager/details.py =================================================================== ---- virt-manager-1.4.3.orig/virtManager/details.py -+++ virt-manager-1.4.3/virtManager/details.py -@@ -596,6 +596,9 @@ class vmmDetails(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/details.py ++++ virt-manager-2.0.0/virtManager/details.py +@@ -621,6 +621,9 @@ class vmmDetails(vmmGObjectUI): self.console.details_auth_login), }) ++++++ virtman-show-suse-install-repos.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.655679027 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.663679017 +0100 @@ -1,11 +1,11 @@ Enhancement that gets installation repos from zypper. These locations are then presented as potential installation sources when creating a VM. -Index: virt-manager-1.5.1/virtManager/create.py +Index: virt-manager-2.0.0/virtManager/create.py =================================================================== ---- virt-manager-1.5.1.orig/virtManager/create.py -+++ virt-manager-1.5.1/virtManager/create.py -@@ -424,7 +424,13 @@ class vmmCreate(vmmGObjectUI): +--- virt-manager-2.0.0.orig/virtManager/create.py ++++ virt-manager-2.0.0/virtManager/create.py +@@ -371,7 +371,13 @@ class vmmCreate(vmmGObjectUI): self.widget("install-url-entry").set_text("") self.widget("install-url-options").set_expanded(False) urlmodel = self.widget("install-url-combo").get_model() @@ -17,14 +17,14 @@ + inst_repos.remove(u) + media_urllist = urllist + inst_repos + _populate_media_model(urlmodel, media_urllist) - self._set_distro_labels("-", "-") # Install import -Index: virt-manager-1.5.1/virtinst/util.py + self.widget("install-import-entry").set_text("") +Index: virt-manager-2.0.0/virtinst/util.py =================================================================== ---- virt-manager-1.5.1.orig/virtinst/util.py -+++ virt-manager-1.5.1/virtinst/util.py -@@ -23,9 +23,12 @@ import os +--- virt-manager-2.0.0.orig/virtinst/util.py ++++ virt-manager-2.0.0/virtinst/util.py +@@ -11,9 +11,12 @@ import os import random import re import sys @@ -37,7 +37,7 @@ def listify(l): if l is None: -@@ -312,3 +315,57 @@ def make_meter(quiet): +@@ -292,3 +295,57 @@ def make_meter(quiet): if quiet: return progress.BaseMeter() return progress.TextMeter(fo=sys.stdout) ++++++ virttests-python2-to-python3-conversion.patch ++++++ --- /var/tmp/diff_new_pack.xxFAMG/_old 2018-11-10 17:00:23.819678827 +0100 +++ /var/tmp/diff_new_pack.xxFAMG/_new 2018-11-10 17:00:23.831678812 +0100 @@ -1,111 +1,35 @@ -Index: virt-manager-1.5.0/tests/clitest.py +Index: virt-manager-2.0.0/tests/clitest.py =================================================================== ---- virt-manager-1.5.0.orig/tests/clitest.py -+++ virt-manager-1.5.0/tests/clitest.py -@@ -223,7 +223,7 @@ class Command(object): +--- virt-manager-2.0.0.orig/tests/clitest.py ++++ virt-manager-2.0.0/tests/clitest.py +@@ -176,7 +176,7 @@ class Command(object): try: 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.openconn(self.argv[idx + 1]) + conn = utils.URIs.openconn(self.argv[idx + 1]) break -Index: virt-manager-1.5.0/tests/uitests/utils.py +Index: virt-manager-2.0.0/tests/test_inject.py =================================================================== ---- virt-manager-1.5.0.orig/tests/uitests/utils.py -+++ virt-manager-1.5.0/tests/uitests/utils.py -@@ -1,4 +1,4 @@ --from __future__ import print_function -+ - - import logging - import os -Index: virt-manager-1.5.0/tests/utils.py -=================================================================== ---- virt-manager-1.5.0.orig/tests/utils.py -+++ virt-manager-1.5.0/tests/utils.py -@@ -104,11 +104,11 @@ def openconn(uri): - conn.fetch_all_nodedevs() - - _conn_cache[uri] = {} -- for key, value in conn._fetch_cache.items(): -+ for key, value in list(conn._fetch_cache.items()): - _conn_cache[uri][key] = value[:] - - # Prime the internal connection cache -- for key, value in _conn_cache[uri].items(): -+ for key, value in list(_conn_cache[uri].items()): - conn._fetch_cache[key] = value[:] - - def cb_cache_new_pool(poolobj): -Index: virt-manager-1.5.0/tests/test_inject.py -=================================================================== ---- virt-manager-1.5.0.orig/tests/test_inject.py -+++ virt-manager-1.5.0/tests/test_inject.py -@@ -1,7 +1,7 @@ - #!/usr/bin/env python2 - # Copyright (C) 2013, 2014 Red Hat, Inc. - --from __future__ import print_function -+ - - import atexit - import os -@@ -30,7 +30,7 @@ FEDORA_URL = "http://dl.fedoraproject.or - - (WARN_RHEL4, - WARN_RHEL5, -- WARN_LATEST) = range(1, 4) -+ WARN_LATEST) = list(range(1, 4)) +--- virt-manager-2.0.0.orig/tests/test_inject.py ++++ virt-manager-2.0.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(): -@@ -186,7 +186,7 @@ def _make_tests(): +@@ -115,7 +115,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(FetchTests, "testFetch%.3d_%s" % - (idx, dname.replace("-", "_")), _make_fetch_cb(dobj)) -Index: virt-manager-1.5.0/tests/test_urls.py -=================================================================== ---- virt-manager-1.5.0.orig/tests/test_urls.py -+++ virt-manager-1.5.0/tests/test_urls.py -@@ -253,7 +253,7 @@ def _make_tests(): - vals.get("testshortcircuit", "0") == "1") - urls[d.name] = d - -- keys = urls.keys() -+ keys = list(urls.keys()) - keys.sort() - for key in keys: - distroobj = urls[key] -Index: virt-manager-1.5.0/tests/virtconvtest.py -=================================================================== ---- virt-manager-1.5.0.orig/tests/virtconvtest.py -+++ virt-manager-1.5.0/tests/virtconvtest.py -@@ -15,7 +15,7 @@ - # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - # MA 02110-1301 USA. - --from __future__ import print_function -+ - - import glob - import io -Index: virt-manager-1.5.0/tests/nodedev.py -=================================================================== ---- virt-manager-1.5.0.orig/tests/nodedev.py -+++ virt-manager-1.5.0/tests/nodedev.py -@@ -69,7 +69,7 @@ class TestNodeDev(unittest.TestCase): - - def _testCompare(self, devname, vals, devxml=None): - def _compare(dev, vals, root=""): -- for attr in vals.keys(): -+ for attr in list(vals.keys()): - expect = vals[attr] - actual = getattr(dev, attr) - if isinstance(expect, list): + setattr(InjectTests, "testInitrd%.3d_%s" % + (idx, dname.replace("-", "_")), _make_check_cb(dobj))