Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 710930 Details for
Bug 847334
RFE: allow force hard reset of VMs
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
patch for adding force reset to shutdown menu
force_reset.patch (text/plain), 14.37 KB, created by
John Doyle
on 2013-03-16 00:35:58 UTC
(
hide
)
Description:
patch for adding force reset to shutdown menu
Filename:
MIME Type:
Creator:
John Doyle
Created:
2013-03-16 00:35:58 UTC
Size:
14.37 KB
patch
obsolete
>commit 1a030c447f750fe7791f4959caddaeeb13b569ae >Author: John Doyle <spdubhghaill@gmail.com> >Date: Sat Mar 16 10:17:20 2013 +1000 > > Add a force reset item to all shutdown menus > >diff --git a/src/virtManager/details.py b/src/virtManager/details.py >index 69be82b..2e3c8a3 100644 >--- a/src/virtManager/details.py >+++ b/src/virtManager/details.py >@@ -390,6 +390,7 @@ class vmmDetails(vmmGObjectUI): > "on_details_menu_poweroff_activate": self.control_vm_shutdown, > "on_details_menu_reboot_activate": self.control_vm_reboot, > "on_details_menu_save_activate": self.control_vm_save, >+ "on_details_menu_reset_activate": self.control_vm_reset, > "on_details_menu_destroy_activate": self.control_vm_destroy, > "on_details_menu_pause_activate": self.control_vm_pause, > "on_details_menu_clone_activate": self.control_vm_clone, >@@ -614,12 +615,14 @@ class vmmDetails(vmmGObjectUI): > uihelpers.build_shutdown_button_menu(self.widget("control-shutdown"), > self.control_vm_shutdown, > self.control_vm_reboot, >+ self.control_vm_reset, > self.control_vm_destroy, > self.control_vm_save) > > icon_name = self.config.get_shutdown_icon_name() > for name in ["details-menu-shutdown", > "details-menu-reboot", >+ "details-menu-reset", > "details-menu-poweroff", > "details-menu-destroy"]: > image = gtk.image_new_from_icon_name(icon_name, gtk.ICON_SIZE_MENU) >@@ -1562,6 +1565,10 @@ class vmmDetails(vmmGObjectUI): > self.emit("action-save-domain", > self.vm.conn.get_uri(), self.vm.get_uuid()) > >+ def control_vm_reset(self, src_ignore): >+ self.emit("action-reset-domain", >+ self.vm.conn.get_uri(), self.vm.get_uuid()) >+ > def control_vm_destroy(self, src_ignore): > self.emit("action-destroy-domain", > self.vm.conn.get_uri(), self.vm.get_uuid()) >@@ -3673,6 +3680,7 @@ class vmmDetails(vmmGObjectUI): > vmmGObjectUI.type_register(vmmDetails) > vmmDetails.signal_new(vmmDetails, "action-save-domain", [str, str]) > vmmDetails.signal_new(vmmDetails, "action-destroy-domain", [str, str]) >+vmmDetails.signal_new(vmmDetails, "action-reset-domain", [str, str]) > vmmDetails.signal_new(vmmDetails, "action-suspend-domain", [str, str]) > vmmDetails.signal_new(vmmDetails, "action-resume-domain", [str, str]) > vmmDetails.signal_new(vmmDetails, "action-run-domain", [str, str]) >diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py >index bd482cd..947cdf8 100644 >--- a/src/virtManager/domain.py >+++ b/src/virtManager/domain.py >@@ -1144,6 +1144,11 @@ class vmmDomain(vmmLibvirtObject): > self._backend.destroy() > self.idle_add(self.force_update_status) > >+ def reset(self): >+ self._install_abort = True >+ self._backend.reset(0) >+ self.idle_add(self.force_update_status) >+ > def startup(self): > if self.get_cloning(): > raise RuntimeError(_("Cannot start guest while cloning " >diff --git a/src/virtManager/engine.py b/src/virtManager/engine.py >index 82f9d58..deb2d75 100644 >--- a/src/virtManager/engine.py >+++ b/src/virtManager/engine.py >@@ -129,6 +129,7 @@ class vmmEngine(vmmGObject): > self.systray.connect("action-shutdown-domain", self._do_shutdown_domain) > self.systray.connect("action-reboot-domain", self._do_reboot_domain) > self.systray.connect("action-destroy-domain", self._do_destroy_domain) >+ self.systray.connect("action-reset-domain", self._do_reset_domain) > self.systray.connect("action-show-vm", self._do_show_vm) > self.systray.connect("action-exit-app", self.exit_app) > >@@ -575,6 +576,7 @@ class vmmEngine(vmmGObject): > obj = vmmDetails(con.get_vm(uuid)) > obj.connect("action-save-domain", self._do_save_domain) > obj.connect("action-destroy-domain", self._do_destroy_domain) >+ obj.connect("action-reset-domain", self._do_reset_domain) > obj.connect("action-show-help", self._do_show_help) > obj.connect("action-suspend-domain", self._do_suspend_domain) > obj.connect("action-resume-domain", self._do_resume_domain) >@@ -624,6 +626,7 @@ class vmmEngine(vmmGObject): > obj.connect("action-shutdown-domain", self._do_shutdown_domain) > obj.connect("action-reboot-domain", self._do_reboot_domain) > obj.connect("action-destroy-domain", self._do_destroy_domain) >+ obj.connect("action-reset-domain", self._do_reset_domain) > obj.connect("action-save-domain", self._do_save_domain) > obj.connect("action-migrate-domain", self._do_show_migrate) > obj.connect("action-clone-domain", self._do_show_clone) >@@ -962,6 +965,22 @@ class vmmEngine(vmmGObject): > > vmmAsyncJob.simple_async_noshow(reboot_cb, [], src, "") > >+ def _do_reset_domain(self, src, uri, uuid): >+ conn = self._lookup_conn(uri) >+ vm = conn.get_vm(uuid) >+ >+ if not util.chkbox_helper(src, self.config.get_confirm_forcepoweroff, >+ self.config.set_confirm_forcepoweroff, >+ text1=_("Are you sure you want to force reset '%s'?" % >+ vm.get_name()), >+ text2=_("This will immediately reset the VM without " >+ "shutting down the OS and may cause data loss.")): >+ return >+ >+ logging.debug("Resetting vm '%s'", vm.get_name()) >+ vmmAsyncJob.simple_async_noshow(vm.reset, [], src, >+ _("Error resetting domain")) >+ > vmmGObject.type_register(vmmEngine) > vmmEngine.signal_new(vmmEngine, "conn-added", [object]) > vmmEngine.signal_new(vmmEngine, "conn-removed", [str]) >diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py >index 41b5b64..1b79ae2 100644 >--- a/src/virtManager/manager.py >+++ b/src/virtManager/manager.py >@@ -265,6 +265,7 @@ class vmmManager(vmmGObjectUI): > uihelpers.build_shutdown_button_menu(self.widget("vm-shutdown"), > self.poweroff_vm, > self.reboot_vm, >+ self.reset_vm, > self.destroy_vm, > self.save_vm) > >@@ -285,6 +286,7 @@ class vmmManager(vmmGObjectUI): > reboot_icon = build_icon(icon_name) > shutdown_icon = build_icon(icon_name) > destroy_icon = build_icon(icon_name) >+ reset_icon = build_icon(icon_name) > run_icon = build_stock(gtk.STOCK_MEDIA_PLAY) > pause_icon = build_stock(gtk.STOCK_MEDIA_PAUSE) > save_icon = build_stock(gtk.STOCK_SAVE) >@@ -325,6 +327,8 @@ class vmmManager(vmmGObjectUI): > add_shutdown_menu("reboot", _("_Reboot"), reboot_icon, self.reboot_vm) > add_shutdown_menu("poweroff", _("_Shut Down"), shutdown_icon, > self.poweroff_vm) >+ add_shutdown_menu("forcereset", _("_Force Reset"), reset_icon, >+ self.reset_vm) > add_shutdown_menu("forcepoweroff", _("_Force Off"), destroy_icon, > self.destroy_vm) > add_sep(self.vmmenushutdown, self.vmmenushutdown_items, "sep") >@@ -610,6 +614,12 @@ class vmmManager(vmmGObjectUI): > self.emit("action-destroy-domain", > vm.conn.get_uri(), vm.get_uuid()) > >+ def reset_vm(self, ignore): >+ vm = self.current_vm() >+ if vm is not None: >+ self.emit("action-reset-domain", >+ vm.conn.get_uri(), vm.get_uuid()) >+ > def save_vm(self, ignore): > vm = self.current_vm() > if vm is not None: >@@ -1234,6 +1244,7 @@ vmmManager.signal_new(vmmManager, "action-run-domain", [str, str]) > vmmManager.signal_new(vmmManager, "action-shutdown-domain", [str, str]) > vmmManager.signal_new(vmmManager, "action-reboot-domain", [str, str]) > vmmManager.signal_new(vmmManager, "action-destroy-domain", [str, str]) >+vmmManager.signal_new(vmmManager, "action-reset-domain", [str, str]) > vmmManager.signal_new(vmmManager, "action-save-domain", [str, str]) > vmmManager.signal_new(vmmManager, "action-connect", [str]) > vmmManager.signal_new(vmmManager, "action-show-help", [str]) >diff --git a/src/virtManager/systray.py b/src/virtManager/systray.py >index b958bf0..f0f5616 100644 >--- a/src/virtManager/systray.py >+++ b/src/virtManager/systray.py >@@ -187,6 +187,13 @@ class vmmSystray(vmmGObject): > "action-shutdown-domain", vm.get_uuid()) > shutdown_item.show() > >+ reset_item = gtk.ImageMenuItem(_("_Force Reset")) >+ reset_img = gtk.image_new_from_icon_name(stop_icon, icon_size) >+ reset_item.set_image(reset_img) >+ reset_item.show() >+ reset_item.connect("activate", self.run_vm_action, >+ "action-reset-domain", vm.get_uuid()) >+ > destroy_item = gtk.ImageMenuItem(_("_Force Off")) > destroy_img = gtk.image_new_from_icon_name(stop_icon, icon_size) > destroy_item.set_image(destroy_img) >@@ -197,6 +204,7 @@ class vmmSystray(vmmGObject): > shutdown_menu = gtk.Menu() > shutdown_menu.add(reboot_item) > shutdown_menu.add(shutdown_item) >+ shutdown_menu.add(reset_item) > shutdown_menu.add(destroy_item) > shutdown_menu_item = gtk.ImageMenuItem(_("_Shut Down")) > shutdown_menu_img = gtk.image_new_from_icon_name(stop_icon, icon_size) >@@ -217,6 +225,7 @@ class vmmSystray(vmmGObject): > vm_action_dict["shutdown_menu"] = shutdown_menu_item > vm_action_dict["reboot"] = reboot_item > vm_action_dict["shutdown"] = shutdown_item >+ vm_action_dict["reset"] = reset_item > vm_action_dict["destroy"] = destroy_item > vm_action_dict["sep"] = sep > vm_action_dict["open"] = open_item >@@ -406,6 +415,7 @@ class vmmSystray(vmmGObject): > actions["shutdown_menu"].set_sensitive(vm.is_active()) > actions["shutdown"].set_sensitive(vm.is_stoppable()) > actions["reboot"].set_sensitive(vm.is_stoppable()) >+ actions["reset"].set_sensitive(vm.is_destroyable()) > actions["destroy"].set_sensitive(vm.is_destroyable()) > > actions["pause"].set_property("visible", not is_paused) >@@ -434,6 +444,7 @@ vmmSystray.signal_new(vmmSystray, "action-resume-domain", [str, str]) > vmmSystray.signal_new(vmmSystray, "action-run-domain", [str, str]) > vmmSystray.signal_new(vmmSystray, "action-shutdown-domain", [str, str]) > vmmSystray.signal_new(vmmSystray, "action-reboot-domain", [str, str]) >+vmmSystray.signal_new(vmmSystray, "action-reset-domain", [str, str]) > vmmSystray.signal_new(vmmSystray, "action-destroy-domain", [str, str]) > vmmSystray.signal_new(vmmSystray, "action-show-host", [str]) > vmmSystray.signal_new(vmmSystray, "action-show-vm", [str, str]) >diff --git a/src/virtManager/uihelpers.py b/src/virtManager/uihelpers.py >index b63c865..3832ab6 100644 >--- a/src/virtManager/uihelpers.py >+++ b/src/virtManager/uihelpers.py >@@ -840,7 +840,7 @@ def mediadev_set_default_selection(widget): > # Build toolbar shutdown button menu (manager and details toolbar) # > #################################################################### > >-def build_shutdown_button_menu(widget, shutdown_cb, reboot_cb, >+def build_shutdown_button_menu(widget, shutdown_cb, reboot_cb, reset_cb, > destroy_cb, save_cb): > icon_name = util.running_config.get_shutdown_icon_name() > widget.set_icon_name(icon_name) >@@ -849,6 +849,7 @@ def build_shutdown_button_menu(widget, shutdown_cb, reboot_cb, > > rebootimg = gtk.image_new_from_icon_name(icon_name, gtk.ICON_SIZE_MENU) > shutdownimg = gtk.image_new_from_icon_name(icon_name, gtk.ICON_SIZE_MENU) >+ resetimg = gtk.image_new_from_icon_name(icon_name, gtk.ICON_SIZE_MENU) > destroyimg = gtk.image_new_from_icon_name(icon_name, gtk.ICON_SIZE_MENU) > saveimg = gtk.image_new_from_icon_name(gtk.STOCK_SAVE, gtk.ICON_SIZE_MENU) > >@@ -864,6 +865,12 @@ def build_shutdown_button_menu(widget, shutdown_cb, reboot_cb, > shutdown.connect("activate", shutdown_cb) > menu.add(shutdown) > >+ reset = gtk.ImageMenuItem(_("_Force Reset")) >+ reset.set_image(resetimg) >+ reset.show() >+ reset.connect("activate", reset_cb) >+ menu.add(reset) >+ > destroy = gtk.ImageMenuItem(_("_Force Off")) > destroy.set_image(destroyimg) > destroy.show() >diff --git a/src/vmm-details.ui b/src/vmm-details.ui >index 565808c..f3004af 100644 >--- a/src/vmm-details.ui >+++ b/src/vmm-details.ui >@@ -110,6 +110,11 @@ > <property name="can_focus">False</property> > <property name="stock">gtk-missing-image</property> > </object> >+ <object class="GtkImage" id="image178"> >+ <property name="visible">True</property> >+ <property name="can_focus">False</property> >+ <property name="stock">gtk-missing-image</property> >+ </object> > <object class="GtkWindow" id="vmm-details"> > <property name="can_focus">False</property> > <property name="title" translatable="yes">Virtual Machine</property> >@@ -251,6 +256,18 @@ > </object> > </child> > <child> >+ <object class="GtkImageMenuItem" id="details-menu-reset"> >+ <property name="label" translatable="yes">F_orce Reset</property> >+ <property name="visible">True</property> >+ <property name="can_focus">False</property> >+ <property name="use_action_appearance">False</property> >+ <property name="use_underline">True</property> >+ <property name="image">image178</property> >+ <property name="use_stock">False</property> >+ <signal name="activate" handler="on_details_menu_reset_activate" swapped="no"/> >+ </object> >+ </child> >+ <child> > <object class="GtkImageMenuItem" id="details-menu-destroy"> > <property name="label" translatable="yes">_Force Off</property> > <property name="visible">True</property>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 847334
: 710930