- bsc#960828 - Unable to create qcow2 volumes on remote KVM with

virt-manager
  virtinst-vol-default-nocow.patch
- bsc#960724 - virt-manager fails to create Virtual machines on a
  CentOS7 host
  virtinst-set-qemu-emulator.patch
- Upstream bug fix
  89c3638b-fix-detection-that-libvirtd-is-stopped.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=290
This commit is contained in:
Charles Arnold 2016-01-12 20:36:29 +00:00 committed by Git OBS Bridge
parent d756e5917d
commit bac3f6bcbd
11 changed files with 115 additions and 72 deletions

View File

@ -0,0 +1,32 @@
Subject: connection: fix detection that libvirtd is stopped
From: Pavel Hrdina phrdina@redhat.com Tue Jan 5 10:17:37 2016 +0100
Date: Fri Jan 8 10:21:42 2016 +0100:
Git: 89c3638b63e5b251db92ef7066c1753bfa469d38
In case that libvirtd is stopped, we could receive another type of error
from libvirt "libvirtError: internal error: client socket is closed".
This one is usually reported from local connection.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.3.2/virtManager/connection.py
===================================================================
--- virt-manager-1.3.2.orig/virtManager/connection.py
+++ virt-manager-1.3.2/virtManager/connection.py
@@ -1298,6 +1298,7 @@ class vmmConnection(vmmGObject):
from_remote = getattr(libvirt, "VIR_FROM_REMOTE", None)
from_rpc = getattr(libvirt, "VIR_FROM_RPC", None)
sys_error = getattr(libvirt, "VIR_ERR_SYSTEM_ERROR", None)
+ internal_error = getattr(libvirt, "VIR_ERR_INTERNAL_ERROR", None)
dom = -1
code = -1
@@ -1309,7 +1310,7 @@ class vmmConnection(vmmGObject):
self.get_uri(), exc_info=True)
if (dom in [from_remote, from_rpc] and
- code in [sys_error]):
+ code in [sys_error, internal_error]):
e = None
logging.debug("Not showing user error since libvirtd "
"appears to have stopped.")

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Fri Jan 8 11:50:46 MST 2016 - carnold@suse.com
- bsc#960828 - Unable to create qcow2 volumes on remote KVM with
virt-manager
virtinst-vol-default-nocow.patch
- bsc#960724 - virt-manager fails to create Virtual machines on a
CentOS7 host
virtinst-set-qemu-emulator.patch
- Upstream bug fix
89c3638b-fix-detection-that-libvirtd-is-stopped.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Jan 4 11:04:50 MST 2016 - carnold@suse.com Mon Jan 4 11:04:50 MST 2016 - carnold@suse.com

View File

@ -1,7 +1,7 @@
# #
# spec file for package virt-manager # spec file for package virt-manager
# #
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -15,7 +15,6 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/ # Please submit bugfixes or comments via http://bugs.opensuse.org/
# #
%define with_guestfs 0 %define with_guestfs 0
%define askpass_package "openssh-askpass" %define askpass_package "openssh-askpass"
%define qemu_user "qemu" %define qemu_user "qemu"
@ -37,6 +36,7 @@ Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb Source1: virt-install.rb
Source2: virt-install.desktop Source2: virt-install.desktop
# Upstream Patches # Upstream Patches
Patch1: 89c3638b-fix-detection-that-libvirtd-is-stopped.patch
# SUSE Only # SUSE Only
Patch70: virtman-desktop.patch Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch Patch71: virtman-kvm.patch
@ -157,6 +157,7 @@ machine).
%prep %prep
%setup -q %setup -q
# Upstream Patches # Upstream Patches
%patch1 -p1
# SUSE Only # SUSE Only
%patch70 -p1 %patch70 -p1
%patch71 -p1 %patch71 -p1

View File

@ -1,43 +1,26 @@
Use the correct qemu emulator based on the architecture. Use the correct qemu emulator based on the architecture.
We want to get away from using the old qemu-dm emulator We want to get away from using the old qemu-dm emulator
for Xen HVM guests so default to qemu-system-i386. for Xen HVM guests so default to qemu-system-i386.
Index: virt-manager-1.3.0/virtinst/guest.py Index: virt-manager-1.3.2/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtinst/guest.py --- virt-manager-1.3.2.orig/virtinst/guest.py
+++ virt-manager-1.3.0/virtinst/guest.py +++ virt-manager-1.3.2/virtinst/guest.py
@@ -849,14 +849,29 @@ class Guest(XMLBuilder): @@ -849,14 +849,11 @@ class Guest(XMLBuilder):
self.emulator = None self.emulator = None
return return
- if self.emulator: - if self.emulator:
+ if self.conn.is_qemu(): - return
+ if self.os.arch == "s390x": -
+ preferred_emulator = "/usr/bin/qemu-system-s390x" if self.os.is_hvm() and self.type == "xen":
+ elif self.os.arch == "ppc64" or self.os.arch == "ppc64le":
+ preferred_emulator = "/usr/bin/qemu-system-ppc64"
+ else:
+ preferred_emulator = "/usr/bin/qemu-system-x86_64"
+ elif self.conn.is_lxc():
+ preferred_emulator = "/usr/lib/libvirt/libvirt_lxc"
+ if not os.path.exists(preferred_emulator):
+ preferred_emulator = "/usr/lib64/libvirt/libvirt_lxc"
+ else:
+ preferred_emulator = "/usr/lib/xen/bin/qemu-system-i386"
+ if self.emulator and self.emulator == preferred_emulator:
return
- if self.os.is_hvm() and self.type == "xen":
- if self.conn.caps.host.cpu.arch == "x86_64": - if self.conn.caps.host.cpu.arch == "x86_64":
- self.emulator = "/usr/lib64/xen/bin/qemu-dm" - self.emulator = "/usr/lib64/xen/bin/qemu-dm"
- else: - else:
- self.emulator = "/usr/lib/xen/bin/qemu-dm" - self.emulator = "/usr/lib/xen/bin/qemu-dm"
+ if os.path.exists(preferred_emulator): + # Force not using Xen's old qemu-dm except for remote
+ self.emulator = preferred_emulator + # connections where we don't know the Xen version
+ elif self.os.is_hvm() and self.type == "xen": + if not self.conn.is_remote() or not self.emulator:
+ # We don't want to use the old qemu-dm for xen + self.emulator = "/usr/lib/xen/bin/qemu-system-i386"
+ self.emulator = "/usr/lib/xen/bin/qemu-system-i386"
+ elif not self.emulator:
+ self.emulator = "/usr/bin/qemu-kvm"
def _set_cpu_defaults(self): def _set_cpu_defaults(self):
self.cpu.set_topology_defaults(self.vcpus) self.cpu.set_topology_defaults(self.vcpus)

View File

@ -4,19 +4,33 @@ issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com> Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.3.0/virtinst/storage.py Index: virt-manager-1.3.2/virtinst/storage.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtinst/storage.py --- virt-manager-1.3.2.orig/virtinst/storage.py
+++ virt-manager-1.3.0/virtinst/storage.py +++ virt-manager-1.3.2/virtinst/storage.py
@@ -716,6 +716,11 @@ class StorageVolume(_StorageObject): @@ -716,6 +716,12 @@ class StorageVolume(_StorageObject):
lazy_refcounts = XMLProperty("./target/features/lazy_refcounts", lazy_refcounts = XMLProperty("./target/features/lazy_refcounts",
is_bool=True, default_cb=_lazy_refcounts_default_cb) is_bool=True, default_cb=_lazy_refcounts_default_cb)
+ def _nocow_default_cb(self): + def _nocow_default_cb(self):
+ return True + return self.conn.check_support(
+ self.conn.SUPPORT_CONN_NOCOW)
+ nocow = XMLProperty("./target/nocow", + nocow = XMLProperty("./target/nocow",
+ is_bool=True, default_cb=_nocow_default_cb) + is_bool=True, default_cb=_nocow_default_cb)
+ +
###################### ######################
# Public API helpers # # Public API helpers #
Index: virt-manager-1.3.2/virtinst/support.py
===================================================================
--- virt-manager-1.3.2.orig/virtinst/support.py
+++ virt-manager-1.3.2/virtinst/support.py
@@ -314,6 +314,8 @@ SUPPORT_CONN_VCPU_PLACEMENT = _make(
SUPPORT_CONN_MEM_STATS_PERIOD = _make(
function="virDomain.setMemoryStatsPeriod",
version="1.1.1", hv_version={"qemu": 0})
+SUPPORT_CONN_NOCOW = _make(
+ version="1.2.18", hv_version={"qemu": "2.2.0", "test": 0})
# This is for disk <driver name=qemu>. xen supports this, but it's
# limited to arbitrary new enough xen, since I know libxl can handle it

View File

@ -1,10 +1,10 @@
Enhancement for when no hypervisor can be found locally it opens Enhancement for when no hypervisor can be found locally it opens
the new connection dialog. the new connection dialog.
Index: virt-manager-1.3.0/virtManager/engine.py Index: virt-manager-1.3.2/virtManager/engine.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/engine.py --- virt-manager-1.3.2.orig/virtManager/engine.py
+++ virt-manager-1.3.0/virtManager/engine.py +++ virt-manager-1.3.2/virtManager/engine.py
@@ -207,9 +207,6 @@ class vmmEngine(vmmGObject): @@ -236,9 +236,6 @@ class vmmEngine(vmmGObject):
except: except:
logging.exception("Error talking to PackageKit") logging.exception("Error talking to PackageKit")
@ -14,7 +14,7 @@ Index: virt-manager-1.3.0/virtManager/engine.py
warnmsg = _("The 'libvirtd' service will need to be started.\n\n" warnmsg = _("The 'libvirtd' service will need to be started.\n\n"
"After that, virt-manager will connect to libvirt on\n" "After that, virt-manager will connect to libvirt on\n"
"the next application start up.") "the next application start up.")
@@ -223,7 +220,11 @@ class vmmEngine(vmmGObject): @@ -252,7 +249,11 @@ class vmmEngine(vmmGObject):
if not connected and do_start: if not connected and do_start:
manager.err.ok(_("Libvirt service must be started"), warnmsg) manager.err.ok(_("Libvirt service must be started"), warnmsg)

View File

@ -6,11 +6,11 @@ Steps to get a KVM VM in the crashed state:
4) Edit the VM's /etc/default/grub file and remove the crashkernel information 4) Edit the VM's /etc/default/grub file and remove the crashkernel information
and then run grub2-mkconfig /boot/grub2/grub.cfg. 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" 5) Start the VM and within the VM's terminal type "echo 'c' > /proc/sysrq-trigger"
Index: virt-manager-1.3.0/virtManager/manager.py Index: virt-manager-1.3.2/virtManager/manager.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/manager.py --- virt-manager-1.3.2.orig/virtManager/manager.py
+++ virt-manager-1.3.0/virtManager/manager.py +++ virt-manager-1.3.2/virtManager/manager.py
@@ -857,7 +857,7 @@ class vmmManager(vmmGObjectUI): @@ -854,7 +854,7 @@ class vmmManager(vmmGObjectUI):
show_pause = bool(vm and vm.is_unpauseable()) show_pause = bool(vm and vm.is_unpauseable())
else: else:
show_pause = bool(vm and vm.is_pauseable()) show_pause = bool(vm and vm.is_pauseable())
@ -19,10 +19,10 @@ Index: virt-manager-1.3.0/virtManager/manager.py
if vm and vm.managedsave_supported: if vm and vm.managedsave_supported:
self.change_run_text(vm.has_managed_save()) self.change_run_text(vm.has_managed_save())
Index: virt-manager-1.3.0/virtManager/vmmenu.py Index: virt-manager-1.3.2/virtManager/vmmenu.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/vmmenu.py --- virt-manager-1.3.2.orig/virtManager/vmmenu.py
+++ virt-manager-1.3.0/virtManager/vmmenu.py +++ virt-manager-1.3.2/virtManager/vmmenu.py
@@ -31,6 +31,7 @@ class _VMMenu(Gtk.Menu): @@ -31,6 +31,7 @@ class _VMMenu(Gtk.Menu):
self._parent = src self._parent = src
self._current_vm_cb = current_vm_cb self._current_vm_cb = current_vm_cb

View File

@ -1,9 +1,9 @@
Enhancement to add the eepro100 NIC for KVM Enhancement to add the eepro100 NIC for KVM
Index: virt-manager-1.3.0/virtManager/addhardware.py Index: virt-manager-1.3.2/virtManager/addhardware.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/addhardware.py --- virt-manager-1.3.2.orig/virtManager/addhardware.py
+++ virt-manager-1.3.0/virtManager/addhardware.py +++ virt-manager-1.3.2/virtManager/addhardware.py
@@ -565,6 +565,7 @@ class vmmAddHardware(vmmGObjectUI): @@ -571,6 +571,7 @@ class vmmAddHardware(vmmGObjectUI):
if vm.is_hvm(): if vm.is_hvm():
mod_list = [] mod_list = []
if vm.get_hv_type() in ["kvm", "qemu", "test"]: if vm.get_hv_type() in ["kvm", "qemu", "test"]:

View File

@ -1,9 +1,9 @@
Use the correct systemd to start libvirt. Use the correct systemd to start libvirt.
Index: virt-manager-1.3.0/virtManager/packageutils.py Index: virt-manager-1.3.2/virtManager/packageutils.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/packageutils.py --- virt-manager-1.3.2.orig/virtManager/packageutils.py
+++ virt-manager-1.3.0/virtManager/packageutils.py +++ virt-manager-1.3.2/virtManager/packageutils.py
@@ -154,8 +154,8 @@ def start_libvirtd(): @@ -143,8 +143,8 @@ def start_libvirtd():
logging.debug("libvirtd not running, asking system-config-services " logging.debug("libvirtd not running, asking system-config-services "
"to start it") "to start it")
scs = Gio.DBusProxy.new_sync(bus, 0, None, scs = Gio.DBusProxy.new_sync(bus, 0, None,

View File

@ -1,7 +1,8 @@
diff -rup a/virtManager/engine.py b/virtManager/engine.py Index: virt-manager-1.3.2/virtManager/engine.py
--- a/virtManager/engine.py 2015-12-07 01:23:13.000000000 +0100 ===================================================================
+++ b/virtManager/engine.py 2015-12-13 15:39:06.911652459 +0100 --- virt-manager-1.3.2.orig/virtManager/engine.py
@@ -260,9 +260,22 @@ class vmmEngine(vmmGObject): +++ virt-manager-1.3.2/virtManager/engine.py
@@ -257,9 +257,22 @@ class vmmEngine(vmmGObject):
def load_stored_uris(self): def load_stored_uris(self):
uris = self.config.get_conn_uris() or [] uris = self.config.get_conn_uris() or []

View File

@ -4,10 +4,10 @@ This is not a normal situation on a suse distro. Split out required
libvirt packages (kvm vs xen). Only install those libvirt packages libvirt packages (kvm vs xen). Only install those libvirt packages
for which the host is booted. This patch has a corresponding spec for which the host is booted. This patch has a corresponding spec
file change (%define libvirt_kvm_packages and %define libvirt_xen_packages). file change (%define libvirt_kvm_packages and %define libvirt_xen_packages).
Index: virt-manager-1.3.0/setup.py Index: virt-manager-1.3.2/setup.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/setup.py --- virt-manager-1.3.2.orig/setup.py
+++ virt-manager-1.3.0/setup.py +++ virt-manager-1.3.2/setup.py
@@ -299,8 +299,11 @@ class configure(distutils.core.Command): @@ -299,8 +299,11 @@ class configure(distutils.core.Command):
("prefix=", None, "installation prefix"), ("prefix=", None, "installation prefix"),
("qemu-user=", None, ("qemu-user=", None,
@ -45,10 +45,10 @@ Index: virt-manager-1.3.0/setup.py
if self.kvm_package_names is not None: if self.kvm_package_names is not None:
template += "hv_packages = %s\n" % self.kvm_package_names template += "hv_packages = %s\n" % self.kvm_package_names
if self.askpass_package_names is not None: if self.askpass_package_names is not None:
Index: virt-manager-1.3.0/virtcli/cliconfig.py Index: virt-manager-1.3.2/virtcli/cliconfig.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtcli/cliconfig.py --- virt-manager-1.3.2.orig/virtcli/cliconfig.py
+++ virt-manager-1.3.0/virtcli/cliconfig.py +++ virt-manager-1.3.2/virtcli/cliconfig.py
@@ -83,7 +83,8 @@ class _CLIConfig(object): @@ -83,7 +83,8 @@ class _CLIConfig(object):
_get_param("preferred_distros", "")) _get_param("preferred_distros", ""))
self.hv_packages = _split_list(_get_param("hv_packages", "")) self.hv_packages = _split_list(_get_param("hv_packages", ""))
@ -59,10 +59,10 @@ Index: virt-manager-1.3.0/virtcli/cliconfig.py
self.default_graphics = _get_param("default_graphics", "spice") self.default_graphics = _get_param("default_graphics", "spice")
self.default_hvs = _split_list(_get_param("default_hvs", "")) self.default_hvs = _split_list(_get_param("default_hvs", ""))
Index: virt-manager-1.3.0/virtManager/config.py Index: virt-manager-1.3.2/virtManager/config.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/config.py --- virt-manager-1.3.2.orig/virtManager/config.py
+++ virt-manager-1.3.0/virtManager/config.py +++ virt-manager-1.3.2/virtManager/config.py
@@ -172,7 +172,8 @@ class vmmConfig(object): @@ -172,7 +172,8 @@ class vmmConfig(object):
self.default_qemu_user = CLIConfig.default_qemu_user self.default_qemu_user = CLIConfig.default_qemu_user
self.preferred_distros = CLIConfig.preferred_distros self.preferred_distros = CLIConfig.preferred_distros
@ -73,11 +73,11 @@ Index: virt-manager-1.3.0/virtManager/config.py
self.askpass_package = CLIConfig.askpass_package self.askpass_package = CLIConfig.askpass_package
self.default_graphics_from_config = CLIConfig.default_graphics self.default_graphics_from_config = CLIConfig.default_graphics
self.default_hvs = CLIConfig.default_hvs self.default_hvs = CLIConfig.default_hvs
Index: virt-manager-1.3.0/virtManager/engine.py Index: virt-manager-1.3.2/virtManager/engine.py
=================================================================== ===================================================================
--- virt-manager-1.3.0.orig/virtManager/engine.py --- virt-manager-1.3.2.orig/virtManager/engine.py
+++ virt-manager-1.3.0/virtManager/engine.py +++ virt-manager-1.3.2/virtManager/engine.py
@@ -197,21 +197,18 @@ class vmmEngine(vmmGObject): @@ -226,21 +226,18 @@ class vmmEngine(vmmGObject):
ret = None ret = None
try: try: