diff --git a/2c1e482b-fix--show-host-summary-error-windows-flooding.patch b/2c1e482b-fix--show-host-summary-error-windows-flooding.patch new file mode 100644 index 00000000..ed13082a --- /dev/null +++ b/2c1e482b-fix--show-host-summary-error-windows-flooding.patch @@ -0,0 +1,26 @@ +Subject: virt-manager: fix --show-host-summary error windows flooding +From: Giuseppe Scrivano gscrivan@redhat.com Mon May 11 15:05:57 2015 +0200 +Date: Mon May 11 20:20:10 2015 +0200: +Git: 2c1e482b2df58e76624cb30625ce4bed0c663275 + +Break an endless loop vmmHost.overview_name_changed -> +vmmHost.conn_state_changed -> vmmHost._overview_name_changed. + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1220322 + +Signed-off-by: Giuseppe Scrivano + +Index: virt-manager-1.2.0/virtManager/connection.py +=================================================================== +--- virt-manager-1.2.0.orig/virtManager/connection.py ++++ virt-manager-1.2.0/virtManager/connection.py +@@ -1346,7 +1346,8 @@ class vmmConnection(vmmGObject): + self.config.set_conn_autoconnect(self.get_uri(), val) + + def set_config_pretty_name(self, value): +- self.config.set_perconn(self.get_uri(), "/pretty-name", value) ++ if value != self._get_config_pretty_name(): ++ self.config.set_perconn(self.get_uri(), "/pretty-name", value) + def _get_config_pretty_name(self): + return self.config.get_perconn(self.get_uri(), "/pretty-name") + def _on_config_pretty_name_changed(self, *args, **kwargs): diff --git a/4b5c836a-read-start-mode-from-inactive-conf-XML.patch b/4b5c836a-read-start-mode-from-inactive-conf-XML.patch new file mode 100644 index 00000000..cab478b0 --- /dev/null +++ b/4b5c836a-read-start-mode-from-inactive-conf-XML.patch @@ -0,0 +1,22 @@ +Subject: interface: read the start mode from the inactive conf XML +From: Giuseppe Scrivano gscrivan@redhat.com Thu May 14 16:27:55 2015 +0200 +Date: Fri May 15 09:14:09 2015 +0200: +Git: 4b5c836a16da18e58e013a0fa6c3ca4caba00b94 + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1154480 + +Signed-off-by: Giuseppe Scrivano + +diff --git a/virtManager/interface.py b/virtManager/interface.py +index bd1e2ba..dc6f4da 100644 +--- a/virtManager/interface.py ++++ b/virtManager/interface.py +@@ -101,7 +101,7 @@ class vmmInterface(vmmLibvirtObject): + return "Interface" + + def get_startmode(self): +- return self.get_xmlobj().start_mode or "none" ++ return self.get_xmlobj(inactive=True).start_mode or "none" + + def set_startmode(self, newmode): + xmlobj = self._make_xmlobj_to_define() diff --git a/776c1d97-fix-changing-USB-device-model.patch b/776c1d97-fix-changing-USB-device-model.patch new file mode 100644 index 00000000..69c5b994 --- /dev/null +++ b/776c1d97-fix-changing-USB-device-model.patch @@ -0,0 +1,41 @@ +Subject: domain: Fix changing USB device model +From: Cole Robinson crobinso@redhat.com Tue May 19 13:21:36 2015 -0400 +Date: Tue May 19 18:29:45 2015 -0400: +Git: 776c1d97c667628b03ad79d4e89457675f475dfb + +Broken before v1.2.0 + +Index: virt-manager-1.2.0/virtManager/domain.py +=================================================================== +--- virt-manager-1.2.0.orig/virtManager/domain.py ++++ virt-manager-1.2.0/virtManager/domain.py +@@ -953,23 +953,22 @@ class vmmDomain(vmmLibvirtObject): + + def _change_model(): + if editdev.type == "usb": +- guest = self._make_xmlobj_to_define() +- ctrls = guest.get_devices("controller") ++ ctrls = xmlobj.get_devices("controller") + ctrls = [x for x in ctrls if (x.type == + VirtualController.TYPE_USB)] + for dev in ctrls: +- guest.remove_device(dev) ++ xmlobj.remove_device(dev) + + if model == "ich9-ehci1": + for dev in VirtualController.get_usb2_controllers( +- guest.conn): +- guest.add_device(dev) ++ xmlobj.conn): ++ xmlobj.add_device(dev) + else: +- dev = VirtualController(guest.conn) ++ dev = VirtualController(xmlobj.conn) + dev.type = "usb" + if model != "default": + dev.model = model +- guest.add_device(dev) ++ xmlobj.add_device(dev) + + elif editdev.type == "scsi": + if model == "default": diff --git a/848123e6-fix-memory-stats-for-shutoff-VM.patch b/848123e6-fix-memory-stats-for-shutoff-VM.patch new file mode 100644 index 00000000..05fbc458 --- /dev/null +++ b/848123e6-fix-memory-stats-for-shutoff-VM.patch @@ -0,0 +1,26 @@ +Subject: domain: Fix memory stats for shutoff VM (bz 1215453) +From: Cole Robinson crobinso@redhat.com Mon May 4 15:50:01 2015 -0400 +Date: Mon May 4 15:50:01 2015 -0400: +Git: 848123e6c8850bafad28767a165bbbf8dc746a09 + +memory doesn't have a separate input/output stats, so we shouldn't use +the in_out_vector_helper. This resulted in shutoff VMs appearing to still +use memory in the manager window. + +diff --git a/virtManager/domain.py b/virtManager/domain.py +index cdb8cd5..e96b80f 100644 +--- a/virtManager/domain.py ++++ b/virtManager/domain.py +@@ -1699,8 +1699,10 @@ class vmmDomain(vmmLibvirtObject): + cpudata = cpudata[0:limit] + return cpudata + def memory_usage_vector_limit(self, limit): +- return self.in_out_vector_limit(self.stats_memory_vector(), +- limit) ++ data = self.stats_memory_vector() ++ if len(data) > limit: ++ data = data[0:limit] ++ return data + def network_traffic_vector_limit(self, limit, ceil=None): + return self.in_out_vector_limit(self.network_traffic_vector(ceil), + limit) diff --git a/88e18c86-fix-sending-net-removed-signal.patch b/88e18c86-fix-sending-net-removed-signal.patch new file mode 100644 index 00000000..22c973a5 --- /dev/null +++ b/88e18c86-fix-sending-net-removed-signal.patch @@ -0,0 +1,30 @@ +Subject: connection: Fix sending net-removed signal +From: Cole Robinson crobinso@redhat.com Thu May 7 12:30:28 2015 -0400 +Date: Thu May 7 12:30:28 2015 -0400: +Git: 88e18c86d36406b3dab032b2bb21b46767871b4b + + +Index: virt-manager-1.2.0/virtManager/connection.py +=================================================================== +--- virt-manager-1.2.0.orig/virtManager/connection.py ++++ virt-manager-1.2.0/virtManager/connection.py +@@ -961,13 +961,17 @@ class vmmConnection(vmmGObject): + + for obj in gone_objects: + class_name = obj.class_name() ++ try: ++ name = obj.get_name() ++ except: ++ name = str(obj) + + if not self._objects.remove(obj): + logging.debug("Requested removal of %s=%s, but it's " +- "not in our object list.", class_name, obj.get_name()) ++ "not in our object list.", class_name, name) + continue + +- logging.debug("%s=%s removed", class_name, obj.get_name()) ++ logging.debug("%s=%s removed", class_name, name) + if class_name == "domain": + self.emit("vm-removed", obj.get_connkey()) + elif class_name == "network": diff --git a/ac2be796-do-not-throw-exception-if-volume-or-pool-dont-exist.patch b/ac2be796-do-not-throw-exception-if-volume-or-pool-dont-exist.patch new file mode 100644 index 00000000..14c90ce0 --- /dev/null +++ b/ac2be796-do-not-throw-exception-if-volume-or-pool-dont-exist.patch @@ -0,0 +1,51 @@ +Subject: storage: do not throw exception if the volume or the pool don't exist +From: Giuseppe Scrivano gscrivan@redhat.com Thu May 7 13:42:00 2015 +0200 +Date: Thu May 7 17:42:58 2015 +0200: +Git: ac2be79658ec5673d00ca9603db63b9b0de4fbd3 + +commit 5357b91402fb7a8a73921216926908c08f6ad99d changed the semantic of +conn.get_(vm|pool|interface|nodedev|net), to return None instead of +raising KeyError. Leave the exception handling code in case the +semantic is going to be reverted. + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1219427 + +Signed-off-by: Giuseppe Scrivano + +Index: virt-manager-1.2.0/virtManager/delete.py +=================================================================== +--- virt-manager-1.2.0.orig/virtManager/delete.py ++++ virt-manager-1.2.0/virtManager/delete.py +@@ -236,7 +236,11 @@ def populate_storage_list(storage_list, + if disk.source_pool: + try: + pool = conn.get_pool(disk.source_pool) ++ if pool is None: ++ return disk.path + vol = pool.get_volume(disk.path) ++ if vol is None: ++ return disk.path + return vol.get_target_path() + except KeyError: + return disk.path +Index: virt-manager-1.2.0/virtManager/details.py +=================================================================== +--- virt-manager-1.2.0.orig/virtManager/details.py ++++ virt-manager-1.2.0/virtManager/details.py +@@ -2698,12 +2698,14 @@ class vmmDetails(vmmGObjectUI): + if not path: + size = "-" + else: ++ vol = None + if source_pool: + try: + pool = self.conn.get_pool(source_pool) +- vol = pool.get_volume(path) ++ if pool is not None: ++ vol = pool.get_volume(path) + except KeyError: +- vol = None ++ pass + else: + vol = self.conn.get_vol_by_path(path) + diff --git a/bbc4f83b-enable-qemu_ga-for-sles-11-sp4-and-newer.patch b/bbc4f83b-enable-qemu_ga-for-sles-11-sp4-and-newer.patch new file mode 100644 index 00000000..f18a750f --- /dev/null +++ b/bbc4f83b-enable-qemu_ga-for-sles-11-sp4-and-newer.patch @@ -0,0 +1,23 @@ +Subject: virtinst: enable qemu_ga for sles-11-sp4 and newer +From: Lin Ma lma@suse.com Wed May 20 09:26:44 2015 +0800 +Date: Wed May 20 14:01:50 2015 -0400: +Git: bbc4f83bd3233617122ce89504f8cda8ddf88512 + +Qemu guest agent becomes available since sles 11 sp4 distro, +So enable qemu_ga while installing sles11sp4 and newer sles. + +Signed-off-by: Lin Ma + +diff --git a/virtinst/osdict.py b/virtinst/osdict.py +index 57039b0..76c2260 100644 +--- a/virtinst/osdict.py ++++ b/virtinst/osdict.py +@@ -514,7 +514,7 @@ class _OsVariant(object): + return False + + def supports_qemu_ga(self): +- return self._is_related_to(["fedora18", "rhel6.0"]) ++ return self._is_related_to(["fedora18", "rhel6.0", "sles11sp4"]) + + def default_videomodel(self, guest): + if guest.os.is_pseries(): diff --git a/c4d26d16-fix-VM-polling-on-old-libvirt.patch b/c4d26d16-fix-VM-polling-on-old-libvirt.patch new file mode 100644 index 00000000..3563fc42 --- /dev/null +++ b/c4d26d16-fix-VM-polling-on-old-libvirt.patch @@ -0,0 +1,20 @@ +Subject: pollhelpers: Fix VM polling on old libvirt +From: Michał Kępień michal.kepien@nask.pl Thu May 7 11:10:20 2015 -0400 +Date: Thu May 7 11:10:20 2015 -0400: +Git: c4d26d16a65e0ce6b88323e13669c7c388397d7f + +https://bugzilla.redhat.com/show_bug.cgi?id=1219443 + +diff --git a/virtinst/pollhelpers.py b/virtinst/pollhelpers.py +index 3eeada4..dafd079 100644 +--- a/virtinst/pollhelpers.py ++++ b/virtinst/pollhelpers.py +@@ -268,7 +268,7 @@ def _old_fetch_vms(backend, origmap, build_func): + except: + logging.exception("Couldn't fetch domain '%s'", name) + +- return (origmap, new, current) ++ return (origmap.values(), new.values(), current.values()) + + + def fetch_vms(backend, origmap, build_func): diff --git a/ebcb7c06-fix-exception-when-the-address-is-not-an-IP.patch b/ebcb7c06-fix-exception-when-the-address-is-not-an-IP.patch new file mode 100644 index 00000000..eaa1332e --- /dev/null +++ b/ebcb7c06-fix-exception-when-the-address-is-not-an-IP.patch @@ -0,0 +1,34 @@ +Subject: sshtunnels: fix exception when the address is not an IP +From: Giuseppe Scrivano gscrivan@redhat.com Wed May 6 12:52:40 2015 +0200 +Date: Wed May 6 21:27:50 2015 +0200: +Git: ebcb7c064ca5a3afd2ec3a0c8f59328a7f71b009 + +bug introduced with commit a2d453f3e20d103a4767394300c5183fde9a6bb4 + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1218958 + +Signed-off-by: Giuseppe Scrivano + +diff --git a/virtManager/sshtunnels.py b/virtManager/sshtunnels.py +index 53f43be..03e1738 100644 +--- a/virtManager/sshtunnels.py ++++ b/virtManager/sshtunnels.py +@@ -48,10 +48,16 @@ class ConnectionInfo(object): + self._connhost = "127.0.0.1" + + def _is_listen_localhost(self, host=None): +- return ipaddr.IPNetwork(host or self.gaddr).is_loopback ++ try: ++ return ipaddr.IPNetwork(host or self.gaddr).is_loopback ++ except: ++ return False + + def _is_listen_any(self): +- return ipaddr.IPNetwork(self.gaddr).is_unspecified ++ try: ++ return ipaddr.IPNetwork(self.gaddr).is_unspecified ++ except: ++ return False + + def need_tunnel(self): + if not self._is_listen_localhost(): diff --git a/f8af2e6b-verify-HYPER-V-support-after-customization.patch b/f8af2e6b-verify-HYPER-V-support-after-customization.patch new file mode 100644 index 00000000..dcdc2dd9 --- /dev/null +++ b/f8af2e6b-verify-HYPER-V-support-after-customization.patch @@ -0,0 +1,51 @@ +Subject: create: verify HYPER-V support after customization +From: Giuseppe Scrivano gscrivan@redhat.com Wed May 20 18:27:13 2015 +0200 +Date: Wed May 20 22:48:33 2015 +0200: +Git: f8af2e6b1083ec38ffa143ce4d04751f6d543362 + +commit 938060ae5340f6e28dc9669ba1ab79a1aa3d615e moved default devices +setup to happen before UEFI is set invalidating what the commit +5acfccf6032abb9e8be89130d05b661e8b3f42c7 does. + +Add another check to happen before installing the guest to disable +HYPER-V when not supported. + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1185253 + +Signed-off-by: Giuseppe Scrivano + +Index: virt-manager-1.2.0/virtManager/create.py +=================================================================== +--- virt-manager-1.2.0.orig/virtManager/create.py ++++ virt-manager-1.2.0/virtManager/create.py +@@ -1790,6 +1790,7 @@ class vmmCreate(vmmGObjectUI): + if not self.is_visible(): + return + logging.debug("User finished customize dialog, starting install") ++ guest.check_defaults() + self.start_install(guest) + + def config_canceled(ignore): +Index: virt-manager-1.2.0/virtinst/guest.py +=================================================================== +--- virt-manager-1.2.0.orig/virtinst/guest.py ++++ virt-manager-1.2.0/virtinst/guest.py +@@ -814,6 +814,18 @@ class Guest(XMLBuilder): + return False + return True + ++ def check_defaults(self): ++ # This is used only by virt-manager to reset any defaults that may have ++ # changed through manual intervention via the customize wizard. ++ if not self._hv_supported(): ++ self.features.hyperv_relaxed = None ++ self.features.hyperv_vapic = None ++ self.features.hyperv_spinlocks = None ++ self.features.hyperv_spinlocks_retries = None ++ for i in self.clock.timers: ++ if i.name == "hypervclock": ++ self.clock.remove_timer(i) ++ + def _set_feature_defaults(self): + if self.os.is_container(): + self.features.acpi = None diff --git a/fbdf574c-fix-shortcut-key-for-USB-redir-dev-type.patch b/fbdf574c-fix-shortcut-key-for-USB-redir-dev-type.patch new file mode 100644 index 00000000..15f74695 --- /dev/null +++ b/fbdf574c-fix-shortcut-key-for-USB-redir-dev-type.patch @@ -0,0 +1,25 @@ +Subject: add-hardware: fix shortcut key for USB redir dev type +From: Giuseppe Scrivano gscrivan@redhat.com Mon May 11 10:02:54 2015 +0200 +Date: Mon May 11 10:17:11 2015 +0200: +Git: fbdf574c53fc0138d4f346b0dbfebff28117605a + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1172108 + +Signed-off-by: Giuseppe Scrivano + +diff --git a/ui/addhardware.ui b/ui/addhardware.ui +index 54dc695..32beb4f 100644 +--- a/ui/addhardware.ui ++++ b/ui/addhardware.ui +@@ -1373,9 +1373,10 @@ + + True + False ++ 1 + _Type: + True +- 1 ++ usbredir-list + + + 0 diff --git a/virt-manager.changes b/virt-manager.changes index 8a52bc24..4190ee4c 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,29 @@ +------------------------------------------------------------------- +Wed May 20 13:14:27 MDT 2015 - carnold@suse.com + +- Upstream bug fixes + 776c1d97-fix-changing-USB-device-model.patch + bbc4f83b-enable-qemu_ga-for-sles-11-sp4-and-newer.patch + f8af2e6b-verify-HYPER-V-support-after-customization.patch + +------------------------------------------------------------------- +Fri May 15 13:10:49 MDT 2015 - carnold@suse.com + +- Upstream bug fixes + fbdf574c-fix-shortcut-key-for-USB-redir-dev-type.patch + 2c1e482b-fix--show-host-summary-error-windows-flooding.patch + 4b5c836a-read-start-mode-from-inactive-conf-XML.patch + +------------------------------------------------------------------- +Fri May 8 11:08:49 MDT 2015 - carnold@suse.com + +- Upstream bug fixes + 848123e6-fix-memory-stats-for-shutoff-VM.patch + ebcb7c06-fix-exception-when-the-address-is-not-an-IP.patch + c4d26d16-fix-VM-polling-on-old-libvirt.patch + ac2be796-do-not-throw-exception-if-volume-or-pool-dont-exist.patch + 88e18c86-fix-sending-net-removed-signal.patch + ------------------------------------------------------------------- Mon May 4 13:38:06 MDT 2015 - carnold@suse.com diff --git a/virt-manager.spec b/virt-manager.spec index c263b029..5ab2371b 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -37,6 +37,17 @@ Source0: %{name}-%{version}.tar.bz2 Source1: virt-install.rb Source2: virt-install.desktop # Upstream Patches +Patch1: 848123e6-fix-memory-stats-for-shutoff-VM.patch +Patch2: ebcb7c06-fix-exception-when-the-address-is-not-an-IP.patch +Patch3: c4d26d16-fix-VM-polling-on-old-libvirt.patch +Patch4: ac2be796-do-not-throw-exception-if-volume-or-pool-dont-exist.patch +Patch5: 88e18c86-fix-sending-net-removed-signal.patch +Patch6: fbdf574c-fix-shortcut-key-for-USB-redir-dev-type.patch +Patch7: 2c1e482b-fix--show-host-summary-error-windows-flooding.patch +Patch8: 4b5c836a-read-start-mode-from-inactive-conf-XML.patch +Patch9: 776c1d97-fix-changing-USB-device-model.patch +Patch10: bbc4f83b-enable-qemu_ga-for-sles-11-sp4-and-newer.patch +Patch11: f8af2e6b-verify-HYPER-V-support-after-customization.patch # SUSE Only Patch70: virtman-desktop.patch Patch71: virtman-kvm.patch @@ -155,6 +166,17 @@ 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 # SUSE Only %patch70 -p1 %patch71 -p1 diff --git a/virtman-add-s390x-arch-support.patch b/virtman-add-s390x-arch-support.patch index 1dc8bf66..f046c8a3 100644 --- a/virtman-add-s390x-arch-support.patch +++ b/virtman-add-s390x-arch-support.patch @@ -75,7 +75,7 @@ Index: virt-manager-1.2.0/virtinst/guest.py return self.add_device(VirtualGraphics(self.conn)) -@@ -948,7 +953,7 @@ class Guest(XMLBuilder): +@@ -960,7 +965,7 @@ class Guest(XMLBuilder): if self._hv_only_supports_virtio(): return True diff --git a/virtman-autoyast-support.patch b/virtman-autoyast-support.patch index 532dcb64..8844d423 100644 --- a/virtman-autoyast-support.patch +++ b/virtman-autoyast-support.patch @@ -1,9 +1,9 @@ Enhancement to switch the label from 'Kickstart' to 'Autoyast' when a suse distro is selected. -Index: virt-manager-1.1.0/virtManager/create.py +Index: virt-manager-1.2.0/virtManager/create.py =================================================================== ---- virt-manager-1.1.0.orig/virtManager/create.py -+++ virt-manager-1.1.0/virtManager/create.py +--- virt-manager-1.2.0.orig/virtManager/create.py ++++ virt-manager-1.2.0/virtManager/create.py @@ -1242,11 +1242,34 @@ class vmmCreate(vmmGObjectUI): self.populate_os_type_model() return @@ -51,7 +51,7 @@ Index: virt-manager-1.1.0/virtManager/create.py if extraargs: self.guest.installer.extraargs = extraargs -@@ -2053,6 +2079,7 @@ class vmmCreate(vmmGObjectUI): +@@ -2054,6 +2080,7 @@ class vmmCreate(vmmGObjectUI): dl = self.set_os_val(self.widget("install-os-type"), distro_type) vl = self.set_os_val(self.widget("install-os-version"), distro_var) self.set_distro_labels(dl, vl) @@ -59,10 +59,10 @@ Index: virt-manager-1.1.0/virtManager/create.py def check_detection(self, idx, forward): results = None -Index: virt-manager-1.1.0/ui/create.ui +Index: virt-manager-1.2.0/ui/create.ui =================================================================== ---- virt-manager-1.1.0.orig/ui/create.ui -+++ virt-manager-1.1.0/ui/create.ui +--- virt-manager-1.2.0.orig/ui/create.ui ++++ virt-manager-1.2.0/ui/create.ui @@ -843,7 +843,7 @@ bar 6 4 diff --git a/virtman-dont-allow-grub.xen-to-be-deleted.patch b/virtman-dont-allow-grub.xen-to-be-deleted.patch index 702abf22..20c580ac 100644 --- a/virtman-dont-allow-grub.xen-to-be-deleted.patch +++ b/virtman-dont-allow-grub.xen-to-be-deleted.patch @@ -1,11 +1,11 @@ Reference: bnc#885094 grub.xen is required to boot Xen PV VMs using BTRFS. It belongs to the grub2-x86_64-xen RPM and should never be deleted. -Index: virt-manager-1.1.0/virtManager/delete.py +Index: virt-manager-1.2.0/virtManager/delete.py =================================================================== ---- virt-manager-1.1.0.orig/virtManager/delete.py -+++ virt-manager-1.1.0/virtManager/delete.py -@@ -250,7 +250,7 @@ def populate_storage_list(storage_list, +--- virt-manager-1.2.0.orig/virtManager/delete.py ++++ virt-manager-1.2.0/virtManager/delete.py +@@ -254,7 +254,7 @@ def populate_storage_list(storage_list, diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False)) for target, path, ro, shared in diskdata: