use of com.cloud.legacymodel.communication.answer.FenceAnswer in project cosmic by MissionCriticalCloud.
the class KVMFencer method fenceOff.
@Override
public Boolean fenceOff(final VirtualMachine vm, final Host host) {
if (host.getHypervisorType() != HypervisorType.KVM) {
s_logger.warn("Don't know how to fence non kvm hosts " + host.getHypervisorType());
return null;
}
final List<HostVO> hosts = _resourceMgr.listAllHostsInCluster(host.getClusterId());
final FenceCommand fence = new FenceCommand(vm, host);
int i = 0;
for (final HostVO h : hosts) {
if (h.getHypervisorType() == HypervisorType.KVM) {
if (h.getStatus() != HostStatus.Up) {
continue;
}
i++;
if (h.getId() == host.getId()) {
continue;
}
final FenceAnswer answer;
try {
answer = (FenceAnswer) _agentMgr.send(h.getId(), fence);
} catch (final AgentUnavailableException e) {
s_logger.info("Moving on to the next host because " + h.toString() + " is unavailable");
continue;
} catch (final OperationTimedoutException e) {
s_logger.info("Moving on to the next host because " + h.toString() + " is unavailable");
continue;
}
if (answer != null && answer.getResult()) {
return true;
}
}
}
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Unable to fence off host: " + host.getId(), "Fencing off host " + host.getId() + " did not succeed after asking " + i + " hosts. " + "Check Agent logs for more information.");
s_logger.error("Unable to fence off " + vm.toString() + " on " + host.toString());
return false;
}
Aggregations