virt-manager/virtman-vminstall.patch
Charles Arnold 47ffb48dd8 - Update to virt-manager 1.1.0
virt-manager-1.1.0.tar.bz2
  * Switch to libosinfo as OS metadata database (Giuseppe Scrivano)
  * Use libosinfo for OS detection from CDROM media labels (Giuseppe Scrivano)
  * Use libosinfo for improved OS defaults, like recommended disk size (Giuseppe Scrivano)
  * virt-image tool has been removed, as previously announced
  * Enable Hyper-V enlightenments for Windows VMs
  * Revert virtio-console default, back to plain serial console
  * Experimental q35 option in new VM ‘customize’ dialog
  * UI for virtual network QoS settings (Giuseppe Scrivano)
  * virt-install: –disk discard= support (Jim Minter)
  * addhardware: Add spiceport UI (Marc-André Lureau)
  * virt-install: –events on_poweroff etc. support (Chen Hanxiao)
  * cli –network portgroup= support and UI support
  * cli –boot initargs= and UI support
  * addhardware: allow setting controller model (Chen Hanxiao)
  * virt-install: support setting hugepage options (Chen Hanxiao)
- Drop upstream patches and old tarball
  virt-manager-1.0.1.tar.bz2
  5332ee4d-enable-media-detection-for-ISO-images.patch
  53341e7e-hide-hardware-removal-for-non-devices.patch
  53342f31-set-right-ip-address-for-ipv6.patch
  53375bad-raise-value-error-when-no-ipaddr-set.patch
  53388de2-show-port-number-for-active-autoport-VM.patch
  53397ae0-check-ip-address-format.patch
  53399b45-hook-into-domain-balloon-event.patch
  533d708d-fix-showing-vcpus-values.patch
  533d7602-fix-changing-graphics-type.patch
  533d7be7-clarify-iscsi-IQN-fields.patch
  5345682c-addstorage-remove-whitespace-for-storage-path.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=207
2014-10-29 17:03:15 +00:00

192 lines
8.0 KiB
Diff

Index: virt-manager-1.1.0/ui/manager.ui
===================================================================
--- virt-manager-1.1.0.orig/ui/manager.ui
+++ virt-manager-1.1.0/ui/manager.ui
@@ -277,7 +277,7 @@
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
<child>
- <object class="GtkToolButton" id="vm-new">
+ <object class="GtkMenuToolButton" id="vm-new">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
@@ -289,7 +289,6 @@
</object>
<packing>
<property name="expand">False</property>
- <property name="homogeneous">True</property>
</packing>
</child>
<child>
Index: virt-manager-1.1.0/virtManager/manager.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/virtManager/manager.py
@@ -93,6 +93,7 @@ class vmmManager(vmmGObjectUI):
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-show-create": (GObject.SignalFlags.RUN_FIRST, None, [str]),
+ "action-show-create-vminstall": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-suspend-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-resume-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-run-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
@@ -290,7 +291,8 @@ class vmmManager(vmmGObjectUI):
def init_toolbar(self):
- self.widget("vm-new").set_icon_name("vm_new")
+ vmmenu.build_new_button_menu(self.widget("vm-new"),
+ self.vminstall_new_vm)
self.widget("vm-open").set_icon_name("icon_console")
menu = vmmenu.VMShutdownMenu(self, self.current_vm)
@@ -475,6 +477,9 @@ class vmmManager(vmmGObjectUI):
def new_vm(self, src_ignore=None):
self.emit("action-show-create", self.current_conn_uri())
+ def vminstall_new_vm(self, src_ignore=None):
+ self.emit("action-show-create-vminstall", self.current_conn_uri())
+
def show_about(self, src_ignore):
self.emit("action-show-about")
Index: virt-manager-1.1.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.1.0/virtManager/vmmenu.py
@@ -19,9 +19,28 @@
#
from gi.repository import Gtk
+from virtManager import config
####################################################################
+# Build toolbar new button menu (manager and details toolbar) #
+####################################################################
+
+def build_new_button_menu(widget, vminstall_cb):
+ icon_name = config.running_config.get_new_icon_name()
+ widget.set_icon_name(icon_name)
+ menu = Gtk.Menu()
+ widget.set_menu(menu)
+
+ vminstallimg = Gtk.Image.new_from_icon_name(icon_name, Gtk.IconSize.MENU)
+
+ vminstall = Gtk.ImageMenuItem.new_with_mnemonic(_("_Vm-install"))
+ vminstall.set_image(vminstallimg)
+ vminstall.show()
+ vminstall.connect("activate", vminstall_cb)
+ menu.add(vminstall)
+
+####################################################################
# Build toolbar shutdown button menu (manager and details toolbar) #
####################################################################
Index: virt-manager-1.1.0/virtManager/config.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -190,6 +190,13 @@ class vmmConfig(object):
# General app wide helpers (gconf agnostic)
+ def get_new_icon_name(self):
+ theme = Gtk.IconTheme.get_default()
+ iconname = "vm_new"
+ if theme.has_icon(iconname):
+ return iconname
+ return "media-record"
+
def get_appname(self):
return self.appname
def get_appversion(self):
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -27,6 +27,8 @@ import re
import Queue
import threading
import traceback
+import os
+from subprocess import *
from virtinst import util
@@ -74,6 +76,7 @@ class vmmEngine(vmmGObject):
self.windowCreate = None
self.windowManager = None
self.windowMigrate = None
+ self.remote_install = None
self.conns = {}
self.err = vmmErrorDialog()
@@ -793,6 +796,7 @@ class vmmEngine(vmmGObject):
obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences)
obj.connect("action-show-create", self._do_show_create)
+ obj.connect("action-show-create-vminstall", self._do_show_create_vminstall)
obj.connect("action-show-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host)
obj.connect("action-show-connect", self._do_show_connect)
@@ -835,11 +839,52 @@ class vmmEngine(vmmGObject):
self.windowCreate = obj
return self.windowCreate
- def _do_show_create(self, src, uri):
- try:
- self._get_create_dialog().show(src.topwin, uri)
- except Exception, e:
- src.err.show_err(_("Error launching manager: %s") % str(e))
+ def _vmmcreate_closing(self,signal,key):
+ self.windowCreate = None
+
+ def _do_show_create_vminstall(self, src, uri):
+ self._do_show_create(src, uri, True)
+
+ def _do_show_create(self, src, uri, use_vminstall=False):
+ if uri is None:
+ uri = vmmConnect.default_uri(always_system=True)
+ conn = self._lookup_conn(uri)
+ do_remote = conn.is_remote()
+ if self.windowCreate == None or do_remote != self.remote_install:
+ try:
+ if do_remote or not use_vminstall:
+ self._get_create_dialog().show(src.topwin, uri)
+ self.remote_install = True
+ else:
+ if os.geteuid() == 0:
+ args = ['/usr/bin/vm-install']
+ logging.debug("Launching: %s" % str(args))
+ p = Popen(args)
+ self.windowCreate = None
+ self.remote_install = False
+ else:
+ from vminstall.msg import must_be_root
+ message_box = Gtk.MessageDialog(None,
+ Gtk.DialogFlags.MODAL,
+ Gtk.MessageType.WARNING,
+ Gtk.ButtonsType.OK,
+ must_be_root)
+ message_box.run()
+ message_box.destroy()
+ except Exception, e:
+ src.err.show_err(_("Error launching manager: %s") % str(e),
+ "".join(traceback.format_exc()))
+ else:
+ if do_remote:
+ self.windowCreate.show(src.topwin, uri)
+ else:
+ message_box = Gtk.MessageDialog(None,
+ Gtk.DialogFlags.MODAL,
+ Gtk.MessageType.WARNING,
+ Gtk.ButtonsType.OK,
+ _("A new installation is already in progress.\n\nUse the YaST \"Create Virtual Machines\" utility for concurrent installations."))
+ message_box.run()
+ message_box.destroy()
def _do_show_migrate(self, src, uri, connkey):
try: