[virt-tools-list] [RFC PATCH 4/4] virtManager: object: domain: Set time on unpause and revert
Michael Weiser
michael.weiser at gmx.de
Sat Nov 30 17:54:34 UTC 2019
Wire up setting of guest time on snapshot restore and resume from pause.
Do not try to set time if the restored snapshot does not contain a
running domain state.
Signed-off-by: Michael Weiser <michael.weiser at gmx.de>
Suggested-by: Cole Robinson <crobinso at redhat.com>
---
virtManager/object/domain.py | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
index 92ec1717..30e707e7 100644
--- a/virtManager/object/domain.py
+++ b/virtManager/object/domain.py
@@ -156,6 +156,9 @@ class vmmDomainSnapshot(vmmLibvirtObject):
log.debug("Unknown status %d, using NOSTATE", status)
status = libvirt.VIR_DOMAIN_NOSTATE
return LibvirtEnumMap.VM_STATUS_ICONS[status]
+ def is_running(self):
+ """Captured state is a running domain."""
+ return self._state_str_to_int() in [libvirt.VIR_DOMAIN_RUNNING]
def is_current(self):
return self._backend.isCurrent()
@@ -1044,7 +1047,14 @@ class vmmDomain(vmmLibvirtObject):
@vmmLibvirtObject.lifecycle_action
def revert_to_snapshot(self, snap):
+ # no use trying to set the guest time if is going to be switched off
+ # after reverting to the snapshot
+ target_run_state = snap.is_running()
self._backend.revertToSnapshot(snap.get_backend())
+ # looking at the domain state after revert will always come back as
+ # paused, so look at the snapshot state instead
+ if target_run_state == libvirt.VIR_DOMAIN_RUNNING:
+ self._set_time()
def create_snapshot(self, xml, redefine=False):
flags = 0
@@ -1369,6 +1379,7 @@ class vmmDomain(vmmLibvirtObject):
@vmmLibvirtObject.lifecycle_action
def resume(self):
self._backend.resume()
+ self._set_time()
@vmmLibvirtObject.lifecycle_action
def save(self, meter=None):
--
2.24.0
More information about the virt-tools-list
mailing list