Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EF8C717E85 for ; Tue, 14 Oct 2014 18:15:31 +0000 (UTC) Received: (qmail 56028 invoked by uid 500); 14 Oct 2014 18:15:20 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 55983 invoked by uid 500); 14 Oct 2014 18:15:20 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 55282 invoked by uid 99); 14 Oct 2014 18:15:19 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Oct 2014 18:15:19 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id AFD8192DFC7; Tue, 14 Oct 2014 18:15:19 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dahn@apache.org To: commits@cloudstack.apache.org Date: Tue, 14 Oct 2014 18:15:39 -0000 Message-Id: <962b46bd6d7542ed8fdad864821a8f53@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [21/50] [abbrv] git commit: updated refs/heads/master to 771d052 adding applyStaticRoutes to the new visitor pattern. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/adebaf2b Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/adebaf2b Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/adebaf2b Branch: refs/heads/master Commit: adebaf2bd0b7e1e3734846385d589ca63dc38795 Parents: b96035f Author: wrodrigues Authored: Tue Aug 19 18:04:24 2014 +0200 Committer: wilderrodrigues Committed: Tue Oct 14 15:02:13 2014 +0200 ---------------------------------------------------------------------- .../element/VpcVirtualRouterElement.java | 5 +++- .../VpcVirtualNetworkApplianceManager.java | 8 ------ .../VpcVirtualNetworkApplianceManagerImpl.java | 29 ------------------- .../cloud/network/rules/StaticRoutesRules.java | 3 +- .../rules/VirtualNetworkApplianceFactory.java | 9 ++++++ .../topology/AdvancedNetworkTopology.java | 30 +++++++++++++++++--- .../topology/AdvancedNetworkVisitor.java | 10 +++++-- .../MockVpcVirtualNetworkApplianceManager.java | 9 ------ 8 files changed, 48 insertions(+), 55 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java index 5bc62c0..5504df3 100644 --- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java @@ -493,7 +493,10 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc return true; } - if (!_vpcRouterMgr.applyStaticRoutes(routes, routers)) { + DataCenterVO dcVO = _dcDao.findById(vpc.getZoneId()); + NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO); + + if (!networkTopology.applyStaticRoutes(routes, routers)) { throw new CloudRuntimeException("Failed to apply static routes in vpc " + vpc); } else { s_logger.debug("Applied static routes on vpc " + vpc); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java index db8a1dc..7aecba5 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java @@ -49,14 +49,6 @@ public interface VpcVirtualNetworkApplianceManager extends VirtualNetworkApplian boolean destroyPrivateGateway(PrivateGateway gateway, VirtualRouter router) throws ConcurrentOperationException, ResourceUnavailableException; /** - * @param routes - * @param routers - * @return - * @throws ResourceUnavailableException - */ - boolean applyStaticRoutes(List routes, List routers) throws ResourceUnavailableException; - - /** * @param conn * @param routers * @return http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 3295429..b358cd2 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -774,35 +774,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } } - @Override - public boolean applyStaticRoutes(final List staticRoutes, final List routers) throws ResourceUnavailableException { - if (staticRoutes == null || staticRoutes.isEmpty()) { - s_logger.debug("No static routes to apply"); - return true; - } - - boolean result = true; - for (VirtualRouter router : routers) { - if (router.getState() == State.Running) { - result = result && sendStaticRoutes(staticRoutes, routers.get(0)); - } else if (router.getState() == State.Stopped || router.getState() == State.Stopping) { - s_logger.debug("Router " + router.getInstanceName() + " is in " + router.getState() + ", so not sending StaticRoute command to the backend"); - } else { - s_logger.warn("Unable to apply StaticRoute, virtual router is not in the right state " + router.getState()); - - throw new ResourceUnavailableException("Unable to apply StaticRoute on the backend," + " virtual router is not in the right state", DataCenter.class, - router.getDataCenterId()); - } - } - return result; - } - - protected boolean sendStaticRoutes(final List staticRoutes, final DomainRouterVO router) throws ResourceUnavailableException { - Commands cmds = new Commands(Command.OnError.Continue); - createStaticRouteCommands(staticRoutes, router, cmds); - return _nwHelper.sendCommandsToRouter(router, cmds); - } - /** * @param staticRoutes * @param router http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/com/cloud/network/rules/StaticRoutesRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/StaticRoutesRules.java b/server/src/com/cloud/network/rules/StaticRoutesRules.java index f7c4de9..b94cea2 100644 --- a/server/src/com/cloud/network/rules/StaticRoutesRules.java +++ b/server/src/com/cloud/network/rules/StaticRoutesRules.java @@ -28,7 +28,6 @@ import com.cloud.dc.DataCenterVO; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.network.vpc.StaticRouteProfile; -import com.cloud.vm.DomainRouterVO; public class StaticRoutesRules extends RuleApplier { @@ -50,7 +49,7 @@ public class StaticRoutesRules extends RuleApplier { return visitor.visit(this); } - public void createStaticRouteCommands(final List staticRoutes, final DomainRouterVO router, final Commands cmds) { + public void createStaticRouteCommands(final List staticRoutes, final VirtualRouter router, final Commands cmds) { SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _networkHelper.getRouterControlIp(router.getId())); cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java index 4815cbf..2ea092d 100644 --- a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java +++ b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java @@ -41,6 +41,7 @@ import com.cloud.network.router.NetworkHelper; import com.cloud.network.router.RouterControlHelper; import com.cloud.network.router.VirtualNetworkApplianceManager; import com.cloud.network.vpc.NetworkACLItem; +import com.cloud.network.vpc.StaticRouteProfile; import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.dao.VpcDao; import com.cloud.offerings.dao.NetworkOfferingDao; @@ -303,4 +304,12 @@ public class VirtualNetworkApplianceFactory { return pvlanRules; } + + public StaticRoutesRules createStaticRoutesRules(List staticRoutes) { + StaticRoutesRules routesRules = new StaticRoutesRules(staticRoutes); + + initBeans(routesRules); + + return routesRules; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java index bea28cf..8cc47d2 100644 --- a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java +++ b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java @@ -41,6 +41,7 @@ import com.cloud.network.rules.NetworkAclsRules; import com.cloud.network.rules.NicPlugInOutRules; import com.cloud.network.rules.RuleApplier; import com.cloud.network.rules.RuleApplierWrapper; +import com.cloud.network.rules.StaticRoutesRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.VpcIpAssociationRules; import com.cloud.network.vpc.NetworkACLItem; @@ -60,10 +61,31 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { protected AdvancedNetworkVisitor _advancedVisitor; @Override - public boolean applyStaticRoutes(final List staticRoutes, - final List routers) throws ResourceUnavailableException { - // TODO Auto-generated method stub - return super.applyStaticRoutes(staticRoutes, routers); + public boolean applyStaticRoutes(final List staticRoutes, final List routers) throws ResourceUnavailableException { + + if (staticRoutes == null || staticRoutes.isEmpty()) { + s_logger.debug("No static routes to apply"); + return true; + } + + StaticRoutesRules routesRules = _virtualNetworkApplianceFactory.createStaticRoutesRules(staticRoutes); + + boolean result = true; + for (VirtualRouter router : routers) { + if (router.getState() == State.Running) { + + result = result && routesRules.accept(_advancedVisitor, router); + + } else if (router.getState() == State.Stopped || router.getState() == State.Stopping) { + s_logger.debug("Router " + router.getInstanceName() + " is in " + router.getState() + ", so not sending StaticRoute command to the backend"); + } else { + s_logger.warn("Unable to apply StaticRoute, virtual router is not in the right state " + router.getState()); + + throw new ResourceUnavailableException("Unable to apply StaticRoute on the backend," + " virtual router is not in the right state", DataCenter.class, + router.getDataCenterId()); + } + } + return result; } @Override http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java ---------------------------------------------------------------------- diff --git a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java index d1e5175..464dd1f 100644 --- a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java @@ -41,6 +41,7 @@ import com.cloud.network.rules.StaticRoutesRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.VpcIpAssociationRules; import com.cloud.network.vpc.NetworkACLItem; +import com.cloud.network.vpc.StaticRouteProfile; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; @@ -164,7 +165,12 @@ public class AdvancedNetworkVisitor extends BasicNetworkVisitor { @Override public boolean visit(final StaticRoutesRules staticRoutesRules) throws ResourceUnavailableException { - - return false; + final VirtualRouter router = staticRoutesRules.getRouter(); + List staticRoutes = staticRoutesRules.getStaticRoutes(); + + Commands cmds = new Commands(Command.OnError.Continue); + staticRoutesRules.createStaticRouteCommands(staticRoutes, router, cmds); + + return _networkGeneralHelper.sendCommandsToRouter(router, cmds); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/adebaf2b/server/test/com/cloud/vpc/MockVpcVirtualNetworkApplianceManager.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vpc/MockVpcVirtualNetworkApplianceManager.java b/server/test/com/cloud/vpc/MockVpcVirtualNetworkApplianceManager.java index 8802f9b..7153ed7 100644 --- a/server/test/com/cloud/vpc/MockVpcVirtualNetworkApplianceManager.java +++ b/server/test/com/cloud/vpc/MockVpcVirtualNetworkApplianceManager.java @@ -227,15 +227,6 @@ public class MockVpcVirtualNetworkApplianceManager extends ManagerBase implement } /* (non-Javadoc) - * @see com.cloud.network.router.VpcVirtualNetworkApplianceManager#applyStaticRoutes(java.util.List, java.util.List) - */ - @Override - public boolean applyStaticRoutes(final List routes, final List routers) throws ResourceUnavailableException { - // TODO Auto-generated method stub - return false; - } - - /* (non-Javadoc) * @see com.cloud.network.router.VpcVirtualNetworkApplianceManager#startSite2SiteVpn(com.cloud.network.Site2SiteVpnConnection, com.cloud.network.router.VirtualRouter) */ @Override