use of com.cloud.agent.api.CheckRouterAnswer in project cloudstack by apache.
the class LibvirtComputingResourceTest method testNetworkElementCommand.
@Test
public void testNetworkElementCommand() {
final CheckRouterCommand command = new CheckRouterCommand();
final VirtualRoutingResource virtRouterResource = Mockito.mock(VirtualRoutingResource.class);
when(libvirtComputingResource.getVirtRouterResource()).thenReturn(virtRouterResource);
when(virtRouterResource.executeRequest(command)).thenReturn(new CheckRouterAnswer(command, "mock_resource"));
final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
assertNotNull(wrapper);
final Answer answer = wrapper.execute(command, libvirtComputingResource);
assertFalse(answer.getResult());
}
use of com.cloud.agent.api.CheckRouterAnswer in project cloudstack by apache.
the class MockVmManagerImpl method checkRouter.
@Override
public CheckRouterAnswer checkRouter(final CheckRouterCommand cmd) {
final String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
final MockVm vm = _mockVmDao.findByVmName(router_name);
final String args = vm.getBootargs();
if (args.indexOf("router_pr=100") > 0) {
s_logger.debug("Router priority is for PRIMARY");
final CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: PRIMARY", true);
ans.setState(VirtualRouter.RedundantState.PRIMARY);
return ans;
} else {
s_logger.debug("Router priority is for BACKUP");
final CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: BACKUP", true);
ans.setState(VirtualRouter.RedundantState.BACKUP);
return ans;
}
}
use of com.cloud.agent.api.CheckRouterAnswer in project cosmic by MissionCriticalCloud.
the class LibvirtComputingResourceTest method testNetworkElementCommand.
@Test
public void testNetworkElementCommand() {
final CheckRouterCommand command = new CheckRouterCommand();
final VirtualRoutingResource virtRouterResource = Mockito.mock(VirtualRoutingResource.class);
when(libvirtComputingResource.getVirtRouterResource()).thenReturn(virtRouterResource);
when(virtRouterResource.executeRequest(command)).thenReturn(new CheckRouterAnswer(command, "mock_resource"));
final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
assertNotNull(wrapper);
final Answer answer = wrapper.execute(command, libvirtComputingResource);
assertFalse(answer.getResult());
}
use of com.cloud.agent.api.CheckRouterAnswer in project cosmic by MissionCriticalCloud.
the class VirtualNetworkApplianceManagerImpl method updateRoutersRedundantState.
protected void updateRoutersRedundantState(final DomainRouterVO router) {
boolean updated;
updated = false;
final RedundantState prevState = router.getRedundantState();
if (router.getState() != VirtualMachine.State.Starting && router.getState() != VirtualMachine.State.Running) {
router.setRedundantState(RedundantState.UNKNOWN);
updated = true;
} else {
final String privateIP = router.getPrivateIpAddress();
final HostVO host = _hostDao.findById(router.getHostId());
if (host == null || host.getState() != Status.Up) {
router.setRedundantState(RedundantState.UNKNOWN);
updated = true;
} else if (privateIP != null) {
final CheckRouterCommand command = new CheckRouterCommand();
command.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId()));
command.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
command.setWait(30);
final Answer origAnswer = _agentMgr.easySend(router.getHostId(), command);
CheckRouterAnswer answer = null;
if (origAnswer instanceof CheckRouterAnswer) {
answer = (CheckRouterAnswer) origAnswer;
} else {
s_logger.warn("Unable to update router " + router.getHostName() + "'s status");
}
RedundantState state = RedundantState.UNKNOWN;
if (answer != null) {
if (answer.getResult()) {
state = answer.getState();
} else {
s_logger.info("Agent response doesn't seem to be correct ==> " + answer.getResult());
}
}
router.setRedundantState(state);
updated = true;
}
}
if (updated) {
_routerDao.update(router.getId(), router);
}
final RedundantState currState = router.getRedundantState();
if (prevState != currState) {
final String title = "Virtual router " + router.getInstanceName() + " just switch from " + prevState + " to " + currState;
final String context = "Virtual router (name: " + router.getHostName() + ", id: " + router.getId() + ") " + " just switch from " + prevState + " to " + currState;
s_logger.info(context);
if (currState == RedundantState.MASTER) {
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_DOMAIN_ROUTER, router.getDataCenterId(), router.getPodIdToDeployIn(), title, context);
}
}
}
use of com.cloud.agent.api.CheckRouterAnswer in project cloudstack by apache.
the class VirtualNetworkApplianceManagerImpl method updateRoutersRedundantState.
protected void updateRoutersRedundantState(final List<DomainRouterVO> routers) {
boolean updated;
for (final DomainRouterVO router : routers) {
updated = false;
if (!router.getIsRedundantRouter()) {
continue;
}
final RedundantState prevState = router.getRedundantState();
if (router.getState() != VirtualMachine.State.Running) {
router.setRedundantState(RedundantState.UNKNOWN);
updated = true;
} else {
final String privateIP = router.getPrivateIpAddress();
final HostVO host = _hostDao.findById(router.getHostId());
if (host == null || host.getState() != Status.Up) {
router.setRedundantState(RedundantState.UNKNOWN);
updated = true;
} else if (privateIP != null) {
final CheckRouterCommand command = new CheckRouterCommand();
command.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId()));
command.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
command.setWait(30);
final Answer origAnswer = _agentMgr.easySend(router.getHostId(), command);
CheckRouterAnswer answer = null;
if (origAnswer instanceof CheckRouterAnswer) {
answer = (CheckRouterAnswer) origAnswer;
} else {
s_logger.warn("Unable to update router " + router.getHostName() + "'s status");
}
RedundantState state = RedundantState.UNKNOWN;
if (answer != null) {
if (answer.getResult()) {
state = answer.getState();
} else {
s_logger.info("Agent response doesn't seem to be correct ==> " + answer.getResult());
}
}
router.setRedundantState(state);
updated = true;
}
}
if (updated) {
_routerDao.update(router.getId(), router);
}
final RedundantState currState = router.getRedundantState();
if (prevState != currState) {
final String title = "Redundant virtual router " + router.getInstanceName() + " just switch from " + prevState + " to " + currState;
final String context = "Redundant virtual router (name: " + router.getHostName() + ", id: " + router.getId() + ") " + " just switch from " + prevState + " to " + currState;
s_logger.info(context);
if (currState == RedundantState.PRIMARY) {
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_DOMAIN_ROUTER, router.getDataCenterId(), router.getPodIdToDeployIn(), title, context);
}
}
}
}
Aggregations