From adbcb06dd4785170d4c37f1cebd3ef4e90d13a0f Mon Sep 17 00:00:00 2001 From: Michael Weiser Date: Mon, 9 Dec 2019 22:53:14 +0100 Subject: [PATCH] virtManager: object: domain: Set time on unpause and revert 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. Reviewed-by: Cole Robinson Signed-off-by: Michael Weiser Suggested-by: Cole Robinson --- virtManager/object/domain.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py index 24c2ca756..bad7108ed 100644 --- a/virtManager/object/domain.py +++ b/virtManager/object/domain.py @@ -156,6 +156,11 @@ 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 +1049,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 +1381,7 @@ class vmmDomain(vmmLibvirtObject): @vmmLibvirtObject.lifecycle_action def resume(self): self._backend.resume() + self._set_time() @vmmLibvirtObject.lifecycle_action def save(self, meter=None):