diff --git a/api/src/com/cloud/agent/api/CheckRouterAnswer.java b/api/src/com/cloud/agent/api/CheckRouterAnswer.java index 814b5cb124e..9590576a2e7 100644 --- a/api/src/com/cloud/agent/api/CheckRouterAnswer.java +++ b/api/src/com/cloud/agent/api/CheckRouterAnswer.java @@ -17,28 +17,44 @@ */ package com.cloud.agent.api; +import com.cloud.network.router.VirtualRouter.RedundantState; + public class CheckRouterAnswer extends Answer { public static final String ROUTER_NAME = "router.name"; public static final String ROUTER_IP = "router.ip"; - boolean isMaster; + RedundantState state; protected CheckRouterAnswer() { } - public CheckRouterAnswer(CheckRouterCommand cmd, boolean isMaster, String details) { + public CheckRouterAnswer(CheckRouterCommand cmd, String details, boolean parse) { super(cmd, true, details); - this.isMaster = isMaster; - } - - public CheckRouterAnswer(CheckRouterCommand cmd, String details) { - super(cmd, false, details); - } - - public boolean getIsMaster() { - return isMaster; + if (parse) { + parseDetails(details); + } } - public void setIsMaster(boolean isMaster) { - this.isMaster = isMaster; + public CheckRouterAnswer(CheckRouterCommand cmd, String details) { + super(cmd, false, details); } + + protected void parseDetails(String details) { + if (details.startsWith("Status: MASTER")) { + state = RedundantState.MASTER; + } else if (details.startsWith("Status: BACKUP")) { + state = RedundantState.BACKUP; + } else if (details.startsWith("Status: FAULT")) { + state = RedundantState.FAULT; + } else { + state = RedundantState.UNKNOWN; + } + } + + public void setState(RedundantState state) { + this.state = state; + } + + public RedundantState getState() { + return state; + } } diff --git a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java index 0d408ab2c17..a668dc1233e 100755 --- a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java +++ b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java @@ -423,16 +423,16 @@ public class VirtualRoutingResource implements Manager { return null; } - protected Answer execute(CheckRouterCommand cmd) { - final String routerPrivateIPAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP); + protected Answer execute(CheckRouterCommand cmd) { + final String routerPrivateIPAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP); + + final String result = getRouterStatus(routerPrivateIPAddress); + if (result == null || result.isEmpty()) { + return new CheckRouterAnswer(cmd, "CheckRouterCommand failed"); + } + return new CheckRouterAnswer(cmd, result, true); + } - final String result = getRouterStatus(routerPrivateIPAddress); - if (result == null || result.isEmpty()) { - return new CheckRouterAnswer(cmd, "CheckRouterCommand failed"); - } - return new CheckRouterAnswer(cmd, result.equals("Status: MASTER"), result); - } - protected Answer execute(final CheckConsoleProxyLoadCommand cmd) { return executeProxyLoadScan(cmd, cmd.getProxyVmId(), cmd.getProxyVmName(), cmd.getProxyManagementIp(), cmd.getProxyCmdPort()); } diff --git a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 309c9d26edb..cb085665079 100755 --- a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -926,7 +926,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa s_logger.error(msg); return new CheckRouterAnswer(cmd, msg); } - return new CheckRouterAnswer(cmd, result.second().startsWith("Status: MASTER"), result.second()); + return new CheckRouterAnswer(cmd, result.second(), true); } protected Answer execute(VmDataCommand cmd) { diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index b1267fefbaf..ca49908bdf7 100755 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -1219,7 +1219,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe if (result == null || result.isEmpty()) { return new CheckRouterAnswer(cmd, "CheckRouterCommand failed"); } - return new CheckRouterAnswer(cmd, result.equals("Status: MASTER"), result); + return new CheckRouterAnswer(cmd, result, true); } protected MaintainAnswer execute(MaintainCommand cmd) { diff --git a/scripts/network/domr/getRouterStatus.sh b/scripts/network/domr/getRouterStatus.sh index 1239d11d24a..4a6fb279cb1 100644 --- a/scripts/network/domr/getRouterStatus.sh +++ b/scripts/network/domr/getRouterStatus.sh @@ -28,12 +28,5 @@ then exit 1 fi -tmpfile=/tmp/$RANDOM.log - -scp -P 3922 -q -o StrictHostKeyChecking=no -i $cert root@$domRIp:/root/keepalived.log $tmpfile -if [ $? -ne 0 ] -then - exit $? -fi -result=`tail $tmpfile -n 1` -echo $result +ssh -p 3922 -q -o StrictHostKeyChecking=no -i $cert root@$domRIp "/root/checkrouter.sh" +exit $? diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index aa792b599fd..5e558399b35 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -799,17 +799,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian final CheckRouterAnswer answer = (CheckRouterAnswer) _agentMgr.easySend(router.getHostId(), command); RedundantState state = RedundantState.UNKNOWN; if (answer != null && answer.getResult()) { - if (answer.getIsMaster()) { - state = RedundantState.MASTER; - } else { - if (answer.getDetails() != null) { - if (answer.getDetails().startsWith("Status: BACKUP")) { - state = RedundantState.BACKUP; - } else if (answer.getDetails().startsWith("Status: FAULT")) { - state = RedundantState.FAULT; - } - } - } + state = answer.getState(); } router.setRedundantState(state); updated = true;