[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