From d63d020de9861f335b319644fbdd2ad4b6781b04 Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Mon, 21 Sep 2009 22:05:46 +0000 Subject: [PATCH] - Added upstream bug fixes. 1240-cdrom-driver-name.patch 1242-delete-active-vm.patch 1245-storage-browser-selection.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=7 --- 1240-cdrom-driver-name.patch | 71 ++++++++++++++++++++++++++ 1242-delete-active-vm.patch | 21 ++++++++ 1245-storage-browser-selection.patch | 75 ++++++++++++++++++++++++++++ virt-manager.changes | 8 +++ virt-manager.spec | 40 ++++++++------- virtinst-cdrom.diff | 9 ++-- virtman-cdrom.diff | 2 +- virtman-manager.diff | 2 +- 8 files changed, 205 insertions(+), 23 deletions(-) create mode 100644 1240-cdrom-driver-name.patch create mode 100644 1242-delete-active-vm.patch create mode 100644 1245-storage-browser-selection.patch diff --git a/1240-cdrom-driver-name.patch b/1240-cdrom-driver-name.patch new file mode 100644 index 0000000..1c042d4 --- /dev/null +++ b/1240-cdrom-driver-name.patch @@ -0,0 +1,71 @@ +# HG changeset patch +# User Cole Robinson +# Date 1251727555 14400 +# Node ID c0de24094ca26b8da900d29746adba056f4114f7 +# Parent 37a986ce54ceac389573d763c78f633a10ec1ab7 +Don't mangle QEMU driver name on cdrom connect (bz 516116) + +Index: virt-manager-0.8.0/src/virtManager/domain.py +=================================================================== +--- virt-manager-0.8.0.orig/src/virtManager/domain.py ++++ virt-manager-0.8.0/src/virtManager/domain.py +@@ -1291,19 +1291,28 @@ class vmmDomain(gobject.GObject): + xml = self.get_device_xml("disk", dev_id_info) + + def cdrom_xml_connect(doc, ctx): +- disk_fragment = ctx.xpathEval("/disk") ++ disk_fragment = ctx.xpathEval("/disk")[0] + driver_fragment = ctx.xpathEval("/disk/driver") +- disk_fragment[0].setProp("type", _type) +- elem = disk_fragment[0].newChild(None, "source", None) ++ disk_fragment.setProp("type", _type) ++ elem = disk_fragment.newChild(None, "source", None) ++ + if _type == "file": + elem.setProp("file", source) +- if driver_fragment: +- driver_fragment[0].setProp("name", _type) ++ driver_name = _type + else: + elem.setProp("dev", source) +- if driver_fragment: +- driver_fragment[0].setProp("name", "phy") +- return disk_fragment[0].serialize() ++ driver_name = "phy" ++ ++ if driver_fragment: ++ driver_fragment = driver_fragment[0] ++ orig_name = driver_fragment.prop("name") ++ ++ # For Xen, the driver name is dependent on the storage type ++ # (file or phys). ++ if orig_name and orig_name in [ "file", "phy" ]: ++ driver_fragment.setProp("name", driver_name) ++ ++ return disk_fragment.serialize() + + result = util.xml_parse_wrapper(xml, cdrom_xml_connect) + logging.debug("connect_cdrom produced: %s" % result) +@@ -1313,17 +1322,19 @@ class vmmDomain(gobject.GObject): + xml = self.get_device_xml("disk", dev_id_info) + + def cdrom_xml_disconnect(doc, ctx): +- disk_fragment = ctx.xpathEval("/disk") ++ disk_fragment = ctx.xpathEval("/disk")[0] + sourcenode = None +- for child in disk_fragment[0].children: ++ ++ for child in disk_fragment.children: + if child.name == "source": + sourcenode = child + break + else: + continue ++ + sourcenode.unlinkNode() + sourcenode.freeNode() +- return disk_fragment[0].serialize() ++ return disk_fragment.serialize() + + result = util.xml_parse_wrapper(xml, cdrom_xml_disconnect) + logging.debug("eject_cdrom produced: %s" % result) diff --git a/1242-delete-active-vm.patch b/1242-delete-active-vm.patch new file mode 100644 index 0000000..8ed1ebf --- /dev/null +++ b/1242-delete-active-vm.patch @@ -0,0 +1,21 @@ +# HG changeset patch +# User Cole Robinson +# Date 1251728389 14400 +# Node ID b70858b9f8c6f9fea21f6e66a10e7b9498f11e5e +# Parent 0bdea2b6c30e3b9ac7ca7b35f957598e66fd8c36 +Don't allow deleting an active VM (bz 518536) + +Index: virt-manager-0.8.0/src/virtManager/manager.py +=================================================================== +--- virt-manager-0.8.0.orig/src/virtManager/manager.py ++++ virt-manager-0.8.0/src/virtManager/manager.py +@@ -684,7 +684,8 @@ class vmmManager(gobject.GObject): + show_open = bool(vm) + show_details = bool(vm) + host_details = bool(vm or conn) +- delete = bool((vm and vm.is_runable()) or conn) ++ delete = bool((vm and vm.is_runable()) or ++ (not vm and conn)) + show_run = bool(vm and vm.is_runable()) + is_paused = bool(vm and vm.is_paused()) + if is_paused: diff --git a/1245-storage-browser-selection.patch b/1245-storage-browser-selection.patch new file mode 100644 index 0000000..72306c6 --- /dev/null +++ b/1245-storage-browser-selection.patch @@ -0,0 +1,75 @@ +# HG changeset patch +# User Cole Robinson +# Date 1252939197 14400 +# Node ID 486cd6791c3926420786d30401a690884acdf653 +# Parent 043ca66e19aabcdb89b8bbe76ef5ded8b0c0fc54 +Fix populating text box with storage browser selection in 'New VM' (bz 517263) + +We were only properly setting the 'finish' callback for the first time the +storage browser was launched. All subsequent runs would not enter anything +in the associated text box. + +Index: virt-manager-0.8.0/src/virtManager/addhardware.py +=================================================================== +--- virt-manager-0.8.0.orig/src/virtManager/addhardware.py ++++ virt-manager-0.8.0/src/virtManager/addhardware.py +@@ -80,7 +80,6 @@ class vmmAddHardware(gobject.GObject): + _("An unexpected error occurred")) + + self.storage_browser = None +- self._browse_cb_id = None + + self._dev = None + +@@ -911,10 +910,8 @@ class vmmAddHardware(gobject.GObject): + conn = self.vm.get_connection() + if self.storage_browser == None: + self.storage_browser = vmmStorageBrowser(self.config, conn, False) +- if self._browse_cb_id: +- self.storage_browser.disconnect(self._browse_cb_id) + +- self._browse_cb_id = self.storage_browser.connect("storage-browse-finish", set_storage_cb) ++ self.storage_browser.set_finish_cb(set_storage_cb) + self.storage_browser.local_args = { "dialog_name": dialog_name, + "confirm_func": confirm_func, + "browse_reason": +Index: virt-manager-0.8.0/src/virtManager/create.py +=================================================================== +--- virt-manager-0.8.0.orig/src/virtManager/create.py ++++ virt-manager-0.8.0/src/virtManager/create.py +@@ -1644,8 +1644,9 @@ class vmmCreate(gobject.GObject): + if self.storage_browser == None: + self.storage_browser = vmmStorageBrowser(self.config, self.conn, + is_media) +- self.storage_browser.connect("storage-browse-finish", +- callback) ++ ++ self.storage_browser.set_finish_cb(callback) ++ + if is_media: + reason = self.config.CONFIG_DIR_MEDIA + else: +Index: virt-manager-0.8.0/src/virtManager/storagebrowse.py +=================================================================== +--- virt-manager-0.8.0.orig/src/virtManager/storagebrowse.py ++++ virt-manager-0.8.0/src/virtManager/storagebrowse.py +@@ -47,6 +47,7 @@ class vmmStorageBrowser(gobject.GObject) + self.config = config + self.conn = conn + self.conn_signal_ids = [] ++ self.finish_cb_id = None + + self.topwin = self.window.get_widget("vmm-storage-browse") + self.err = vmmErrorDialog(self.topwin, +@@ -89,6 +90,11 @@ class vmmStorageBrowser(gobject.GObject) + self.addvol.close() + return 1 + ++ def set_finish_cb(self, callback): ++ if self.finish_cb_id: ++ self.disconnect(self.finish_cb_id) ++ self.finish_cb_id = self.connect("storage-browse-finish", callback) ++ + def set_initial_state(self): + pool_list = self.window.get_widget("pool-list") + virtManager.host.init_pool_list(pool_list, self.pool_selected) diff --git a/virt-manager.changes b/virt-manager.changes index 8e91d78..9b1ade3 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Mon Sep 21 16:00:56 MDT 2009 - carnold@novell.com + +- Added upstream bug fixes. + 1240-cdrom-driver-name.patch + 1242-delete-active-vm.patch + 1245-storage-browser-selection.patch + ------------------------------------------------------------------- Fri Aug 28 16:44:17 MDT 2009 - carnold@novell.com diff --git a/virt-manager.spec b/virt-manager.spec index 62cbb9f..db446ff 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -35,16 +35,19 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build ExclusiveArch: %{ix86} x86_64 Source0: virt-manager-%{version}.tar.bz2 Source1: %{virtinst_name}.tar.bz2 -Patch0: virtman-desktop.diff -Patch1: virtman-vminstall.diff -Patch2: virtman-netcat.diff -Patch3: virtman-pointer.diff -Patch4: virtman-cdrom.diff -Patch5: virtman-kvm.diff -Patch6: virtman-bridge.diff -Patch7: virtman-manager.diff -Patch8: virtman-help.diff -Patch51: virtinst-cdrom.diff +Patch0: 1240-cdrom-driver-name.patch +Patch1: 1242-delete-active-vm.patch +Patch2: 1245-storage-browser-selection.patch +Patch51: virtman-desktop.diff +Patch52: virtman-vminstall.diff +Patch53: virtman-netcat.diff +Patch54: virtman-pointer.diff +Patch55: virtman-cdrom.diff +Patch56: virtman-kvm.diff +Patch57: virtman-bridge.diff +Patch58: virtman-manager.diff +Patch59: virtman-help.diff +Patch81: virtinst-cdrom.diff # Requires: pygtk2 >= 1.99.12-6 Requires: python-gtk # Requires: gnome-python2-gconf >= 1.99.11-7 @@ -120,14 +123,17 @@ Authors: %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -#%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -pushd $RPM_BUILD_DIR/%{virtinst_name} %patch51 -p1 +%patch52 -p1 +%patch53 -p1 +%patch54 -p1 +%patch55 -p1 +%patch56 -p1 +#%patch57 -p1 +%patch58 -p1 +%patch59 -p1 +pushd $RPM_BUILD_DIR/%{virtinst_name} +%patch81 -p1 popd # sed -i -e "s@sr\@Latn@sr\@latin@" configure # mv po/sr@Latn.po po/sr@latin.po diff --git a/virtinst-cdrom.diff b/virtinst-cdrom.diff index 2e30123..3c4ce71 100644 --- a/virtinst-cdrom.diff +++ b/virtinst-cdrom.diff @@ -1,7 +1,8 @@ -diff -Nuar virtinst-0.400.3.orig//virtinst/VirtualDisk.py virtinst-0.400.3//virtinst/VirtualDisk.py ---- virtinst-0.400.3.orig//virtinst/VirtualDisk.py 2009-03-09 21:32:15.000000000 -0600 -+++ virtinst-0.400.3//virtinst/VirtualDisk.py 2009-04-21 10:58:25.000000000 -0600 -@@ -846,14 +846,18 @@ +Index: virtinst-0.500.0/virtinst/VirtualDisk.py +=================================================================== +--- virtinst-0.500.0.orig/virtinst/VirtualDisk.py ++++ virtinst-0.500.0/virtinst/VirtualDisk.py +@@ -1181,14 +1181,18 @@ class VirtualDisk(VirtualDevice): return self.target raise ValueError(_("IDE CDROM must use 'hdc', but target in use.")) diff --git a/virtman-cdrom.diff b/virtman-cdrom.diff index a0612bd..cf2e355 100644 --- a/virtman-cdrom.diff +++ b/virtman-cdrom.diff @@ -2,7 +2,7 @@ Index: virt-manager-0.8.0/src/virtManager/addhardware.py =================================================================== --- virt-manager-0.8.0.orig/src/virtManager/addhardware.py +++ virt-manager-0.8.0/src/virtManager/addhardware.py -@@ -1301,6 +1301,7 @@ class vmmAddHardware(gobject.GObject): +@@ -1298,6 +1298,7 @@ class vmmAddHardware(gobject.GObject): if self.vm.get_hv_type().lower() == "kvm": add_dev("virtio", virtinst.VirtualDisk.DEVICE_DISK, "Virtio Disk") if self.vm.get_connection().get_type().lower() == "xen": diff --git a/virtman-manager.diff b/virtman-manager.diff index 2209556..b327143 100644 --- a/virtman-manager.diff +++ b/virtman-manager.diff @@ -18,7 +18,7 @@ Index: virt-manager-0.8.0/src/virtManager/manager.py if active[1] != None: parent = active[0].iter_parent(active[1]) # return the connection of the currently selected vm, or the -@@ -768,7 +777,14 @@ class vmmManager(gobject.GObject): +@@ -769,7 +778,14 @@ class vmmManager(gobject.GObject): return False def new_vm(self, ignore=None):