From 474d1a6034330d3c87ce0ac9a0e427d2b7e95f85 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 | 3 ++- 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, 13 insertions(+), 10 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 73280121dec..9c01e9fc87f 100755 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@ -135,6 +135,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 @@ -277,4 +278,4 @@ listFirewallRules=com.cloud.api.commands.ListFirewallRulesCmd;15 #### hypervisor capabilities commands updateHypervisorCapabilities=com.cloud.api.commands.UpdateHypervisorCapabilitiesCmd;1 -listHypervisorCapabilities=com.cloud.api.commands.ListHypervisorCapabilitiesCmd;1 \ No newline at end of file +listHypervisorCapabilities=com.cloud.api.commands.ListHypervisorCapabilitiesCmd;1 diff --git a/server/src/com/cloud/network/element/DhcpElement.java b/server/src/com/cloud/network/element/DhcpElement.java index 6459cf2e98c..1eca0867ef4 100644 --- a/server/src/com/cloud/network/element/DhcpElement.java +++ b/server/src/com/cloud/network/element/DhcpElement.java @@ -167,7 +167,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 85f542eb159..1cd8034e2e2 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -165,7 +165,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"); } } @@ -361,7 +361,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 15d540c9e0d..b036628cb5e 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -354,7 +354,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()); @@ -364,11 +364,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