diff --git a/2c1e482b-fix--show-host-summary-error-windows-flooding.patch b/2c1e482b-fix--show-host-summary-error-windows-flooding.patch deleted file mode 100644 index ed13082a..00000000 --- a/2c1e482b-fix--show-host-summary-error-windows-flooding.patch +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index cab478b0..00000000 --- a/4b5c836a-read-start-mode-from-inactive-conf-XML.patch +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index 69c5b994..00000000 --- a/776c1d97-fix-changing-USB-device-model.patch +++ /dev/null @@ -1,41 +0,0 @@ -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 deleted file mode 100644 index 05fbc458..00000000 --- a/848123e6-fix-memory-stats-for-shutoff-VM.patch +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index 22c973a5..00000000 --- a/88e18c86-fix-sending-net-removed-signal.patch +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 14c90ce0..00000000 --- a/ac2be796-do-not-throw-exception-if-volume-or-pool-dont-exist.patch +++ /dev/null @@ -1,51 +0,0 @@ -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 deleted file mode 100644 index f18a750f..00000000 --- a/bbc4f83b-enable-qemu_ga-for-sles-11-sp4-and-newer.patch +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 3563fc42..00000000 --- a/c4d26d16-fix-VM-polling-on-old-libvirt.patch +++ /dev/null @@ -1,20 +0,0 @@ -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 deleted file mode 100644 index eaa1332e..00000000 --- a/ebcb7c06-fix-exception-when-the-address-is-not-an-IP.patch +++ /dev/null @@ -1,34 +0,0 @@ -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 deleted file mode 100644 index dcdc2dd9..00000000 --- a/f8af2e6b-verify-HYPER-V-support-after-customization.patch +++ /dev/null @@ -1,51 +0,0 @@ -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 deleted file mode 100644 index 15f74695..00000000 --- a/fbdf574c-fix-shortcut-key-for-USB-redir-dev-type.patch +++ /dev/null @@ -1,25 +0,0 @@ -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-1.2.0.tar.bz2 b/virt-manager-1.2.0.tar.bz2 deleted file mode 100644 index 82663eee..00000000 --- a/virt-manager-1.2.0.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b2d9fb2a6efe454e0a7b73af6803cc45ff097eddc1d1bb8efb5bb36fe2efbbf0 -size 1350664 diff --git a/virt-manager-1.2.1.tar.bz2 b/virt-manager-1.2.1.tar.bz2 new file mode 100644 index 00000000..af2735df --- /dev/null +++ b/virt-manager-1.2.1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5677d96606ee3878891670d45bff6cb833def9436edbde7de8ff0529c967b80 +size 1357234 diff --git a/virt-manager.changes b/virt-manager.changes index 4190ee4c..0733bcd9 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,54 @@ +------------------------------------------------------------------- +Mon Jun 8 06:07:48 MDT 2015 - carnold@suse.com + +- Update to virt-manager 1.2.0 + virt-manager-1.2.1.tar.bz2 + * Bugfix release + * Fix connecting to older libvirt versions (Michał Kępień) + * Fix connecting to VM console with non-IP hostname (Giuseppe Scrivano) + * Fix addhardware/create wizard errors when a nodedev disappears + * Fix adding a second cdrom via customize dialog +- Dropped tarball and patches + virt-manager-1.2.0.tar.bz2 + 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 + 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 + 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 + 9ea3fcd1-add-classes-for-SUSE-distros.patch + 23f262ec-fetch-URL-media-from-content-file-for-suse-distros.patch + 5618fa4c-add-support-for-detecting-os-variants-of-suse-distros.patch + 9b99eff7-add-opensuse-13.x-tests.patch + f5a13510-clone-dont-use-separator-when-disk-under-root.patch + +------------------------------------------------------------------- +Fri Jun 5 14:44:31 MDT 2015 - carnold@suse.com + +- Upstream support for suse distros + 9ea3fcd1-add-classes-for-SUSE-distros.patch + 23f262ec-fetch-URL-media-from-content-file-for-suse-distros.patch + 5618fa4c-add-support-for-detecting-os-variants-of-suse-distros.patch + 9b99eff7-add-opensuse-13.x-tests.patch +- Drop virtinst-detect-suse-distros.patch +- Add detection for Open Enterprise Server + virtinst-detect-oes-distros.patch +- Upstream bug fix + f5a13510-clone-dont-use-separator-when-disk-under-root.patch + +------------------------------------------------------------------- +Tue Jun 2 14:08:51 MDT 2015 - carnold@suse.com + +- bsc#933242 - virt-manager: summary=Error launching manager: list + index out of range + virtman-show-suse-install-repos.patch +- Add depedency on typelib(Libosinfo) + ------------------------------------------------------------------- Wed May 20 13:14:27 MDT 2015 - carnold@suse.com diff --git a/virt-manager.spec b/virt-manager.spec index 5ab2371b..3434c49c 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -23,11 +23,11 @@ %define libvirt_xen_packages "" %define preferred_distros "sles12,opensuse13.2" %define kvm_packages "" -%define _version 1.2.0 +%define _version 1.2.1 %define _release 1 Name: virt-manager -Version: 1.2.0 +Version: 1.2.1 Release: 0 Summary: Virtual Machine Manager License: GPL-2.0+ @@ -37,17 +37,6 @@ 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 @@ -70,7 +59,7 @@ Patch106: virtman-add-s390x-arch-support.patch Patch107: virtman-add-connect-default.patch Patch120: virtinst-storage-ocfs2.patch Patch121: virtinst-default-xen-to-qcow2-format.patch -Patch123: virtinst-detect-suse-distros.patch +Patch123: virtinst-detect-oes-distros.patch Patch124: virtinst-modify-gui-defaults.patch Patch125: virtinst-vol-default-nocow.patch Patch126: virtinst-detect-windows-media.patch @@ -99,6 +88,7 @@ Requires: libosinfo >= 0.2.10 Requires: python-gconf Requires: virt-manager-common = %{verrel} Requires: vm-install >= 0.5.6 +Requires: typelib(Libosinfo) # Libvirt-glib Requires: typelib(LibvirtGLib) @@ -166,17 +156,6 @@ 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/virtinst-add-default-rng-device.patch b/virtinst-add-default-rng-device.patch index b9ee1141..f1b8a3bc 100644 --- a/virtinst-add-default-rng-device.patch +++ b/virtinst-add-default-rng-device.patch @@ -1,10 +1,10 @@ References: bnc#885308 Enhancement to add a virtio RNG device to non windows VMs. -Index: virt-manager-1.1.0/virtinst/guest.py +Index: virt-manager-1.2.1/virtinst/guest.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/guest.py -+++ virt-manager-1.1.0/virtinst/guest.py -@@ -53,6 +53,7 @@ from .pm import PM +--- virt-manager-1.2.1.orig/virtinst/guest.py ++++ virt-manager-1.2.1/virtinst/guest.py +@@ -54,6 +54,7 @@ from .pm import PM from .seclabel import Seclabel from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty from .devicedisk import VirtualDisk @@ -12,7 +12,7 @@ Index: virt-manager-1.1.0/virtinst/guest.py class Guest(XMLBuilder): -@@ -681,6 +682,15 @@ class Guest(XMLBuilder): +@@ -675,6 +676,15 @@ class Guest(XMLBuilder): return self.add_device(VirtualGraphics(self.conn)) @@ -28,11 +28,11 @@ Index: virt-manager-1.1.0/virtinst/guest.py def add_default_devices(self): self.add_default_graphics() self.add_default_video_device() -@@ -688,6 +698,7 @@ class Guest(XMLBuilder): +@@ -682,6 +692,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): + def _add_install_cdrom(self): + if self._install_cdrom_device: diff --git a/virtinst-detect-oes-distros.patch b/virtinst-detect-oes-distros.patch new file mode 100644 index 00000000..296fc903 --- /dev/null +++ b/virtinst-detect-oes-distros.patch @@ -0,0 +1,17 @@ +Enhancement to correctly detect Open Enterprise Server media is +selected as the installation source. +Index: virt-manager-1.2.0/virtinst/urlfetcher.py +=================================================================== +--- virt-manager-1.2.0.orig/virtinst/urlfetcher.py ++++ virt-manager-1.2.0/virtinst/urlfetcher.py +@@ -383,6 +383,10 @@ def _distroFromSUSEContent(fetcher, arch + dclass = SLEDDistro + if distro_version is None: + distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]] ++ elif re.match(".*Open Enterprise Server*", distribution[1]): ++ dclass = SLESDistro ++ if distro_version is None: ++ distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]] + elif re.match(".*openSUSE.*", distribution[1]): + dclass = OpensuseDistro + if distro_version is None: diff --git a/virtinst-detect-suse-distros.patch b/virtinst-detect-suse-distros.patch deleted file mode 100644 index 1187e608..00000000 --- a/virtinst-detect-suse-distros.patch +++ /dev/null @@ -1,253 +0,0 @@ -Enhancement to correctly detect SUSE media when such media is -selected as the installation source. -Index: virt-manager-1.1.0/virtinst/urlfetcher.py -=================================================================== ---- virt-manager-1.1.0.orig/virtinst/urlfetcher.py -+++ virt-manager-1.1.0/virtinst/urlfetcher.py -@@ -318,6 +318,94 @@ def _distroFromTreeinfo(fetcher, arch, v - - return ob - -+def _distroFromContent(fetcher, arch, vmtype=None): -+ # Parse content file for the 'LABEL' field containing the distribution name -+ # None if no content, GenericDistro if unknown label type. -+ if not fetcher.hasFile("content"): -+ return None -+ -+ distribution = None -+ distro_version = None -+ distro_summary = None -+ distro_distro = None -+ distro_arch = None -+ filename = fetcher.acquireFile("content") -+ cbuf = f = None -+ try: -+ f = open(filename, "r") -+ cbuf = f.read() -+ except: -+ if f: -+ f.close() -+ os.unlink(filename) -+ return None -+ f.close() -+ os.unlink(filename) -+ -+ lines = cbuf.splitlines()[1:] -+ for line in lines: -+ if line.startswith("LABEL "): -+ distribution = line.split(' ', 1) -+ elif line.startswith("DISTRO "): -+ distro_distro = line.rsplit(',', 1) -+ elif line.startswith("VERSION "): -+ distro_version = line.split(' ', 1) -+ elif line.startswith("SUMMARY "): -+ distro_summary = line.split(' ', 1) -+ elif line.startswith("BASEARCHS "): -+ distro_arch = line.split(' ', 1) -+ elif line.startswith("DEFAULTBASE "): -+ distro_arch = line.split(' ', 1) -+ elif line.startswith("REPOID "): -+ distro_arch = line.rsplit('/', 1) -+ if distribution and distro_version and distro_arch: -+ break -+ -+ if not distribution: -+ if distro_summary: -+ distribution = distro_summary -+ elif distro_distro: -+ distribution = distro_distro -+ if distro_arch: -+ arch = distro_arch[1].strip() -+ else: -+ if cbuf.find("x86_64") != -1: -+ arch = "x86_64" -+ elif cbuf.find("i586") != -1: -+ arch = "i586" -+ elif cbuf.find("s390x") != -1: -+ arch = "s390x" -+ -+ dclass = GenericDistro -+ if distribution: -+ if re.match(".*SUSE Linux Enterprise Server*", distribution[1]) or \ -+ re.match(".*SUSE SLES*", distribution[1]): -+ dclass = SLESDistro -+ if distro_version is None: -+ distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]] -+ elif re.match(".*SUSE Linux Enterprise Desktop*", distribution[1]): -+ dclass = SLEDDistro -+ if distro_version is None: -+ distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]] -+ elif re.match(".*openSUSE.*", distribution[1]): -+ dclass = OpensuseDistro -+ if distro_version is None: -+ distro_version = ['VERSION', distribution[0].strip().rsplit(':')[4]] -+ # For tumbleweed we only have an 8 character date string so default to 13.2 -+ if distro_version[1] and len(distro_version[1]) == 8: -+ distro_version = ['VERSION', '13.2'] -+ -+ if distro_version is None: -+ return None -+ -+ ob = dclass(fetcher, arch, vmtype) -+ if dclass != GenericDistro: -+ ob.content = distro_version -+ -+ # Explictly call this, so we populate os_type/variant info -+ ob.isValidStore() -+ -+ return ob - - def getDistroStore(guest, fetcher): - stores = [] -@@ -334,6 +422,10 @@ def getDistroStore(guest, fetcher): - if dist: - return dist - -+ dist = _distroFromContent(fetcher, arch, _type) -+ if dist: -+ return dist -+ - stores = _allstores[:] - - # If user manually specified an os_distro, bump it's URL class -@@ -375,6 +467,23 @@ def getDistroStore(guest, fetcher): - (fetcher.location, extramsg))) - - -+def detectMediaDistro(guest, location): -+ """ -+ Attempt to detect the os type + variant for the passed location -+ """ -+ import urlgrabber -+ meter = urlgrabber.progress.BaseMeter() -+ scratchdir = "/var/tmp" -+ fetcher = fetcherForURI(location, scratchdir, meter) -+ -+ try: -+ fetcher.prepareLocation() -+ store = getDistroStore(guest, fetcher) -+ return store.get_osdict_info() -+ finally: -+ fetcher.cleanupLocation() -+ -+ - ################## - # Distro classes # - ################## -@@ -832,29 +941,64 @@ class SLDistro(RHELDistro): - - class SuseDistro(Distro): - name = "SUSE" -- urldistro = "suse" -- os_variant = "linux" - - _boot_iso_paths = ["boot/boot.iso"] - - def __init__(self, *args, **kwargs): -+ self.content = None - Distro.__init__(self, *args, **kwargs) - if re.match(r'i[4-9]86', self.arch): - self.arch = 'i386' - -- # Tested with Opensuse >= 10.2, 11, and sles 10 -- self._hvm_kernel_paths = [("boot/%s/loader/linux" % self.arch, -- "boot/%s/loader/initrd" % self.arch)] -- -- # Matches Opensuse > 10.2 and sles 10 -- self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch, -- "boot/%s/initrd-xen" % self.arch)] -+ oldkern = "linux" -+ oldinit = "initrd" -+ if self.arch == "x86_64": -+ oldkern += "64" -+ oldinit += "64" -+ -+ if self.arch == "s390x" or \ -+ self.arch == "ppc64" or self.arch == "ppc64le": -+ -+ self._hvm_kernel_paths = [ ("boot/%s/linux" % self.arch, -+ "boot/%s/initrd" % self.arch) ] -+ # No Xen on s390x and ppc -+ self._xen_kernel_paths = [] -+ else: -+ # Tested with Opensuse >= 10.2, 11, and sles 10 -+ self._hvm_kernel_paths = [ ("boot/%s/loader/linux" % self.arch, -+ "boot/%s/loader/initrd" % self.arch) ] -+ # Tested with Opensuse 10.0 -+ self._hvm_kernel_paths.append(("boot/loader/%s" % oldkern, -+ "boot/loader/%s" % oldinit)) -+ -+ # Matches Opensuse > 10.2 and sles 10 -+ self._xen_kernel_paths = [ ("boot/%s/vmlinuz-xen" % self.arch, -+ "boot/%s/initrd-xen" % self.arch) ] - - def isValidStore(self): -+ # self.content is the VERSION line from the contents file -+ if self.content is None or self.content[1] is None: -+ return False -+ distro_version = self.content[1].strip() -+ version = distro_version.split('.', 1)[0].strip() -+ if int(version) >= 10: -+ if self.os_variant.startswith("sles"): -+ self.os_variant += version -+ else: -+ self.os_variant += distro_version -+ else: -+ self.os_variant += "9" -+ - if not self.fetcher.hasFile("directory.yast"): - return False - - self.os_variant = self._detect_osdict_from_url() -+ -+ # Reset kernel name for sle11 source on s390x -+ if self.arch == "s390x": -+ if self.os_variant == "sles11" or self.os_variant == "sled11": -+ self._hvm_kernel_paths = [ ("boot/%s/vmrdr.ikr" % self.arch, -+ "boot/%s/initrd" % self.arch) ] - return True - - def _get_method_arg(self): -@@ -874,6 +1018,27 @@ class SuseDistro(Distro): - return osobj.name - return self.os_variant - -+class SLESDistro(SuseDistro): -+ -+ urldistro = "sles" -+ os_variant = "sles" -+ -+class SLEDDistro(SuseDistro): -+ -+ urldistro = "sled" -+ os_variant = "sled" -+ -+# Suse image store is harder - we fetch the kernel RPM and a helper -+# RPM and then munge bits together to generate a initrd -+class OpensuseDistro(SuseDistro): -+ -+ urldistro = "opensuse" -+ os_variant = "opensuse" -+ -+class OESDistro(SuseDistro): -+ -+ urldistro = "oes" -+ os_variant = "oes" - - class DebianDistro(Distro): - # ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/ -Index: virt-manager-1.1.0/virtinst/distroinstaller.py -=================================================================== ---- virt-manager-1.1.0.orig/virtinst/distroinstaller.py -+++ virt-manager-1.1.0/virtinst/distroinstaller.py -@@ -505,6 +505,10 @@ class DistroInstaller(Installer): - "remote connection.") - else: - distro = OSDB.lookup_os_by_media(self.location) -+ # libosinfo relies on treeinfo to detect media which suse -+ # doesn't have. Fallback to url method for detecting ISO media. -+ if distro is None: -+ distro = urlfetcher.detectMediaDistro(guest, self.location) - except: - logging.debug("Error attempting to detect distro.", exc_info=True) - diff --git a/virtinst-detect-windows-media.patch b/virtinst-detect-windows-media.patch index 8688b179..363e2f00 100644 --- a/virtinst-detect-windows-media.patch +++ b/virtinst-detect-windows-media.patch @@ -1,14 +1,14 @@ Enhancement to detect windows media. It is based solely upon finding an autorun.inf file in the root of the installation source. It only assumes windows, not the specific version of windows. -Index: virt-manager-1.1.0/virtinst/urlfetcher.py +Index: virt-manager-1.2.0/virtinst/urlfetcher.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/urlfetcher.py -+++ virt-manager-1.1.0/virtinst/urlfetcher.py -@@ -407,6 +407,24 @@ def _distroFromContent(fetcher, arch, vm - +--- virt-manager-1.2.0.orig/virtinst/urlfetcher.py ++++ virt-manager-1.2.0/virtinst/urlfetcher.py +@@ -408,6 +408,24 @@ def _distroFromSUSEContent(fetcher, arch return ob + +def _distroFromAutorun(fetcher, arch, vmtype=None): + # Just look for autorun.inf (also in uppercase) + # If present media is likely from a windows iso. @@ -30,7 +30,7 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py def getDistroStore(guest, fetcher): stores = [] logging.debug("Finding distro store for location=%s", fetcher.location) -@@ -426,6 +444,10 @@ def getDistroStore(guest, fetcher): +@@ -427,6 +445,10 @@ def getDistroStore(guest, fetcher): if dist: return dist @@ -41,7 +41,7 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py stores = _allstores[:] # If user manually specified an os_distro, bump it's URL class -@@ -1204,6 +1226,13 @@ class ALTLinuxDistro(Distro): +@@ -1175,6 +1197,13 @@ class ALTLinuxDistro(Distro): logging.debug("Regex didn't match, not a %s distro", self.name) return False diff --git a/virtinst-nfs-install-sanitize.patch b/virtinst-nfs-install-sanitize.patch index 8029f417..3d03a293 100644 --- a/virtinst-nfs-install-sanitize.patch +++ b/virtinst-nfs-install-sanitize.patch @@ -5,11 +5,11 @@ A fix for accessing nfs mounted media. A comment in the code states, and carry the latter form around internally" We need the RFC version to work correctly whereas redhat's anaconda needs their own modified version. -Index: virt-manager-1.1.0/virtinst/util.py +Index: virt-manager-1.2.0/virtinst/util.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/util.py -+++ virt-manager-1.1.0/virtinst/util.py -@@ -557,3 +557,22 @@ def getInstallRepos(enabled_sources_only +--- virt-manager-1.2.0.orig/virtinst/util.py ++++ virt-manager-1.2.0/virtinst/util.py +@@ -559,3 +559,22 @@ def getInstallRepos(enabled_sources_only zypper_output.insert(0, dom0_inst_source) return (index_dom0, zypper_output) @@ -32,10 +32,10 @@ Index: virt-manager-1.1.0/virtinst/util.py + + return url + -Index: virt-manager-1.1.0/virtinst/distroinstaller.py +Index: virt-manager-1.2.0/virtinst/distroinstaller.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/distroinstaller.py -+++ virt-manager-1.1.0/virtinst/distroinstaller.py +--- virt-manager-1.2.0.orig/virtinst/distroinstaller.py ++++ virt-manager-1.2.0/virtinst/distroinstaller.py @@ -51,6 +51,8 @@ def _sanitize_url(url): """ Do nothing for http or ftp, but make sure nfs is in the expected format @@ -45,10 +45,10 @@ Index: virt-manager-1.1.0/virtinst/distroinstaller.py if url.startswith("nfs://"): # Convert RFC compliant NFS nfs://server/path/to/distro # to what mount/anaconda expect nfs:server:/path/to/distro -Index: virt-manager-1.1.0/virtinst/urlfetcher.py +Index: virt-manager-1.2.0/virtinst/urlfetcher.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/urlfetcher.py -+++ virt-manager-1.1.0/virtinst/urlfetcher.py +--- virt-manager-1.2.0.orig/virtinst/urlfetcher.py ++++ virt-manager-1.2.0/virtinst/urlfetcher.py @@ -33,6 +33,7 @@ import urlparse import urlgrabber.grabber as grabber diff --git a/virtinst-pvgrub2-bootloader.patch b/virtinst-pvgrub2-bootloader.patch index c727cdbf..e9af599c 100644 --- a/virtinst-pvgrub2-bootloader.patch +++ b/virtinst-pvgrub2-bootloader.patch @@ -2,11 +2,11 @@ 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 newer suse distros like SLE12 and openSUSE 13.2. -Index: virt-manager-1.1.0/virtinst/guest.py +Index: virt-manager-1.2.1/virtinst/guest.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/guest.py -+++ virt-manager-1.1.0/virtinst/guest.py -@@ -364,8 +364,18 @@ class Guest(XMLBuilder): +--- virt-manager-1.2.1.orig/virtinst/guest.py ++++ virt-manager-1.2.1/virtinst/guest.py +@@ -358,8 +358,18 @@ class Guest(XMLBuilder): if (not install and self.os.is_xenpv() and not self.os.kernel): @@ -27,20 +27,20 @@ Index: virt-manager-1.1.0/virtinst/guest.py return self.get_xml_config() -Index: virt-manager-1.1.0/virtinst/installer.py +Index: virt-manager-1.2.1/virtinst/installer.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/installer.py -+++ virt-manager-1.1.0/virtinst/installer.py -@@ -112,7 +112,7 @@ class Installer(object): - dev.validate() - return dev +--- virt-manager-1.2.1.orig/virtinst/installer.py ++++ virt-manager-1.2.1/virtinst/installer.py +@@ -99,7 +99,7 @@ class Installer(object): + break + return bootorder - def alter_bootconfig(self, guest, isinstall): + def alter_bootconfig(self, guest, isinstall, force_update=False): """ Generate the portion of the guest xml that determines boot devices and parameters. (typically the block) -@@ -123,7 +123,7 @@ class Installer(object): +@@ -110,7 +110,7 @@ class Installer(object): 'post-install' phase. @type isinstall: C{bool} """ diff --git a/virtinst-set-cache-mode-unsafe-for-install.patch b/virtinst-set-cache-mode-unsafe-for-install.patch index 9676b2e0..f2c1d7ca 100644 --- a/virtinst-set-cache-mode-unsafe-for-install.patch +++ b/virtinst-set-cache-mode-unsafe-for-install.patch @@ -1,10 +1,10 @@ Set cache mode for target installation disk to unsafe for better performance. -Index: virt-manager-1.1.0/virtinst/guest.py +Index: virt-manager-1.2.1/virtinst/guest.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/guest.py -+++ virt-manager-1.1.0/virtinst/guest.py -@@ -52,6 +52,7 @@ from .osxml import OSXML +--- virt-manager-1.2.1.orig/virtinst/guest.py ++++ virt-manager-1.2.1/virtinst/guest.py +@@ -53,6 +53,7 @@ from .osxml import OSXML from .pm import PM from .seclabel import Seclabel from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty @@ -12,9 +12,9 @@ Index: virt-manager-1.1.0/virtinst/guest.py class Guest(XMLBuilder): -@@ -363,6 +364,14 @@ class Guest(XMLBuilder): - dev.set_defaults(self) - self._set_disk_defaults(disks=self._install_devices) +@@ -357,6 +358,14 @@ class Guest(XMLBuilder): + + self._set_osxml_defaults() + # At install time set the target disk to 'unsafe' for + # better performance if the target is not a block device @@ -27,7 +27,7 @@ Index: virt-manager-1.1.0/virtinst/guest.py self.bootloader = None if (not install and self.os.is_xenpv() and -@@ -380,7 +389,10 @@ class Guest(XMLBuilder): +@@ -374,7 +383,10 @@ class Guest(XMLBuilder): self.bootloader = "/usr/bin/pygrub" self.os.clear() diff --git a/virtinst-set-qemu-emulator.patch b/virtinst-set-qemu-emulator.patch index fd366adc..2dbc96b1 100644 --- a/virtinst-set-qemu-emulator.patch +++ b/virtinst-set-qemu-emulator.patch @@ -1,8 +1,8 @@ Use the correct qemu emulator based on the architecture. -Index: virt-manager-1.2.0/virtinst/guest.py +Index: virt-manager-1.2.1/virtinst/guest.py =================================================================== ---- virt-manager-1.2.0.orig/virtinst/guest.py -+++ virt-manager-1.2.0/virtinst/guest.py +--- virt-manager-1.2.1.orig/virtinst/guest.py ++++ virt-manager-1.2.1/virtinst/guest.py @@ -19,6 +19,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA. @@ -11,7 +11,7 @@ Index: virt-manager-1.2.0/virtinst/guest.py import logging import urlgrabber.progress as progress -@@ -815,14 +816,28 @@ class Guest(XMLBuilder): +@@ -811,14 +812,28 @@ class Guest(XMLBuilder): self.emulator = None return diff --git a/virtinst-storage-ocfs2.patch b/virtinst-storage-ocfs2.patch index c3051229..7d3e2e03 100644 --- a/virtinst-storage-ocfs2.patch +++ b/virtinst-storage-ocfs2.patch @@ -1,9 +1,9 @@ Enhancement to add ocfs2 as a supported FS type -Index: virt-manager-1.2.0/virtinst/storage.py +Index: virt-manager-1.2.1/virtinst/storage.py =================================================================== ---- virt-manager-1.2.0.orig/virtinst/storage.py -+++ virt-manager-1.2.0/virtinst/storage.py -@@ -436,7 +436,7 @@ class StoragePool(_StorageObject): +--- virt-manager-1.2.1.orig/virtinst/storage.py ++++ virt-manager-1.2.1/virtinst/storage.py +@@ -447,7 +447,7 @@ class StoragePool(_StorageObject): def list_formats(self): if self.type == self.TYPE_FS: return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf", diff --git a/virtinst-vol-default-nocow.patch b/virtinst-vol-default-nocow.patch index 3ee93f28..8e9ac7fa 100644 --- a/virtinst-vol-default-nocow.patch +++ b/virtinst-vol-default-nocow.patch @@ -4,11 +4,11 @@ issue on btrfs. Signed-off-by: Chunyan Liu -Index: virt-manager-1.2.0/virtinst/storage.py +Index: virt-manager-1.2.1/virtinst/storage.py =================================================================== ---- virt-manager-1.2.0.orig/virtinst/storage.py -+++ virt-manager-1.2.0/virtinst/storage.py -@@ -705,6 +705,11 @@ class StorageVolume(_StorageObject): +--- virt-manager-1.2.1.orig/virtinst/storage.py ++++ virt-manager-1.2.1/virtinst/storage.py +@@ -716,6 +716,11 @@ class StorageVolume(_StorageObject): lazy_refcounts = XMLProperty("./target/features/lazy_refcounts", is_bool=True, default_cb=_lazy_refcounts_default_cb) diff --git a/virtman-add-s390x-arch-support.patch b/virtman-add-s390x-arch-support.patch index f046c8a3..bf83c311 100644 --- a/virtman-add-s390x-arch-support.patch +++ b/virtman-add-s390x-arch-support.patch @@ -1,9 +1,9 @@ Reference: bnc#869024 Add s390x support -Index: virt-manager-1.2.0/virtManager/create.py +Index: virt-manager-1.2.1/virtManager/create.py =================================================================== ---- virt-manager-1.2.0.orig/virtManager/create.py -+++ virt-manager-1.2.0/virtManager/create.py +--- virt-manager-1.2.1.orig/virtManager/create.py ++++ virt-manager-1.2.1/virtManager/create.py @@ -417,7 +417,7 @@ class vmmCreate(vmmGObjectUI): can_remote_url = self.conn.get_backend().support_remote_url_install() @@ -22,10 +22,10 @@ Index: virt-manager-1.2.0/virtManager/create.py if self.conn.caps.host.cpu.arch not in prios: prios = [] else: -Index: virt-manager-1.2.0/virtinst/osxml.py +Index: virt-manager-1.2.1/virtinst/osxml.py =================================================================== ---- virt-manager-1.2.0.orig/virtinst/osxml.py -+++ virt-manager-1.2.0/virtinst/osxml.py +--- virt-manager-1.2.1.orig/virtinst/osxml.py ++++ virt-manager-1.2.1/virtinst/osxml.py @@ -70,6 +70,8 @@ class OSXML(XMLBuilder): return self.arch == "ppc64" or self.arch == "ppc64le" def is_pseries(self): @@ -35,11 +35,11 @@ Index: virt-manager-1.2.0/virtinst/osxml.py _XML_ROOT_NAME = "os" _XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type", -Index: virt-manager-1.2.0/virtinst/guest.py +Index: virt-manager-1.2.1/virtinst/guest.py =================================================================== ---- virt-manager-1.2.0.orig/virtinst/guest.py -+++ virt-manager-1.2.0/virtinst/guest.py -@@ -119,7 +119,10 @@ class Guest(XMLBuilder): +--- virt-manager-1.2.1.orig/virtinst/guest.py ++++ virt-manager-1.2.1/virtinst/guest.py +@@ -120,7 +120,10 @@ class Guest(XMLBuilder): self.skip_default_channel = False self.skip_default_sound = False self.skip_default_usbredir = False @@ -51,7 +51,7 @@ Index: virt-manager-1.2.0/virtinst/guest.py self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY self.__os_object = None -@@ -611,11 +614,13 @@ class Guest(XMLBuilder): +@@ -605,11 +608,13 @@ class Guest(XMLBuilder): self.conn.check_support( self.conn.SUPPORT_CONN_VIRTIO_CONSOLE)): dev.target_type = "virtio" @@ -66,7 +66,7 @@ Index: virt-manager-1.2.0/virtinst/guest.py return if self.get_devices("video"): return -@@ -660,7 +665,7 @@ class Guest(XMLBuilder): +@@ -654,7 +659,7 @@ class Guest(XMLBuilder): return if self.os.is_container(): return @@ -75,7 +75,7 @@ Index: virt-manager-1.2.0/virtinst/guest.py return self.add_device(VirtualGraphics(self.conn)) -@@ -960,7 +965,7 @@ class Guest(XMLBuilder): +@@ -956,7 +961,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 8844d423..9fb57f8f 100644 --- a/virtman-autoyast-support.patch +++ b/virtman-autoyast-support.patch @@ -1,10 +1,10 @@ Enhancement to switch the label from 'Kickstart' to 'Autoyast' when a suse distro is selected. -Index: virt-manager-1.2.0/virtManager/create.py +Index: virt-manager-1.2.1/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): +--- virt-manager-1.2.1.orig/virtManager/create.py ++++ virt-manager-1.2.1/virtManager/create.py +@@ -1256,11 +1256,34 @@ class vmmCreate(vmmGObjectUI): self.populate_os_type_model() return @@ -30,7 +30,7 @@ Index: virt-manager-1.2.0/virtManager/create.py + label.show() + def change_os_version(self, box): - show_all = uiutil.get_list_selection(box, 3) + show_all = uiutil.get_list_selection(box, column=3) if not show_all: return @@ -39,7 +39,7 @@ Index: virt-manager-1.2.0/virtManager/create.py # 'show all OS' was clicked # Get previous type to reselect it later type_row = self._selected_os_row() -@@ -1611,7 +1634,10 @@ class vmmCreate(vmmGObjectUI): +@@ -1625,7 +1648,10 @@ class vmmCreate(vmmGObjectUI): if extra: extraargs += extra if ks: @@ -51,7 +51,7 @@ Index: virt-manager-1.2.0/virtManager/create.py if extraargs: self.guest.installer.extraargs = extraargs -@@ -2054,6 +2080,7 @@ class vmmCreate(vmmGObjectUI): +@@ -2068,6 +2094,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.2.0/virtManager/create.py def check_detection(self, idx, forward): results = None -Index: virt-manager-1.2.0/ui/create.ui +Index: virt-manager-1.2.1/ui/create.ui =================================================================== ---- virt-manager-1.2.0.orig/ui/create.ui -+++ virt-manager-1.2.0/ui/create.ui +--- virt-manager-1.2.1.orig/ui/create.ui ++++ virt-manager-1.2.1/ui/create.ui @@ -843,7 +843,7 @@ bar 6 4 diff --git a/virtman-default-guest-from-host-os.patch b/virtman-default-guest-from-host-os.patch index c14268a2..bcd18650 100644 --- a/virtman-default-guest-from-host-os.patch +++ b/virtman-default-guest-from-host-os.patch @@ -1,9 +1,9 @@ Enhancement to default to the host os version when creating a VM and media detection of the install source is turned off. -Index: virt-manager-1.1.0/virtManager/create.py +Index: virt-manager-1.2.1/virtManager/create.py =================================================================== ---- virt-manager-1.1.0.orig/virtManager/create.py -+++ virt-manager-1.1.0/virtManager/create.py +--- virt-manager-1.2.1.orig/virtManager/create.py ++++ virt-manager-1.2.1/virtManager/create.py @@ -21,6 +21,8 @@ import logging import threading @@ -13,7 +13,7 @@ Index: virt-manager-1.1.0/virtManager/create.py from gi.repository import GObject from gi.repository import Gtk -@@ -836,7 +838,7 @@ class vmmCreate(vmmGObjectUI): +@@ -842,7 +844,7 @@ class vmmCreate(vmmGObjectUI): preferred = self.config.preferred_distros variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred) supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred, @@ -22,7 +22,7 @@ Index: virt-manager-1.1.0/virtManager/create.py for v in variants: supported = v in supportl or v.name == "generic" -@@ -1158,6 +1160,53 @@ class vmmCreate(vmmGObjectUI): +@@ -1173,6 +1175,53 @@ class vmmCreate(vmmGObjectUI): return self.start_detection(forward=forward) @@ -76,7 +76,7 @@ Index: virt-manager-1.1.0/virtManager/create.py def toggle_detect_os(self, src): dodetect = src.get_active() -@@ -1170,6 +1219,8 @@ class vmmCreate(vmmGObjectUI): +@@ -1185,6 +1234,8 @@ class vmmCreate(vmmGObjectUI): self.widget("install-os-version-entry").set_text("") self.mediaDetected = False self.detect_media_os() @@ -84,4 +84,4 @@ Index: virt-manager-1.1.0/virtManager/create.py + self.detect_host_os() def _selected_os_row(self): - return uiutil.get_list_selection( + return uiutil.get_list_selected_row(self.widget("install-os-type")) diff --git a/virtman-default-to-xen-pv.patch b/virtman-default-to-xen-pv.patch index 715c74b1..3957a333 100644 --- a/virtman-default-to-xen-pv.patch +++ b/virtman-default-to-xen-pv.patch @@ -1,9 +1,9 @@ Enhancement to default to PV instead of HVM on Xen host. -Index: virt-manager-1.1.0/virtManager/create.py +Index: virt-manager-1.2.1/virtManager/create.py =================================================================== ---- virt-manager-1.1.0.orig/virtManager/create.py -+++ virt-manager-1.1.0/virtManager/create.py -@@ -860,7 +860,12 @@ class vmmCreate(vmmGObjectUI): +--- virt-manager-1.2.1.orig/virtManager/create.py ++++ virt-manager-1.2.1/virtManager/create.py +@@ -877,7 +877,12 @@ class vmmCreate(vmmGObjectUI): if gtype is None: # If none specified, prefer HVM so install options aren't limited # with a default PV choice. diff --git a/virtman-dont-allow-grub.xen-to-be-deleted.patch b/virtman-dont-allow-grub.xen-to-be-deleted.patch index 20c580ac..64cb4bf8 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.2.0/virtManager/delete.py +Index: virt-manager-1.2.1/virtManager/delete.py =================================================================== ---- 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, +--- virt-manager-1.2.1.orig/virtManager/delete.py ++++ virt-manager-1.2.1/virtManager/delete.py +@@ -253,7 +253,7 @@ def populate_storage_list(storage_list, diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False)) for target, path, ro, shared in diskdata: diff --git a/virtman-eepro100.patch b/virtman-eepro100.patch index 8ceec5d0..7498c8f3 100644 --- a/virtman-eepro100.patch +++ b/virtman-eepro100.patch @@ -1,9 +1,9 @@ Enhancement to add the eepro100 NIC for KVM -Index: virt-manager-1.2.0/virtManager/addhardware.py +Index: virt-manager-1.2.1/virtManager/addhardware.py =================================================================== ---- virt-manager-1.2.0.orig/virtManager/addhardware.py -+++ virt-manager-1.2.0/virtManager/addhardware.py -@@ -582,6 +582,7 @@ class vmmAddHardware(vmmGObjectUI): +--- virt-manager-1.2.1.orig/virtManager/addhardware.py ++++ virt-manager-1.2.1/virtManager/addhardware.py +@@ -571,6 +571,7 @@ class vmmAddHardware(vmmGObjectUI): if vm.is_hvm(): mod_list = [] if vm.get_hv_type() in ["kvm", "qemu", "test"]: diff --git a/virtman-increase-setKeepAlive-count.patch b/virtman-increase-setKeepAlive-count.patch index 0ce3787c..1be13a83 100644 --- a/virtman-increase-setKeepAlive-count.patch +++ b/virtman-increase-setKeepAlive-count.patch @@ -2,11 +2,11 @@ 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-1.1.0/virtManager/connection.py +Index: virt-manager-1.2.1/virtManager/connection.py =================================================================== ---- virt-manager-1.1.0.orig/virtManager/connection.py -+++ virt-manager-1.1.0/virtManager/connection.py -@@ -903,7 +903,7 @@ class vmmConnection(vmmGObject): +--- virt-manager-1.2.1.orig/virtManager/connection.py ++++ virt-manager-1.2.1/virtManager/connection.py +@@ -904,7 +904,7 @@ class vmmConnection(vmmGObject): self.caps.get_cpu_values("x86_64") try: diff --git a/virtman-prevent-double-click-starting-vm-twice.patch b/virtman-prevent-double-click-starting-vm-twice.patch index c2647014..df9c8ffb 100644 --- a/virtman-prevent-double-click-starting-vm-twice.patch +++ b/virtman-prevent-double-click-starting-vm-twice.patch @@ -3,11 +3,11 @@ When the 'Power on virtual machine' button is double clicked, virt-manager issues two start commands to start the VM which results in a failure. There is code elsewhere to desensitize the button but this patch does it earlier. -Index: virt-manager-1.2.0/virtManager/details.py +Index: virt-manager-1.2.1/virtManager/details.py =================================================================== ---- virt-manager-1.2.0.orig/virtManager/details.py -+++ virt-manager-1.2.0/virtManager/details.py -@@ -1471,6 +1471,9 @@ class vmmDetails(vmmGObjectUI): +--- virt-manager-1.2.1.orig/virtManager/details.py ++++ virt-manager-1.2.1/virtManager/details.py +@@ -1465,6 +1465,9 @@ class vmmDetails(vmmGObjectUI): self.widget("details-menu-usb-redirection").set_sensitive(can_usb) def control_vm_run(self, src_ignore): diff --git a/virtman-show-suse-install-repos.patch b/virtman-show-suse-install-repos.patch index edcfb20c..0b2d4610 100644 --- a/virtman-show-suse-install-repos.patch +++ b/virtman-show-suse-install-repos.patch @@ -2,10 +2,10 @@ Enhancement that gets the hosts installation location from install.inf and also collects the repos provided by zypper. These locations are then presented as potential installation locations when createing a VM. -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 @@ -359,7 +359,13 @@ class vmmCreate(vmmGObjectUI): self.widget("install-url-options").set_expanded(False) urlmodel = self.widget("install-url-box").get_model() @@ -21,15 +21,16 @@ Index: virt-manager-1.1.0/virtManager/create.py self.populate_media_model(ksmodel, self.config.get_kickstart_urls()) self.set_distro_labels("-", "-", force=True) -Index: virt-manager-1.1.0/virtinst/util.py +Index: virt-manager-1.2.0/virtinst/util.py =================================================================== ---- virt-manager-1.1.0.orig/virtinst/util.py -+++ virt-manager-1.1.0/virtinst/util.py -@@ -23,11 +23,13 @@ import os +--- virt-manager-1.2.0.orig/virtinst/util.py ++++ virt-manager-1.2.0/virtinst/util.py +@@ -23,11 +23,14 @@ import os import random import re import stat -+import commands ++import subprocess ++from subprocess import Popen, PIPE import libvirt @@ -39,7 +40,7 @@ Index: virt-manager-1.1.0/virtinst/util.py def listify(l): -@@ -462,3 +464,96 @@ def register_libvirt_error_handler(): +@@ -462,3 +465,97 @@ def register_libvirt_error_handler(): ignore = userdata ignore = err libvirt.registerErrorHandler(f=libvirt_callback, ctx=None) @@ -102,35 +103,36 @@ Index: virt-manager-1.1.0/virtinst/util.py + if os.geteuid() != 0: + return (0, []) + dom0_inst_source = getHostInstallSource() -+ locations = commands.getoutput("/usr/bin/zypper lr -u | awk -F'|' '{ print $6 }'") -+ locations = locations[(locations.rfind('URI')):].split() -+ index = 0 ++ try: ++ if enabled_sources_only is True: ++ cmd = ['/usr/bin/zypper', 'lr', '-u', '-E'] ++ else: ++ cmd = ['/usr/bin/zypper', 'lr', '-u'] ++ p = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE) ++ stdout, stderr = p.communicate() ++ zypper_output = stdout ++ except: ++ if dom0_inst_source is None: ++ dom0_inst_source = [] ++ return (0, dom0_inst_source) ++ ++ zypper_list = zypper_output.split("\n") ++ zypper_header = [x.strip(' ') for x in zypper_list[0].split("|")] ++ uri_index = zypper_header.index("URI") ++ + index_dom0 = -1 + number_of_sources = 0 + zypper_output = [] -+ # If we only want to list enabled sources -+ if enabled_sources_only == True: -+ enabled = commands.getoutput("/usr/bin/zypper lr -u | awk -F'|' '{ print $4 }'") -+ enabled = enabled[(enabled.rfind('Enabled')):].split() -+ for e in enabled: -+ if e == "Yes": -+ str = locations[index] -+ if str.startswith('ftp://') or str.startswith('http://') or str.startswith('nfs://') or str.startswith('smb://'): -+ 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 -+ index += 1 -+ else: -+ locations.sort() -+ for l in locations: -+ str = locations[index] ++ 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://'): + 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 -+ index += 1 ++ + if index_dom0 == -1 and dom0_inst_source: + index_dom0 = 0 + zypper_output.insert(0, dom0_inst_source) diff --git a/virtman-supported-disk-formats.patch b/virtman-supported-disk-formats.patch index 00b96f22..2284ead0 100644 --- a/virtman-supported-disk-formats.patch +++ b/virtman-supported-disk-formats.patch @@ -1,11 +1,11 @@ Reference: bnc#885380 Xen no longer supports vmdk and never supported qed. See /usr/share/doc/packages/xen/misc/xl-disk-configuration.txt -Index: virt-manager-1.2.0/virtManager/addhardware.py +Index: virt-manager-1.2.1/virtManager/addhardware.py =================================================================== ---- virt-manager-1.2.0.orig/virtManager/addhardware.py -+++ virt-manager-1.2.0/virtManager/addhardware.py -@@ -762,11 +762,14 @@ class vmmAddHardware(vmmGObjectUI): +--- virt-manager-1.2.1.orig/virtManager/addhardware.py ++++ virt-manager-1.2.1/virtManager/addhardware.py +@@ -751,11 +751,14 @@ class vmmAddHardware(vmmGObjectUI): combo.set_model(model) uiutil.init_combo_text_column(combo, 0)