From 3ba15fe8139b232eac1dde48acc1fed117b0b0cd Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Wed, 14 Sep 2011 02:58:44 -0700 Subject: [PATCH] bug 11307: Add destroyRouter command --- .../cloud/network/VirtualNetworkApplianceService.java | 3 ++- client/tomcatconf/commands.properties.in | 1 + server/src/com/cloud/network/element/DhcpElement.java | 2 +- .../com/cloud/network/element/VirtualRouterElement.java | 4 ++-- .../network/router/VirtualNetworkApplianceManager.java | 2 -- .../router/VirtualNetworkApplianceManagerImpl.java | 9 ++++++--- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/api/src/com/cloud/network/VirtualNetworkApplianceService.java b/api/src/com/cloud/network/VirtualNetworkApplianceService.java index 05811c4d342..28947e12e07 100644 --- a/api/src/com/cloud/network/VirtualNetworkApplianceService.java +++ b/api/src/com/cloud/network/VirtualNetworkApplianceService.java @@ -52,5 +52,6 @@ public interface VirtualNetworkApplianceService{ VirtualRouter stopRouter(long routerId, boolean forced) throws ResourceUnavailableException, ConcurrentOperationException; VirtualRouter startRouter(StartRouterCmd cmd) throws ResourceUnavailableException, InsufficientCapacityException, ConcurrentOperationException; - + + VirtualRouter destroyRouter(long routerId) throws ResourceUnavailableException, ConcurrentOperationException; } diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in index 9f9f547a25a..94c97f30391 100755 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@ -134,6 +134,7 @@ updateLoadBalancerRule=com.cloud.api.commands.UpdateLoadBalancerRuleCmd;15 startRouter=com.cloud.api.commands.StartRouterCmd;7 rebootRouter=com.cloud.api.commands.RebootRouterCmd;7 stopRouter=com.cloud.api.commands.StopRouterCmd;7 +destroyRouter=com.cloud.api.commands.DestroyRouterCmd;7 changeServiceForRouter=com.cloud.api.commands.UpgradeRouterCmd;7 listRouters=com.cloud.api.commands.ListRoutersCmd;7 diff --git a/server/src/com/cloud/network/element/DhcpElement.java b/server/src/com/cloud/network/element/DhcpElement.java index 7719519204e..aaad390a607 100644 --- a/server/src/com/cloud/network/element/DhcpElement.java +++ b/server/src/com/cloud/network/element/DhcpElement.java @@ -166,7 +166,7 @@ public class DhcpElement extends AdapterBase implements NetworkElement, Password } boolean result = true; for (DomainRouterVO router : routers) { - result = result && _routerMgr.destroyRouter(router.getId()); + result = result && (_routerMgr.destroyRouter(router.getId()) != null); } return result; } diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index a0a09f1cb2f..2bba1b093c8 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -164,7 +164,7 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement, if (router.getState() != State.Stopped || _routerMgr.stopRouter(router.getId(), false) == null) { s_logger.warn("Failed to stop virtual router element " + router + " as a part of network " + network + " restart"); } - if (!_routerMgr.destroyRouter(router.getId())) { + if (_routerMgr.destroyRouter(router.getId()) == null) { s_logger.warn("Failed to destroy virtual router element " + router + " as a part of network " + network + " restart"); } } @@ -353,7 +353,7 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement, } boolean result = true; for (DomainRouterVO router : routers) { - result = result && _routerMgr.destroyRouter(router.getId()); + result = result && (_routerMgr.destroyRouter(router.getId()) != null); } return result; } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java index 700cf46bc27..4d68faece9a 100644 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java @@ -64,8 +64,6 @@ public interface VirtualNetworkApplianceManager extends Manager, VirtualNetworkA */ boolean savePasswordToRouter(Network network, NicProfile nic, VirtualMachineProfile profile, List routers) throws ResourceUnavailableException; - boolean destroyRouter(long routerId) throws ResourceUnavailableException, ConcurrentOperationException; - boolean getRouterStatistics(long vmId, Map netStats, Map diskStats); List getRouters(long accountId, long zoneId); diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 369e94fe0d4..3294e4cd7cf 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -356,7 +356,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian } @Override - public boolean destroyRouter(final long routerId) throws ResourceUnavailableException, ConcurrentOperationException { + public VirtualRouter destroyRouter(final long routerId) throws ResourceUnavailableException, ConcurrentOperationException { UserContext context = UserContext.current(); User user = _accountMgr.getActiveUser(context.getCallerUserId()); @@ -366,11 +366,14 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian DomainRouterVO router = _routerDao.findById(routerId); if (router == null) { - return true; + return null; } boolean result = _itMgr.expunge(router, user, _accountMgr.getAccount(router.getAccountId())); - return result; + if (result) { + return router; + } + return null; } @Override