mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
domain: Send 'oldstatus' in status-changed signal
We can then use this to hook up internal signal handlers to do needed things on status update (rather than bog down _update_status).
This commit is contained in:
@@ -759,7 +759,7 @@ class vmmDetails(gobject.GObject):
|
||||
if newpage == PAGE_CONSOLE or newpage >= PAGE_DYNAMIC_OFFSET:
|
||||
self.last_console_page = newpage
|
||||
|
||||
def update_widget_states(self, vm, status):
|
||||
def update_widget_states(self, vm, status, ignore=None):
|
||||
self.toggle_toolbar(self.window.get_widget("details-menu-view-toolbar"))
|
||||
|
||||
destroy = vm.is_destroyable()
|
||||
|
||||
@@ -63,7 +63,7 @@ class vmmDomainBase(vmmLibvirtObject):
|
||||
__gsignals__ = {
|
||||
"status-changed": (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE,
|
||||
[int]),
|
||||
[int, int]),
|
||||
"resources-sampled": (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE,
|
||||
[]),
|
||||
@@ -1149,7 +1149,7 @@ class vmmDomain(vmmDomainBase):
|
||||
def __init__(self, config, connection, backend, uuid):
|
||||
vmmDomainBase.__init__(self, config, connection, backend, uuid)
|
||||
|
||||
self.lastStatus = None
|
||||
self.lastStatus = libvirt.VIR_DOMAIN_SHUTOFF
|
||||
self.record = []
|
||||
self.maxRecord = { "diskRdRate" : 10.0,
|
||||
"diskWrRate" : 10.0,
|
||||
@@ -1174,6 +1174,10 @@ class vmmDomain(vmmDomainBase):
|
||||
self._active_xml_flags) = self.connection.get_dom_flags(
|
||||
self._backend)
|
||||
|
||||
# Hook up our own status listeners
|
||||
self.connect("status-changed", self._update_start_vcpus)
|
||||
self.connect("status-changed", self._check_install_status)
|
||||
|
||||
##########################
|
||||
# Internal virDomain API #
|
||||
##########################
|
||||
@@ -1759,6 +1763,20 @@ class vmmDomain(vmmDomainBase):
|
||||
# End XML Altering API #
|
||||
########################
|
||||
|
||||
def _update_start_vcpus(self, ignore, status, oldstatus):
|
||||
if oldstatus not in [ libvirt.VIR_DOMAIN_SHUTDOWN,
|
||||
libvirt.VIR_DOMAIN_SHUTOFF,
|
||||
libvirt.VIR_DOMAIN_CRASHED ]:
|
||||
return
|
||||
|
||||
# Want to track the startup vcpu amount, which is the
|
||||
# cap of how many VCPUs can be added
|
||||
self._startup_vcpus = None
|
||||
self.vcpu_max_count()
|
||||
|
||||
def _check_install_status(self, ignore, status, oldstatus):
|
||||
pass
|
||||
|
||||
def _update_status(self, status=None):
|
||||
if status == None:
|
||||
info = self.get_info()
|
||||
@@ -1766,16 +1784,10 @@ class vmmDomain(vmmDomainBase):
|
||||
status = self._normalize_status(status)
|
||||
|
||||
if status != self.lastStatus:
|
||||
if self.lastStatus in [ libvirt.VIR_DOMAIN_SHUTDOWN,
|
||||
libvirt.VIR_DOMAIN_SHUTOFF,
|
||||
libvirt.VIR_DOMAIN_CRASHED ]:
|
||||
|
||||
# Want to track the startup vcpu amount, which is the
|
||||
# cap of how many VCPUs can be added
|
||||
self._startup_vcpus = None
|
||||
self.vcpu_max_count()
|
||||
oldstatus = self.lastStatus
|
||||
self.lastStatus = status
|
||||
util.safe_idle_add(util.idle_emit, self, "status-changed", status)
|
||||
util.safe_idle_add(util.idle_emit, self, "status-changed",
|
||||
oldstatus, status)
|
||||
|
||||
|
||||
def tick(self, now):
|
||||
|
||||
@@ -937,7 +937,7 @@ class vmmManager(gobject.GObject):
|
||||
# State/UI updating methods #
|
||||
#############################
|
||||
|
||||
def vm_status_changed(self, vm, status):
|
||||
def vm_status_changed(self, vm, status, ignore):
|
||||
parent = self.rows[vm.get_connection().get_uri()].iter
|
||||
|
||||
vmlist = self.window.get_widget("vm-list")
|
||||
|
||||
@@ -72,7 +72,7 @@ class vmmSerialConsole(gtk.HBox):
|
||||
def handle_unrealize(self, src=None, ignore=None):
|
||||
self.closetty()
|
||||
|
||||
def vm_status_changed(self, src, status):
|
||||
def vm_status_changed(self, src, status, ignore):
|
||||
if status in [ libvirt.VIR_DOMAIN_RUNNING ]:
|
||||
self.opentty()
|
||||
else:
|
||||
|
||||
@@ -336,7 +336,7 @@ class vmmSystray(gobject.GObject):
|
||||
placeholder.set_sensitive(False)
|
||||
vm_menu.add(placeholder)
|
||||
|
||||
def vm_state_changed(self, vm, ignore=None):
|
||||
def vm_state_changed(self, vm, ignore=None, ignore2=None):
|
||||
menu_item = self._get_vm_menu_item(vm)
|
||||
if not menu_item:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user