From 2e7f21dabc9ab38c70a3012ca2594e544c384d65 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Thu, 8 Dec 2011 14:42:06 -0800 Subject: [PATCH] Fix CheckRouterAnswer for redundant virtual router Also fix a router deployment issue. --- .../router/VirtualNetworkApplianceManagerImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 20471f80391..e81998b04f7 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -911,7 +911,13 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian command.setAccessDetail(NetworkElementCommand.ROUTER_IP, router.getPrivateIpAddress()); command.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); command.setWait(60); - final CheckRouterAnswer answer = (CheckRouterAnswer) _agentMgr.easySend(router.getHostId(), command); + 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; boolean isBumped = router.getIsPriorityBumpUp(); if (answer != null && answer.getResult()) { @@ -1330,7 +1336,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian private DomainRouterVO startVirtualRouter(DomainRouterVO router, User user, Account caller, Map params) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { - if (router.getRole() == Role.VIRTUAL_ROUTER || !router.getIsRedundantRouter()) { + if (router.getRole() != Role.VIRTUAL_ROUTER || !router.getIsRedundantRouter()) { return this.start(router, user, caller, params, null); }