- bnc#885308 - pass virtio-rng-pci to the guest qemu

virtinst-add-default-rng-device.patch

- Fix GUI failure to display addition of a second disk
  Dropped virtman-device-flags.patch

- bnc#885380 - virt-install: by default generates raw format
  against various virtual disk formats
  virtinst-supported-disk-formats.patch
  virtman-supported-disk-formats.patch
- Dropped virtinst-qed.patch, virtman-qed.patch

- bnc#869026 - Build0198: Unable to complete install: 'XML error:
  No PCI buses available'
  virtman-add-s390x-arch-support.patch
- Upstream bug fixes
  53ac1f8d-createnet-validate-last-page-before-creating-network.patch             
  53ac1f8d-fix-show_err-typo.patch                                                
  53b39a13-dont-create-disk-images-world-readable-executable.patch                
  53b409bc-add-keep-alive-method-and-connection-check.patch                       
  53b409bd-console-prevent-access-to-deleted-objects.patch                        
  53b728c6-report-error-during-connection-bring-up.patch                          
  53b728c6-connection-handle-unsupported-KeepAlive.patch                          
  53bb1995-network-refresh-XML-definition-on-state-update.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=188
This commit is contained in:
Charles Arnold 2014-07-17 23:22:14 +00:00 committed by Git OBS Bridge
parent 97562d2a97
commit a18ef09a88
20 changed files with 438 additions and 135 deletions

View File

@ -11,7 +11,7 @@ Index: virt-manager-1.0.1/virtManager/createnet.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createnet.py
+++ virt-manager-1.0.1/virtManager/createnet.py
@@ -749,7 +749,7 @@ class vmmCreateNetwork(vmmGObjectUI):
@@ -752,7 +752,7 @@ class vmmCreateNetwork(vmmGObjectUI):
try:
net = self._build_xmlobj()
except Exception, e:

View File

@ -0,0 +1,48 @@
Subject: Don't create disk images world readable and executable
From: Ron ron@debian.org Sun Jun 29 16:16:36 2014 +0930
Date: Wed Jul 2 07:35:15 2014 +0200:
Git: ea1d973957ce3662c7fb22046c34b62f72f0e624
Python's os.open() defaults to mode 0777 if not explicitly specified.
Disk image files don't need to be executable, and having them world
readable isn't an ideal situation either. Owner writable and group
readable is probably more than sufficient when initially creating
them.
Signed-off-by: Ron Lee <ron@debian.org>
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index 5f72d00..2c74a11 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -383,7 +383,7 @@ class StorageCreator(_StorageBase):
sparse = True
fd = None
try:
- fd = os.open(self._path, os.O_WRONLY | os.O_CREAT)
+ fd = os.open(self._path, os.O_WRONLY | os.O_CREAT, 0640)
os.ftruncate(fd, size_bytes)
finally:
if fd:
@@ -401,7 +401,7 @@ class StorageCreator(_StorageBase):
try:
try:
src_fd = os.open(self._clone_path, os.O_RDONLY)
- dst_fd = os.open(self._path, os.O_WRONLY | os.O_CREAT)
+ dst_fd = os.open(self._path, os.O_WRONLY | os.O_CREAT, 0640)
i = 0
while 1:
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index fba70f9..b51e524 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -67,7 +67,7 @@ class _ImageFetcher(object):
prefix = "virtinst-" + prefix
if "VIRTINST_TEST_SUITE" in os.environ:
fn = os.path.join(".", prefix)
- fd = os.open(fn, os.O_RDWR | os.O_CREAT)
+ fd = os.open(fn, os.O_RDWR | os.O_CREAT, 0640)
else:
(fd, fn) = tempfile.mkstemp(prefix=prefix,
dir=self.scratchdir)

View File

@ -0,0 +1,48 @@
Subject: virtinst: add method to set connection keep-alive
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jul 1 12:54:38 2014 +0200
Date: Wed Jul 2 15:31:40 2014 +0200:
Git: 3606bb573df4132a70b9e0fe82a59cd49a400fa0
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Subject: virt-manager: check if still connected every 20 seconds
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jul 1 13:06:05 2014 +0200
Date: Wed Jul 2 15:31:40 2014 +0200:
Git: 538c68a41dd0538c36e442ad37690b1b9c3debee
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtinst/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/connection.py
+++ virt-manager-1.0.1/virtinst/connection.py
@@ -1,5 +1,5 @@
#
-# Copyright 2013 Red Hat, Inc.
+# Copyright 2013, 2014 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -201,6 +201,10 @@ class VirtualConnection(object):
self._fetch_cache[key] = ret
return ret
+ def set_keep_alive(self, interval, count):
+ if hasattr(self._libvirtconn, "setKeepAlive"):
+ self._libvirtconn.setKeepAlive(interval, count)
+
def fetch_all_pools(self):
"""
Returns a list of StoragePool objects
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1112,6 +1112,7 @@ class vmmConnection(vmmGObject):
logging.debug("%s capabilities:\n%s",
self.get_uri(), self.caps.xml)
self._add_conn_events()
+ self._backend.setKeepAlive(20, 1)
self.schedule_priority_tick(stats_update=True,
pollvm=True, pollnet=True,
pollpool=True, polliface=True,

View File

@ -0,0 +1,50 @@
Subject: console: prevent access to deleted objects
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jul 1 15:01:58 2014 +0200
Date: Wed Jul 2 15:31:41 2014 +0200:
Git: f4365b669acc36bdc61c57d793894305dcb9059a
last commits revealed that some objects can still be accessed by
registered callbacks after the console is closed. Unregister these
callbacks.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/console.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/console.py
+++ virt-manager-1.0.1/virtManager/console.py
@@ -572,6 +572,7 @@ class SpiceViewer(Viewer):
self.display = None
self.audio = None
self.main_channel = None
+ self._main_channel_hids = []
self.display_channel = None
self.usbdev_manager = None
@@ -636,6 +637,11 @@ class SpiceViewer(Viewer):
self.display.destroy()
self.display = None
self.display_channel = None
+
+ for i in self._main_channel_hids:
+ self.main_channel.handler_disconnect(i)
+ self._main_channel_hids = []
+
self.main_channel = None
self.usbdev_manager = None
@@ -682,10 +688,12 @@ class SpiceViewer(Viewer):
if self.console.tunnels:
self.console.tunnels.unlock()
self.main_channel = channel
- self.main_channel.connect_after("channel-event",
+ hid = self.main_channel.connect_after("channel-event",
self._main_channel_event_cb)
- self.main_channel.connect_after("notify::agent-connected",
+ self._main_channel_hids.append(hid)
+ hid = self.main_channel.connect_after("notify::agent-connected",
self._agent_connected_cb)
+ self._main_channel_hids.append(hid)
elif (type(channel) == SpiceClientGLib.DisplayChannel and
not self.display):

View File

@ -0,0 +1,28 @@
Subject: connection: Handle unsupport KeepAlive (like test URIs)
From: Cole Robinson crobinso@redhat.com Fri Jul 4 17:43:24 2014 -0400
Date: Fri Jul 4 18:20:54 2014 -0400:
Git: aa823b5b58d689e2a69a9822fd462a1333d8d415
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1112,7 +1112,16 @@ class vmmConnection(vmmGObject):
logging.debug("%s capabilities:\n%s",
self.get_uri(), self.caps.xml)
self._add_conn_events()
- self._backend.setKeepAlive(20, 1)
+
+ try:
+ self._backend.setKeepAlive(20, 1)
+ except Exception, e:
+ if (type(e) is not AttributeError and
+ not util.is_error_nosupport(e)):
+ raise
+ logging.debug("Connection doesn't support KeepAlive, "
+ "skipping")
+
self.schedule_priority_tick(stats_update=True,
pollvm=True, pollnet=True,
pollpool=True, polliface=True,

View File

@ -0,0 +1,55 @@
Subject: connection: Report error if things fall over during connection bring up
From: Cole Robinson crobinso@redhat.com Fri Jul 4 17:37:42 2014 -0400
Date: Fri Jul 4 18:20:54 2014 -0400:
Git: e12d7a6a8c21f0d8e0331fa06f53523258bdfaae
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1101,23 +1101,27 @@ class vmmConnection(vmmGObject):
def _open_notify(self):
logging.debug("Notifying open result")
- self.idle_emit("state-changed")
-
- if self.state == self.STATE_ACTIVE:
- logging.debug("libvirt version=%s",
- self._backend.local_libvirt_version())
- logging.debug("daemon version=%s",
- self._backend.daemon_version())
- logging.debug("conn version=%s", self._backend.conn_version())
- logging.debug("%s capabilities:\n%s",
- self.get_uri(), self.caps.xml)
- self._add_conn_events()
- self._backend.setKeepAlive(20, 1)
- self.schedule_priority_tick(stats_update=True,
- pollvm=True, pollnet=True,
- pollpool=True, polliface=True,
- pollnodedev=True, pollmedia=True,
- force=True)
+ try:
+ self.idle_emit("state-changed")
+ if self.state == self.STATE_ACTIVE:
+ logging.debug("libvirt version=%s",
+ self._backend.local_libvirt_version())
+ logging.debug("daemon version=%s",
+ self._backend.daemon_version())
+ logging.debug("conn version=%s", self._backend.conn_version())
+ logging.debug("%s capabilities:\n%s",
+ self.get_uri(), self.caps.xml)
+ self._add_conn_events()
+ self._backend.setKeepAlive(20, 1)
+ self.schedule_priority_tick(stats_update=True,
+ pollvm=True, pollnet=True,
+ pollpool=True, polliface=True,
+ pollnodedev=True, pollmedia=True,
+ force=True)
+ except Exception, e:
+ self.close()
+ self.connectError = (str(e),
+ "".join(traceback.format_exc()), False)
if self.state == self.STATE_DISCONNECTED:
if self.connectError:

View File

@ -0,0 +1,23 @@
Subject: network: refresh the XML definition on state update
From: Giuseppe Scrivano gscrivan@redhat.com Thu Jul 3 13:55:50 2014 +0200
Date: Tue Jul 8 00:05:09 2014 +0200:
Git: cbb18b0e9626faa08d8f017a9e02466e5ba7b767
The XML definition returned by libvirt can change on a state
transition. vmmNetwork.force_update_status invalidates the old
definition.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/network.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/network.py
+++ virt-manager-1.0.1/virtManager/network.py
@@ -80,6 +80,7 @@ class vmmNetwork(vmmLibvirtObject):
def _set_active(self, state):
if state == self._active:
return
+ self.refresh_xml()
self.idle_emit(state and "started" or "stopped")
self._active = state

View File

@ -1,3 +1,40 @@
-------------------------------------------------------------------
Thu Jul 17 15:45:19 MDT 2014 - carnold@suse.com
- bnc#885308 - pass virtio-rng-pci to the guest qemu
virtinst-add-default-rng-device.patch
-------------------------------------------------------------------
Wed Jul 9 09:50:14 MDT 2014 - carnold@suse.com
- Fix GUI failure to display addition of a second disk
Dropped virtman-device-flags.patch
-------------------------------------------------------------------
Wed Jul 9 09:50:14 MDT 2014 - carnold@suse.com
- bnc#885380 - virt-install: by default generates raw format
against various virtual disk formats
virtinst-supported-disk-formats.patch
virtman-supported-disk-formats.patch
- Dropped virtinst-qed.patch, virtman-qed.patch
-------------------------------------------------------------------
Tue Jul 8 10:34:20 MDT 2014 - carnold@suse.com
- bnc#869026 - Build0198: Unable to complete install: 'XML error:
No PCI buses available'
virtman-add-s390x-arch-support.patch
- Upstream bug fixes
53ac1f8d-createnet-validate-last-page-before-creating-network.patch
53ac1f8d-fix-show_err-typo.patch
53b39a13-dont-create-disk-images-world-readable-executable.patch
53b409bc-add-keep-alive-method-and-connection-check.patch
53b409bd-console-prevent-access-to-deleted-objects.patch
53b728c6-report-error-during-connection-bring-up.patch
53b728c6-connection-handle-unsupported-KeepAlive.patch
53bb1995-network-refresh-XML-definition-on-state-update.patch
-------------------------------------------------------------------
Tue Jul 1 09:55:29 MDT 2014 - carnold@suse.com

View File

@ -76,33 +76,38 @@ Patch37: 5397b647-createnet-enable-specifying-29-subnet.patch
Patch38: 539e8cca-createpool-fix-creation-of-gluster-pools.patch
Patch39: 53a05e73-fix-edit-maxvcpus.patch
Patch40: 53a995cb-fix-usb-storage-removable-syntax.patch
Patch41: 53ac1f8d-fix-show_err-typo.patch
Patch42: 53ac1f8d-createnet-validate-last-page-before-creating-network.patch
Patch50: virtman-desktop.patch
Patch51: virtman-cdrom.patch
Patch52: virtman-kvm.patch
Patch53: virtman-keycombo.patch
Patch54: virtman-eepro100.patch
Patch55: virtman-qed.patch
Patch56: virtman-device-flags.patch
Patch57: virtman-autorestart.patch
Patch60: virtman-default-guest-from-host-os.patch
Patch61: virtman-default-to-xen-pv.patch
Patch62: virtman-autoyast-support.patch
Patch63: virtman-vminstall.patch
Patch64: virtman-show-suse-install-repos.patch
Patch65: virtman-packages.patch
Patch66: virtman-load-stored-uris.patch
Patch67: virtman-libvirtd-not-running.patch
Patch68: virtman-stable-os-support.patch
Patch69: virtman-add-s390x-arch-support.patch
Patch70: virtman-prevent-double-click-starting-vm-twice.patch
Patch71: virtman-default-lxc-uri.patch
Patch72: virtman-add-connect-default.patch
Patch73: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch74: virtman-check-for-empty-network-name.patch
Patch41: 53ac1f8d-createnet-validate-last-page-before-creating-network.patch
Patch42: 53ac1f8d-fix-show_err-typo.patch
Patch43: 53b39a13-dont-create-disk-images-world-readable-executable.patch
Patch44: 53b409bc-add-keep-alive-method-and-connection-check.patch
Patch45: 53b409bd-console-prevent-access-to-deleted-objects.patch
Patch46: 53b728c6-report-error-during-connection-bring-up.patch
Patch47: 53b728c6-connection-handle-unsupported-KeepAlive.patch
Patch48: 53bb1995-network-refresh-XML-definition-on-state-update.patch
Patch70: virtman-desktop.patch
Patch71: virtman-cdrom.patch
Patch72: virtman-kvm.patch
Patch73: virtman-keycombo.patch
Patch74: virtman-eepro100.patch
Patch75: virtman-supported-disk-formats.patch
Patch76: virtman-autorestart.patch
Patch80: virtman-default-guest-from-host-os.patch
Patch81: virtman-default-to-xen-pv.patch
Patch82: virtman-autoyast-support.patch
Patch83: virtman-vminstall.patch
Patch84: virtman-show-suse-install-repos.patch
Patch85: virtman-packages.patch
Patch86: virtman-load-stored-uris.patch
Patch87: virtman-libvirtd-not-running.patch
Patch88: virtman-stable-os-support.patch
Patch89: virtman-add-s390x-arch-support.patch
Patch90: virtman-prevent-double-click-starting-vm-twice.patch
Patch91: virtman-default-lxc-uri.patch
Patch92: virtman-add-connect-default.patch
Patch93: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch94: virtman-check-for-empty-network-name.patch
Patch151: virtinst-storage-ocfs2.patch
Patch152: virtinst-qed.patch
Patch152: virtinst-supported-disk-formats.patch
Patch153: virtinst-support-suse-distros.patch
Patch154: virtinst-detect-suse-distros.patch
Patch155: virtinst-xen-drive-type.patch
@ -113,6 +118,7 @@ Patch159: virtinst-vol-default-nocow.patch
Patch160: virtinst-detect-windows-media.patch
Patch161: virtinst-xenbus-disk-index-fix.patch
Patch162: virtinst-set-cache-mode-unsafe-for-install.patch
Patch163: virtinst-add-default-rng-device.patch
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -243,29 +249,34 @@ machine).
%patch40 -p1
%patch41 -p1
%patch42 -p1
%patch50 -p1
%patch51 -p1
%patch52 -p1
%patch53 -p1
%patch54 -p1
%patch55 -p1
%patch56 -p1
%patch57 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
%patch69 -p1
%patch43 -p1
%patch44 -p1
%patch45 -p1
%patch46 -p1
%patch47 -p1
%patch48 -p1
%patch70 -p1
%patch71 -p1
%patch72 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch86 -p1
%patch87 -p1
%patch88 -p1
%patch89 -p1
%patch90 -p1
%patch91 -p1
%patch92 -p1
%patch93 -p1
%patch94 -p1
%patch151 -p1
%patch152 -p1
%patch153 -p1
@ -278,6 +289,7 @@ machine).
%patch160 -p1
%patch161 -p1
%patch162 -p1
%patch163 -p1
%build
%if %{qemu_user}

View File

@ -0,0 +1,28 @@
bnc#885308
--- virt-manager-1.0.1/virtinst/guest.py.orig 2014-07-17 15:40:21.724772127 -0600
+++ virt-manager-1.0.1/virtinst/guest.py 2014-07-17 15:40:27.921811664 -0600
@@ -625,6 +625,15 @@ class Guest(XMLBuilder):
return
self.add_device(virtinst.VirtualGraphics(self.conn))
+ def add_default_rng(self):
+ osvar = self._get_os_variant()
+ if not self.conn.is_qemu() or not osvar or osvar.startswith("win"):
+ return
+ rng_dev = virtinst.VirtualRNGDevice(True)
+ rng_dev.type = virtinst.VirtualRNGDevice.TYPE_RANDOM
+ setattr(rng_dev, "device", "/dev/random")
+ self.add_device(rng_dev)
+
def add_default_devices(self):
self.add_default_graphics()
self.add_default_video_device()
@@ -632,6 +641,7 @@ class Guest(XMLBuilder):
self.add_default_console_device()
self.add_default_usb_controller()
self.add_default_channels()
+ self.add_default_rng()
def _set_transient_device_defaults(self, install):
def do_remove_media(d):

View File

@ -2,7 +2,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -348,8 +348,18 @@ class Guest(XMLBuilder):
@@ -351,8 +351,18 @@ class Guest(XMLBuilder):
if (not install and
self.os.is_xenpv() and
not self.os.kernel):

View File

@ -1,6 +1,8 @@
--- virt-manager-1.0.1/virtinst/guest.py.orig 2014-05-29 10:27:00.609005060 -0600
+++ virt-manager-1.0.1/virtinst/guest.py 2014-05-29 10:27:03.588027133 -0600
@@ -343,6 +343,12 @@ class Guest(XMLBuilder):
Index: virt-manager-1.0.1/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -346,6 +346,12 @@ class Guest(XMLBuilder):
self.on_reboot = action
self.on_crash = action
@ -13,7 +15,7 @@
self._set_defaults()
self.bootloader = None
@@ -362,7 +368,10 @@ class Guest(XMLBuilder):
@@ -365,7 +371,10 @@ class Guest(XMLBuilder):
self.bootloader = "/usr/bin/pygrub"
self.os.clear()

View File

@ -10,7 +10,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
import logging
import urlgrabber.progress as progress
@@ -724,14 +725,22 @@ class Guest(XMLBuilder):
@@ -727,14 +728,22 @@ class Guest(XMLBuilder):
self.emulator = None
return

View File

@ -1,7 +1,7 @@
Index: virt-manager-0.10.1/virtinst/devicedisk.py
Index: virt-manager-1.0.1/virtinst/devicedisk.py
===================================================================
--- virt-manager-0.10.1.orig/virtinst/devicedisk.py
+++ virt-manager-0.10.1/virtinst/devicedisk.py
--- virt-manager-1.0.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.0.1/virtinst/devicedisk.py
@@ -156,10 +156,11 @@ class VirtualDisk(VirtualDevice):
DRIVER_TAP_RAW = "aio"
@ -15,10 +15,10 @@ Index: virt-manager-0.10.1/virtinst/devicedisk.py
CACHE_MODE_NONE = "none"
CACHE_MODE_WRITETHROUGH = "writethrough"
Index: virt-manager-0.10.1/virtinst/virtimage.py
Index: virt-manager-1.0.1/virtinst/virtimage.py
===================================================================
--- virt-manager-0.10.1.orig/virtinst/virtimage.py
+++ virt-manager-0.10.1/virtinst/virtimage.py
--- virt-manager-1.0.1.orig/virtinst/virtimage.py
+++ virt-manager-1.0.1/virtinst/virtimage.py
@@ -209,6 +209,7 @@ class Disk(object):
FORMAT_QCOW2 = "qcow2"
FORMAT_VMDK = "vmdk"
@ -37,3 +37,16 @@ Index: virt-manager-0.10.1/virtinst/virtimage.py
validate(formats.count(self.format) > 0,
_("The format for disk %s must be one of %s") %
(self.file, ",".join(formats)))
Index: virt-manager-1.0.1/virtinst/support.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/support.py
+++ virt-manager-1.0.1/virtinst/support.py
@@ -258,7 +258,7 @@ SUPPORT_CONN_DISK_SD = _make(version="1.
# default to qcow2. It might be fine for xen or qemu older than the versions
# here, but until someone tests things I'm going to be a bit conservative.
SUPPORT_CONN_DEFAULT_QCOW2 = _make(
- version="0.8.0", hv_version={"qemu": "1.2.0", "test": 0})
+ version="0.8.0", hv_version={"qemu": "1.2.0", "all": 0})
SUPPORT_CONN_DEFAULT_USB2 = _make(
version="0.9.7", hv_version={"qemu": "1.0.0", "test": 0})
SUPPORT_CONN_CAN_ACPI = _make(hv_version={"xen": "3.1.0", "all": 0})

View File

@ -1,9 +1,9 @@
Reference: bnc#813082
Index: virt-manager-1.0.0/virtinst/devicedisk.py
Index: virt-manager-1.0.1/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.0.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.0.0/virtinst/devicedisk.py
--- virt-manager-1.0.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.0.1/virtinst/devicedisk.py
@@ -558,6 +558,12 @@ class VirtualDisk(VirtualDevice):
return None
if self.conn.is_qemu():

View File

@ -37,7 +37,28 @@ Index: virt-manager-1.0.1/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -598,7 +598,7 @@ class Guest(XMLBuilder):
@@ -112,7 +112,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.arch == "s390x":
+ self.skip_default_graphics = True
+ else:
+ self.skip_default_graphics = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
self._os_variant = None
@@ -553,7 +556,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.arch == "s390x":
return
if self.get_devices("video"):
return
@@ -598,7 +601,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
return
@ -46,3 +67,12 @@ Index: virt-manager-1.0.1/virtinst/guest.py
return
self.add_device(virtinst.VirtualGraphics(self.conn))
@@ -804,7 +807,7 @@ class Guest(XMLBuilder):
if not self._lookup_osdict_key(key, False):
return False
- if self.os.is_x86():
+ if self.os.is_x86() or self.os.arch == "s390x":
return True
if (self.os.is_arm_vexpress() and
self.os.dtb and

View File

@ -27,7 +27,7 @@ Index: virt-manager-1.0.1/virtManager/details.py
if self.edited(EDIT_BOOTORDER):
kwargs["boot_order"] = self.get_config_boot_order()
@@ -2381,6 +2384,8 @@ class vmmDetails(vmmGObjectUI):
@@ -2370,6 +2373,8 @@ class vmmDetails(vmmGObjectUI):
buttons=Gtk.ButtonsType.OK,
dialog_type=dtype)

View File

@ -1,71 +0,0 @@
Index: virt-manager-1.0.1/virtManager/addhardware.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addhardware.py
+++ virt-manager-1.0.1/virtManager/addhardware.py
@@ -1280,6 +1280,18 @@ class vmmAddHardware(vmmGObjectUI):
if controller is not None:
logging.debug("Adding controller:\n%s",
controller.get_xml_config())
+
+ # If vm is active, Try to hotplug the device and modify persistent
+ # config in one go
+ if self.vm.is_active():
+ try:
+ self.vm.attach_device_flags(self._dev, 3)
+ return (False, None)
+ except Exception, e:
+ logging.debug("Could not hotplug device and modify persistent "
+ "config at the same time: %s" % str(e))
+ logging.debug("Trying the operations seperately ...")
+
# Hotplug device
attach_err = False
try:
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -2290,6 +2290,17 @@ class vmmDetails(vmmGObjectUI):
text1=(_("Are you sure you want to remove this device?"))):
return
+ # If vm is running, try to hot remove the device and modify
+ # persistent config in one go
+ if self.vm.is_active():
+ try:
+ self.vm.detach_device_flags(dev_type, dev_id_info, 3)
+ return
+ except Exception, e:
+ logging.debug("Could not hot remove device and modify "
+ "persistent config at the same time: %s" % str(e))
+ logging.debug("Trying the operations seperately ...")
+
# Define the change
try:
self.vm.remove_device(devobj)
Index: virt-manager-1.0.1/virtManager/domain.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/domain.py
+++ virt-manager-1.0.1/virtManager/domain.py
@@ -928,6 +928,10 @@ class vmmDomain(vmmLibvirtObject):
devxml = devobj.get_xml_config()
self._backend.attachDevice(devxml)
+ def attach_device_flags(self, devobj, flags):
+ xml = devobj.get_xml_config()
+ self._backend.attachDeviceFlags(xml, flags)
+
def detach_device(self, devobj):
"""
Hotunplug device from running guest
@@ -946,6 +950,10 @@ class vmmDomain(vmmLibvirtObject):
logging.debug("Calling update_device with xml=\n%s", xml)
self._backend.updateDeviceFlags(xml, flags)
+ def detach_device_flags(self, devtype, dev_id_info, flags):
+ xml = self._get_device_xml(devtype, dev_id_info)
+ self._backend.detachDeviceFlags(xml, flags)
+
def hotplug(self, vcpus=_SENTINEL, memory=_SENTINEL, maxmem=_SENTINEL,
description=_SENTINEL, title=_SENTINEL, storage_path=_SENTINEL,
device=_SENTINEL):

View File

@ -2,7 +2,7 @@ Index: virt-manager-1.0.1/virtManager/console.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/console.py
+++ virt-manager-1.0.1/virtManager/console.py
@@ -934,6 +934,16 @@ class vmmConsolePages(vmmGObjectUI):
@@ -942,6 +942,16 @@ class vmmConsolePages(vmmGObjectUI):
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
menu.add(Gtk.SeparatorMenuItem())

View File

@ -12,7 +12,7 @@ Index: virt-manager-1.0.1/virtManager/addhardware.py
- formats.append("vmdk")
- no_create_formats.append("vdi")
+ if vm.conn.is_xen():
+ formats = ["raw", "qcow2", "qed", "vmdk", "vdi"]
+ formats = ["raw", "qcow2"]
+ else:
+ formats = ["raw", "qcow2", "qed"]
+ if not vm.stable_defaults():