Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
virt-manager.12547
virtman-vminstall.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File virtman-vminstall.patch of Package virt-manager.12547
Allow vm-install to be launched from virt-manager. Vm-install is considered a legacy installation tool since SLE12 and os13.2. This patch creates a pop-down menu to allow the selection of vm-install as the install tool. Vm-install is the required installation tool for s390 but is only a convenience for those still attached to using it instead of virt-install on x86. Index: virt-manager-1.2.1/ui/manager.ui =================================================================== --- virt-manager-1.2.1.orig/ui/manager.ui +++ virt-manager-1.2.1/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.2.1/virtManager/manager.py =================================================================== --- virt-manager-1.2.1.orig/virtManager/manager.py +++ virt-manager-1.2.1/virtManager/manager.py @@ -92,6 +92,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]), @@ -289,7 +290,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) @@ -474,6 +476,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.2.1/virtManager/vmmenu.py =================================================================== --- virt-manager-1.2.1.orig/virtManager/vmmenu.py +++ virt-manager-1.2.1/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.2.1/virtManager/config.py =================================================================== --- virt-manager-1.2.1.orig/virtManager/config.py +++ virt-manager-1.2.1/virtManager/config.py @@ -197,6 +197,13 @@ class vmmConfig(object): # General app wide helpers (gsettings 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.2.1/virtManager/engine.py =================================================================== --- virt-manager-1.2.1.orig/virtManager/engine.py +++ virt-manager-1.2.1/virtManager/engine.py @@ -27,6 +27,8 @@ import re import Queue import threading import traceback +import os +from subprocess import * from . import packageutils from .about import vmmAbout @@ -72,6 +74,7 @@ class vmmEngine(vmmGObject): self.windowCreate = None self.windowManager = None self.windowMigrate = None + self.remote_install = None self.conns = {} self.err = vmmErrorDialog() @@ -828,6 +831,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) @@ -870,11 +874,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() + 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:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor