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

Conflicts:

	server/src/com/cloud/agent/manager/AgentManagerImpl.java
This commit is contained in:
anthony 2010-12-30 11:50:13 -08:00
parent 236261c0a5
commit 65a55ff7b1
1 changed files with 8 additions and 7 deletions

View File

@ -107,6 +107,7 @@ import com.cloud.exception.ConnectionException;
import com.cloud.exception.DiscoveryException;
import com.cloud.exception.InsufficientServerCapacityException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.InternalErrorException;
import com.cloud.exception.OperationTimedoutException;
import com.cloud.exception.UnsupportedVersionException;
import com.cloud.ha.HighAvailabilityManager;
@ -866,13 +867,10 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
if (host.getType() == Type.Routing && host.getHypervisorType() == HypervisorType.XenServer ) {
if (host.getClusterId() != null) {
List<HostVO> 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;
}
long thostId = thost.getId();
PoolEjectCommand eject = new PoolEjectCommand(host.getGuid());
Answer answer = easySend(thostId, eject);
if( answer != null && answer.getResult()) {
@ -885,8 +883,11 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
}
}
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);
}
}
}
txn.start();