Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package virt-manager.15783 for
openSUSE:Leap:15.2:Update checked in at 2021-02-16 06:05:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:Update/virt-manager.15783 (Old)
and /work/SRC/openSUSE:Leap:15.2:Update/.virt-manager.15783.new.28504
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virt-manager.15783"
Tue Feb 16 06:05:05 2021 rev:1 rq:871548 version:2.2.1
Changes:
--------
New Changes file:
--- /dev/null 2021-01-11 18:20:20.070723563 +0100
+++
/work/SRC/openSUSE:Leap:15.2:Update/.virt-manager.15783.new.28504/virt-manager.changes
2021-02-16 06:05:07.322604988 +0100
@@ -0,0 +1,3557 @@
+-------------------------------------------------------------------
+Mon Jan 25 14:32:10 MST 2021 - [email protected]
+
+- bsc#1180897 - SLES15 SP2: VM does not boot after virt-install
+ installing from ISO image.
+ virtinst-keep-iso-for-xenpv.patch
+
+-------------------------------------------------------------------
+Thu Jan 7 12:48:11 MST 2021 - [email protected]
+
+- bsc#1180069 - L3: virsh edit Error: XML document failed to
+ validate against schema: Unable to validate doc.
+ virtinst-smbios-unsupported-for-xenpv.patch
+
+-------------------------------------------------------------------
+Fri Dec 18 06:06:52 MST 2020 - [email protected]
+
+- bsc#1180062 - virt-install uses isoinfo. Include mkisofs in the
+ spec file.
+ virt-manager.spec
+
+-------------------------------------------------------------------
+Mon Nov 30 13:39:10 MST 2020 - [email protected]
+
+- bsc#1179236 - L3: virt-install: "Error validating install
+ location: invalid literal for int() with base 10" reported by
+ virt-install ref:_00D1igLOd._5001iTe00n:ref
+ virtinst-sap-detection.patch
+
+-------------------------------------------------------------------
+Tue Oct 27 14:16:41 MDT 2020 - [email protected]
+
+- bsc#1177620 - [xen] deployed WIN2K19 guest system could not find
+ a driver for network adapter
+ virtinst-set-default-nic.patch
+
+-------------------------------------------------------------------
+Thu Sep 3 13:59:39 MDT 2020 - [email protected]
+
+- bsc#1176080 - selecting one UEFI firmware in install wizard
+ resets UI to BIOS
+ e8bf16b9-details-fix-detection-of-firmware-auto-selection.patch
+- Upstream bug fix (bsc#1027942)
+ 5573aeb4-createnet-Fix-XML-editor-error-when-dhcp-fields-are-empty.patch
+ 7e3fb3f2-graphics-Default-to-vga-instead-of-qxl-for-non-spice.patch
+
+-------------------------------------------------------------------
+Wed Jul 29 13:22:53 MDT 2020 - [email protected]
+
+- bsc#1174176 - IDE: "Only 2 disks for bus 'NONE' are supported"
+ virtman-disallow-adding-floppy-disk.patch
+
+-------------------------------------------------------------------
+Thu Jul 23 17:20:03 MDT 2020 - [email protected]
+
+- bsc#1172356 - Not able to hot-plug NIC via virt-manager, asks to
+ attach on next reboot while it should be live attached
+ virtinst-set-default-nic.patch
+
+-------------------------------------------------------------------
+Mon Jul 13 14:43:35 MDT 2020 - [email protected]
+
+- bsc#1169708 - Virtualization/virt-manager: Bug yast2 virt-install
+ internal error
+ virt-install.rb
+
+-------------------------------------------------------------------
+Tue Mar 24 14:00:39 MDT 2020 - [email protected]
+
+- bsc#1167569 - SLES 15 SP2 RC1 - virt-install: cache=none is
+ ignored (kvm)
+ virtinst-set-cache-mode-unsafe-for-install.patch
+
+-------------------------------------------------------------------
+Fri Mar 20 15:03:40 MDT 2020 - [email protected]
+
+- bsc#1167202 - SLES 15 SP2 Snapshot8 - virt-install misses module
+ gi
+ virt-manager.spec
+
+-------------------------------------------------------------------
+Mon Mar 9 13:46:48 MDT 2020 - [email protected]
+
+- Upstream bug fix (bsc#1027942)
+
15a9502b-Fix-showing-the-firmware-type-in-case-of-firmware-auto-selection.patch
+
+-------------------------------------------------------------------
+Mon Dec 2 14:03:00 MST 2019 - [email protected]
+
+- bsc#1157144 - [s390][virt-manager] There was the black screen
+ from guest graphical console during guest installation
+ virtinst-s390x-disable-graphics.patch
+- bsc#1158227 - virt-manager: Fix duplicate entries in the
+ operating system URL drop down menu
+ virtman-show-suse-install-repos.patch
+- Upstream bug fix (bsc#1027942)
+ 29f9f5f2-virt-xml-fix-defined_xml_is_unchanged.patch
+- Drop virtman-default-to-xen-pv.patch
+- Refreshed
+ virtinst-add-pvh-support.patch
+ virtinst-modify-gui-defaults.patch
+ virt-manager.changes
+ virt-manager.spec
+ virtman-allow-creating-i686-vm.patch
+ virtman-python2-to-python3-conversion.patch
+
+-------------------------------------------------------------------
+Wed Nov 27 14:53:06 MST 2019 - [email protected]
+
+- bsc#1156964 - import a exist disk for creating PV guest failed
+ virtinst-pvgrub2-bootloader.patch
+- Refreshed patches
+ virtinst-change-location-for-grub_xen.patch
+ virtinst-set-cache-mode-unsafe-for-install.patch
+
+-------------------------------------------------------------------
+Fri Nov 22 13:50:11 MST 2019 - [email protected]
+
+- bsc#1157097 - PV guest on_reboot event be set to 'destroy' by
+ default
+ virtinst-pvgrub2-bootloader.patch
+- Rebased patches
+ virtinst-change-location-for-grub_xen.patch
+ virtman-increase-setKeepAlive-count.patch
+
+-------------------------------------------------------------------
+Tue Nov 12 10:17:56 MST 2019 - [email protected]
+
+- Upstream bug fixes (bsc#1027942)
+ 1547e16d-domcapabilities-Get-video-devices.patch
+ 2e20b128-domcapabilities-Add-supports_video_bochs.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
+
+-------------------------------------------------------------------
+Mon Oct 28 07:35:25 MDT 2019 - [email protected]
+
+- bsc#1155197 - [xen][virt-manager] Fail to boot up installed
+ sles15sp2 PV guest
+ virtinst-pvgrub2-bootloader.patch
+ virtinst-change-location-for-grub_xen.patch
+- Upstream bug fixes (bsc#1027942)
+ 9465da41-urlfetcher-Deal-with-file-in-_LocalURLFetcher.patch
+ 651e5b6d-devices-video-Simplify-model-hvm-check.patch
+ d9736db9-addhardware-Add-bochs-display-to-the-video-list.patch
+ 8f4c53ea-video-Prefer-bochs-when-its-supported..patch
+
+-------------------------------------------------------------------
+Tue Aug 27 13:54:23 MDT 2019 - [email protected]
+
+- Upstream bug fixes (bsc#1027942)
+ 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
+
+-------------------------------------------------------------------
+Mon Jul 29 13:22:56 MDT 2019 - [email protected]
+
+- bsc#1143315 - virt-manager: Fix detection for SLE15
+ virtinst-add-sle15-detection-support.patch
+ virtinst-add-caasp-support.patch
+ virtinst-detect-oes-distros.patch
+ virtinst-add-pvh-support.patch
+ virtinst-s390x-disable-graphics.patch
+ virtinst-set-qemu-emulator.patch
+
+-------------------------------------------------------------------
+Wed Jul 10 14:21:53 MDT 2019 - [email protected]
+
+- Upstream bug fix (bsc#1027942)
+
3c6e8537-guest-fix-warning-message-when-machine-type-is-changed-for-secure-boot.patch
+
+-------------------------------------------------------------------
+Fri Jul 5 08:54:18 MDT 2019 - [email protected]
+
+- Update to virt-manager 2.2.1 (fate#326786)
+ virt-manager-2.2.1.tar.bz2
+ * CVE-2019-10183: Replace ???unattended user-password and admin-password
with user-password-file and admin-password-file (Fabiano Fid??ncio)
+ * Consistent ???memballoon default across non-x86 (Andrea Bolognani)
+ * virt-install: add ???numatune memnode.* (Athina Plaskasoviti)
+ * Drop hard dep on gtksourceview4, gtksourceview3 is fine as well
+- Drop patches no longer needed
+ 033e9702-xmleditor-Handle-gtksourceview3-as-well-as-gtksourceview4.patch
+ 51d28f04-unattended-Dont-log-user-admin-passwords.patch
+ 5312a961-virt-install-Revive-wait-0-as-alias-for-noautoconsole.patch
+ 58c68764-unattended-Read-the-passwords-from-a-file.patch
+
+-------------------------------------------------------------------
+Wed Jul 3 12:07:53 MDT 2019 - [email protected]
+
+- bsc#1140211 - VUL-1: CVE-2019-10183: virt-manager: unattended
+ option leaks password via command line argument
+ 58c68764-unattended-Read-the-passwords-from-a-file.patch
+ 51d28f04-unattended-Dont-log-user-admin-passwords.patch
+- Upstream bug fix (bsc#1027942)
++++ 3360 more lines (skipped)
++++ between /dev/null
++++ and
/work/SRC/openSUSE:Leap:15.2:Update/.virt-manager.15783.new.28504/virt-manager.changes
New:
----
0002-virtinst-python3-avoid-comparison-of-None-and-int.patch
0c223ab2-guest-Dont-set-default-uefi-if-firmware-is-set.patch
1547e16d-domcapabilities-Get-video-devices.patch
15a9502b-Fix-showing-the-firmware-type-in-case-of-firmware-auto-selection.patch
29f9f5f2-virt-xml-fix-defined_xml_is_unchanged.patch
2e20b128-domcapabilities-Add-supports_video_bochs.patch
3009888a-urlfetcher-Dont-override-fullurl-when-its-explicitly-set.patch
3c6e8537-guest-fix-warning-message-when-machine-type-is-changed-for-secure-boot.patch
414ffa5e-virt-install-Use-minutes-instead-of-seconds-on-get_time_string.patch
51d84c54-connection-Avoid-repeated-default-pool-creation-attempts.patch
53245827-urlfetcher-Force-a-flush-after-writing-to-a-file.patch
5573aeb4-createnet-Fix-XML-editor-error-when-dhcp-fields-are-empty.patch
651e5b6d-devices-video-Simplify-model-hvm-check.patch
7e3fb3f2-graphics-Default-to-vga-instead-of-qxl-for-non-spice.patch
8f4c53ea-video-Prefer-bochs-when-its-supported..patch
9465da41-urlfetcher-Deal-with-file-in-_LocalURLFetcher.patch
ae19d6d6-fix-resizing-of-spice-clients-with-guest-resizing-enabled.patch
d934d6f2-domcaps-Fix-check-for-uncached-security-features.patch
d9736db9-addhardware-Add-bochs-display-to-the-video-list.patch
e8bf16b9-details-fix-detection-of-firmware-auto-selection.patch
virt-install.desktop
virt-install.rb
virt-manager-2.2.1.tar.bz2
virt-manager-supportconfig
virt-manager.changes
virt-manager.spec
virtconv-python2-to-python3-conversion.patch
virtinst-add-caasp-support.patch
virtinst-add-pvh-support.patch
virtinst-add-sle15-detection-support.patch
virtinst-change-location-for-grub_xen.patch
virtinst-default-xen-to-qcow2-format.patch
virtinst-detect-oes-distros.patch
virtinst-dont-use-special-copy-cpu-features.patch
virtinst-keep-install-iso-attached.patch
virtinst-keep-iso-for-xenpv.patch
virtinst-media-detection.patch
virtinst-modify-gui-defaults.patch
virtinst-osdict-get_supported.patch
virtinst-pvgrub2-bootloader.patch
virtinst-python2-to-python3-conversion.patch
virtinst-refresh_before_fetch_pool.patch
virtinst-s390x-disable-graphics.patch
virtinst-sap-detection.patch
virtinst-set-cache-mode-unsafe-for-install.patch
virtinst-set-default-nic.patch
virtinst-set-qemu-emulator.patch
virtinst-smbios-unsupported-for-xenpv.patch
virtinst-use-qemu-for-cdrom-device.patch
virtinst-use-xenpae-kernel-for-32bit.patch
virtinst-vol-default-nocow.patch
virtinst-xen-drive-type.patch
virtinst-xenbus-disk-index-fix.patch
virtman-allow-creating-i686-vm.patch
virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
virtman-check-for-valid-display.patch
virtman-desktop.patch
virtman-disallow-adding-floppy-disk.patch
virtman-dont-allow-grub.xen-to-be-deleted.patch
virtman-dont-specify-gtksource-version.patch
virtman-dont-specify-vte-version.patch
virtman-fix-env-script-interpreter.patch
virtman-fix-restore-vm-menu-selection.patch
virtman-increase-setKeepAlive-count.patch
virtman-keycombo.patch
virtman-kvm.patch
virtman-load-stored-uris.patch
virtman-python2-to-python3-conversion.patch
virtman-register-delete-event-for-details-dialog.patch
virtman-show-suse-install-repos.patch
virttests-python2-to-python3-conversion.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ virt-manager.spec ++++++
#
# spec file for package virt-manager
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# 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/
#
%global __python %{__python3}
%global with_guestfs 0
%global default_hvs "qemu,xen,lxc"
Name: virt-manager
Version: 2.2.1
Release: 0
Summary: Virtual Machine Manager
License: GPL-2.0-or-later
Group: System/Monitoring
Url: http://virt-manager.org/
Source0: %{name}-%{version}.tar.bz2
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
Patch72: virtman-keycombo.patch
Patch73: virtman-show-suse-install-repos.patch
Patch74: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch75: virtinst-pvgrub2-bootloader.patch
Patch76: virtinst-change-location-for-grub_xen.patch
Patch77: virtman-fix-env-script-interpreter.patch
Patch78: virtinst-set-qemu-emulator.patch
# Features or Enhancements
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
Patch128: virtinst-add-pvh-support.patch
Patch129: virtinst-media-detection.patch
# Bug Fixes
Patch151: virtman-increase-setKeepAlive-count.patch
Patch152: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
Patch153: virtman-check-for-valid-display.patch
Patch154: virtman-allow-creating-i686-vm.patch
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
Patch169: virtinst-sap-detection.patch
Patch170: virtinst-smbios-unsupported-for-xenpv.patch
Patch171: virtinst-keep-iso-for-xenpv.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
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define verrel %{version}-%{release}
Requires: dbus-1-x11
Requires: dconf
Requires: gtk3 >= 3.22
Requires: python3-gobject-Gdk
# For console widget
Requires: python3-cairo
Requires: python3-gobject-cairo
Recommends: python3-SpiceClientGtk
Requires: gtksourceview >= 3
Requires: virt-install
Requires: virt-manager-common = %{verrel}
%if %{with_guestfs}
Requires: python3-libguestfs
%endif
BuildRequires: glib2-devel
BuildRequires: gtk3-tools
BuildRequires: intltool
BuildRequires: perl
BuildRequires: python3-devel
BuildRequires: python3-gobject
BuildRequires: python3-libvirt-python >= 0.7.0
BuildRequires: python3-libxml2-python
BuildRequires: python3-requests
BuildRequires: typelib(Libosinfo)
%description
Virtual Machine Manager provides a graphical tool for administering virtual
machines for KVM, Xen, and QEmu. Start, stop, add or remove virtual devices,
connect to a graphical or serial console, and see resource usage statistics
for existing VMs on local or remote machines. Uses libvirt as the backend
management API.
%package common
Summary: Common files used by the different Virtual Machine Manager
interfaces
Group: System/Monitoring
# This version not strictly required: virt-manager should work with older,
# however varying amounts of functionality will not be enabled.
Requires: libosinfo >= 0.2.10
Requires: mkisofs
Requires: python3-gobject
Requires: python3-ipaddr
Requires: python3-libvirt-python >= 0.7.0
Requires: python3-libxml2-python
Requires: python3-pycurl
Requires: typelib(LibvirtGLib)
Suggests: python3-virt-bootstrap
BuildRequires: gobject-introspection
# No AppIndicator package on SLE
%if 0%{?is_opensuse} == 0
%define __requires_exclude typelib\\(AppIndicator3\\)
%endif
%description common
Common files used by the different virt-manager interfaces, as well as
virt-install related tools.
%package -n virt-install
Summary: Utilities for installing virtual machines
Group: System/Monitoring
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
%description -n virt-install
Package includes several command line utilities, including virt-install
(build and install new VMs) and virt-clone (clone an existing virtual
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
%patch72 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch77 -p1
%patch78 -p1
# Enhancements
%patch103 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
%patch126 -p1
%patch127 -p1
%patch128 -p1
%patch129 -p1
# Bug Fixes
%patch151 -p1
%patch152 -p1
%patch153 -p1
%patch154 -p1
%patch155 -p1
%patch156 -p1
%patch157 -p1
%patch158 -p1
%patch160 -p1
%patch161 -p1
%patch162 -p1
%patch163 -p1
%patch164 -p1
%patch165 -p1
%patch166 -p1
%patch167 -p1
%patch168 -p1
%patch169 -p1
%patch170 -p1
%patch171 -p1
# Python2 to Python3 patches
%patch200 -p1
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1
%patch205 -p1
%build
%if %{default_hvs}
%global _default_hvs --default-hvs %{default_hvs}
%endif
python3 setup.py configure \
--prefix=%{_prefix} \
--default-graphics="spice" \
%{?_default_hvs}
%install
python3 setup.py \
--no-update-icon-cache \
--no-compile-schemas install \
--prefix=%{_prefix} \
-O1 --root=%{buildroot}
mkdir -p %{buildroot}/%{_datadir}/YaST2/clients/
install -m644 %SOURCE1 %{buildroot}/%{_datadir}/YaST2/clients/virt-install.rb
mkdir -p %{buildroot}/%{_datadir}/applications/YaST2/
install -m644 %SOURCE2
%{buildroot}/%{_datadir}/applications/YaST2/virt-install.desktop
# Oddly, supportconfig doesn't execute plugins with '-' in the name, so use
'virt_manager'
mkdir -p %{buildroot}/usr/lib/supportconfig/plugins
install -m 755 %SOURCE3 %{buildroot}/usr/lib/supportconfig/plugins/virt_manager
%find_lang %{name}
%post
/bin/touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 || :
/usr/bin/update-desktop-database > /dev/null 2>&1 || :
%postun
if [ $1 -eq 0 ] ; then
/bin/touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 ||
:
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas > /dev/null 2>&1
|| :
fi
/usr/bin/update-desktop-database > /dev/null 2>&1 || :
%posttrans
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || :
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas > /dev/null 2>&1 || :
%files
%defattr(-,root,root,-)
%{_bindir}/%{name}
%{_mandir}/man1/%{name}.1*
%dir %{_datadir}/virt-manager/ui
%{_datadir}/%{name}/ui/*.ui
%{_datadir}/%{name}/virt-manager
%{_datadir}/%{name}/virtManager
%dir %{_datadir}/icons/hicolor
%dir %{_datadir}/icons/hicolor/*/
%dir %{_datadir}/icons/hicolor/*/apps
%{_datadir}/%{name}/icons
%{_datadir}/icons/hicolor/*/apps/*
%{_datadir}/appdata/%{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
%dir /usr/lib/supportconfig
%dir /usr/lib/supportconfig/plugins
/usr/lib/supportconfig/plugins/virt_manager
%files common -f %{name}.lang
%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
%{_datadir}/bash-completion/completions/virt-install
%{_datadir}/%{name}/virt-clone
%{_datadir}/bash-completion/completions/virt-clone
%{_datadir}/%{name}/virt-convert
%{_datadir}/bash-completion/completions/virt-convert
%{_datadir}/%{name}/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
++++++ 0002-virtinst-python3-avoid-comparison-of-None-and-int.patch ++++++
>From cb90bbc8671aa25e23e55341745cc2682547e5f0 Mon Sep 17 00:00:00 2001
From: Martin Wilck <[email protected]>
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
++++++ 0c223ab2-guest-Dont-set-default-uefi-if-firmware-is-set.patch ++++++
Subject: guest: Don't set default uefi if firmware= is set
From: Cole Robinson [email protected] 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:
++++++ 1547e16d-domcapabilities-Get-video-devices.patch ++++++
Subject: domcapabilities: Get video devices
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
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):
++++++
15a9502b-Fix-showing-the-firmware-type-in-case-of-firmware-auto-selection.patch
++++++
Subject: details: Fix showing the firmware type in case of firmware auto
selection
From: Lin Ma [email protected] 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 <[email protected]>
Signed-off-by: Lin Ma <[email protected]>
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)
++++++ 29f9f5f2-virt-xml-fix-defined_xml_is_unchanged.patch ++++++
Subject: virt-xml: fix defined_xml_is_unchanged
From: Pavel Hrdina [email protected] 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 <[email protected]>
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
################
++++++ 2e20b128-domcapabilities-Add-supports_video_bochs.patch ++++++
Subject: domcapabilities: Add supports_video_bochs()
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
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)
++++++ 3009888a-urlfetcher-Dont-override-fullurl-when-its-explicitly-set.patch
++++++
Subject: urlfetcher: Don't override fullurl when it's explicitly set
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
Signed-off-by: Fabiano Fid??ncio <[email protected]>
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
++++++
3c6e8537-guest-fix-warning-message-when-machine-type-is-changed-for-secure-boot.patch
++++++
Subject: guest: fix warning message when machine type is changed for secure boot
From: Pavel Hrdina [email protected] 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 <[email protected]>
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):
++++++
414ffa5e-virt-install-Use-minutes-instead-of-seconds-on-get_time_string.patch
++++++
Subject: virt-install: Use minutes instead of seconds on get_time_string()
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
Signed-off-by: Fabiano Fid??ncio <[email protected]>
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.") % {
++++++ 51d84c54-connection-Avoid-repeated-default-pool-creation-attempts.patch
++++++
Subject: connection: Avoid repeated default pool creation attempts
From: Michael Weiser [email protected] 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 <[email protected]>
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:
++++++ 53245827-urlfetcher-Force-a-flush-after-writing-to-a-file.patch ++++++
Subject: urlfetcher: Force a flush after writing to a file
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
Signed-off-by: Fabiano Fid??ncio <[email protected]>
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
++++++ 5573aeb4-createnet-Fix-XML-editor-error-when-dhcp-fields-are-empty.patch
++++++
Subject: createnet: Fix XML editor error when dhcp fields are empty
From: Cole Robinson [email protected] 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 <[email protected]>
--- 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
++++++ 651e5b6d-devices-video-Simplify-model-hvm-check.patch ++++++
Subject: devices: video: Simplify model hvm check
From: Cole Robinson [email protected] Thu Oct 3 15:41:44 2019 -0400
Date: Thu Oct 3 15:41:44 2019 -0400:
Git: 651e5b6d753930a2e7536efa4e6d20f57b038e80
Signed-off-by: Cole Robinson <[email protected]>
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:
++++++ 7e3fb3f2-graphics-Default-to-vga-instead-of-qxl-for-non-spice.patch
++++++
Subject: graphics: Default to 'vga' instead of 'qxl' for non-spice
From: Cole Robinson [email protected] 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 <[email protected]>
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):
++++++ 8f4c53ea-video-Prefer-bochs-when-its-supported..patch ++++++
Subject: video: Prefer "bochs" when it's supported.
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
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"
++++++ 9465da41-urlfetcher-Deal-with-file-in-_LocalURLFetcher.patch ++++++
Subject: urlfetcher: Deal with 'file://' in _LocalURLFetcher()
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
Signed-off-by: Fabiano Fid??ncio <[email protected]>
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
++++++ ae19d6d6-fix-resizing-of-spice-clients-with-guest-resizing-enabled.patch
++++++
Subject: fix resizing of spice clients with guest resizing enabled
From: Florian Ludwig [email protected] 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:
++++++ d934d6f2-domcaps-Fix-check-for-uncached-security-features.patch ++++++
Subject: domcaps: Fix check for uncached security features
From: Cole Robinson [email protected] 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 <[email protected]>
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 = []
++++++ d9736db9-addhardware-Add-bochs-display-to-the-video-list.patch ++++++
Subject: addhardware: Add "bochs" display to the video list
From: Fabiano Fid??ncio [email protected] 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 <[email protected]>
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
++++++ e8bf16b9-details-fix-detection-of-firmware-auto-selection.patch ++++++
Subject: details: fix detection of firmware auto-selection
From: Pavel Hrdina [email protected] 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 <[email protected]>
--- 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(
++++++ virt-install.desktop ++++++
[Desktop Entry]
X-SuSE-translate=true
X-SuSE-DocTeamID=ycc_xen
Type=Application
Categories=GTK;GNOME;System;Monitor;X-SuSE-YaST;X-SuSE-YaST-Virtualization;
X-KDE-ModuleType=Library
X-KDE-RootOnly=true
X-KDE-HasReadOnlyMode=false
X-SuSE-YaST-Call=virt-install
X-SuSE-YaST-Group=Virtualization
X-SuSE-YaST-Argument=
X-SuSE-YaST-RootOnly=true
X-SuSE-YaST-Geometry=
X-SuSE-YaST-SortKey=
Icon=virt-manager
Exec=/sbin/yast2 virt-install
Name=Create Virtual Machines for Xen and KVM
GenericName=Create Virtual Machines
X-KDE-SubstituteUID=true
++++++ virt-install.rb ++++++
# ------------------------------------------------------------------------------
# Copyright (c) 2013 Novell, Inc. All Rights Reserved.
#
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of version 2 of the GNU General Public License as published by the
# Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail, you may find
# current contact information at www.novell.com.
# ------------------------------------------------------------------------------
#
#
# File: clients/virt-install.ycp
# Package: Installation of a virtual machine
# Summary: Main VM installation YaST frontend for python based virt-install
# Authors: Charles E. Arnold <[email protected]>
#
# $Id$
module Yast
class VirtinstallClient < Client
def main
textdomain "virt-install"
Yast.import "UI"
Yast.import "Popup"
Yast.import "String"
Yast.import "Arch"
#===================================================================
# Start virt-install (GUI) or vm-install if Text mode (commandline)
#-------------------------------------------------------------------
status = 0
@details = {}
Builtins.y2milestone("START HERE.")
if UI.TextMode()
Builtins.y2milestone("Running virt-install in text mode is not
supported. Running vm-install instead in command line mode.")
status = UI.RunInTerminal("/usr/bin/vm-install")
else
Builtins.y2milestone("Launching virt-manager to run virt-install in GUI
mode.")
if Arch.is_xen0 == false
details = Convert.to_map(SCR.Execute(path(".target.bash_output"),
"/usr/bin/virt-manager --connect=qemu:///system --show-domain-creator"))
else
details = Convert.to_map(SCR.Execute(path(".target.bash_output"),
"/usr/bin/virt-manager --connect=xen:/// --show-domain-creator"))
end
status = Ops.get_integer(details, "exit", 0)
end
Builtins.y2milestone("virt-install finished with exit code: <%1>", status)
if status == 0
return :next
else
if Builtins.size(Ops.get_string(details, "stderr", "")) > 0
Popup.ErrorDetails(_("Failed to start virt-install"),
Convert.to_string(details, "stderr", ""))
else
Popup.Error(_("Failed to start virt-install"))
end
end
nil
end
end
end
Yast::VirtinstallClient.new.main
++++++ virt-manager-supportconfig ++++++
#!/bin/bash
#############################################################
# Name: Supportconfig Plugin for virt-manager
# Description: Gathers important troubleshooting information
# about virt-manager
# Author: Jim Fehlig <[email protected]>
#############################################################
RCFILE="/usr/lib/supportconfig/resources/scplugin.rc"
VIRTMAN_LOG_DIR="/root/.cache/virt-manager"
VIRTMAN_LOG_FILES=""
if [ -s $RCFILE ]; then
if ! source $RCFILE; then
echo "ERROR: Initializing resource file: $RCFILE" >&2
exit 1
fi
fi
rpm_verify() {
thisrpm="$1"
local ret=0
echo
echo "#==[ Validating RPM ]=================================#"
if rpm -q "$thisrpm" >/dev/null 2>&1; then
echo "# rpm -V $thisrpm"
if rpm -V "$thisrpm"; then
echo "Status: Passed"
else
echo "Status: WARNING"
fi
else
echo "package $thisrpm is not installed"
ret=1
fi
echo
return $ret
}
if ! rpm_verify virt-manager; then
echo "Skipped"
exit 0
fi
test -d $VIRTMAN_LOG_DIR && VIRTMAN_LOG_FILES="$(find -L $VIRTMAN_LOG_DIR/
-type f)"
plog_files 0 "$VIRTMAN_LOG_FILES"
echo "Done"
++++++ virtconv-python2-to-python3-conversion.patch ++++++
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))
++++++ virtinst-add-caasp-support.patch ++++++
References: bsc#1010060
Index: virt-manager-2.2.1/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):
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
@@ -550,6 +556,9 @@ class _SuseDistro(_RHELDistro):
# 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"
@@ -622,6 +631,14 @@ class _OpensuseDistro(_SuseDistro):
famregex = ".*openSUSE.*"
+class _CAASPDistro(_SuseDistro):
+ PRETTY_NAME = "SLES"
+ matching_distros = ["caasp"]
+ _variant_prefix = "caasp"
+ _suse_regex = [".*SUSE Container as a Service Platform*", ".*SUSE CaaS
Platform*"]
+ famregex = ".*(SUSE Container as a Service Platform|SUSE CaaS Platform).*"
+
+
class _OESDistro(_SuseDistro):
PRETTY_NAME = "OES"
matching_distros = ["oes"]
@@ -838,6 +855,7 @@ def _build_distro_list(osobj):
_SLESDistro,
_SLEDDistro,
_OpensuseDistro,
+ _CAASPDistro,
_OESDistro,
_DebianDistro,
_UbuntuDistro,
++++++ virtinst-add-pvh-support.patch ++++++
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
===================================================================
--- 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:
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
===================================================================
--- virt-manager-2.2.1.orig/virtinst/domain/os.py
+++ virt-manager-2.2.1/virtinst/domain/os.py
@@ -32,6 +32,8 @@ class DomainOs(XMLBuilder):
return self.os_type == "hvm"
def is_xenpv(self):
return self.os_type in ["xen", "linux"]
+ def is_xenpvh(self):
+ return self.os_type in ["xenpvh", "linux"]
def is_container(self):
return self.os_type == "exe"
Index: virt-manager-2.2.1/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):
usb_tablet = False
usb_keyboard = False
- if self.os.is_x86() and not self.os.is_xenpv():
+ if self.os.is_x86() and not self.os.is_xenpv() and not
self.os.is_xenpvh():
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
===================================================================
--- 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):
return self.get_xmlobj().os.is_xenpv()
def is_hvm(self):
return self.get_xmlobj().os.is_hvm()
+ def is_xenpvh(self):
+ return self.get_xmlobj().os.is_xenpvh()
def get_uuid(self):
if self._uuid is None:
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
@@ -223,6 +223,8 @@ class vmmConnection(vmmGObject):
label = "xen (paravirt)"
elif gtype == "hvm":
label = "xen (fullvirt)"
+ elif gtype == "xenpvh":
+ label = "xen (pvh - Technical Preview)"
elif domtype == "test":
if gtype == "xen":
label = "test (xen)"
++++++ virtinst-add-sle15-detection-support.patch ++++++
References: bsc#1054986
Index: virt-manager-2.2.1/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):
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:
@@ -593,7 +597,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'):
- tryvar += ".%s" % update
+ if sp_version:
+ tryvar += "sp%s" % update
+ else:
+ tryvar += ".%s" % update
if OSDB.lookup_os(tryvar):
return tryvar
update -= 1
@@ -607,6 +614,14 @@ class _SuseDistro(_RHELDistro):
return var
+class _SLEDistro(_SuseDistro):
+ PRETTY_NAME = "SLE"
+ matching_distros = ["sle"]
+ _variant_prefix = "sle"
+ _suse_regex = ["SUSE Linux Enterprise$"]
+ famregex = "SUSE Linux Enterprise$"
+
+
class _SLESDistro(_SuseDistro):
PRETTY_NAME = "SLES"
matching_distros = ["sles"]
@@ -852,6 +867,7 @@ def _build_distro_list(osobj):
_FedoraDistro,
_RHELDistro,
_CentOSDistro,
+ _SLEDistro,
_SLESDistro,
_SLEDDistro,
_OpensuseDistro,
++++++ virtinst-change-location-for-grub_xen.patch ++++++
References: fate#326960, bsc#1123942
Index: virt-manager-2.2.1/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):
guest.bootloader = "pygrub"
else:
guest.bootloader = None
- self._treemedia_bootconfig =
("/usr/lib/grub2/x86_64-xen/grub.xen", "", "")
+ if os.path.exists("/usr/share/grub2/x86_64-xen/grub.xen"):
+ self._treemedia_bootconfig =
("/usr/share/grub2/x86_64-xen/grub.xen", "", "")
+ else:
+ self._treemedia_bootconfig =
("/usr/lib/grub2/x86_64-xen/grub.xen", "", "")
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
===================================================================
--- 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))
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:
continue
# There are a few pieces here
++++++ virtinst-default-xen-to-qcow2-format.patch ++++++
Reference: bnc#885380
Allow Xen based VMs to default to using qcow2
Index: virt-manager-2.2.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:
# 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.
- conn_default_qcow2 = _make(hv_version={"qemu": "1.2.0", "test": 0})
+ conn_default_qcow2 = _make(hv_version={"qemu": "1.2.0", "all": 0})
conn_autosocket = _make(hv_libvirt_version={"qemu": "1.0.6"})
conn_pm_disable = _make(hv_version={"qemu": "1.2.0", "test": 0})
conn_qcow2_lazy_refcounts = _make(
++++++ virtinst-detect-oes-distros.patch ++++++
Enhancement to correctly detect Open Enterprise Server media is
selected as the installation source.
Index: virt-manager-2.2.1/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"
- 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):
famregex = ".*openSUSE.*"
+class _OESDistro(_SuseDistro):
+ PRETTY_NAME = "OES"
+ matching_distros = ["oes"]
+ _variant_prefix = "oes"
+ _suse_regex = [".*Open Enterprise Server*"]
+ famregex = ".*Open Enterprise Server.*"
+
+
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):
_SLESDistro,
_SLEDDistro,
_OpensuseDistro,
+ _OESDistro,
_DebianDistro,
_UbuntuDistro,
_MageiaDistro,
++++++ virtinst-dont-use-special-copy-cpu-features.patch ++++++
References: bsc#1067018 - L3: KVM Guest creation failed - Property .cmt not
found
Some hardware has the .cmt cpu feature but qemu doesn't support it. libvirt
includes it in the cpu capabilities read in by virt-manager. Using 'host-model'
was known to have issues in the past and so a copy method was set up to
manually copy cpu features one at a time (including the unsupported cmt flag).
This patch simply avoids the special copy feature when "Copy host CPU
definition"
is set in the Preferences -> New VM -> CPU Default pop-up menu and falls
back to using 'host-model'.
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
===================================================================
--- 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):
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
+ val == self.SPECIAL_MODE_HOST_COPY):
self.model = None
self.vendor = None
self.model_fallback = None
for f in self.features:
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(guest)
++++++ virtinst-keep-install-iso-attached.patch ++++++
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
===================================================================
--- 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):
def _remove_install_cdrom_media(self, guest):
if not self._install_cdrom_device_added:
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
for disk in guest.devices.disk:
++++++ virtinst-keep-iso-for-xenpv.patch ++++++
References: bsc#1180897
Removing the cdrom iso file from the device prevents booting
with a qemu error.
--- virt-manager/virtinst/install/installer.py.orig 2021-01-25
12:22:43.284220879 -0700
+++ virt-manager/virtinst/install/installer.py 2021-01-25 13:49:00.195386309
-0700
@@ -117,8 +117,9 @@ class Installer(object):
return
for disk in guest.devices.disk:
if disk.is_cdrom() and disk.path == self._cdrom_path():
- disk.path = None
- disk.sync_path_props()
+ if not guest.os.is_xenpv():
+ disk.path = None
+ disk.sync_path_props()
break
def _add_unattended_install_cdrom_device(self, guest, location):
++++++ virtinst-media-detection.patch ++++++
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
===================================================================
--- 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):
cache.checked_for_suse_content = True
content_str = cache.acquire_file_content("content")
if content_str is None:
- return False
-
+ products_str = cache.acquire_file_content("media.1/products")
+ if products_str:
+ products_str = products_str.replace('/', ' ,', 1)
+ products_str = "DISTRO " + products_str.replace('-', ' ')
+ media_str = cache.acquire_file_content("media.1/media")
+ if media_str:
+ media_arch = "x86_64"
+ if 'aarch64' in media_str:
+ media_arch = "aarch64"
+ elif 'ppc64le' in media_str:
+ media_arch = "ppc64le"
+ elif 's390x' in media_str:
+ media_arch = "s390x"
+ media_str = 'BASEARCHS ' + media_arch
+ if products_str is None and media_str is None:
+ return False
+ content_str = products_str + "\n" + media_str
try:
cache.suse_content = _SUSEContent(content_str)
except Exception as e:
++++++ virtinst-modify-gui-defaults.patch ++++++
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
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -404,8 +404,20 @@ class vmmCreateVM(vmmGObjectUI):
self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1)
activeconn = self._populate_conn_list(urihint)
- self.widget("arch-expander").set_expanded(False)
self.widget("vz-virt-type-hvm").set_active(True)
+ # For Xen have the expander open so users can see PV is the default
+ if activeconn and activeconn.is_xen():
+ self.widget("arch-expander").set_expanded(True)
+ else:
+ self.widget("arch-expander").set_expanded(False)
+
+ # Default to Network install if host was installed that way
+ host_instsrc = getHostInstallSource()
+ if host_instsrc is not None and \
+ (host_instsrc.startswith('ftp:') or
host_instsrc.startswith('http:') or \
+ host_instsrc.startswith('smb:') or
host_instsrc.startswith('nfs:')):
+ self.widget("method-local").set_active(False)
+ self.widget("method-tree").set_active(True)
if self._set_conn(activeconn) is False:
return False
++++++ virtinst-osdict-get_supported.patch ++++++
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
++++++ virtinst-pvgrub2-bootloader.patch ++++++
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
===================================================================
--- 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):
def _alter_treemedia_bootconfig(self, guest):
if not self._treemedia:
- return
+ if not self._treemedia_bootconfig or "grub.xen" not in
self._treemedia_bootconfig[0]:
+ return
kernel, initrd, kernel_args = self._treemedia_bootconfig
if kernel:
@@ -436,6 +437,20 @@ class Installer(object):
install_xml = None
if self.has_install_phase():
install_xml = self._get_install_xml(guest, meter)
+ 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"):
+ guest.bootloader = "pygrub"
+ else:
+ guest.bootloader = None
+ self._treemedia_bootconfig =
("/usr/lib/grub2/x86_64-xen/grub.xen", "", "")
+ log.debug("Using grub.xen to boot guest")
+ on_reboot_value = guest.on_reboot
+ self._alter_bootconfig(guest)
+ guest.on_reboot = on_reboot_value
final_xml = guest.get_xml()
log.debug("Generated install XML: %s",
++++++ virtinst-python2-to-python3-conversion.patch ++++++
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,
++++++ virtinst-refresh_before_fetch_pool.patch ++++++
Reference: bnc#887868
Refresh pools status before fetch_pools.
Currently, when connecting to hypervisor, if there are pools active
but in fact target path already deleted (or for other reasons the
pool is not working), libvirtd not refresh status yet, fetch_pools
will fail, that will cause "connecting to hypervisor" process
reporting error and exit. The whole connection work failed.
With the patch, always refresh pool status before fetch pools. Let
the libvirtd pool status reflect the reality, avoid the non-synced
status affects the hypervisor connection.
Signed-off-by: Chunyan Liu <[email protected]>
Index: virt-manager-2.2.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"
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:
++++++ virtinst-s390x-disable-graphics.patch ++++++
Reference: bnc#869024
Disable graphics on s390x
Index: virt-manager-2.2.1/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):
self.skip_default_channel = False
self.skip_default_sound = False
self.skip_default_usbredir = False
- self.skip_default_graphics = False
+ if self.os.is_s390x():
+ self.skip_default_graphics = True
+ 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):
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
@@ -864,7 +867,7 @@ class Guest(XMLBuilder):
self.add_device(dev)
def _add_default_video_device(self):
- if self.os.is_container():
+ if self.os.is_container() or self.os.is_s390x():
return
if self.devices.video:
return
++++++ virtinst-sap-detection.patch ++++++
Index: virt-manager-2.2.1/virtinst/install/urldetect.py
===================================================================
--- virt-manager-2.2.1.orig/virtinst/install/urldetect.py
+++ virt-manager-2.2.1/virtinst/install/urldetect.py
@@ -267,9 +267,16 @@ class _SUSEContent(object):
distro_version = distro_version.strip()
if "Enterprise" in self.product_name or "SLES" in self.product_name:
- sle_version = self.product_name.strip().rsplit(' ')[4]
+ if " SAP " in self.product_name:
+ sle_version = self.product_name.strip().rsplit(' ')[7]
+ else:
+ sle_version = self.product_name.strip().rsplit(' ')[4]
if len(self.product_name.strip().rsplit(' ')) > 5:
- sle_version = (sle_version + '.' +
+ if " SAP " in self.product_name:
+ sle_version = (sle_version + '.' +
+ self.product_name.strip().rsplit(' ')[8][2])
+ else:
+ sle_version = (sle_version + '.' +
self.product_name.strip().rsplit(' ')[5][2])
distro_version = sle_version
@@ -579,7 +586,7 @@ class _SuseDistro(_RHELDistro):
if self._variant_prefix.startswith(("caasp")):
return self._variant_prefix + distro_version
- if int(version) < 10:
+ if isinstance(version, int) and int(version) < 10:
return self._variant_prefix + "9"
if str(self._variant_prefix).startswith(("sles", "sled", "oes")):
++++++ virtinst-set-cache-mode-unsafe-for-install.patch ++++++
Set cache mode for target installation disk to unsafe for better
performance.
Index: virt-manager-2.2.1/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):
guest.memory) = data
def _get_install_xml(self, guest, meter):
+ # At install time set the target disk to 'unsafe' for
+ # better performance if the target is not a block device
+ saved_cache = "None"
+ if guest.devices.disk:
+ target_disk = guest.devices.disk[0]
+ saved_cache = target_disk.driver_cache
+ if target_disk.type != DeviceDisk.TYPE_BLOCK and
target_disk.driver_io != "native":
+ target_disk.driver_cache = DeviceDisk.CACHE_MODE_UNSAFE
+
data = self._prepare_get_install_xml(guest)
try:
self._alter_bootconfig(guest)
self._alter_install_resources(guest, meter)
ret = guest.get_xml()
+ if saved_cache != "None":
+ target_disk.driver_cache = saved_cache
return ret
finally:
self._remove_install_cdrom_media(guest)
++++++ virtinst-set-default-nic.patch ++++++
References: bsc#1172356
Libvirt doesn't accept "Hypervisor default" as a model name
Index: virt-manager-2.2.1/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,9 @@ class DeviceInterface(Device):
return "e1000e"
if not guest.os.is_x86():
return None
+ if guest.conn.is_xen() and guest.os.is_hvm():
+ # Let libvirt decide the default
+ return None
prefs = ["e1000", "rtl8139", "ne2k_pci", "pcnet"]
supported_models = guest.osinfo.supported_netmodels()
++++++ virtinst-set-qemu-emulator.patch ++++++
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
===================================================================
--- virt-manager-2.2.1.orig/virtinst/guest.py
+++ virt-manager-2.2.1/virtinst/guest.py
@@ -740,6 +740,10 @@ class Guest(XMLBuilder):
self._add_default_memballoon()
self.clock.set_defaults(self)
+ if self.os.is_hvm() and self.type == "xen":
+ # Force not using Xen's old qemu-dm
+ if not self.emulator or "qemu-dm" in self.emulator:
+ self.emulator = "/usr/lib/xen/bin/qemu-system-i386"
self.cpu.set_defaults(self)
self.features.set_defaults(self)
for seclabel in self.seclabels:
++++++ virtinst-smbios-unsupported-for-xenpv.patch ++++++
References: bsc#1180069
--- virt-manager-2.2.1/virtinst/guest.py.orig 2021-01-07 12:44:01.976882907
-0700
+++ virt-manager-2.2.1/virtinst/guest.py 2021-01-07 12:45:08.128884483
-0700
@@ -704,6 +704,8 @@ class Guest(XMLBuilder):
self.type != "kvm"):
log.warning("KVM acceleration not available, using '%s'",
self.type)
+ if self.os.is_xenpv() and self.os.smbios_mode is not None:
+ raise RuntimeError(_("The --sysinfo flag (smbios) is not supported
for Xen PV guests."))
def sync_vcpus_topology(self):
"""
++++++ virtinst-use-qemu-for-cdrom-device.patch ++++++
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
===================================================================
--- 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):
# 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
- if self.conn.is_xen() and self.type == self.TYPE_BLOCK:
+ if self.conn.is_xen() and self.type == self.TYPE_BLOCK and not \
+ self.is_cdrom():
return self.DRIVER_NAME_PHY
if self.conn.support.conn_disk_driver_name_qemu():
return self.DRIVER_NAME_QEMU
++++++ virtinst-use-xenpae-kernel-for-32bit.patch ++++++
References: bsc#978173
The 32bit versions of the media contain a xenpae version along with
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
===================================================================
--- 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):
if self.type == "xen":
# Matches Opensuse > 10.2 and sles 10
- self._kernel_paths.append(
- ("boot/%s/vmlinuz-xen" % tree_arch,
- "boot/%s/initrd-xen" % tree_arch))
+ if tree_arch == "i386":
+ self._kernel_paths.append(
+ ("boot/%s/vmlinuz-xenpae" % tree_arch,
+ "boot/%s/initrd-xenpae" % tree_arch))
+ else:
+ self._kernel_paths.append(
+ ("boot/%s/vmlinuz-xen" % tree_arch,
+ "boot/%s/initrd-xen" % tree_arch))
if str(self._os_variant).startswith(("sles11", "sled11")):
if tree_arch == "s390x":
++++++ virtinst-vol-default-nocow.patch ++++++
Reference: fate#315125:
Set NOCOW flag to newly created volume by default, to solve performance
issue on btrfs.
Signed-off-by: Chunyan Liu <[email protected]>
Index: virt-manager-2.2.1/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):
return self._pool_xml.get_disk_type()
file_type = property(_get_vol_type)
+ def _nocow_default_cb(self):
+ return self.conn.check_support(
+ self.conn.conn_nocow)
+ nocow = XMLProperty("./target/nocow", is_bool=True)
+
##################
# XML properties #
Index: virt-manager-2.2.1/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:
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"})
+ conn_nocow = _make(version="1.2.18", hv_version={"qemu": "2.2.0", "test":
0})
# 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 ++++++
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
===================================================================
--- 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):
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 \
+ self.driver_name != self.DRIVER_NAME_PHY and \
+ self.type != 'file':
+ return self.type
return None
drvtype = self._storage_backend.get_driver_type()
++++++ virtinst-xenbus-disk-index-fix.patch ++++++
Reference: bnc#872789
This is an indexing problem created by virt-manager. It knows not
to add two IDE disks of the same name (eg, 'hda' twice) or two Xen
disks of the same name (eg, 'xvda' twice) but with the different bus
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
===================================================================
--- 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):
:returns: generated target
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
+ postfix_targets = []
+ if self.conn.is_xen():
+ prefixes = [ "hd", "xvd", "vd", "sd", "fd" ]
+ for x in skip_targets:
+ if x is None:
+ continue
+ for p in prefixes:
+ found = x.split(p,1)
+ if found and len(found) == 2:
+ postfix_targets.append(found[1])
+ break
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)
for i in ran:
- gen_t = prefix + self.num_to_target(i + 1)
+ postfix = self.num_to_target(i + 1)
+ gen_t = prefix + postfix
+ if self.conn.is_xen() and postfix in postfix_targets:
+ if gen_t in skip_targets:
+ skip_targets.remove(gen_t)
+ continue
if gen_t in skip_targets:
skip_targets.remove(gen_t)
continue
++++++ virtman-allow-creating-i686-vm.patch ++++++
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
===================================================================
--- virt-manager-2.2.1.orig/virtManager/createvm.py
+++ virt-manager-2.2.1/virtManager/createvm.py
@@ -830,11 +830,6 @@ class vmmCreateVM(vmmGObjectUI):
for guest in self.conn.caps.guests:
if guest.os_type == self._capsinfo.os_type:
archs.append(guest.arch)
-
- # Combine x86/i686 to avoid confusion
- if (self.conn.caps.host.cpu.arch == "x86_64" and
- "x86_64" in archs and "i686" in archs):
- archs.remove("i686")
archs.sort()
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",
++++++ virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch ++++++
Reference: bnc#875111
Steps to get a KVM VM in the crashed state:
1) Install a sles12 KVM VM
2) Manually edit the XML and add/modify <on_crash>preserve</on_crash>
3) In virt-manager add the panic device (Details->Add Hardware)
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
===================================================================
--- virt-manager-2.2.0.orig/virtManager/manager.py
+++ virt-manager-2.2.0/virtManager/manager.py
@@ -784,7 +784,7 @@ class vmmManager(vmmGObjectUI):
show_pause = bool(vm and vm.is_unpauseable())
else:
show_pause = bool(vm and vm.is_pauseable())
- show_shutdown = bool(vm and vm.is_stoppable())
+ show_shutdown = bool(vm and vm.is_destroyable())
if vm and vm.managedsave_supported:
self.change_run_text(vm.has_managed_save())
Index: virt-manager-2.2.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/vmmenu.py
+++ virt-manager-2.2.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
+ self._shutdown = None
self._init_state()
@@ -84,6 +85,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):
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",
@@ -125,7 +128,7 @@ class VMActionMenu(_VMMenu):
def update_widget_states(self, vm):
statemap = {
"run": bool(vm and vm.is_runable()),
- "shutdown": bool(vm and vm.is_stoppable()),
+ "shutdown": bool(vm and vm.is_destroyable()),
"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):
child.get_submenu().update_widget_states(vm)
if name in statemap:
child.set_sensitive(statemap[name])
+ if name == "shutdown" and self._shutdown:
+ self._shutdown.update_widget_states(vm)
if name in vismap:
child.set_visible(vismap[name])
++++++ virtman-check-for-valid-display.patch ++++++
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
===================================================================
--- virt-manager-2.2.0.orig/virt-manager
+++ virt-manager-2.2.0/virt-manager
@@ -66,8 +66,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']:
+ # This will error if Gtk wasn't correctly initialized
+ Gtk.Window()
+ else:
+ raise Exception("Error starting virt-manager: No graphical display
found")
globals()["Gtk"] = Gtk
# This ensures we can init gsettings correctly
++++++ virtman-desktop.patch ++++++
Index: virt-manager-2.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
@@ -1,8 +1,19 @@
[Desktop Entry]
_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
+Exec=/usr/bin/virt-manager
Type=Application
Terminal=false
-Categories=System;
+Encoding=UTF-8
+Categories=GTK;GNOME;System;Monitor;X-SuSE-YaST;X-SuSE-YaST-Virtualization;
+X-KDE-ModuleType=Library
+X-KDE-RootOnly=true
+X-KDE-HasReadOnlyMode=false
+X-SuSE-YaST-Call=/usr/bin/virt-manager
+X-SuSE-YaST-Group=Virtualization
+X-SuSE-YaST-Argument=
+X-SuSE-YaST-RootOnly=true
+X-SuSE-YaST-Geometry=
+X-SuSE-YaST-SortKey=
++++++ virtman-disallow-adding-floppy-disk.patch ++++++
References: bsc#1174176, bsc#1174139
Current libxl does not support adding a floppy. Code is included
in this patch anyways to correctly set up a bus if a floppy were
added.
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
@@ -528,6 +528,9 @@ class vmmAddHardware(vmmGObjectUI):
buses = domcaps.devices.disk.get_enum("bus").get_values()
else:
buses = vmmAddHardware.disk_old_recommended_buses(guest)
+ # libxl doesn't support floppy but request one from qemu anyways if
specified
+ if guest.conn.is_xen() and devtype == "floppy":
+ buses.append("fdc")
bus_map = {
"disk": ["ide", "sata", "scsi", "sd", "usb", "virtio", "xen"],
@@ -539,7 +542,7 @@ class vmmAddHardware(vmmGObjectUI):
@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):
"drive-harddisk", _("Disk device")])
target_model.append([DeviceDisk.DEVICE_CDROM,
"media-optical", _("CDROM device")])
- target_model.append([DeviceDisk.DEVICE_FLOPPY,
- "media-floppy", _("Floppy device")])
+ if not self.conn.is_xen():
+ target_model.append([DeviceDisk.DEVICE_FLOPPY,
+ "media-floppy", _("Floppy device")])
if self.conn.is_qemu() or self.conn.is_test():
target_model.append([DeviceDisk.DEVICE_LUN,
"drive-harddisk", _("LUN Passthrough")])
++++++ virtman-dont-allow-grub.xen-to-be-deleted.patch ++++++
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
===================================================================
--- 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:
- if not path:
+ if not path or path == "/usr/lib/grub2/x86_64-xen/grub.xen":
continue
# There are a few pieces here
++++++ virtman-dont-specify-gtksource-version.patch ++++++
--- 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
@@ -7,12 +7,12 @@ import gi
from virtinst import log
# We can use either gtksourceview3 or gtksourceview4
-try:
- gi.require_version("GtkSource", "4")
- log.debug("Using GtkSource 4")
-except ValueError:
- 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:
+# gi.require_version("GtkSource", "3.0")
+# log.debug("Using GtkSource 3.0")
from gi.repository import GtkSource
from .lib import uiutil
++++++ virtman-dont-specify-vte-version.patch ++++++
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
===================================================================
--- virt-manager-2.2.0.orig/virtManager/details/serialcon.py
+++ virt-manager-2.2.0/virtManager/details/serialcon.py
@@ -12,12 +12,12 @@ from gi.repository import Gtk
from virtinst import log
# We can use either 2.91 or 2.90. This is just to silence runtime warnings
-try:
- gi.require_version("Vte", "2.91")
- log.debug("Using VTE API 2.91")
-except ValueError:
- 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:
+# gi.require_version("Vte", "2.90")
+# log.debug("Using VTE API 2.90")
from gi.repository import Vte
import libvirt
++++++ virtman-fix-env-script-interpreter.patch ++++++
--- 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 <[email protected]>
--- 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.
#
++++++ virtman-fix-restore-vm-menu-selection.patch ++++++
References: bsc#1138110
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
===================================================================
--- 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):
return (self.is_stoppable() or
self.status() in [libvirt.VIR_DOMAIN_CRASHED])
def is_runable(self):
- return self.is_shutoff()
+ return self.status() in [libvirt.VIR_DOMAIN_SHUTOFF,
+ libvirt.VIR_DOMAIN_PMSUSPENDED]
def is_pauseable(self):
return self.status() in [libvirt.VIR_DOMAIN_RUNNING]
def is_unpauseable(self):
++++++ virtman-increase-setKeepAlive-count.patch ++++++
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
===================================================================
--- virt-manager-2.2.1.orig/virtManager/connection.py
+++ virt-manager-2.2.1/virtManager/connection.py
@@ -995,7 +995,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)):
++++++ virtman-keycombo.patch ++++++
Enhancement adding Send Keys for mostly NetWare and also Windows
Index: virt-manager-2.1.0/virtManager/details/console.py
===================================================================
--- virt-manager-2.1.0.orig/virtManager/details/console.py
+++ virt-manager-2.1.0/virtManager/details/console.py
@@ -114,6 +114,16 @@ def build_keycombo_menu(on_send_key_fn):
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
menu.add(Gtk.SeparatorMenuItem())
+ make_item("Ctrl+Scroll+Scroll", ["Control_L", "Scroll" + "Scroll"])
+ make_item("Alt+F_10", ["Alt_L", "F10"])
+ make_item("Alt+Tab", ["Alt_L", "Tab"])
+ make_item("Alt+Escape", ["Alt_L", "Escape"])
+ make_item("Ctrl+Escape", ["Control_L", "Escape"])
+ make_item("Ctrl+Alt+Escape", ["Control_L", "Alt_L", "Escape"])
+ make_item("Alt+Shift+Shift+Escape", ["Alt_R", "Shift_R", "Shift_L",
"Escape"])
+ make_item("F_8", ["F8"])
+ make_item("F_10", ["F10"])
+ menu.add(Gtk.SeparatorMenuItem())
for i in range(1, 13):
make_item("Ctrl+Alt+F_%d" % i, ["Control_L", "Alt_L", "F%d" % i])
++++++ virtman-kvm.patch ++++++
/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
===================================================================
--- virt-manager-2.2.0.orig/virtManager/createconn.py
+++ virt-manager-2.2.0/virtManager/createconn.py
@@ -67,7 +67,7 @@ class vmmCreateConn(vmmGObjectUI):
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"
++++++ virtman-load-stored-uris.patch ++++++
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.2.0/virtManager/connmanager.py
===================================================================
--- virt-manager-2.2.0.orig/virtManager/connmanager.py
+++ virt-manager-2.2.0/virtManager/connmanager.py
@@ -26,11 +26,17 @@ class vmmConnectionManager(vmmGObject):
def __init__(self):
vmmGObject.__init__(self)
+ from .createconn import vmmCreateConn
+ default_uri = vmmCreateConn.default_uri()
self._conns = {}
# Load URIs from gsettings
for uri in self.config.get_conn_uris():
+ if uri == 'xen:///' or uri == 'qemu:///system':
+ if default_uri and default_uri != uri:
+ log.debug("Skipping local connection %s because it is
incompatible with the host", uri)
+ continue
self.add_conn(uri)
def _cleanup(self):
++++++ virtman-python2-to-python3-conversion.patch ++++++
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"
++++++ virtman-register-delete-event-for-details-dialog.patch ++++++
References: bsc#1071825
Running under python3 the delete-event as defined in details.ui and connected
in details.py does not get called when the top right (x) button on the dialog
is clicked. It appears that even though this code is unchanged and works on
python2,
it is not recognized as a top level dialog on python3 and therefore we
explicitly
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
===================================================================
--- 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),
})
+ # Make sure the delete event is properly registered for the details
dialog
+ self.topwin.connect("delete-event", self._window_delete_event)
+
# Deliberately keep all this after signal connection
self.vm.connect("state-changed", self.refresh_vm_state)
self.vm.connect("resources-sampled", self.refresh_resources)
++++++ virtman-show-suse-install-repos.patch ++++++
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
===================================================================
--- 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
+################################################
+# Helpers for using SUSE installation location #
+################################################
+
+import subprocess
+from subprocess import Popen, PIPE
+
+_host_repo_url = None
+
+def getHostInstallSource():
+ global _host_repo_url
+ if _host_repo_url is not None:
+ return _host_repo_url
+ if os.geteuid() != 0:
+ return None
+
+ (_,zypper_output) = lookupZypperRepos()
+ if len(zypper_output):
+ _host_repo_url = zypper_output[0]
+ return _host_repo_url
+ return None
+
+def lookupZypperRepos(dom0_inst_source=None):
+ try:
+ env = os.environ.copy()
+ env['LC_ALL'] = 'C'
+ cmd = ['/usr/bin/zypper', 'lr', '-u', '-P', '-E']
+ p = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE, env=env)
+ stdout, stderr = p.communicate()
+ zypper_output = stdout.decode()
+ zypper_list = zypper_output.split("\n")
+ zypper_header = [x.strip(' ') for x in zypper_list[0].split("|")]
+ uri_index = zypper_header.index("URI")
+ except:
+ inst_source = []
+ if dom0_inst_source:
+ inst_source = [dom0_inst_source]
+ return (0, inst_source)
+
+ index_dom0 = -1
+ number_of_sources = 0
+ zypper_output = []
+ for repo in zypper_list:
+ repo = [x.strip(' ') for x in repo.split("|")]
+ if len(repo) >= uri_index:
+ str = repo[uri_index]
+ if str.startswith('ftp://') or str.startswith('http://') or
str.startswith('nfs://') or str.startswith('smb://'):
+ if str not in zypper_output:
+ zypper_output.append(str)
+ if dom0_inst_source is not None and str ==
dom0_inst_source:
+ index_dom0 = number_of_sources
+ number_of_sources += 1
+
+ if index_dom0 == -1 and dom0_inst_source:
+ index_dom0 = 0
+ zypper_output.insert(0, dom0_inst_source)
+ return (index_dom0, zypper_output)
+
+def getInstallRepos():
+ if os.geteuid() != 0:
+ return (0, [])
+ return lookupZypperRepos(getHostInstallSource())
+
+
##############
# Main class #
##############
@@ -368,7 +432,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()
- _populate_media_model(urlmodel, self.config.get_media_urls())
+ urllist = self.config.get_media_urls()
+ (index, inst_repos) = getInstallRepos()
+ for u in urllist:
+ if u in inst_repos:
+ inst_repos.remove(u)
+ media_urllist = urllist + inst_repos
+ _populate_media_model(urlmodel, media_urllist)
# Install import
self.widget("install-import-entry").set_text("")
++++++ virttests-python2-to-python3-conversion.patch ++++++
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))