diff --git a/api/src/com/cloud/network/router/VirtualRouter.java b/api/src/com/cloud/network/router/VirtualRouter.java index d61adca6acd..8d7be36a9d2 100755 --- a/api/src/com/cloud/network/router/VirtualRouter.java +++ b/api/src/com/cloud/network/router/VirtualRouter.java @@ -32,7 +32,8 @@ public interface VirtualRouter extends VirtualMachine { public enum RedundantState { UNKNOWN, MASTER, - BACKUP + BACKUP, + FAULT } RedundantState getRedundantState(); } diff --git a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java index ff013881fe8..1ab72bb4edd 100755 --- a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java +++ b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java @@ -364,11 +364,10 @@ public class VirtualRoutingResource implements Manager { final String routerPrivateIPAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP); final String result = getRouterStatus(routerPrivateIPAddress); - CheckRouterAnswer answer = new CheckRouterAnswer(cmd, false, "Router return: " + result); - if (result != null) { - answer.setIsMaster(result.equals("Status: MASTER")); + if (result == null || result.isEmpty()) { + return new CheckRouterAnswer(cmd, "CheckRouterCommand failed"); } - return answer; + return new CheckRouterAnswer(cmd, result.equals("Status: MASTER"), result); } protected Answer execute(final CheckConsoleProxyLoadCommand cmd) { diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 09c9c1327aa..b7205b7531c 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -734,7 +734,11 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian if (answer.getIsMaster()) { router.setRedundantState(RedundantState.MASTER); } else { - router.setRedundantState(RedundantState.BACKUP); + if (answer.getDetails() != null && answer.getDetails().equals("Status: BACKUP")) { + router.setRedundantState(RedundantState.BACKUP); + } else { + router.setRedundantState(RedundantState.FAULT); + } } } else { router.setRedundantState(RedundantState.UNKNOWN);