Francesco Romani has uploaded a new change for review. Change subject: vm: rename Vm._guestEvent ......................................................................
vm: rename Vm._guestEvent The _guestEvent field of Vm class is misleading. It does not track a "guest event", but rather sets a transient VM status which overrides the real VM status for a fixed amount of time. After the amount of time expires, the transient VM status is ignored, and the proper VM status is used. Research why this logic was introduced is still in progress; the most likely cause is to provide the correct information to Engine while lenghty operation (VM startup or powerdown) is in progress; should this lengthy operation fail, the transient nature provides automatic readjustement avoiding the need of proper recovering. However, the price to pay is increased complexity and more VM fields to track. This patch just renames the field to make their real purpose clearer. Change-Id: I9fd081830146840890cf22749b41eab4b06f31db Signed-off-by: Francesco Romani <from...@redhat.com> --- M vdsm/virt/vm.py 1 file changed, 15 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/45/61245/1 diff --git a/vdsm/virt/vm.py b/vdsm/virt/vm.py index 7c21eca..1135896 100644 --- a/vdsm/virt/vm.py +++ b/vdsm/virt/vm.py @@ -267,8 +267,8 @@ self._volPrepareLock = threading.Lock() self._initTimePauseCode = None self._initTimeRTC = int(self.conf.get('timeOffset', 0)) - self._guestEvent = vmstatus.POWERING_UP - self._guestEventTime = 0 + self._transient_status = vmstatus.POWERING_UP + self._transient_status_time = 0 self._guestCpuRunning = False self._guestCpuLock = threading.Lock() self._startTime = time.time() - \ @@ -658,8 +658,8 @@ try: self.log.info('reboot event') self._startTime = time.time() - self._guestEventTime = self._startTime - self._guestEvent = vmstatus.REBOOT_IN_PROGRESS + self._transient_status_time = self._startTime + self._transient_status = vmstatus.REBOOT_IN_PROGRESS self._powerDownEvent.set() self.saveState() # this always triggers onStatusChange event, which @@ -1070,13 +1070,13 @@ delay = int(delay) - self._guestEventTime = time.time() + self._transient_status_time = time.time() if reboot: - self._guestEvent = vmstatus.REBOOT_IN_PROGRESS + self._transient_status = vmstatus.REBOOT_IN_PROGRESS powerDown = VmReboot(self, delay, message, timeout, force, self._powerDownEvent) else: - self._guestEvent = vmstatus.POWERING_DOWN + self._transient_status = vmstatus.POWERING_DOWN powerDown = VmShutdown(self, delay, message, timeout, force, self._powerDownEvent) return powerDown.start() @@ -1312,16 +1312,17 @@ def _getVmStatus(self): def _getVmStatusFromGuest(): - GUEST_WAIT_TIMEOUT = 60 + TRANSIENT_STATUS_VALIDITY = 60 now = time.time() - if now - self._guestEventTime < 5 * GUEST_WAIT_TIMEOUT and \ - self._guestEvent == vmstatus.POWERING_DOWN: - return self._guestEvent + if (((now - self._transient_status_time) < + (5 * TRANSIENT_STATUS_VALIDITY) and + self._transient_status == vmstatus.POWERING_DOWN): + return self._transient_status if self.guestAgent and self.guestAgent.isResponsive() and \ self.guestAgent.getStatus(): return self.guestAgent.getStatus() - if now - self._guestEventTime < GUEST_WAIT_TIMEOUT: - return self._guestEvent + if now - self._transient_status_time < TRANSIENT_STATUS_VALIDITY: + return self._transient_status return vmstatus.UP statuses = (vmstatus.SAVING_STATE, vmstatus.RESTORING_STATE, @@ -1665,7 +1666,7 @@ supervdsm.getProxy().setPortMirroring(network, nic.name) - self._guestEventTime = self._startTime + self._transient_status_time = self._startTime try: self.guestAgent.start() except Exception: -- To view, visit https://gerrit.ovirt.org/61245 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9fd081830146840890cf22749b41eab4b06f31db Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Francesco Romani <from...@redhat.com> Gerrit-Reviewer: gerrit-hooks <automat...@ovirt.org> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/admin/lists/vdsm-patches@lists.fedorahosted.org