Accepting request 844154 from Virtualization

Fix for boo#1178141 - Accomodate qemu modularization

OBS-URL: https://build.opensuse.org/request/show/844154
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virt-manager?expand=0&rev=212
This commit is contained in:
Dominique Leuenberger 2020-10-27 18:00:14 +00:00 committed by Git OBS Bridge
commit 33f58ba8b8
4 changed files with 96 additions and 0 deletions

View File

@ -1,3 +1,19 @@
-------------------------------------------------------------------
Sun Oct 25 02:34:44 UTC 2020 - Bruce Rogers <brogers@suse.com>
- boo#1178141 - Accomodate qemu modularization with respect to
spice and spice related optional modules. If full spice support
is not detected due to missing qemu modules (v5.1 qemu and newer),
use vnc as the default install-time graphics type used
virtinst-graphics-add-check-for-qemu-modules-in-spice-graphic.patch
-------------------------------------------------------------------
Fri Oct 23 13:25:38 MDT 2020 - carnold@suse.com
- bsc#1177763 - Cannot install an existing virtual machine two
error messages with Virtual Machine Manager
virtman-append-usr-sbin-to-search-path.patch
-------------------------------------------------------------------
Wed Sep 30 17:07:44 MDT 2020 - carnold@suse.com

View File

@ -52,6 +52,7 @@ Patch126: virtinst-add-caasp-support.patch
Patch127: virtinst-add-sle15-detection-support.patch
Patch128: virtinst-add-pvh-support.patch
Patch129: virtinst-media-detection.patch
Patch130: virtinst-graphics-add-check-for-qemu-modules-in-spice-graphic.patch
# Bug Fixes
Patch151: virtman-increase-setKeepAlive-count.patch
Patch152: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
@ -62,6 +63,7 @@ Patch156: virtman-dont-specify-gtksource-version.patch
Patch157: virtman-fix-restore-vm-menu-selection.patch
Patch158: virtman-disallow-adding-floppy-disk.patch
Patch159: virtman-register-delete-event-for-details-dialog.patch
Patch160: virtman-append-usr-sbin-to-search-path.patch
Patch170: virtinst-xen-drive-type.patch
Patch171: virtinst-xenbus-disk-index-fix.patch
Patch172: virtinst-refresh_before_fetch_pool.patch
@ -174,6 +176,7 @@ machine).
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
# Bug Fixes
%patch151 -p1
%patch152 -p1
@ -184,6 +187,7 @@ machine).
%patch157 -p1
%patch158 -p1
%patch159 -p1
%patch160 -p1
%patch170 -p1
%patch171 -p1
%patch172 -p1

View File

@ -0,0 +1,57 @@
From 2919f40ac931dce5dedf326f84e83e8c04e1fabe Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Sat, 24 Oct 2020 08:10:29 -0600
Subject: [PATCH] graphics: add check for qemu modules in spice graphics
detection
For SLE and openSUSE qemu, starting with v5.1, spice and spice related
qemu modules have been split away from the main system emulator and
are packaged as Recommends, meaning that they may not be present.
Up to now virt-manager has assumed spice is available for x86 qemu, but
that is no longer the case. Unfortunately the standard libvirt feature
detection can't yet help us out here, so we leapfrog libvirt by doing
our own detection of whether the qemu modules needed to support the
default guest install using spice, usb redirection, and qxl video are
present.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
virtinst/devices/graphics.py | 9 +++++++++
virtinst/support.py | 1 +
2 files changed, 10 insertions(+)
diff --git a/virtinst/devices/graphics.py b/virtinst/devices/graphics.py
index a514b455..f5083e68 100644
--- a/virtinst/devices/graphics.py
+++ b/virtinst/devices/graphics.py
@@ -135,6 +135,15 @@ class DeviceGraphics(Device):
# Spice has issues on some host arches, like ppc, so allow it
if self.conn.caps.host.cpu.arch not in ["i686", "x86_64"]:
return False
+ if self.conn.support.conn_spice_modular():
+ if self.conn.caps.host.cpu.arch in ["x86_64"]:
+ if not (os.path.exists("/usr/lib64/qemu/hw-usb-redirect.so") and
+ os.path.exists("/usr/lib64/qemu/hw-display-qxl.so")):
+ return False
+ else:
+ if not (os.path.exists("/usr/lib/qemu/hw-usb-redirect.so") and
+ os.path.exists("/usr/lib/qemu/hw-display-qxl.so")):
+ return False
return True
def _listen_need_port(self):
diff --git a/virtinst/support.py b/virtinst/support.py
index de73629e..29dad32b 100644
--- a/virtinst/support.py
+++ b/virtinst/support.py
@@ -281,6 +281,7 @@ class SupportCache:
conn_disk_driver_name_qemu = _make(
hv_version={"qemu": 0, "xen": "4.2.0"},
hv_libvirt_version={"qemu": 0, "xen": "1.1.0"})
+ conn_spice_modular = _make(hv_version={"qemu": "5.1.0", "test": 0})
# Domain checks
domain_xml_inactive = _make(function="virDomain.XMLDesc", run_args=(),
--
2.29.0

View File

@ -0,0 +1,19 @@
References: bsc#1177763
When virt-manager is launched by a user (non-root) for the first
time and no connection was previously defined, the user path
typically does not have /usr/sbin and will therefore fail to find
the installed libvirtd.
--- virt-manager-3.1.0/virtManager/lib/connectauth.py.orig 2020-10-23 13:18:59.894366558 -0600
+++ virt-manager-3.1.0/virtManager/lib/connectauth.py 2020-10-23 13:20:03.050368102 -0600
@@ -204,7 +204,8 @@ def connect_error(conn, errmsg, tb, warn
##################################
def setup_first_uri(config, tryuri):
- libvirtd_installed = bool(shutil.which("libvirtd"))
+ # Add /usr/sbin to the path in case non-root user launches virt-manager
+ libvirtd_installed = bool(shutil.which("libvirtd", path=os.environ['PATH'] + os.pathsep + "/usr/sbin"))
if config.CLITestOptions.fake_no_libvirtd:
libvirtd_installed = False