use of com.cloud.legacymodel.communication.command.FenceCommand in project cosmic by MissionCriticalCloud.
the class LibvirtComputingResourceTest method testFenceCommand.
@Test
public void testFenceCommand() {
final VirtualMachine vm = Mockito.mock(VirtualMachine.class);
final Host host = Mockito.mock(Host.class);
final FenceCommand command = new FenceCommand(vm, host);
final KvmHaMonitor monitor = Mockito.mock(KvmHaMonitor.class);
final NfsStoragePool storagePool = Mockito.mock(NfsStoragePool.class);
final List<NfsStoragePool> pools = new ArrayList<>();
pools.add(storagePool);
when(this.libvirtComputingResource.getMonitor()).thenReturn(monitor);
when(monitor.getStoragePools()).thenReturn(pools);
final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
assertNotNull(wrapper);
final Answer answer = wrapper.execute(command, this.libvirtComputingResource);
assertFalse(answer.getResult());
verify(this.libvirtComputingResource, times(1)).getMonitor();
verify(monitor, times(1)).getStoragePools();
}
use of com.cloud.legacymodel.communication.command.FenceCommand in project cosmic by MissionCriticalCloud.
the class XenServerFencer method fenceOff.
@Override
public Boolean fenceOff(final VirtualMachine vm, final Host host) {
if (host.getHypervisorType() != HypervisorType.XenServer) {
s_logger.debug("Don't know how to fence non XenServer hosts " + host.getHypervisorType());
return null;
}
final List<HostVO> hosts = _resourceMgr.listAllHostsInCluster(host.getClusterId());
final FenceCommand fence = new FenceCommand(vm, host);
for (final HostVO h : hosts) {
if (h.getHypervisorType() == HypervisorType.XenServer) {
if (h.getStatus() != HostStatus.Up) {
continue;
}
if (h.getId() == host.getId()) {
continue;
}
final FenceAnswer answer;
try {
final Answer ans = _agentMgr.send(h.getId(), fence);
if (!(ans instanceof FenceAnswer)) {
s_logger.debug("Answer is not fenceanswer. Result = " + ans.getResult() + "; Details = " + ans.getDetails());
continue;
}
answer = (FenceAnswer) ans;
} catch (final AgentUnavailableException e) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Moving on to the next host because " + h.toString() + " is unavailable");
}
continue;
} catch (final OperationTimedoutException e) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Moving on to the next host because " + h.toString() + " is unavailable");
}
continue;
}
if (answer != null && answer.getResult()) {
return true;
}
}
}
if (s_logger.isDebugEnabled()) {
s_logger.debug("Unable to fence off " + vm.toString() + " on " + host.toString());
}
return false;
}
use of com.cloud.legacymodel.communication.command.FenceCommand in project cosmic by MissionCriticalCloud.
the class XenServer56FP1WrapperTest method testFenceCommand.
@Test
public void testFenceCommand() {
final VMInstanceVO vm = Mockito.mock(VMInstanceVO.class);
final Host host = Mockito.mock(Host.class);
final Connection conn = Mockito.mock(Connection.class);
final FenceCommand fenceCommand = new FenceCommand(vm, host);
final CitrixRequestWrapper wrapper = CitrixRequestWrapper.getInstance();
assertNotNull(wrapper);
when(xenServer56Resource.getConnection()).thenReturn(conn);
final Answer answer = wrapper.execute(fenceCommand, xenServer56Resource);
verify(xenServer56Resource, times(1)).getConnection();
verify(xenServer56Resource, times(1)).checkHeartbeat(fenceCommand.getHostGuid());
assertFalse(answer.getResult());
}
use of com.cloud.legacymodel.communication.command.FenceCommand in project cosmic by MissionCriticalCloud.
the class XenServer56WrapperTest method testFenceCommand.
@Test
public void testFenceCommand() {
final VMInstanceVO vm = Mockito.mock(VMInstanceVO.class);
final Host host = Mockito.mock(Host.class);
final Connection conn = Mockito.mock(Connection.class);
final FenceCommand fenceCommand = new FenceCommand(vm, host);
final CitrixRequestWrapper wrapper = CitrixRequestWrapper.getInstance();
assertNotNull(wrapper);
when(this.xenServer56Resource.getConnection()).thenReturn(conn);
final Answer answer = wrapper.execute(fenceCommand, this.xenServer56Resource);
verify(this.xenServer56Resource, times(1)).getConnection();
verify(this.xenServer56Resource, times(1)).checkHeartbeat(fenceCommand.getHostGuid());
assertFalse(answer.getResult());
}
use of com.cloud.legacymodel.communication.command.FenceCommand 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