diff --git a/virt-manager-0.3.0.tar.bz2 b/virt-manager-0.3.0.tar.bz2 deleted file mode 100644 index d53b93e2..00000000 --- a/virt-manager-0.3.0.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de1a282233ce0fb11e35a743604e3d0a81ab9a1a5c51786104e03f18d5f2e500 -size 369701 diff --git a/virt-manager-0.4.0.tar.bz2 b/virt-manager-0.4.0.tar.bz2 new file mode 100644 index 00000000..9ecd9ba5 --- /dev/null +++ b/virt-manager-0.4.0.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75235bcfbb776a0e59bba543b0dca8d5b3d73b826db09bf0146ef0148c0530f1 +size 975315 diff --git a/virt-manager.changes b/virt-manager.changes index a9f17052..496635dd 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,7 +1,81 @@ +------------------------------------------------------------------- +Thu May 3 14:50:03 MDT 2007 - ccoffing@novell.com + +- Fix syntax error, which could result in unnecessary VNC + connection failures. (#237406) + +------------------------------------------------------------------- +Fri Apr 27 13:20:07 MDT 2007 - ccoffing@novell.com + +- Update to 0.4.0. +- Clean up spec file. + +------------------------------------------------------------------- +Tue Apr 10 14:19:36 MDT 2007 - ccoffing@novell.com + +- Remove code that (incorrectly) guesses the vnc port. (#259692) +- Do not refresh GUI every second (which causes xenstored to not + thrash so badly, which makes virt-manager more responsive and + less likely to time out or lock up). Partial fix for #237406. +- Import changeset 440, which makes virt-manager honor dom0's + keymap. (#241149) +- Revert patch for bug #244772, because it causes lockups, as + noted in bug #261110. +- Fix attaching disks to running VM. (#238986) + ------------------------------------------------------------------- Mon Apr 2 01:56:33 CEST 2007 - ro@suse.de -- updated gconf scriptlets +- updated gconf scriptlets + +------------------------------------------------------------------- +Wed Mar 28 11:37:48 MDT 2007 - ccoffing@novell.com + +- Update icon filename. + +------------------------------------------------------------------- +Tue Mar 13 15:25:13 MDT 2007 - ccoffing@novell.com + +- Import threading and timer tick patches from upstream to improve + stability. (#237406 and others) +- Do not offer QEMU option. (#254083) + +------------------------------------------------------------------- +Mon Mar 12 08:44:33 MDT 2007 - ccoffing@novell.com + +- Update virt-manager to match changes in vm-install's disk class, + due to bug #247849. + +------------------------------------------------------------------- +Fri Mar 9 17:52:21 MST 2007 - ccoffing@novell.com + +- Make Ctrl+Alt release the mouse cursor (#252998). + +------------------------------------------------------------------- +Thu Mar 8 12:38:56 MST 2007 - ccoffing@novell.com + +- Add release to "Requires: xen-tools", to prevent mixing with + pre-beta 5. (#238986, #252495) + +------------------------------------------------------------------- +Fri Mar 2 17:53:44 MST 2007 - ccoffing@novell.com + +- Disable gtk-menu-bar-accel when VM has focus, to allow VM to get + F10 key. (#240001) + +------------------------------------------------------------------- +Tue Feb 27 13:36:06 MST 2007 - ccoffing@novell.com + +- Update to 0.3.1. +- "Requires: librsvg" (#250156) +- Re-use vm-install's disk UI, to allow disks to be added/removed + from xend-managed VMs (currently only for running VMs). (#238986) + +------------------------------------------------------------------- +Thu Feb 22 12:39:37 MST 2007 - ccoffing@novell.com + +- If Xen isn't running, put up error window instead of raising. + (#244772) ------------------------------------------------------------------- Tue Feb 13 12:53:38 MST 2007 - ccoffing@novell.com diff --git a/virt-manager.spec b/virt-manager.spec index b31cc92e..a6ee32ac 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -1,5 +1,5 @@ # -# spec file for package virt-manager (Version 0.3.0) +# spec file for package virt-manager (Version 0.4.0) # # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -12,44 +12,36 @@ Name: virt-manager URL: http://virt-manager.et.redhat.com -BuildRequires: autoconf automake gconf2 gettext gtk2-devel python-devel python-gtk update-desktop-files -%if %suse_version > 1010 -BuildRequires: python-gobject2-devel python-gtk-devel -%define gsysconfdir /etc -%define gconftool /usr/bin/gconftool-2 -%else -%define gsysconfdir /etc/opt/gnome -%define gconftool /opt/gnome/bin/gconftool-2 -%endif +BuildRequires: autoconf automake gconf2 gettext gtk2-devel python-devel python-gobject2-devel python-gtk-devel scrollkeeper update-desktop-files +# Only for directory ownership: +BuildRequires: libgnome yast2 License: GNU General Public License (GPL) Group: System/Monitoring Autoreqprov: yes -Version: 0.3.0 -Release: 8 +Version: 0.4.0 +Release: 1 Summary: Virtual Machine Manager -Source0: virt-manager-0.3.0.tar.bz2 +Source0: virt-manager-0.4.0.tar.bz2 Source1: rhpl-exception.py +Patch10: virtman-desktop.diff +Patch11: virtman-install.diff +Patch12: virtman-type-register.diff +Patch13: virtman-console-keys.diff +Patch14: virtman-detach-yast.diff +Patch15: virtman-limit-popup.diff +Patch16: virtman-edit.diff +Patch17: virtman-wrong-port.diff +Patch18: virtman-typo.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build +ExclusiveArch: %ix86 x86_64 Requires: python-gtk Requires: python-gnome -# Absolutely require this version or newer Requires: libvirt-python >= 0.1.4-3 -# FIXME: Check dbus-1-python 0.60 vs. 0.61 API changes Requires: dbus-1-python -# Minimum we've tested with -Requires: libxml2-python >= 2.6.23 +Requires: libxml2-python Requires: vte -Requires: xen-tools >= 3.0.4_13100 -ExclusiveArch: %ix86 x86_64 -Patch0: virtman-desktop.diff -Patch1: virtman-install.diff -Patch2: virtman-type-register.diff -Patch3: virtman-deprecated-raise.diff -Patch5: virtman-console-keys.diff -Patch6: virtman-detach-yast.diff -Patch7: virtman-no-ungrab.diff -Patch8: virtman-limit-popup.diff -Patch9: virtman-error.diff +Requires: librsvg +Requires: xen-tools >= 3.0.4_13138-0.10 Requires: gconf2 %gconf_schemas_prereq @@ -68,40 +60,33 @@ Authors: %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +#%patch16 -p1 # re-port... or not? +%patch17 -p1 +%patch18 -p1 %build -#automake -#autoconf autoreconf -i -%configure --sysconfdir=%{gsysconfdir} +%configure make %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT -rm -f $RPM_BUILD_ROOT%{_libdir}/virt-manager/sparkline.a -rm -f $RPM_BUILD_ROOT%{_libdir}/virt-manager/sparkline.la +rm -f $RPM_BUILD_ROOT%{_libdir}/virt-manager/sparkline.{a,la} install -m755 %SOURCE1 $RPM_BUILD_ROOT%{_datadir}/virt-manager/exception.py -mkdir -p $RPM_BUILD_ROOT%{_sbindir} -# Unsupported languages: -rm -rf $RPM_BUILD_ROOT/usr/share/locale/as -rm -rf $RPM_BUILD_ROOT/usr/share/locale/or -%find_lang virt-manager %find_gconf_schemas +%find_lang %{name} cat %{name}.schemas_list %{name}.lang >%{name}.lst -%suse_update_desktop_file virt-manager +%suse_update_desktop_file %{name} %clean -rm -rf $RPM_BUILD_ROOT +test ! -z "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT %pre -f %{name}.schemas_pre @@ -109,14 +94,14 @@ rm -rf $RPM_BUILD_ROOT %posttrans -f %{name}.schemas_posttrans -%files -f virt-manager.lst +%files -f %{name}.lst %defattr(-,root,root,-) %doc COPYING AUTHORS ChangeLog -%{gsysconfdir}/gconf/schemas/virt-manager.schemas %{_bindir}/virt-manager %{_libexecdir}/virt-manager-launch %{_libdir}/virt-manager/ %dir %{_datadir}/virt-manager +%{_datadir}/omf/virt-manager/ %{_datadir}/virt-manager/*.glade %dir %{_datadir}/virt-manager/pixmaps %{_datadir}/virt-manager/pixmaps/*.png @@ -128,14 +113,51 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/virt-manager/vncViewer/*.py %{_datadir}/applications/YaST2/virt-manager.desktop %{_datadir}/dbus-1/services/virt-manager.service -# FIXME: autobuild complains that these are unowned (not true...) -%dir %{_datadir}/dbus-1 -%dir %{_datadir}/dbus-1/services -%dir %{_datadir}/applications/YaST2 %changelog +* Thu May 03 2007 - ccoffing@novell.com +- Fix syntax error, which could result in unnecessary VNC + connection failures. (#237406) +* Fri Apr 27 2007 - ccoffing@novell.com +- Update to 0.4.0. +- Clean up spec file. +* Tue Apr 10 2007 - ccoffing@novell.com +- Remove code that (incorrectly) guesses the vnc port. (#259692) +- Do not refresh GUI every second (which causes xenstored to not + thrash so badly, which makes virt-manager more responsive and + less likely to time out or lock up). Partial fix for #237406. +- Import changeset 440, which makes virt-manager honor dom0's + keymap. (#241149) +- Revert patch for bug #244772, because it causes lockups, as + noted in bug #261110. +- Fix attaching disks to running VM. (#238986) * Mon Apr 02 2007 - ro@suse.de - updated gconf scriptlets +* Wed Mar 28 2007 - ccoffing@novell.com +- Update icon filename. +* Tue Mar 13 2007 - ccoffing@novell.com +- Import threading and timer tick patches from upstream to improve + stability. (#237406 and others) +- Do not offer QEMU option. (#254083) +* Mon Mar 12 2007 - ccoffing@novell.com +- Update virt-manager to match changes in vm-install's disk class, + due to bug #247849. +* Fri Mar 09 2007 - ccoffing@novell.com +- Make Ctrl+Alt release the mouse cursor (#252998). +* Thu Mar 08 2007 - ccoffing@novell.com +- Add release to "Requires: xen-tools", to prevent mixing with + pre-beta 5. (#238986, #252495) +* Fri Mar 02 2007 - ccoffing@novell.com +- Disable gtk-menu-bar-accel when VM has focus, to allow VM to get + F10 key. (#240001) +* Tue Feb 27 2007 - ccoffing@novell.com +- Update to 0.3.1. +- "Requires: librsvg" (#250156) +- Re-use vm-install's disk UI, to allow disks to be added/removed + from xend-managed VMs (currently only for running VMs). (#238986) +* Thu Feb 22 2007 - ccoffing@novell.com +- If Xen isn't running, put up error window instead of raising. + (#244772) * Tue Feb 13 2007 - ccoffing@novell.com - Update to latest hg; grabs mouse for better mouse tracking. (#240387) diff --git a/virtman-console-keys.diff b/virtman-console-keys.diff index 519b0a94..d6d07d62 100644 --- a/virtman-console-keys.diff +++ b/virtman-console-keys.diff @@ -1,8 +1,8 @@ -Index: virt-manager-0.3.0/src/virtManager/console.py +Index: virt-manager-0.4.0/src/virtManager/console.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/console.py -+++ virt-manager-0.3.0/src/virtManager/console.py -@@ -45,6 +45,8 @@ class vmmConsole(gobject.GObject): +--- virt-manager-0.4.0.orig/src/virtManager/console.py ++++ virt-manager-0.4.0/src/virtManager/console.py +@@ -49,6 +49,8 @@ class vmmConsole(gobject.GObject): self.vm = vm topwin = self.window.get_widget("vmm-console") @@ -11,7 +11,7 @@ Index: virt-manager-0.3.0/src/virtManager/console.py topwin.hide() self.title = vm.get_name() + " " + topwin.get_title() topwin.set_title(self.title) -@@ -52,9 +54,9 @@ class vmmConsole(gobject.GObject): +@@ -56,9 +58,9 @@ class vmmConsole(gobject.GObject): self.window.get_widget("control-shutdown").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_shutdown.png") if self.config.get_console_keygrab() == 2: @@ -23,11 +23,11 @@ Index: virt-manager-0.3.0/src/virtManager/console.py self.vncViewer.connect("pointer-grabbed", self.notify_grabbed) self.vncViewer.connect("pointer-ungrabbed", self.notify_ungrabbed) -Index: virt-manager-0.3.0/src/vncViewer/vnc.py +Index: virt-manager-0.4.0/src/vncViewer/vnc.py =================================================================== ---- virt-manager-0.3.0.orig/src/vncViewer/vnc.py -+++ virt-manager-0.3.0/src/vncViewer/vnc.py -@@ -179,7 +179,7 @@ class GRFBViewer(gtk.DrawingArea): +--- virt-manager-0.4.0.orig/src/vncViewer/vnc.py ++++ virt-manager-0.4.0/src/vncViewer/vnc.py +@@ -190,7 +190,7 @@ class GRFBViewer(gtk.DrawingArea): "keyboard-ungrabbed": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, []), } @@ -36,7 +36,7 @@ Index: virt-manager-0.3.0/src/vncViewer/vnc.py gtk.DrawingArea.__init__(self) self.fb = GRFBFrameBuffer(self) -@@ -189,6 +189,7 @@ class GRFBViewer(gtk.DrawingArea): +@@ -200,6 +200,7 @@ class GRFBViewer(gtk.DrawingArea): self.autograbkey = autograbkey self.autograbptr = True self.topwin = topwin @@ -44,21 +44,21 @@ Index: virt-manager-0.3.0/src/vncViewer/vnc.py self.accel_groups = gtk.accel_groups_from_object(topwin) self.preferred_encoding = (rfb.ENCODING_RAW, rfb.ENCODING_DESKTOP_RESIZE) # Current impl of draw_solid is *far* too slow to be practical -@@ -445,6 +446,8 @@ class GRFBViewer(gtk.DrawingArea): +@@ -460,6 +461,8 @@ class GRFBViewer(gtk.DrawingArea): gtk.gdk.keyboard_grab(self.window, False, long(0)) for g in self.accel_groups: self.topwin.remove_accel_group(g) + for w in self.sens: + w.set_sensitive(False) - self.grabbedKeyboard = True - self.emit("keyboard-grabbed") - -@@ -452,6 +455,8 @@ class GRFBViewer(gtk.DrawingArea): + self.gtk_settings = gtk.settings_get_default() + self.gtk_settings_accel = self.gtk_settings.get_property('gtk-menu-bar-accel') + self.gtk_settings.set_property('gtk-menu-bar-accel', None) +@@ -470,6 +473,8 @@ class GRFBViewer(gtk.DrawingArea): gtk.gdk.keyboard_ungrab() for g in self.accel_groups: self.topwin.add_accel_group(g) + for w in self.sens: + w.set_sensitive(True) + self.gtk_settings.set_property('gtk-menu-bar-accel', self.gtk_settings_accel) self.grabbedKeyboard = False self.emit("keyboard-ungrabbed") - diff --git a/virtman-deprecated-raise.diff b/virtman-deprecated-raise.diff deleted file mode 100644 index 9a51e08d..00000000 --- a/virtman-deprecated-raise.diff +++ /dev/null @@ -1,25 +0,0 @@ -Index: virt-manager-0.3.0/src/virtManager/domain.py -=================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/domain.py -+++ virt-manager-0.3.0/src/virtManager/domain.py -@@ -371,7 +371,7 @@ class vmmDomain(gobject.GObject): - elif self.lastStatus == libvirt.VIR_DOMAIN_CRASHED: - return _("Crashed") - else: -- raise RuntimeError(_("Unknown status code")) -+ raise RuntimeError(_("Unknown status code: %s") % self.lastStatus) - - def run_status_icon(self): - return self.config.get_vm_status_icon(self.status()) -@@ -443,9 +443,9 @@ class vmmDomain(gobject.GObject): - devdst = child.prop("dev") - - if srcpath == None: -- raise "missing source path" -+ raise RuntimeError("missing source path") - if devdst == None: -- raise "missing destination device" -+ raise RuntimeError("missing destination device") - - devtype = node.prop("device") - if devtype == None: diff --git a/virtman-desktop.diff b/virtman-desktop.diff index dc4da735..6f0cae02 100644 --- a/virtman-desktop.diff +++ b/virtman-desktop.diff @@ -1,7 +1,7 @@ -Index: virt-manager-0.3.0/src/virt-manager.desktop.in +Index: virt-manager-0.4.0/src/virt-manager.desktop.in =================================================================== ---- virt-manager-0.3.0.orig/src/virt-manager.desktop.in -+++ virt-manager-0.3.0/src/virt-manager.desktop.in +--- virt-manager-0.4.0.orig/src/virt-manager.desktop.in ++++ virt-manager-0.4.0/src/virt-manager.desktop.in @@ -1,9 +1,17 @@ [Desktop Entry] +Version=1.0 @@ -21,15 +21,15 @@ Index: virt-manager-0.3.0/src/virt-manager.desktop.in +X-SuSE-YaST-RootOnly=true +X-SuSE-YaST-Geometry= +X-SuSE-YaST-SortKey= -+Icon=yast-network ++Icon=yast-vm-management +X-SuSE-translate=true -Index: virt-manager-0.3.0/src/Makefile.am +Index: virt-manager-0.4.0/src/Makefile.am =================================================================== ---- virt-manager-0.3.0.orig/src/Makefile.am -+++ virt-manager-0.3.0/src/Makefile.am +--- virt-manager-0.4.0.orig/src/Makefile.am ++++ virt-manager-0.4.0/src/Makefile.am @@ -14,7 +14,7 @@ libexec_SCRIPTS = $(PACKAGE)-launch gladedir = $(pkgdatadir) - glade_DATA = $(PACKAGE).glade + glade_DATA = $(wildcard $(srcdir)/*.glade) -desktopdir = $(datadir)/applications +desktopdir = $(datadir)/applications/YaST2/ diff --git a/virtman-detach-yast.diff b/virtman-detach-yast.diff index e51ad50d..3e97ea5b 100644 --- a/virtman-detach-yast.diff +++ b/virtman-detach-yast.diff @@ -1,8 +1,8 @@ -Index: virt-manager-0.3.0/src/virt-manager.py.in +Index: virt-manager-0.4.0/src/virt-manager.py.in =================================================================== ---- virt-manager-0.3.0.orig/src/virt-manager.py.in -+++ virt-manager-0.3.0/src/virt-manager.py.in -@@ -148,6 +148,8 @@ def main(): +--- virt-manager-0.4.0.orig/src/virt-manager.py.in ++++ virt-manager-0.4.0/src/virt-manager.py.in +@@ -177,6 +177,8 @@ def main(): optParser = OptionParser() optParser.add_option("--profile", dest="profile", help="Generate runtime performance profile stats", metavar="FILE") optParser.set_defaults(uuid=None) @@ -11,7 +11,7 @@ Index: virt-manager-0.3.0/src/virt-manager.py.in optParser.add_option("-c", "--connect", dest="uri", help="Connect to hypervisor at URI", metavar="URI") optParser.add_option("--no-dbus", action="store_true", dest="nodbus", -@@ -199,6 +201,23 @@ def main(): +@@ -228,6 +230,23 @@ def main(): logging.warning("Could not connection to session bus, disabling DBus service " + \ str(sys.exc_info()[0]) + " " + str(sys.exc_info()[1])) @@ -35,11 +35,11 @@ Index: virt-manager-0.3.0/src/virt-manager.py.in # Finally start the app for real show_engine(engine, options.show, options.uri, options.uuid) if options.profile != None: -Index: virt-manager-0.3.0/src/virtManager/engine.py +Index: virt-manager-0.4.0/src/virtManager/engine.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/engine.py -+++ virt-manager-0.3.0/src/virtManager/engine.py -@@ -229,7 +229,7 @@ class vmmEngine: +--- virt-manager-0.4.0.orig/src/virtManager/engine.py ++++ virt-manager-0.4.0/src/virtManager/engine.py +@@ -278,7 +278,7 @@ class vmmEngine: return self.connections[uri]["windowDetails"][uuid] def show_manager(self, uri): diff --git a/virtman-edit.diff b/virtman-edit.diff new file mode 100644 index 00000000..71a0bb8f --- /dev/null +++ b/virtman-edit.diff @@ -0,0 +1,198 @@ +Index: virt-manager-0.3.1/src/virtManager/details.py +=================================================================== +--- virt-manager-0.3.1.orig/src/virtManager/details.py ++++ virt-manager-0.3.1/src/virtManager/details.py +@@ -23,6 +23,10 @@ import gtk.glade + import libvirt + import sparkline + import logging ++import os ++ ++import xen.install ++import xen.install.gui + + class vmmDetails(gobject.GObject): + __gsignals__ = { +@@ -44,6 +48,7 @@ class vmmDetails(gobject.GObject): + topwin = self.window.get_widget("vmm-details") + topwin.hide() + topwin.set_title(self.vm.get_name() + " " + topwin.get_title()) ++ self.topwin = topwin + + self.window.get_widget("overview-name").set_text(self.vm.get_name()) + self.window.get_widget("overview-uuid").set_text(self.vm.get_uuid()) +@@ -129,15 +134,14 @@ class vmmDetails(gobject.GObject): + self.window.get_widget("details-toolbar").hide() + + def show(self): +- dialog = self.window.get_widget("vmm-details") +- dialog.show_all() ++ self.topwin.show_all() + self.window.get_widget("overview-network-traffic-text").hide() + self.window.get_widget("overview-network-traffic-label").hide() + self.window.get_widget("overview-disk-usage-bar").hide() + self.window.get_widget("overview-disk-usage-text").hide() + self.window.get_widget("overview-disk-usage-label").hide() + self.network_traffic_graph.hide() +- dialog.present() ++ self.topwin.present() + + def activate_performance_page(self): + self.window.get_widget("details-pages").set_current_page(0) +@@ -146,11 +150,11 @@ class vmmDetails(gobject.GObject): + self.window.get_widget("details-pages").set_current_page(1) + + def close(self,ignore1=None,ignore2=None): +- self.window.get_widget("vmm-details").hide() ++ self.topwin.hide() + return 1 + + def is_visible(self): +- if self.window.get_widget("vmm-details").flags() & gtk.VISIBLE: ++ if self.topwin.flags() & gtk.VISIBLE: + return 1 + return 0 + +@@ -387,45 +391,109 @@ class vmmDetails(gobject.GObject): + self.window.get_widget("config-memory-apply").set_sensitive(False) + + ++ def add_cdrom(self, button): ++ return self.add_disk(True) ++ ++ def add_harddisk(self, button): ++ return self.add_disk(False) ++ ++ def add_disk(self, is_cdrom): ++ disks = self.disks_widget.get_disks() ++ unused_vdevs = xen.install.get_unused_vdevs(self.options.full_virt, disks) ++ if len(unused_vdevs) == 0: ++ return ++ name = self.vm.get_name() ++ ++ w = gtk.Window() ++ self.add_disk_window = w ++ w.set_modal(True) ++ w.set_transient_for(self.topwin) ++ w.set_title(xen.install.msg.title_disk) ++ self.disk_editor = xen.install.gui.DiskEditWidget() ++ disk_edit_widget = self.disk_editor.get_widget() ++ vbox = gtk.VBox() ++ w.add(vbox) ++ vbox.pack_start(disk_edit_widget, False) ++ bbox = gtk.HButtonBox() ++ bbox.set_layout(gtk.BUTTONBOX_END) ++ cancel_button = gtk.Button(stock=gtk.STOCK_CANCEL) ++ bbox.pack_start(cancel_button) ++ ok_button = gtk.Button(stock=gtk.STOCK_OK) ++ bbox.pack_start(ok_button) ++ vbox.pack_start(bbox, False) ++ ++ ok_button.connect("clicked", self.do_add_disk) ++ cancel_button.connect("clicked", self.do_cancel_disk) ++ ++ if is_cdrom: ++ cdrom = self.disk_editor.default_cdrom() ++ disk = xen.install.XenDisk(pdev=cdrom, vdev=unused_vdevs[0], ++ vdevType=xen.install.XenDisk.DEVICE_CDROM, ++ options=self.options, disk_group=disks) ++ else: ++ disk = xen.install.XenDisk(pdev=None, vdev=unused_vdevs[0], ++ vdevType=xen.install.XenDisk.DEVICE_DISK, ++ mb=4096, sparse=True, ++ options=self.options, disk_group=disks) ++ self.disk_editor.set(disk) ++ w.show_all() ++ w.present() ++ ++ def do_add_disk(self, button): ++ disks = self.disks_widget.get_disks() ++ disk = self.disk_editor.get() ++ self.xen_add_disk(disk) ++ disks.append(disk) ++ self.disks_widget.set_disks(disks) ++ self.add_disk_window.destroy() ++ ++ def do_cancel_disk(self, button): ++ self.add_disk_window.destroy() ++ ++ def xen_add_disk(self, disk): ++ disk.setup() ++ if self.vm.is_active(): ++ mode = 'w' ++ if disk.ro: ++ mode = 'r' ++ xfd = os.popen('xm block-attach %s "%s:%s" %s %s' % (self.vm.get_id(), disk.get_driver(), ++ disk.pdev, disk.vdev, mode)) ++ status = xfd.close() ++ else: ++ # FIXME ++ pass ++ ++ def xen_remove_disk(self, disk): ++ if self.vm.is_active(): ++ xfd = os.popen('xm block-detach %s %s -f' % (self.vm.get_id(), disk.vdev)) ++ status = xfd.close() ++ else: ++ # FIXME ++ pass + + def prepare_disk_list(self): +- disks = self.window.get_widget("storage-view") +- disksModel = gtk.TreeStore(str,str,str,str) +- disks.set_model(disksModel) +- +- diskType_col = gtk.TreeViewColumn("Type") +- diskType_text = gtk.CellRendererText() +- diskType_col.pack_start(diskType_text, True) +- diskType_col.add_attribute(diskType_text, 'text', 0) +- +- diskSrc_col = gtk.TreeViewColumn("Source") +- diskSrc_text = gtk.CellRendererText() +- diskSrc_col.pack_start(diskSrc_text, True) +- diskSrc_col.add_attribute(diskSrc_text, 'text', 1) +- +- diskDevice_col = gtk.TreeViewColumn("Device") +- diskDevice_text = gtk.CellRendererText() +- diskDevice_col.pack_start(diskDevice_text, True) +- diskDevice_col.add_attribute(diskDevice_text, 'text', 2) +- +- diskDst_col = gtk.TreeViewColumn(_("Destination")) +- diskDst_text = gtk.CellRendererText() +- diskDst_col.pack_start(diskDst_text, True) +- diskDst_col.add_attribute(diskDst_text, 'text', 3) +- +- disks.append_column(diskType_col) +- disks.append_column(diskSrc_col) +- disks.append_column(diskDevice_col) +- disks.append_column(diskDst_col) ++ self.disks_widget = xen.install.gui.DisksWidget(allow_reorder=False, ++ remove_fn=self.xen_remove_disk, ++ add_cdrom_fn=self.add_cdrom, ++ add_harddisk_fn=self.add_harddisk) ++ notebook = self.window.get_widget("hw-panel") ++ notebook.remove_page(2) ++ notebook.insert_page(self.disks_widget.get_widget(), None, 2) ++ class Options: ++ pass ++ self.options = Options() ++ self.options.full_virt = self.vm.vm.OSType() == 'hvm' ++ self.options.name = self.vm.get_name() + + def populate_disk_list(self): + diskList = self.vm.get_disk_devices() +- +- disks = self.window.get_widget("storage-view") +- disksModel = disks.get_model() +- disksModel.clear() ++ disks = [] + for d in diskList: +- disksModel.append(None, d) ++ disks.append(xen.install.XenDisk(d[1], d[3], options=self.options, ++ disk_group=disks)) ++ max_disks = len(xen.install.get_possible_vdevs(self.options.full_virt)) ++ self.disks_widget.set_max_disks(max_disks) ++ self.disks_widget.set_disks(disks) + + def prepare_network_list(self): + nets = self.window.get_widget("network-view") diff --git a/virtman-error.diff b/virtman-error.diff deleted file mode 100644 index 047229ae..00000000 --- a/virtman-error.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: virt-manager-0.3.0/src/vncViewer/vnc.py -=================================================================== ---- virt-manager-0.3.0.orig/src/vncViewer/vnc.py -+++ virt-manager-0.3.0/src/vncViewer/vnc.py -@@ -423,7 +423,7 @@ class GRFBViewer(gtk.DrawingArea): - - def set_autograb_keyboard(self, grab): - self.autograbkey = grab -- if grab == False and grabbedKeyboard: -+ if grab == False and self.grabbedKeyboard: - self.ungrab_keyboard() - - diff --git a/virtman-install.diff b/virtman-install.diff index 235bcea8..cca13074 100644 --- a/virtman-install.diff +++ b/virtman-install.diff @@ -1,17 +1,17 @@ -Index: virt-manager-0.3.0/src/virtManager/engine.py +Index: virt-manager-0.4.0/src/virtManager/engine.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/engine.py -+++ virt-manager-0.3.0/src/virtManager/engine.py -@@ -30,7 +30,7 @@ from virtManager.manager import vmmManag +--- virt-manager-0.4.0.orig/src/virtManager/engine.py ++++ virt-manager-0.4.0/src/virtManager/engine.py +@@ -32,7 +32,7 @@ from virtManager.manager import vmmManag from virtManager.details import vmmDetails from virtManager.console import vmmConsole from virtManager.asyncjob import vmmAsyncJob -from virtManager.create import vmmCreate -+from xen.install.gui import VMCreate as vmmCreate ++from xen.install.gui.gui import VMCreate as vmmCreate from virtManager.serialcon import vmmSerialConsole - - class vmmEngine: -@@ -38,7 +38,7 @@ class vmmEngine: + from virtManager.error import vmmErrorDialog + from virtManager.host import vmmHost +@@ -42,7 +42,7 @@ class vmmEngine: self.windowConnect = None self.windowPreferences = None self.windowAbout = None @@ -20,17 +20,17 @@ Index: virt-manager-0.3.0/src/virtManager/engine.py self.connections = {} self.timer = None -@@ -136,8 +136,7 @@ class vmmEngine: - ct += window.is_visible() - if conn["windowManager"]: - ct += conn["windowManager"].is_visible() +@@ -162,8 +162,7 @@ class vmmEngine: + for name in [ "windowManager", "windowHost"]: + if conn[name] != None and conn[name].is_visible(): + ct += 1 - if self.windowCreate: - ct += self.windowCreate.is_visible() + ct += len(filter(lambda w: w.is_visible(), self.windowCreate.values())) return ct def change_timer_interval(self,ignore1,ignore2,ignore3,ignore4): -@@ -245,13 +244,21 @@ class vmmEngine: +@@ -295,14 +294,21 @@ class vmmEngine: self.connections[uri]["windowManager"] = manager self.connections[uri]["windowManager"].show() @@ -42,6 +42,7 @@ Index: virt-manager-0.3.0/src/virtManager/engine.py - self.windowCreate = vmmCreate(self.get_config(), self.get_connection(uri, False)) - self.windowCreate.connect("action-show-console", self._do_show_console) - self.windowCreate.connect("action-show-terminal", self._do_show_terminal) +- self.windowCreate.connect("action-show-help", self._do_show_help) - self.windowCreate.reset_state() - self.windowCreate.show() + key = 0 @@ -56,5 +57,17 @@ Index: virt-manager-0.3.0/src/virtManager/engine.py + window.connect("vmmcreate-closing", self._create_closing) + window.show() - def get_connection(self, uri, readOnly=True): + def get_connection(self, uri, readOnly=None): if not(self.connections.has_key(uri)): +Index: virt-manager-0.4.0/src/virtManager/createnet.py +=================================================================== +--- virt-manager-0.4.0.orig/src/virtManager/createnet.py ++++ virt-manager-0.4.0/src/virtManager/createnet.py +@@ -22,7 +22,6 @@ import gtk + import gtk.gdk + import gtk.glade + import libvirt +-import virtinst + import os, sys + import logging + import dbus diff --git a/virtman-limit-popup.diff b/virtman-limit-popup.diff index 10ee1de9..b0c50aeb 100644 --- a/virtman-limit-popup.diff +++ b/virtman-limit-popup.diff @@ -1,31 +1,31 @@ -Index: virt-manager-0.3.0/src/virtManager/console.py +Index: virt-manager-0.4.0/src/virtManager/console.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/console.py -+++ virt-manager-0.3.0/src/virtManager/console.py -@@ -43,6 +43,7 @@ class vmmConsole(gobject.GObject): - self.window = gtk.glade.XML(config.get_glade_file(), "vmm-console", domain="virt-manager") +--- virt-manager-0.4.0.orig/src/virtManager/console.py ++++ virt-manager-0.4.0/src/virtManager/console.py +@@ -47,6 +47,7 @@ class vmmConsole(gobject.GObject): + self.window = gtk.glade.XML(config.get_glade_dir() + "/vmm-console.glade", "vmm-console", domain="virt-manager") self.config = config self.vm = vm + self.grab_notifications = 1 topwin = self.window.get_widget("vmm-console") sens = (self.window.get_widget("menubar2"), -@@ -118,6 +119,10 @@ class vmmConsole(gobject.GObject): +@@ -123,6 +124,10 @@ class vmmConsole(gobject.GObject): def notify_grabbed(self, src): topwin = self.window.get_widget("vmm-console") -+ topwin.set_title(_("Press Ctrl+Alt to release mouse.") + " " + self.title) ++ topwin.set_title(_("Press Ctrl+Alt to release pointer.") + " " + self.title) + if not self.grab_notifications: + return + self.grab_notifications -= 1 try: bus = dbus.SessionBus() noteSvr = bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") -@@ -136,7 +141,6 @@ class vmmConsole(gobject.GObject): +@@ -141,7 +146,6 @@ class vmmConsole(gobject.GObject): 5 * 1000); except Exception, e: pass -- topwin.set_title(_("Press Ctrl+Alt to release mouse.") + " " + self.title) +- topwin.set_title(_("Press Ctrl+Alt to release pointer.") + " " + self.title) def notify_ungrabbed(self, src): topwin = self.window.get_widget("vmm-console") diff --git a/virtman-no-ungrab.diff b/virtman-no-ungrab.diff deleted file mode 100644 index 17ed0b2a..00000000 --- a/virtman-no-ungrab.diff +++ /dev/null @@ -1,21 +0,0 @@ -Index: virt-manager-0.3.0/src/vncViewer/vnc.py -=================================================================== ---- virt-manager-0.3.0.orig/src/vncViewer/vnc.py -+++ virt-manager-0.3.0/src/vncViewer/vnc.py -@@ -482,11 +482,14 @@ class GRFBViewer(gtk.DrawingArea): - def key_press(self, win, event): - # Allow Ctrl+Alt+Esc to break the pointer grab - if self.will_autograb_pointer(): -- if event.state & gtk.gdk.CONTROL_MASK and event.state & gtk.gdk.MOD1_MASK and gtk.gdk.pointer_is_grabbed(): -+ if gtk.gdk.pointer_is_grabbed() and \ -+ ((event.state & gtk.gdk.CONTROL_MASK and -+ (event.keyval == gtk.keysyms.Alt_L or event.keyval == gtk.keysyms.Alt_R)) or -+ (event.state & gtk.gdk.MOD1_MASK and -+ (event.keyval == gtk.keysyms.Control_L or event.keyval == gtk.keysyms.Control_R))): - self.ungrab_pointer() - return - -- self.ungrab_pointer() - # Key handling in VNC is screwy. The event.keyval from GTK is - # interpreted relative to modifier state. This really messes - # up with VNC which has no concept of modifiers. If we interpret diff --git a/virtman-type-register.diff b/virtman-type-register.diff index fefa5fb5..8d812bd2 100644 --- a/virtman-type-register.diff +++ b/virtman-type-register.diff @@ -1,62 +1,62 @@ -Index: virt-manager-0.3.0/src/virtManager/connect.py +Index: virt-manager-0.4.0/src/virtManager/connect.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/connect.py -+++ virt-manager-0.3.0/src/virtManager/connect.py -@@ -102,4 +102,3 @@ class vmmConnect(gobject.GObject): +--- virt-manager-0.4.0.orig/src/virtManager/connect.py ++++ virt-manager-0.4.0/src/virtManager/connect.py +@@ -99,4 +99,3 @@ class vmmConnect(gobject.GObject): self.close() self.emit("completed", uri, readOnly) -gobject.type_register(vmmConnect) -Index: virt-manager-0.3.0/src/virtManager/connection.py +Index: virt-manager-0.4.0/src/virtManager/connection.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/connection.py -+++ virt-manager-0.3.0/src/virtManager/connection.py -@@ -242,5 +242,4 @@ class vmmConnection(gobject.GObject): +--- virt-manager-0.4.0.orig/src/virtManager/connection.py ++++ virt-manager-0.4.0/src/virtManager/connection.py +@@ -569,5 +569,4 @@ class vmmConnection(gobject.GObject): uuid.append('-') return "".join(uuid) -gobject.type_register(vmmConnection) -Index: virt-manager-0.3.0/src/virtManager/console.py +Index: virt-manager-0.4.0/src/virtManager/console.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/console.py -+++ virt-manager-0.3.0/src/virtManager/console.py -@@ -454,4 +454,3 @@ class vmmConsole(gobject.GObject): +--- virt-manager-0.4.0.orig/src/virtManager/console.py ++++ virt-manager-0.4.0/src/virtManager/console.py +@@ -486,4 +486,3 @@ class vmmConsole(gobject.GObject): self.ignorePause = False self.ignorePause = False -gobject.type_register(vmmConsole) -Index: virt-manager-0.3.0/src/virtManager/details.py +Index: virt-manager-0.4.0/src/virtManager/details.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/details.py -+++ virt-manager-0.3.0/src/virtManager/details.py -@@ -466,4 +466,3 @@ class vmmDetails(gobject.GObject): - for d in netList: - netsModel.append(None, d) +--- virt-manager-0.4.0.orig/src/virtManager/details.py ++++ virt-manager-0.4.0/src/virtManager/details.py +@@ -581,4 +581,3 @@ class vmmDetails(gobject.GObject): + self.addhw.show() + -gobject.type_register(vmmDetails) -Index: virt-manager-0.3.0/src/virtManager/domain.py +Index: virt-manager-0.4.0/src/virtManager/domain.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/domain.py -+++ virt-manager-0.3.0/src/virtManager/domain.py -@@ -510,4 +510,3 @@ class vmmDomain(gobject.GObject): +--- virt-manager-0.4.0.orig/src/virtManager/domain.py ++++ virt-manager-0.4.0/src/virtManager/domain.py +@@ -569,4 +569,3 @@ class vmmDomain(gobject.GObject): memory = int(memory) self.vm.setMaxMemory(memory) -gobject.type_register(vmmDomain) -Index: virt-manager-0.3.0/src/virtManager/manager.py +Index: virt-manager-0.4.0/src/virtManager/manager.py =================================================================== ---- virt-manager-0.3.0.orig/src/virtManager/manager.py -+++ virt-manager-0.3.0/src/virtManager/manager.py -@@ -597,4 +597,3 @@ class vmmManager(gobject.GObject): - data.reverse() - cell.set_property('data_array', data) +--- virt-manager-0.4.0.orig/src/virtManager/manager.py ++++ virt-manager-0.4.0/src/virtManager/manager.py +@@ -705,4 +705,3 @@ class vmmManager(gobject.GObject): + vm.resume() + -gobject.type_register(vmmManager) -Index: virt-manager-0.3.0/src/vncViewer/vnc.py +Index: virt-manager-0.4.0/src/vncViewer/vnc.py =================================================================== ---- virt-manager-0.3.0.orig/src/vncViewer/vnc.py -+++ virt-manager-0.3.0/src/vncViewer/vnc.py +--- virt-manager-0.4.0.orig/src/vncViewer/vnc.py ++++ virt-manager-0.4.0/src/vncViewer/vnc.py @@ -113,7 +113,6 @@ class GRFBFrameBuffer(rfb.RFBFrameBuffer def move_cursor(self, x, y): logging.error("Unsupported move_cursor operation requested") @@ -65,15 +65,15 @@ Index: virt-manager-0.3.0/src/vncViewer/vnc.py class GRFBNetworkClient(rfb.RFBNetworkClient, gobject.GObject): -@@ -166,7 +165,6 @@ class GRFBNetworkClient(rfb.RFBNetworkCl - - def update_pointer(self, mask, x, y): +@@ -177,7 +176,6 @@ class GRFBNetworkClient(rfb.RFBNetworkCl + if y < 0: + y = 0 self.send(pack('>BBHH', 5, mask, x, y)) -gobject.type_register(GRFBNetworkClient) class GRFBViewer(gtk.DrawingArea): -@@ -579,7 +577,6 @@ class GRFBViewer(gtk.DrawingArea): +@@ -598,7 +596,6 @@ class GRFBViewer(gtk.DrawingArea): gc = self.window.new_gc() self.window.draw_drawable(gc, self.fb.get_pixmap(), event.area.x, event.area.y, event.area.x, event.area.y, event.area.width, event.area.height) diff --git a/virtman-typo.diff b/virtman-typo.diff new file mode 100644 index 00000000..6830d1ec --- /dev/null +++ b/virtman-typo.diff @@ -0,0 +1,15 @@ +Index: virt-manager-0.4.0/src/vncViewer/vnc.py +=================================================================== +--- virt-manager-0.4.0.orig/src/vncViewer/vnc.py ++++ virt-manager-0.4.0/src/vncViewer/vnc.py +@@ -305,9 +305,7 @@ class GRFBViewer(gtk.DrawingArea): + return self.fb.get_name() + + def connect_to_host(self, host, port, debug=0): +- if self.client != None: +- self.disconnect_from_host() +- self.client = NOne ++ self.disconnect_from_host() + + client = GRFBNetworkClient(host, port, self.fb, debug=debug, preferred_encoding=self.preferred_encoding) + client.connect("disconnected", self._client_disconnected) diff --git a/virtman-wrong-port.diff b/virtman-wrong-port.diff new file mode 100644 index 00000000..afb67288 --- /dev/null +++ b/virtman-wrong-port.diff @@ -0,0 +1,18 @@ +Index: virt-manager-0.4.0/src/virtManager/domain.py +=================================================================== +--- virt-manager-0.4.0.orig/src/virtManager/domain.py ++++ virt-manager-0.4.0/src/virtManager/domain.py +@@ -434,11 +434,8 @@ class vmmDomain(gobject.GObject): + port = None + if type == "vnc": + port = self.get_xml_string("/domain/devices/graphics[@type='vnc']/@port") +- if port == None: +- port = 5900 + self.get_id() +- else: +- port = int(port) +- return [type, "127.0.0.1", port] ++ if port is not None: ++ return [type, "127.0.0.1", int(port)] + return [type, None, None] + + def get_disk_devices(self):