From 2b632a5c9ab39b77890825cd9e7a9dffe2f370cb Mon Sep 17 00:00:00 2001 From: anthony Date: Thu, 30 Dec 2010 11:39:57 -0800 Subject: [PATCH] bug 7215: it may be caused by following result 1. there is no hosts up in this cluster, then there is no host we can send remove from pool command. 2. pool-eject failed in above cases, the host is still removed from cloudstack, and alert is sent out to require run pool-eject manually status 7215: resolved fixed --- server/src/com/cloud/agent/manager/AgentManagerImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index d6ae741b957..0d288507c58 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -89,7 +89,6 @@ import com.cloud.event.dao.EventDao; import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.DiscoveryException; import com.cloud.exception.InternalErrorException; -import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.UnsupportedVersionException; import com.cloud.ha.HighAvailabilityManager; @@ -542,10 +541,10 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { if (host.getType() == Type.Routing && host.getHypervisorType() == Hypervisor.Type.XenServer ) { if (host.getClusterId() != null) { List hosts = _hostDao.listBy(Type.Routing, host.getClusterId(), host.getPodId(), host.getDataCenterId()); + hosts.add(host); boolean success = true; for( HostVO thost: hosts ) { long thostId = thost.getId(); - if( thostId == hostId ) continue; PoolEjectCommand eject = new PoolEjectCommand(host.getGuid()); Answer answer = easySend(thostId, eject); @@ -560,7 +559,10 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { } } if( !success ){ - throw new CloudRuntimeException("Unable to delete host " + hostId + " due to unable to eject it from pool"); + String msg = "Unable to eject host " + host.getGuid() + " due to there is no host up in this cluster, please execute xe pool-eject host-uuid=" + + host.getGuid() + "in this host " + host.getPrivateIpAddress(); + s_logger.info(msg); + _alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(),"Unable to eject host " + host.getGuid(), msg); } } }