From 441d9d765c19d215f2c7ccb4523f7322bc554542 Mon Sep 17 00:00:00 2001 From: alena Date: Wed, 17 Aug 2011 12:02:47 -0700 Subject: [PATCH] bug 11154: host can go in Maintenance state only after all vms are migrated from it status 11154: resolved fixed --- server/src/com/cloud/agent/manager/AgentMonitor.java | 3 ++- server/src/com/cloud/vm/dao/VMInstanceDao.java | 3 ++- server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/agent/manager/AgentMonitor.java b/server/src/com/cloud/agent/manager/AgentMonitor.java index f8cf87766aa..b7ba62af35b 100755 --- a/server/src/com/cloud/agent/manager/AgentMonitor.java +++ b/server/src/com/cloud/agent/manager/AgentMonitor.java @@ -138,7 +138,8 @@ public class AgentMonitor extends Thread implements Listener { if (host.getType() != Host.Type.Storage) { List vos = _vmDao.listByHostId(hostId); - if (vos.size() == 0) { + List vosMigrating = _vmDao.listVmsMigratingFromHost(hostId); + if (vos.isEmpty() && vosMigrating.isEmpty()) { _alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Migration Complete for host " + hostDesc, "Host [" + hostDesc + "] is ready for maintenance"); _hostDao.updateStatus(host, Event.PreparationComplete, _msId); } diff --git a/server/src/com/cloud/vm/dao/VMInstanceDao.java b/server/src/com/cloud/vm/dao/VMInstanceDao.java index 5c50d5692c0..80440bc15bf 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDao.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDao.java @@ -81,5 +81,6 @@ public interface VMInstanceDao extends GenericDao, StateDao< List listByAccountId(long accountId); public Long countAllocatedVirtualRoutersForAccount(long accountId); - List listByClusterId(long clusterId); + List listByClusterId(long clusterId); + List listVmsMigratingFromHost(Long hostId); } diff --git a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java index d25a394feb7..ef721783433 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -329,4 +329,12 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem sc.setParameters("state", new Object[] {State.Destroyed, State.Error, State.Expunging}); return customSearch(sc, null).get(0); } + + @Override + public List listVmsMigratingFromHost(Long hostId) { + SearchCriteria sc = AllFieldsSearch.create(); + sc.setParameters("lastHost", hostId); + sc.setParameters("state", State.Migrating); + return listBy(sc); + } }