diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index b74c11cf1384..fb24853fdb5b 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -927,8 +927,14 @@ protected boolean handleDisconnectWithInvestigation(final AgentAttache attache, } handleDisconnectWithoutInvestigation(attache, event, true, true); host = _hostDao.findById(hostId); // Maybe the host magically reappeared? - if (host != null && host.getStatus() == Status.Down) { - _haMgr.scheduleRestartForVmsOnHost(host, true); + if (host != null) { + if (host.getStatus() == Status.Down) { + _haMgr.scheduleRestartForVmsOnHost(host, true); + } else { + if (HypervisorType.VMware.equals(host.getHypervisorType()) && host.getStatus() == Status.Alert) { + _haMgr.scheduleRestartForVmsOnHost(host, false); + } + } } return true; } diff --git a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java index 1b9b512118d7..f8142441b0b8 100644 --- a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java +++ b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java @@ -238,7 +238,7 @@ public void scheduleRestartForVmsOnHost(final HostVO host, boolean investigate) return; } - if (host.getHypervisorType() == HypervisorType.VMware || host.getHypervisorType() == HypervisorType.Hyperv) { + if (host.getHypervisorType() == HypervisorType.Hyperv) { s_logger.info("Don't restart VMs on host " + host.getId() + " as it is a " + host.getHypervisorType().toString() + " host"); return; } @@ -349,8 +349,8 @@ public void scheduleRestart(VMInstanceVO vm, boolean investigate) { } } - if (vm.getHypervisorType() == HypervisorType.VMware || vm.getHypervisorType() == HypervisorType.Hyperv) { - s_logger.info("Skip HA for VMware VM or Hyperv VM" + vm.getInstanceName()); + if (vm.getHypervisorType() == HypervisorType.Hyperv) { + s_logger.info("Skip HA for Hyperv VM" + vm.getInstanceName()); return; } @@ -394,11 +394,6 @@ public void scheduleRestart(VMInstanceVO vm, boolean investigate) { } } - if (vm.getHypervisorType() == HypervisorType.VMware) { - s_logger.info("Skip HA for VMware VM " + vm.getInstanceName()); - return; - } - List items = _haDao.findPreviousHA(vm.getId()); int timesTried = 0; for (HaWorkVO item : items) {