diff --git a/.gitignore b/.gitignore index a41a353..7d71edc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ virt-manager-0.8.4.tar.gz /virt-manager-0.8.7.tar.gz /virt-manager-0.9.0.tar.gz /virt-manager-0.9.1.tar.gz +/virt-manager-0.9.3.tar.gz diff --git a/sources b/sources index 593e18e..e806b20 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -cfee07b277e315b16d5180cfab5f8307 virt-manager-0.9.1.tar.gz +4c03f1628c76a891f45c0375bf5590da virt-manager-0.9.3.tar.gz diff --git a/virt-manager-conn-hang-app.patch b/virt-manager-conn-hang-app.patch deleted file mode 100644 index 7c781d0..0000000 --- a/virt-manager-conn-hang-app.patch +++ /dev/null @@ -1,121 +0,0 @@ -commit 13dd371e4840b8dca70508477cfc6820ac5d9a71 -Author: Cole Robinson -Date: Wed Feb 8 14:15:15 2012 -0500 - - Don't let media polling block app if a connection goes down - - If we unplug a remote machine we are connected to, doing the media - timeout with a gobject timeout means running it in the main thread, - which if it's blocking on the remote connection will freeze the whole - app. - -diff --git a/src/virtManager/connection.py b/src/virtManager/connection.py -index 15c1d5e..d649c44 100644 ---- a/src/virtManager/connection.py -+++ b/src/virtManager/connection.py -@@ -1583,6 +1583,9 @@ class vmmConnection(vmmGObject): - "connection doesn't seem to have dropped. " - "Ignoring.") - -+ for dev in self.mediadevs.values(): -+ dev.tick() -+ - if not noStatsUpdate: - self._recalculate_stats(now, updateVMs) - -diff --git a/src/virtManager/mediadev.py b/src/virtManager/mediadev.py -index 3731599..a046d9e 100644 ---- a/src/virtManager/mediadev.py -+++ b/src/virtManager/mediadev.py -@@ -19,6 +19,7 @@ - # - - import logging -+import time - - import virtinst - -@@ -49,7 +50,7 @@ class vmmMediaDevice(vmmGObject): - - obj = vmmMediaDevice(path, key, has_media, media_label, media_key, - dev, drvtype) -- obj.enable_poll_for_media() -+ obj.do_poll = True - - return obj - -@@ -65,7 +66,8 @@ class vmmMediaDevice(vmmGObject): - self.media_type = media_type - - self.nodedev_obj = nodedev_obj -- self.poll_signal = None -+ self.do_poll = False -+ self.last_tick = 0 - - def _cleanup(self): - pass -@@ -130,50 +132,38 @@ class vmmMediaDevice(vmmGObject): - ######################################### - # Nodedev API polling for media updates # - ######################################### -- def enable_poll_for_media(self): -- if self.poll_signal: -- return -- -- self.poll_signal = self.safe_timeout_add(MEDIA_TIMEOUT * 1000, -- self._poll_for_media) -- self.add_gobject_timeout(self.poll_signal) -- -- def disable_poll_for_media(self): -- self.remove_gobject_timeout(self.poll_signal) -- self.poll_signal = None -- -- def _poll_for_media(self): -- if not self.poll_signal: -- return False - -+ def tick(self): - if not self.nodedev_obj: -- return False -+ return - - if not self.nodedev_obj.conn.is_active(): -- return False -+ return -+ -+ if (time.time() - self.last_tick) < MEDIA_TIMEOUT: -+ return -+ self.last_tick = time.time() - - try: - self.nodedev_obj.refresh_xml() - xml = self.nodedev_obj.get_xml() - except: - # Assume the device was removed -- return False -+ return - - try: - vobj = virtinst.NodeDeviceParser.parse(xml) - has_media = vobj.media_available - except: - logging.exception("Node device CDROM polling failed") -- return False -+ return -+ -+ if has_media == self.has_media(): -+ return - -- if has_media != self.has_media(): -- self.set_media(has_media, None, None) -- if has_media: -- self.emit("media-added") -- else: -- self.emit("media-removed") -+ self.set_media(has_media, None, None) -+ self.idle_emit(has_media and "media-added" or "media-removed") - -- return True - - vmmGObject.type_register(vmmMediaDevice) - vmmMediaDevice.signal_new(vmmMediaDevice, "media-added", []) diff --git a/virt-manager-console-shortcut-explanation.patch b/virt-manager-console-shortcut-explanation.patch deleted file mode 100644 index d94aa18..0000000 --- a/virt-manager-console-shortcut-explanation.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -rup virt-manager-0.9.1/src/vmm-preferences.glade new/src/vmm-preferences.glade ---- virt-manager-0.9.1/src/vmm-preferences.glade 2012-01-27 09:38:01.000000000 -0500 -+++ new/src/vmm-preferences.glade 2012-02-13 19:05:22.890465706 -0500 -@@ -398,8 +398,8 @@ Always - - - True -- Force console menu accelerators while the console is active. Enabling this may overwrite keyboard interaction with the guest. -- Force console keyboard shortcuts: -+ When the guest graphical console has keyboard focus, do not disable shortcuts for console window menus (Alt+F -> File, etc.) Normally these are disabled to ensure that typing in the guest does not accidentally perform an operation in virt-manager's console window. -+ Don't disable console shortcuts: - - - False -@@ -412,6 +412,7 @@ Always - True - False - True -+ When the guest graphical console has keyboard focus, do not disable shortcuts for console window menus (Alt+F -> File, etc.) Normally these are disabled to ensure that typing in the guest does not accidentally perform an operation in virt-manager's console window. - - - diff --git a/virt-manager-create-reshow.patch b/virt-manager-create-reshow.patch deleted file mode 100644 index 7cb3fb6..0000000 --- a/virt-manager-create-reshow.patch +++ /dev/null @@ -1,24 +0,0 @@ -commit f12f4ea1980e68a12129922f456f9275ee897f65 -Author: Cole Robinson -Date: Mon Feb 13 16:19:34 2012 -0500 - - create: reshow shouldn't overwrite values in visible dialog - -diff --git a/src/virtManager/create.py b/src/virtManager/create.py -index 56d4e27..4d02922 100644 ---- a/src/virtManager/create.py -+++ b/src/virtManager/create.py -@@ -169,9 +169,11 @@ class vmmCreate(vmmGObjectUI): - - def show(self, parent, uri=None): - logging.debug("Showing new vm wizard") -- self.reset_state(uri) - -- self.topwin.set_transient_for(parent) -+ if not self.is_visible(): -+ self.reset_state(uri) -+ self.topwin.set_transient_for(parent) -+ - self.topwin.present() - - def close(self, ignore1=None, ignore2=None): diff --git a/virt-manager-fix-listen-address.patch b/virt-manager-fix-listen-address.patch deleted file mode 100644 index 4c781a9..0000000 --- a/virt-manager-fix-listen-address.patch +++ /dev/null @@ -1,53 +0,0 @@ -diff -rup virt-manager-0.9.1/src/virtManager/console.py foo/src/virtManager/console.py ---- virt-manager-0.9.1/src/virtManager/console.py 2012-06-06 17:05:12.762334674 -0400 -+++ foo/src/virtManager/console.py 2012-06-06 17:04:59.383045040 -0400 -@@ -370,6 +370,7 @@ class VNCViewer(Viewer): - ignore = user - - if not socketpath: -+ logging.debug("VNC connecting to %s:%s" % (host, port)) - self.display.open_host(host, port) - return - -@@ -485,7 +486,6 @@ class SpiceViewer(Viewer): - ignore = socketpath - - uri = "spice://" -- uri += (user and str(user) or "") - uri += str(host) + "?port=" + str(port) - logging.debug("spice uri: %s", uri) - -@@ -1084,7 +1084,7 @@ class vmmConsolePages(vmmGObjectUI): - - self.set_enable_accel() - -- if transport in ("ssh", "ext"): -+ if (transport in ("ssh", "ext")) and gaddr == "127.0.0.1": - if self.tunnels: - # Tunnel already open, no need to continue - return -@@ -1096,8 +1096,10 @@ class vmmConsolePages(vmmGObjectUI): - self.viewer.open_fd(fd) - - else: -- self.viewer.open_host(connhost, connuser, -- str(gport), gsocket) -+ host = gaddr -+ if gaddr == "127.0.0.1" or gaddr == "0.0.0.0": -+ host = connhost -+ self.viewer.open_host(host, connuser, str(gport), gsocket) - - except Exception, e: - logging.exception("Error connection to graphical console") -diff -rup virt-manager-0.9.1/src/virtManager/domain.py foo/src/virtManager/domain.py ---- virt-manager-0.9.1/src/virtManager/domain.py 2012-01-29 15:40:49.000000000 -0500 -+++ foo/src/virtManager/domain.py 2012-06-06 17:04:59.384044912 -0400 -@@ -952,7 +952,7 @@ class vmmDomain(vmmLibvirtObject): - if gport != None: - gport = int(gport) - gtype = gdev.type -- gaddr = "127.0.0.1" -+ gaddr = gdev.listen or "127.0.0.1" - gsocket = gdev.socket - - if connhost == None: diff --git a/virt-manager-fix-spice-default.patch b/virt-manager-fix-spice-default.patch deleted file mode 100644 index b115667..0000000 --- a/virt-manager-fix-spice-default.patch +++ /dev/null @@ -1,25 +0,0 @@ -commit 45119785c7efbaa1defc3fffd05cb41e39992271 -Author: Cole Robinson -Date: Thu Apr 5 13:28:39 2012 -0400 - - schemas: Fix key for default graphics type - - What we installed didn't match what the app was checking and setting. - Have it match the app key so we don't overwrite users who have changed the - default via the prefs dialog. - -diff --git a/src/virt-manager.schemas.in b/src/virt-manager.schemas.in -index dfcd7ba..8154534 100644 ---- a/src/virt-manager.schemas.in -+++ b/src/virt-manager.schemas.in -@@ -196,8 +196,8 @@ - - - -- /schemas/apps/::PACKAGE::/new-vm/graphics-type -- /apps/::PACKAGE::/new-vm/graphics-type -+ /schemas/apps/::PACKAGE::/new-vm/graphics_type -+ /apps/::PACKAGE::/new-vm/graphics_type - ::PACKAGE:: - string - ::DEFAULT_GRAPHICS:: diff --git a/virt-manager-remote-error-reporting.patch b/virt-manager-remote-error-reporting.patch deleted file mode 100644 index da481f9..0000000 --- a/virt-manager-remote-error-reporting.patch +++ /dev/null @@ -1,101 +0,0 @@ -commit 54d007b2875a887b1579604e45b122dde286b9be -Author: Cole Robinson -Date: Thu Feb 2 16:45:18 2012 -0500 - - manager: Fix error reporting when can't connect remotely - - Also rejigger the error building again to be more useful and - less scary in cases where we are pretty confident we know what the - problem is. - -diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py -index 2e8a679..a4b2df5 100644 ---- a/src/virtManager/manager.py -+++ b/src/virtManager/manager.py -@@ -646,42 +646,55 @@ class vmmManager(vmmGObjectUI): - conn.open() - return True - -- def _connect_error(self, conn, shortmsg, tb, warnconsole): -- shortmsg = shortmsg.strip(" \n") -+ def _connect_error(self, conn, errmsg, tb, warnconsole): -+ errmsg = errmsg.strip(" \n") - tb = tb.strip(" \n") -- msg = _("Unable to connect to libvirt:\n\n%s\n\n") % shortmsg -+ hint = "" -+ show_errmsg = True -+ -+ if conn.is_remote(): -+ logging.debug(conn.get_transport()) -+ if re.search(r"nc: .* -- 'U'", tb): -+ hint += _("The remote host requires a version of netcat/nc\n" -+ "which supports the -U option.") -+ show_errmsg = False -+ elif conn.get_transport()[0] == "ssh" and re.search(r"ssh-askpass", tb): -+ hint += _("You need to install openssh-askpass or similar\n" -+ "to connect to this host.") -+ show_errmsg = False -+ else: -+ hint += _("Verify that the 'libvirtd' daemon is running\n" -+ "on the remote host.") - -- if conn.is_xen() and not conn.is_remote(): -- msg += _("Verify that:\n" -- " - A Xen host kernel was booted\n" -- " - The Xen service has been started\n") -- msg = msg.strip("\n") -- details = "%s\n\n%s" % (msg, tb) -+ elif conn.is_xen(): -+ hint += _("Verify that:\n" -+ " - A Xen host kernel was booted\n" -+ " - The Xen service has been started") - - else: -- hints = [] -- if conn.is_remote() and re.search(r"nc: .* -- 'U'", details): -- hints.append( -- _("\n - The remote netcat understands the '-U' option")) -- - if warnconsole: -- msg += _("Could not detect a local session: if you are \n" -- "running virt-manager over ssh -X or VNC, you \n" -- "may not be able to connect to libvirt as a \n" -- "regular user. Try running as root.\n\n") -- else: -- msg += _("Verify that:\n" + -- " - The 'libvirtd' daemon has been started") -- for hint in hints: -- msg += hint -- -- msg = msg.strip("\n") -- details = (("%s\n\n" % msg) + -- (_("Libvirt URI is: %s\n\n") % conn.get_uri()) + -- tb) -- -- self.err.show_err(msg, details, -- title=_("Virtual Machine Manager Connection Failure")) -+ hint += _("Could not detect a local session: if you are \n" -+ "running virt-manager over ssh -X or VNC, you \n" -+ "may not be able to connect to libvirt as a \n" -+ "regular user. Try running as root.") -+ show_errmsg = False -+ elif re.search(r"libvirt-sock", tb): -+ hint += _("Verify that the 'libvirtd' daemon is running.") -+ show_errmsg = False -+ -+ msg = _("Unable to connect to libvirt.") -+ if show_errmsg: -+ msg += "\n\n%s" % errmsg -+ if hint: -+ msg += "\n\n%s" % hint -+ -+ msg = msg.strip("\n") -+ details = msg -+ details += "\n\n" -+ details += "Libvirt URI is: %s\n\n" % conn.get_uri() -+ details += tb -+ -+ self.err.show_err(msg, details, title=_("Virtual Machine Manager Connection Failure")) - - - #################################### diff --git a/virt-manager-vdi-format.patch b/virt-manager-vdi-format.patch deleted file mode 100644 index 3f571e1..0000000 --- a/virt-manager-vdi-format.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 265e04205e4766f459d4ced516dbd784cf2ca57f -Author: Cole Robinson -Date: Tue Feb 7 17:13:59 2012 -0500 - - Add VDI to disk format list - - People actually distribute images in that format: - - https://bugzilla.redhat.com/show_bug.cgi?id=761300 - -diff --git a/src/virtManager/uihelpers.py b/src/virtManager/uihelpers.py -index c274592..3ba4a71 100644 ---- a/src/virtManager/uihelpers.py -+++ b/src/virtManager/uihelpers.py -@@ -397,6 +397,7 @@ def build_storage_format_combo(vm, combo): - formats = ["raw", "qcow2"] - if vm.rhel6_defaults(): - formats.append("vmdk") -+ formats.append("vdi") - - for m in formats: - dev_model.append([m]) diff --git a/virt-manager-vnc-grab-recursion.patch b/virt-manager-vnc-grab-recursion.patch deleted file mode 100644 index 724a444..0000000 --- a/virt-manager-vnc-grab-recursion.patch +++ /dev/null @@ -1,23 +0,0 @@ -commit c47fc5454039a9e7093f179c1e06ffc576dc1ad3 -Author: Cole Robinson -Date: Mon Feb 6 17:57:14 2012 -0500 - - vnc: Fix accidental recursion we reporting grab keys - -diff --git a/src/virtManager/console.py b/src/virtManager/console.py -index 3b39a6c..13fc755 100644 ---- a/src/virtManager/console.py -+++ b/src/virtManager/console.py -@@ -387,12 +387,6 @@ class VNCViewer(Viewer): - def open_fd(self, fd): - self.display.open_fd(fd) - -- def get_grab_keys(self): -- keystr = self.get_grab_keys() -- if not keystr: -- keystr = "Control_L+Alt_L" -- return keystr -- - def set_credential_username(self, cred): - self.display.set_credential(gtkvnc.CREDENTIAL_USERNAME, cred) - diff --git a/virt-manager.spec b/virt-manager.spec index 85db610..c33f477 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -1,33 +1,35 @@ # -*- rpm-spec -*- %define _package virt-manager -%define _version 0.9.1 -%define _release 4 -%define virtinst_version 0.600.1 +%define _version 0.9.3 +%define _release 1 +%define virtinst_version 0.600.2 %define qemu_user "qemu" %define preferred_distros "fedora,rhel" %define kvm_packages "qemu-system-x86" %define libvirt_packages "libvirt" +%define askpass_package "openssh-askpass" %define disable_unsupported_rhel 0 %define with_guestfs 0 %define with_tui 1 %define with_spice 1 -%define default_graphics "" -%if %{with_spice} && %{default_graphics} == "" +# End local config +# Default option handling + +%if %{with_spice} %define default_graphics "spice" %endif -# End local config # This macro is used for the continuous automated builds. It just # allows an extra fragment based on the timestamp to be appended # to the release. This distinguishes automated builds, from formal # Fedora RPM builds -%define _extra_release %{?dist:%{dist}}%{!?dist:%{?extra_release:%{extra_release}}} +%define _extra_release %{?dist:%{dist}}%{?extra_release:%{extra_release}} Name: %{_package} Version: %{_version} @@ -39,22 +41,6 @@ Group: Applications/Emulators License: GPLv2+ URL: http://virt-manager.org/ Source0: http://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz -# Fix error reporting for failed remote connections (bz 787011) -Patch1: %{name}-remote-error-reporting.patch -# Fix setting window title when VNC mouse is grabbed (bz 788443) -Patch2: %{name}-vnc-grab-recursion.patch -# Advertise VDI format in disk details (bz 761300) -Patch3: %{name}-vdi-format.patch -# Don't let an unavailable host hang the app (bz 766769) -Patch4: %{name}-conn-hang-app.patch -# Don't overwrite existing create dialog when reshowing (bz 754152) -Patch5: %{name}-create-reshow.patch -# Improve tooltip for 'force console shortcuts' (bz 788448) -Patch6: %{name}-console-shortcut-explanation.patch -# Actually make spice the default (bz 757874) -Patch7: %{name}-fix-spice-default.patch -# Fix connecting to console with specific listen address -Patch8: %{name}-fix-listen-address.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch @@ -82,8 +68,6 @@ Requires: gnome-python2-gnomekeyring >= 2.15.4 Requires: libxml2-python >= 2.6.23 # Absolutely require this version or later Requires: python-virtinst >= %{virtinst_version} -# Required for loading the glade UI -Requires: pygtk2-libglade # Earlier vte had broken python binding module Requires: vte >= 0.12.2 # For online help @@ -115,7 +99,6 @@ Requires(preun): GConf2 Requires(post): desktop-file-utils Requires(postun): desktop-file-utils - %description Virtual Machine Manager provides a graphical tool for administering virtual machines for KVM, Xen, and QEmu. Start, stop, add or remove virtual devices, @@ -156,14 +139,6 @@ Common files used by the different Virtual Machine Manager interfaces. %prep %setup -q -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 %build %if %{qemu_user} @@ -182,11 +157,15 @@ Common files used by the different Virtual Machine Manager interfaces. %define _libvirt_packages --with-libvirt-package-names=%{libvirt_packages} %endif +%if %{askpass_package} +%define _askpass_package --with-askpass-package=%{askpass_package} +%endif + %if %{disable_unsupported_rhel} %define _disable_unsupported_rhel --disable-unsupported-rhel-options %endif -%if %{default_graphics} +%if 0%{?default_graphics:1} %define _default_graphics --with-default-graphics=%{default_graphics} %endif @@ -200,6 +179,7 @@ Common files used by the different Virtual Machine Manager interfaces. %{?_qemu_user} \ %{?_kvm_packages} \ %{?_libvirt_packages} \ + %{?_askpass_package} \ %{?_preferred_distros} \ %{?_disable_unsupported_rhel} \ %{?_default_graphics} @@ -254,7 +234,7 @@ update-desktop-database -q %{_datadir}/applications %{_datadir}/%{name}/virtManager/*.py* %endif -%{_datadir}/%{name}/*.glade +%{_datadir}/%{name}/*.ui %{_datadir}/%{name}/%{name}.py* %{_datadir}/%{name}/icons @@ -281,6 +261,20 @@ update-desktop-database -q %{_datadir}/applications %endif %changelog +* Mon Jul 09 2012 Cole Robinson - 0.9.3-1 +- Rebased to version 0.9.3 +- Convert to gtkbuilder: UI can now be editted with modern glade tool +- virt-manager no longer runs on RHEL5, but can manage a remote RHEL5 + host +- Option to configure spapr net and disk devices for pseries (Li Zhang) +- Offer to install openssh-askpass if we need it (bz 754484) +- Don't leave defunct SSH processes around (bz 757892) +- Offer to start libvirtd after install (bz 791152) +- Fix crash when deleting storage volumes (bz 805950) +- Show serial device PTY path again (bz 811760) +- Fix possible crash when rebooting fails (bz 813119) +- Offer to discard state if restore fails (bz 837236) + * Wed Jun 06 2012 Cole Robinson - 0.9.1-4 - Fix connecting to console with specific listen address - Fix regression that dropped spice dependency (bz 819270)