|
|
e2df08 |
From 44e60065c946ef0b8bca16fb58c87cd542ac9bf3 Mon Sep 17 00:00:00 2001
|
|
|
e2df08 |
From: Cole Robinson <crobinso@redhat.com>
|
|
|
e2df08 |
Date: Thu, 11 Sep 2014 18:01:41 -0400
|
|
|
e2df08 |
Subject: [PATCH 3/4] domain: Cache has_managed_save value
|
|
|
e2df08 |
|
|
|
e2df08 |
Otherwise we call it every time a domain row is selected, which makes
|
|
|
e2df08 |
things choppy on remote connections.
|
|
|
e2df08 |
|
|
|
e2df08 |
(cherry picked from commit b398a46e9bfcd192d9286d6edc81deade77bb1a8)
|
|
|
e2df08 |
---
|
|
|
e2df08 |
virtManager/details.py | 2 +-
|
|
|
e2df08 |
virtManager/domain.py | 32 +++++++++++++++++++++-----------
|
|
|
e2df08 |
virtManager/engine.py | 4 ++--
|
|
|
e2df08 |
virtManager/manager.py | 2 +-
|
|
|
e2df08 |
4 files changed, 25 insertions(+), 15 deletions(-)
|
|
|
e2df08 |
|
|
|
e2df08 |
diff --git a/virtManager/details.py b/virtManager/details.py
|
|
|
e2df08 |
index 9fae87a..e03048d 100644
|
|
|
e2df08 |
--- a/virtManager/details.py
|
|
|
e2df08 |
+++ b/virtManager/details.py
|
|
|
e2df08 |
@@ -1370,7 +1370,7 @@ class vmmDetails(vmmGObjectUI):
|
|
|
e2df08 |
ro = vm.is_read_only()
|
|
|
e2df08 |
|
|
|
e2df08 |
if vm.managedsave_supported:
|
|
|
e2df08 |
- self.change_run_text(vm.hasSavedImage())
|
|
|
e2df08 |
+ self.change_run_text(vm.has_managed_save())
|
|
|
e2df08 |
|
|
|
e2df08 |
self.widget("control-run").set_sensitive(run)
|
|
|
e2df08 |
self.widget("control-shutdown").set_sensitive(stop)
|
|
|
e2df08 |
diff --git a/virtManager/domain.py b/virtManager/domain.py
|
|
|
e2df08 |
index 4098e2d..9c3699f 100644
|
|
|
e2df08 |
--- a/virtManager/domain.py
|
|
|
e2df08 |
+++ b/virtManager/domain.py
|
|
|
e2df08 |
@@ -298,6 +298,7 @@ class vmmDomain(vmmLibvirtObject):
|
|
|
e2df08 |
self._is_management_domain = None
|
|
|
e2df08 |
self._id = None
|
|
|
e2df08 |
self._uuid = None
|
|
|
e2df08 |
+ self._has_managed_save = None
|
|
|
e2df08 |
self._snapshot_list = None
|
|
|
e2df08 |
|
|
|
e2df08 |
self.lastStatus = libvirt.VIR_DOMAIN_SHUTOFF
|
|
|
e2df08 |
@@ -361,6 +362,9 @@ class vmmDomain(vmmLibvirtObject):
|
|
|
e2df08 |
|
|
|
e2df08 |
self.force_update_status(from_event=True, log=False)
|
|
|
e2df08 |
|
|
|
e2df08 |
+ # Cache managed save value
|
|
|
e2df08 |
+ self.has_managed_save()
|
|
|
e2df08 |
+
|
|
|
e2df08 |
# Hook up listeners that need to be cleaned up
|
|
|
e2df08 |
self.add_gconf_handle(
|
|
|
e2df08 |
self.config.on_stats_enable_cpu_poll_changed(
|
|
|
e2df08 |
@@ -1377,20 +1381,25 @@ class vmmDomain(vmmLibvirtObject):
|
|
|
e2df08 |
self._backend.resume()
|
|
|
e2df08 |
self.idle_add(self.force_update_status)
|
|
|
e2df08 |
|
|
|
e2df08 |
- def hasSavedImage(self):
|
|
|
e2df08 |
+ def has_managed_save(self):
|
|
|
e2df08 |
if not self.managedsave_supported:
|
|
|
e2df08 |
return False
|
|
|
e2df08 |
- try:
|
|
|
e2df08 |
- return self._backend.hasManagedSaveImage(0)
|
|
|
e2df08 |
- except libvirt.libvirtError, e:
|
|
|
e2df08 |
- if not util.exception_is_libvirt_error(e, "VIR_ERR_NO_DOMAIN"):
|
|
|
e2df08 |
- raise
|
|
|
e2df08 |
- return False
|
|
|
e2df08 |
|
|
|
e2df08 |
- def removeSavedImage(self):
|
|
|
e2df08 |
- if not self.hasSavedImage():
|
|
|
e2df08 |
+ if self._has_managed_save is None:
|
|
|
e2df08 |
+ try:
|
|
|
e2df08 |
+ self._has_managed_save = self._backend.hasManagedSaveImage(0)
|
|
|
e2df08 |
+ except libvirt.libvirtError, e:
|
|
|
e2df08 |
+ if not util.exception_is_libvirt_error(e, "VIR_ERR_NO_DOMAIN"):
|
|
|
e2df08 |
+ raise
|
|
|
e2df08 |
+ return False
|
|
|
e2df08 |
+
|
|
|
e2df08 |
+ return self._has_managed_save
|
|
|
e2df08 |
+
|
|
|
e2df08 |
+ def remove_saved_image(self):
|
|
|
e2df08 |
+ if not self.has_managed_save():
|
|
|
e2df08 |
return
|
|
|
e2df08 |
self._backend.managedSaveRemove(0)
|
|
|
e2df08 |
+ self._has_managed_save = None
|
|
|
e2df08 |
|
|
|
e2df08 |
def save(self, filename=None, meter=None):
|
|
|
e2df08 |
self._install_abort = True
|
|
|
e2df08 |
@@ -1660,7 +1669,7 @@ class vmmDomain(vmmLibvirtObject):
|
|
|
e2df08 |
return self.status() in [libvirt.VIR_DOMAIN_PAUSED]
|
|
|
e2df08 |
|
|
|
e2df08 |
def run_status(self):
|
|
|
e2df08 |
- return self.pretty_run_status(self.status(), self.hasSavedImage())
|
|
|
e2df08 |
+ return self.pretty_run_status(self.status(), self.has_managed_save())
|
|
|
e2df08 |
|
|
|
e2df08 |
def run_status_reason(self):
|
|
|
e2df08 |
return self.pretty_status_reason(self.status(), self.status_reason())
|
|
|
e2df08 |
@@ -1707,6 +1716,7 @@ class vmmDomain(vmmLibvirtObject):
|
|
|
e2df08 |
self.lastStatus = status
|
|
|
e2df08 |
if self.domain_state_supported:
|
|
|
e2df08 |
self._lastStatusReason = self._backend.state()[1]
|
|
|
e2df08 |
+ self._has_managed_save = None
|
|
|
e2df08 |
|
|
|
e2df08 |
# Send 'config-changed' before a status-update, so users
|
|
|
e2df08 |
# are operating with fresh XML
|
|
|
e2df08 |
@@ -1958,7 +1968,7 @@ class vmmDomainVirtinst(vmmDomain):
|
|
|
e2df08 |
return self._backend.uuid
|
|
|
e2df08 |
def get_id(self):
|
|
|
e2df08 |
return -1
|
|
|
e2df08 |
- def hasSavedImage(self):
|
|
|
e2df08 |
+ def has_managed_save(self):
|
|
|
e2df08 |
return False
|
|
|
e2df08 |
|
|
|
e2df08 |
def _XMLDesc(self, flags):
|
|
|
e2df08 |
diff --git a/virtManager/engine.py b/virtManager/engine.py
|
|
|
e2df08 |
index 38d7e2d..588aae0 100644
|
|
|
e2df08 |
--- a/virtManager/engine.py
|
|
|
e2df08 |
+++ b/virtManager/engine.py
|
|
|
e2df08 |
@@ -1046,7 +1046,7 @@ class vmmEngine(vmmGObject):
|
|
|
e2df08 |
|
|
|
e2df08 |
logging.debug("Starting vm '%s'", vm.get_name())
|
|
|
e2df08 |
|
|
|
e2df08 |
- if vm.hasSavedImage():
|
|
|
e2df08 |
+ if vm.has_managed_save():
|
|
|
e2df08 |
def errorcb(error, details):
|
|
|
e2df08 |
# This is run from the main thread
|
|
|
e2df08 |
res = src.err.show_err(
|
|
|
e2df08 |
@@ -1064,7 +1064,7 @@ class vmmEngine(vmmGObject):
|
|
|
e2df08 |
return
|
|
|
e2df08 |
|
|
|
e2df08 |
try:
|
|
|
e2df08 |
- vm.removeSavedImage()
|
|
|
e2df08 |
+ vm.remove_saved_image()
|
|
|
e2df08 |
self._do_run_domain(src, uri, connkey)
|
|
|
e2df08 |
except Exception, e:
|
|
|
e2df08 |
src.err.show_err(_("Error removing domain state: %s")
|
|
|
e2df08 |
diff --git a/virtManager/manager.py b/virtManager/manager.py
|
|
|
e2df08 |
index 03d3ecc..9c0007a 100644
|
|
|
e2df08 |
--- a/virtManager/manager.py
|
|
|
e2df08 |
+++ b/virtManager/manager.py
|
|
|
e2df08 |
@@ -919,7 +919,7 @@ class vmmManager(vmmGObjectUI):
|
|
|
e2df08 |
show_shutdown = bool(vm and vm.is_stoppable())
|
|
|
e2df08 |
|
|
|
e2df08 |
if vm and vm.managedsave_supported:
|
|
|
e2df08 |
- self.change_run_text(vm.hasSavedImage())
|
|
|
e2df08 |
+ self.change_run_text(vm.has_managed_save())
|
|
|
e2df08 |
|
|
|
e2df08 |
self.widget("vm-open").set_sensitive(show_open)
|
|
|
e2df08 |
self.widget("vm-run").set_sensitive(show_run)
|
|
|
e2df08 |
--
|
|
|
e2df08 |
1.9.3
|
|
|
e2df08 |
|