adding new bean to spring context file; renaming package from "com" to "org"


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6852f312
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6852f312
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6852f312

Branch: refs/heads/vpc-refactor
Commit: 6852f312716fe400483714662e5589994517ccb7
Parents: ea34c11
Author: Wilder Rodrigues <wrodrig...@schubergphilis.com>
Authored: Thu Jul 17 10:00:02 2014 +0200
Committer: Wilder Rodrigues <wrodrig...@schubergphilis.com>
Committed: Fri Oct 3 06:21:26 2014 +0200

----------------------------------------------------------------------
 .../spring-server-core-managers-context.xml     |   3 +
 .../network/element/VirtualRouterElement.java   |   4 +-
 .../element/VpcVirtualRouterElement.java        |  81 +--
 .../network/router/NetworkGeneralHelper.java    |   2 +-
 .../VirtualNetworkApplianceManagerImpl.java     |   2 +-
 .../deployment/RouterDeploymentDefinition.java  | 530 -------------------
 .../RouterDeploymentDefinitionBuilder.java      | 188 -------
 .../VpcRouterDeploymentDefinition.java          | 241 ---------
 .../deployment/RouterDeploymentDefinition.java  | 530 +++++++++++++++++++
 .../RouterDeploymentDefinitionBuilder.java      | 188 +++++++
 .../VpcRouterDeploymentDefinition.java          | 241 +++++++++
 11 files changed, 1009 insertions(+), 1001 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
----------------------------------------------------------------------
diff --git 
a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 
b/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
index b6cfa16..37004d2 100644
--- 
a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
+++ 
b/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
@@ -209,6 +209,9 @@
     <bean id="vpcVirtualNetworkHelper"
         class="com.cloud.network.router.VpcVirtualNetworkHelperImpl" />
         
+    <bean id="routerDeploymentDefinitionBuilder"
+        
class="org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder" />
+
     <bean id="ApiAsyncJobDispatcher" 
class="com.cloud.api.ApiAsyncJobDispatcher">
         <property name="name" value="ApiAsyncJobDispatcher" />
     </bean>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java 
b/server/src/com/cloud/network/element/VirtualRouterElement.java
index 0ea6c18..4481a20 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -34,6 +34,8 @@ import 
org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.cloudstack.network.topology.NetworkTopology;
 import org.apache.cloudstack.network.topology.NetworkTopologyContext;
 import org.apache.log4j.Logger;
+import org.cloud.network.router.deployment.RouterDeploymentDefinition;
+import org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 
 import com.cloud.agent.api.to.LoadBalancerTO;
 import com.cloud.configuration.ConfigurationManager;
@@ -75,8 +77,6 @@ import com.cloud.network.lb.LoadBalancingRulesManager;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.router.VirtualRouter.Role;
 import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
-import com.cloud.network.router.deployment.RouterDeploymentDefinition;
-import com.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 import com.cloud.network.rules.FirewallRule;
 import com.cloud.network.rules.LbStickinessMethod;
 import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/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 77346c8..c1bfb9f 100644
--- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
@@ -24,9 +24,13 @@ import java.util.Set;
 import javax.ejb.Local;
 import javax.inject.Inject;
 
+import org.apache.cloudstack.network.topology.NetworkTopology;
 import org.apache.log4j.Logger;
+import org.cloud.network.router.deployment.RouterDeploymentDefinition;
+import org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 
 import com.cloud.dc.DataCenter;
+import com.cloud.dc.DataCenterVO;
 import com.cloud.deploy.DeployDestination;
 import com.cloud.exception.ConcurrentOperationException;
 import com.cloud.exception.InsufficientCapacityException;
@@ -50,8 +54,6 @@ import com.cloud.network.dao.Site2SiteVpnGatewayDao;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.router.VirtualRouter.Role;
 import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
-import com.cloud.network.router.deployment.RouterDeploymentDefinition;
-import com.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 import com.cloud.network.vpc.NetworkACLItem;
 import com.cloud.network.vpc.NetworkACLItemDao;
 import com.cloud.network.vpc.NetworkACLItemVO;
@@ -71,8 +73,8 @@ import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 
 @Local(value = {NetworkElement.class, FirewallServiceProvider.class, 
DhcpServiceProvider.class, UserDataServiceProvider.class, 
StaticNatServiceProvider.class,
-    LoadBalancingServiceProvider.class, PortForwardingServiceProvider.class, 
IpDeployer.class, VpcProvider.class, Site2SiteVpnServiceProvider.class,
-    NetworkACLServiceProvider.class})
+        LoadBalancingServiceProvider.class, 
PortForwardingServiceProvider.class, IpDeployer.class, VpcProvider.class, 
Site2SiteVpnServiceProvider.class,
+        NetworkACLServiceProvider.class})
 public class VpcVirtualRouterElement extends VirtualRouterElement implements 
VpcProvider, Site2SiteVpnServiceProvider, NetworkACLServiceProvider {
     private static final Logger s_logger = 
Logger.getLogger(VpcVirtualRouterElement.class);
     @Inject
@@ -100,7 +102,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     private static final Map<Service, Map<Capability, String>> capabilities = 
setCapabilities();
 
     @Override
-    protected boolean canHandle(Network network, Service service) {
+    protected boolean canHandle(final Network network, final Service service) {
         Long physicalNetworkId = _networkMdl.getPhysicalNetworkId(network);
         if (physicalNetworkId == null) {
             return false;
@@ -130,14 +132,14 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean implementVpc(Vpc vpc, DeployDestination dest, 
ReservationContext context) throws ConcurrentOperationException, 
ResourceUnavailableException,
-        InsufficientCapacityException {
+    public boolean implementVpc(final Vpc vpc, final DeployDestination dest, 
final ReservationContext context) throws ConcurrentOperationException, 
ResourceUnavailableException,
+    InsufficientCapacityException {
 
         Map<VirtualMachineProfile.Param, Object> params = new 
HashMap<VirtualMachineProfile.Param, Object>(1);
         params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
 
         RouterDeploymentDefinition routerDeploymentDefinition =
-                this.routerDeploymentDefinitionBuilder.create()
+                routerDeploymentDefinitionBuilder.create()
                 .setVpc(vpc)
                 .setDeployDestination(dest)
                 .setAccountOwner(_accountMgr.getAccount(vpc.getAccountId()))
@@ -150,21 +152,21 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean shutdownVpc(Vpc vpc, ReservationContext context) throws 
ConcurrentOperationException, ResourceUnavailableException {
+    public boolean shutdownVpc(final Vpc vpc, final ReservationContext 
context) throws ConcurrentOperationException, ResourceUnavailableException {
         List<DomainRouterVO> routers = _routerDao.listByVpcId(vpc.getId());
         if (routers == null || routers.isEmpty()) {
             return true;
         }
         boolean result = true;
         for (DomainRouterVO router : routers) {
-            result = result && (_routerMgr.destroyRouter(router.getId(), 
context.getAccount(), context.getCaller().getId()) != null);
+            result = result && _routerMgr.destroyRouter(router.getId(), 
context.getAccount(), context.getCaller().getId()) != null;
         }
         return result;
     }
 
     @Override
-    public boolean implement(Network network, NetworkOffering offering, 
DeployDestination dest, ReservationContext context) throws 
ResourceUnavailableException,
-        ConcurrentOperationException, InsufficientCapacityException {
+    public boolean implement(final Network network, final NetworkOffering 
offering, final DeployDestination dest, final ReservationContext context) 
throws ResourceUnavailableException,
+    ConcurrentOperationException, InsufficientCapacityException {
 
         Long vpcId = network.getVpcId();
         if (vpcId == null) {
@@ -182,7 +184,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
         params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
 
         RouterDeploymentDefinition routerDeploymentDefinition =
-                this.routerDeploymentDefinitionBuilder.create()
+                routerDeploymentDefinitionBuilder.create()
                 .setVpc(vpc)
                 .setDeployDestination(dest)
                 .setAccountOwner(_accountMgr.getAccount(vpc.getAccountId()))
@@ -191,7 +193,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
 
         List<DomainRouterVO> routers = 
routerDeploymentDefinition.deployVirtualRouter();
 
-        if ((routers == null) || (routers.size() == 0)) {
+        if (routers == null || routers.size() == 0) {
             throw new ResourceUnavailableException("Can't find at least one 
running router!", DataCenter.class, network.getDataCenterId());
         }
 
@@ -217,8 +219,8 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean prepare(Network network, NicProfile nic, 
VirtualMachineProfile vm, DeployDestination dest, ReservationContext context)
-        throws ConcurrentOperationException, InsufficientCapacityException, 
ResourceUnavailableException {
+    public boolean prepare(final Network network, final NicProfile nic, final 
VirtualMachineProfile vm, final DeployDestination dest, final 
ReservationContext context)
+            throws ConcurrentOperationException, 
InsufficientCapacityException, ResourceUnavailableException {
 
         Long vpcId = network.getVpcId();
         if (vpcId == null) {
@@ -237,7 +239,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
             params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, 
true);
 
             RouterDeploymentDefinition routerDeploymentDefinition =
-                    this.routerDeploymentDefinitionBuilder.create()
+                    routerDeploymentDefinitionBuilder.create()
                     .setVpc(vpc)
                     .setDeployDestination(dest)
                     
.setAccountOwner(_accountMgr.getAccount(vpc.getAccountId()))
@@ -245,7 +247,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
                     .build();
             List<DomainRouterVO> routers = 
routerDeploymentDefinition.deployVirtualRouter();
 
-            if ((routers == null) || (routers.size() == 0)) {
+            if (routers == null || routers.size() == 0) {
                 throw new ResourceUnavailableException("Can't find at least 
one running router!", DataCenter.class, network.getDataCenterId());
             }
 
@@ -273,7 +275,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean shutdown(Network network, ReservationContext context, 
boolean cleanup) throws ConcurrentOperationException, 
ResourceUnavailableException {
+    public boolean shutdown(final Network network, final ReservationContext 
context, final boolean cleanup) throws ConcurrentOperationException, 
ResourceUnavailableException {
         boolean success = true;
         Long vpcId = network.getVpcId();
         if (vpcId == null) {
@@ -301,7 +303,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean destroy(Network config, ReservationContext context) throws 
ConcurrentOperationException, ResourceUnavailableException {
+    public boolean destroy(final Network config, final ReservationContext 
context) throws ConcurrentOperationException, ResourceUnavailableException {
         boolean success = true;
         Long vpcId = config.getVpcId();
         if (vpcId == null) {
@@ -364,7 +366,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean createPrivateGateway(PrivateGateway gateway) throws 
ConcurrentOperationException, ResourceUnavailableException {
+    public boolean createPrivateGateway(final PrivateGateway gateway) throws 
ConcurrentOperationException, ResourceUnavailableException {
         if (gateway.getType() != VpcGateway.Type.Private) {
             s_logger.warn("Type of vpc gateway is not " + 
VpcGateway.Type.Private);
             return false;
@@ -373,7 +375,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
         List<DomainRouterVO> routers = 
_vpcRouterMgr.getVpcRouters(gateway.getVpcId());
         if (routers == null || routers.isEmpty()) {
             s_logger.debug(getName() + " element doesn't need to create 
Private gateway on the backend; VPC virtual " + "router doesn't exist in the 
vpc id=" +
-                gateway.getVpcId());
+                    gateway.getVpcId());
             return true;
         }
 
@@ -402,7 +404,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean deletePrivateGateway(PrivateGateway gateway) throws 
ConcurrentOperationException, ResourceUnavailableException {
+    public boolean deletePrivateGateway(final PrivateGateway gateway) throws 
ConcurrentOperationException, ResourceUnavailableException {
         if (gateway.getType() != VpcGateway.Type.Private) {
             s_logger.warn("Type of vpc gateway is not " + 
VpcGateway.Type.Private);
             return false;
@@ -411,7 +413,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
         List<DomainRouterVO> routers = 
_vpcRouterMgr.getVpcRouters(gateway.getVpcId());
         if (routers == null || routers.isEmpty()) {
             s_logger.debug(getName() + " element doesn't need to delete 
Private gateway on the backend; VPC virtual " + "router doesn't exist in the 
vpc id=" +
-                gateway.getVpcId());
+                    gateway.getVpcId());
             return true;
         }
 
@@ -425,7 +427,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean applyIps(Network network, List<? extends PublicIpAddress> 
ipAddress, Set<Service> services) throws ResourceUnavailableException {
+    public boolean applyIps(final Network network, final List<? extends 
PublicIpAddress> ipAddress, final Set<Service> services) throws 
ResourceUnavailableException {
         boolean canHandle = true;
         for (Service service : services) {
             if (!canHandle(network, service)) {
@@ -437,10 +439,13 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
             List<DomainRouterVO> routers = 
_routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
             if (routers == null || routers.isEmpty()) {
                 s_logger.debug(getName() + " element doesn't need to associate 
ip addresses on the backend; VPC virtual " + "router doesn't exist in the 
network " +
-                    network.getId());
+                        network.getId());
                 return true;
             }
 
+            DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId());
+            NetworkTopology networkTopology = 
networkTopologyContext.retrieveNetworkTopology(dcVO);
+
             return _vpcRouterMgr.associatePublicIP(network, ipAddress, 
routers);
         } else {
             return false;
@@ -448,12 +453,12 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean applyNetworkACLs(Network config, List<? extends 
NetworkACLItem> rules) throws ResourceUnavailableException {
+    public boolean applyNetworkACLs(final Network config, final List<? extends 
NetworkACLItem> rules) throws ResourceUnavailableException {
         if (canHandle(config, Service.NetworkACL)) {
             List<DomainRouterVO> routers = 
_routerDao.listByNetworkAndRole(config.getId(), Role.VIRTUAL_ROUTER);
             if (routers == null || routers.isEmpty()) {
                 s_logger.debug("Virtual router elemnt doesn't need to apply 
firewall rules on the backend; virtual " + "router doesn't exist in the network 
" +
-                    config.getId());
+                        config.getId());
                 return true;
             }
 
@@ -478,7 +483,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean applyStaticRoutes(Vpc vpc, List<StaticRouteProfile> routes) 
throws ResourceUnavailableException {
+    public boolean applyStaticRoutes(final Vpc vpc, final 
List<StaticRouteProfile> routes) throws ResourceUnavailableException {
         List<DomainRouterVO> routers = _routerDao.listByVpcId(vpc.getId());
         if (routers == null || routers.isEmpty()) {
             s_logger.debug("Virtual router elemnt doesn't need to static 
routes on the backend; virtual " + "router doesn't exist in the vpc " + vpc);
@@ -494,14 +499,14 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean applyACLItemsToPrivateGw(PrivateGateway gateway, List<? 
extends NetworkACLItem> rules) throws ResourceUnavailableException {
+    public boolean applyACLItemsToPrivateGw(final PrivateGateway gateway, 
final List<? extends NetworkACLItem> rules) throws ResourceUnavailableException 
{
         Network config = _networkDao.findById(gateway.getNetworkId());
         boolean isPrivateGateway = true;
 
         List<DomainRouterVO> routers = 
_vpcRouterMgr.getVpcRouters(gateway.getVpcId());
         if (routers == null || routers.isEmpty()) {
             s_logger.debug("Virtual router element doesn't need to apply 
network acl rules on the backend; virtual " + "router doesn't exist in the 
network " +
-                config.getId());
+                    config.getId());
             return true;
         }
 
@@ -513,7 +518,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean startSite2SiteVpn(Site2SiteVpnConnection conn) throws 
ResourceUnavailableException {
+    public boolean startSite2SiteVpn(final Site2SiteVpnConnection conn) throws 
ResourceUnavailableException {
         Site2SiteVpnGateway vpnGw = 
_vpnGatewayDao.findById(conn.getVpnGatewayId());
         IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId());
 
@@ -533,14 +538,14 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
         List<DomainRouterVO> routers = 
_vpcRouterMgr.getVpcRouters(ip.getVpcId());
         if (routers == null || routers.size() != 1) {
             throw new ResourceUnavailableException("Cannot enable site-to-site 
VPN on the backend; virtual router doesn't exist in the vpc " + ip.getVpcId(),
-                DataCenter.class, vpc.getZoneId());
+                    DataCenter.class, vpc.getZoneId());
         }
 
         return _vpcRouterMgr.startSite2SiteVpn(conn, routers.get(0));
     }
 
     @Override
-    public boolean stopSite2SiteVpn(Site2SiteVpnConnection conn) throws 
ResourceUnavailableException {
+    public boolean stopSite2SiteVpn(final Site2SiteVpnConnection conn) throws 
ResourceUnavailableException {
         Site2SiteVpnGateway vpnGw = 
_vpnGatewayDao.findById(conn.getVpnGatewayId());
         IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId());
 
@@ -560,14 +565,14 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
         List<DomainRouterVO> routers = 
_vpcRouterMgr.getVpcRouters(ip.getVpcId());
         if (routers == null || routers.size() != 1) {
             throw new ResourceUnavailableException("Cannot enable site-to-site 
VPN on the backend; virtual router doesn't exist in the vpc " + ip.getVpcId(),
-                DataCenter.class, vpc.getZoneId());
+                    DataCenter.class, vpc.getZoneId());
         }
 
         return _vpcRouterMgr.stopSite2SiteVpn(conn, routers.get(0));
     }
 
     @Override
-    public String[] applyVpnUsers(RemoteAccessVpn vpn, List<? extends VpnUser> 
users) throws ResourceUnavailableException {
+    public String[] applyVpnUsers(final RemoteAccessVpn vpn, final List<? 
extends VpnUser> users) throws ResourceUnavailableException {
         if (vpn.getVpcId() == null) {
             return null;
         }
@@ -581,7 +586,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean startVpn(RemoteAccessVpn vpn) throws 
ResourceUnavailableException {
+    public boolean startVpn(final RemoteAccessVpn vpn) throws 
ResourceUnavailableException {
         if (vpn.getVpcId() == null) {
             return false;
         }
@@ -595,7 +600,7 @@ public class VpcVirtualRouterElement extends 
VirtualRouterElement implements Vpc
     }
 
     @Override
-    public boolean stopVpn(RemoteAccessVpn vpn) throws 
ResourceUnavailableException {
+    public boolean stopVpn(final RemoteAccessVpn vpn) throws 
ResourceUnavailableException {
         if (vpn.getVpcId() == null) {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/src/com/cloud/network/router/NetworkGeneralHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/NetworkGeneralHelper.java 
b/server/src/com/cloud/network/router/NetworkGeneralHelper.java
index 4b331f7..fc249aa 100644
--- a/server/src/com/cloud/network/router/NetworkGeneralHelper.java
+++ b/server/src/com/cloud/network/router/NetworkGeneralHelper.java
@@ -27,6 +27,7 @@ import javax.inject.Inject;
 
 import 
org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
 import org.apache.log4j.Logger;
+import org.cloud.network.router.deployment.RouterDeploymentDefinition;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.Answer;
@@ -68,7 +69,6 @@ import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.dao.UserIpv6AddressDao;
 import com.cloud.network.router.VirtualRouter.RedundantState;
 import com.cloud.network.router.VirtualRouter.Role;
-import com.cloud.network.router.deployment.RouterDeploymentDefinition;
 import com.cloud.network.vpn.Site2SiteVpnManager;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.resource.ResourceManager;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 76cadd9..4bf3c60 100755
--- 
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -58,6 +58,7 @@ import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO;
 import org.apache.cloudstack.managed.context.ManagedContextRunnable;
 import org.apache.cloudstack.utils.identity.ManagementServerNode;
 import org.apache.log4j.Logger;
+import org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.Listener;
@@ -192,7 +193,6 @@ import 
com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
 import com.cloud.network.lb.LoadBalancingRulesManager;
 import com.cloud.network.router.VirtualRouter.RedundantState;
 import com.cloud.network.router.VirtualRouter.Role;
-import com.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
 import com.cloud.network.rules.FirewallRule;
 import com.cloud.network.rules.FirewallRule.Purpose;
 import com.cloud.network.rules.FirewallRuleVO;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinition.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinition.java
 
b/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinition.java
deleted file mode 100644
index 5d740a4..0000000
--- 
a/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinition.java
+++ /dev/null
@@ -1,530 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.network.router.deployment;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import 
org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
-import org.apache.log4j.Logger;
-
-import com.cloud.dc.DataCenter.NetworkType;
-import com.cloud.dc.HostPodVO;
-import com.cloud.dc.Pod;
-import com.cloud.dc.dao.HostPodDao;
-import com.cloud.deploy.DataCenterDeployment;
-import com.cloud.deploy.DeployDestination;
-import com.cloud.deploy.DeploymentPlan;
-import com.cloud.exception.ConcurrentOperationException;
-import com.cloud.exception.InsufficientAddressCapacityException;
-import com.cloud.exception.InsufficientCapacityException;
-import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.network.IpAddressManager;
-import com.cloud.network.Network;
-import com.cloud.network.Network.Provider;
-import com.cloud.network.Network.Service;
-import com.cloud.network.NetworkModel;
-import com.cloud.network.Networks.BroadcastDomainType;
-import com.cloud.network.Networks.IsolationType;
-import com.cloud.network.Networks.TrafficType;
-import com.cloud.network.PhysicalNetworkServiceProvider;
-import com.cloud.network.VirtualRouterProvider;
-import com.cloud.network.VirtualRouterProvider.Type;
-import com.cloud.network.addr.PublicIp;
-import com.cloud.network.dao.IPAddressDao;
-import com.cloud.network.dao.NetworkDao;
-import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
-import com.cloud.network.dao.UserIpv6AddressDao;
-import com.cloud.network.dao.VirtualRouterProviderDao;
-import com.cloud.network.router.NetworkGeneralHelper;
-import com.cloud.network.router.VirtualNwStatus;
-import com.cloud.network.router.VirtualRouter.Role;
-import com.cloud.network.router.VpcVirtualNetworkHelperImpl;
-import com.cloud.network.vpc.Vpc;
-import com.cloud.offering.NetworkOffering;
-import com.cloud.offerings.dao.NetworkOfferingDao;
-import com.cloud.service.ServiceOfferingVO;
-import com.cloud.user.Account;
-import com.cloud.user.AccountManager;
-import com.cloud.utils.Pair;
-import com.cloud.utils.db.DB;
-import com.cloud.utils.db.JoinBuilder;
-import com.cloud.utils.db.SearchBuilder;
-import com.cloud.utils.db.SearchCriteria;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.net.NetUtils;
-import com.cloud.vm.DomainRouterVO;
-import com.cloud.vm.Nic;
-import com.cloud.vm.NicProfile;
-import com.cloud.vm.NicVO;
-import com.cloud.vm.VMInstanceVO;
-import com.cloud.vm.VirtualMachine;
-import com.cloud.vm.VirtualMachineProfile.Param;
-import com.cloud.vm.dao.DomainRouterDao;
-import com.cloud.vm.dao.NicDao;
-import com.cloud.vm.dao.VMInstanceDao;
-
-public class RouterDeploymentDefinition {
-    private static final Logger logger = 
Logger.getLogger(RouterDeploymentDefinition.class);
-
-    protected NetworkDao networkDao;
-    protected DomainRouterDao routerDao;
-    protected PhysicalNetworkServiceProviderDao physicalProviderDao;
-    protected NetworkModel networkModel;
-    protected VirtualRouterProviderDao vrProviderDao;
-    protected NetworkOfferingDao networkOfferingDao;
-    protected IpAddressManager ipAddrMgr;
-    protected VMInstanceDao vmDao;
-    protected HostPodDao podDao;
-    protected AccountManager accountMgr;
-    protected NetworkOrchestrationService networkMgr;
-    protected NicDao nicDao;
-    protected UserIpv6AddressDao ipv6Dao;
-    protected IPAddressDao ipAddressDao;
-
-
-    @Inject
-    protected NetworkGeneralHelper nwHelper;
-    @Inject
-    protected VpcVirtualNetworkHelperImpl vpcHelper;
-
-
-    protected Network guestNetwork;
-    protected DeployDestination dest;
-    protected Account owner;
-    protected Map<Param, Object> params;
-    protected boolean isRedundant;
-    protected DeploymentPlan plan;
-    protected List<DomainRouterVO> routers = new ArrayList<>();
-    protected ServiceOfferingVO offering;
-
-
-
-
-    protected RouterDeploymentDefinition(final Network guestNetwork, final 
DeployDestination dest,
-            final Account owner, final Map<Param, Object> params, final 
boolean isRedundant) {
-
-        this.guestNetwork = guestNetwork;
-        this.dest = dest;
-        this.owner = owner;
-        this.params = params;
-        this.isRedundant = isRedundant;
-    }
-
-    public void setOffering(ServiceOfferingVO offering) {
-        this.offering = offering;
-    }
-    public Vpc getVpc() {
-        return null;
-    }
-    public Network getGuestNetwork() {
-        return guestNetwork;
-    }
-    public void setGuestNetwork(final Network guestNetwork) {
-        this.guestNetwork = guestNetwork;
-    }
-    public DeployDestination getDest() {
-        return dest;
-    }
-    public void setDest(final DeployDestination dest) {
-        this.dest = dest;
-    }
-    public Account getOwner() {
-        return owner;
-    }
-    public void setOwner(final Account owner) {
-        this.owner = owner;
-    }
-    public Map<Param, Object> getParams() {
-        return params;
-    }
-    public void setParams(final Map<Param, Object> params) {
-        this.params = params;
-    }
-    public boolean isRedundant() {
-        return isRedundant;
-    }
-    public void setRedundant(final boolean isRedundant) {
-        this.isRedundant = isRedundant;
-    }
-    public DeploymentPlan getPlan() {
-        return plan;
-    }
-
-    public boolean isVpcRouter() {
-        return false;
-    }
-    public Pod getPod() {
-        return dest.getPod();
-    }
-    public Long getPodId() {
-        return dest.getPod().getId();
-    }
-
-    public List<DomainRouterVO> getRouters() {
-        return routers;
-    }
-    public void setRouters(List<DomainRouterVO> routers) {
-        this.routers = routers;
-    }
-
-    public boolean isBasic() {
-        return this.dest.getDataCenter().getNetworkType() == NetworkType.Basic;
-    }
-
-    public Long getOfferingId() {
-        return offering == null ? null : offering.getId();
-    }
-
-    public void generateDeploymentPlan() {
-        final long dcId = this.dest.getDataCenter().getId();
-        Long podId = null;
-        if (this.isBasic()) {
-            if (this.dest.getPod() == null) {
-                throw new CloudRuntimeException("Pod id is expected in 
deployment destination");
-            }
-            podId = this.dest.getPod().getId();
-        }
-        this.plan = new DataCenterDeployment(dcId, podId, null, null, null, 
null);
-    }
-
-
-    public List<DomainRouterVO> deployVirtualRouter()
-            throws InsufficientCapacityException,
-            ConcurrentOperationException, ResourceUnavailableException {
-
-        findOrDeployVirtualRouter();
-
-        return nwHelper.startRouters(this);
-    }
-
-    @DB
-    protected void findOrDeployVirtualRouter()
-            throws ConcurrentOperationException, 
InsufficientCapacityException, ResourceUnavailableException {
-
-        final Network lock = 
networkDao.acquireInLockTable(guestNetwork.getId(), 
NetworkOrchestrationService.NetworkLockTimeout.value());
-        if (lock == null) {
-            throw new ConcurrentOperationException("Unable to lock network " + 
guestNetwork.getId());
-        }
-
-        if (logger.isDebugEnabled()) {
-            logger.debug("Lock is acquired for network id " + lock.getId() + " 
as a part of router startup in " + dest);
-        }
-
-        try {
-
-            assert guestNetwork.getState() == Network.State.Implemented || 
guestNetwork.getState() == Network.State.Setup ||
-                    guestNetwork.getState() == Network.State.Implementing : 
"Network is not yet fully implemented: " + guestNetwork;
-            assert guestNetwork.getTrafficType() == TrafficType.Guest;
-
-            // 1) Get deployment plan and find out the list of routers
-
-            // dest has pod=null, for Basic Zone findOrDeployVRs for all Pods
-            final List<DeployDestination> destinations = new 
ArrayList<DeployDestination>();
-
-            // for basic zone, if 'dest' has pod set to null then this is 
network restart scenario otherwise it is a vm deployment scenario
-            if (this.isBasic() && dest.getPod() == null) {
-                // Find all pods in the data center with running or starting 
user vms
-                final long dcId = dest.getDataCenter().getId();
-                final List<HostPodVO> pods = 
listByDataCenterIdVMTypeAndStates(dcId, VirtualMachine.Type.User, 
VirtualMachine.State.Starting, VirtualMachine.State.Running);
-
-                // Loop through all the pods skip those with running or 
starting VRs
-                for (final HostPodVO pod : pods) {
-                    // Get list of VRs in starting or running state
-                    final long podId = pod.getId();
-                    final List<DomainRouterVO> virtualRouters = 
routerDao.listByPodIdAndStates(podId, VirtualMachine.State.Starting, 
VirtualMachine.State.Running);
-
-                    assert (virtualRouters.size() <= 1) : "Pod can have utmost 
one VR in Basic Zone, please check!";
-
-                    // Add virtualRouters to the routers, this avoids the 
situation when
-                    // all routers are skipped and VirtualRouterElement throws 
exception
-                    this.routers.addAll(virtualRouters);
-
-                    // If List size is one, we already have a starting or 
running VR, skip deployment
-                    if (virtualRouters.size() == 1) {
-                        logger.debug("Skipping VR deployment: Found a running 
or starting VR in Pod " + pod.getName() + " id=" + podId);
-                        continue;
-                    }
-                    // Add new DeployDestination for this pod
-                    destinations.add(new 
DeployDestination(dest.getDataCenter(), pod, null, null));
-                }
-            } else {
-                // Else, just add the supplied dest
-                destinations.add(dest);
-            }
-
-            // Except for Basic Zone, the for loop will iterate only once
-            for (final DeployDestination destination : destinations) {
-                this.dest = destination;
-                planDeploymentRouters();
-                this.generateDeploymentPlan();
-
-                // 2) Figure out required routers count
-                int routerCount = 1;
-                if (this.isRedundant) {
-                    routerCount = 2;
-                    //Check current redundant routers, if possible(all routers 
are stopped), reset the priority
-                    if (this.routers.size() != 0) {
-                        checkAndResetPriorityOfRedundantRouter(this.routers);
-                    }
-                }
-
-                // If old network is redundant but new is single router, then 
routers.size() = 2 but routerCount = 1
-                if (this.routers.size() >= routerCount) {
-                    return;
-                }
-
-                if (this.routers.size() >= 5) {
-                    logger.error("Too much redundant routers!");
-                }
-
-                // Check if providers are supported in the physical networks
-                final Type type = Type.VirtualRouter;
-                final Long physicalNetworkId = 
networkModel.getPhysicalNetworkId(guestNetwork);
-                final PhysicalNetworkServiceProvider provider = 
physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString());
-                if (provider == null) {
-                    throw new CloudRuntimeException("Cannot find service 
provider " + type.toString() + " in physical network " + physicalNetworkId);
-                }
-                final VirtualRouterProvider vrProvider = 
vrProviderDao.findByNspIdAndType(provider.getId(), type);
-                if (vrProvider == null) {
-                    throw new CloudRuntimeException("Cannot find virtual 
router provider " + type.toString() + " as service provider " + 
provider.getId());
-                }
-
-                if (networkModel.isNetworkSystem(guestNetwork) || 
guestNetwork.getGuestType() == Network.GuestType.Shared) {
-                    this.owner = 
accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM);
-                }
-
-                // Check if public network has to be set on VR
-                boolean publicNetwork = false;
-                if 
(networkModel.isProviderSupportServiceInNetwork(guestNetwork.getId(), 
Service.SourceNat, Provider.VirtualRouter)) {
-                    publicNetwork = true;
-                }
-                if (this.isRedundant && !publicNetwork) {
-                    logger.error("Didn't support redundant virtual router 
without public network!");
-                    this.routers = null;
-                    return;
-                }
-
-                Long offeringId = 
networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()).getServiceOfferingId();
-                if (offeringId == null) {
-                    offeringId = getOfferingId();
-                }
-
-                PublicIp sourceNatIp = null;
-                if (publicNetwork) {
-                    sourceNatIp = 
ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(
-                            this.owner, guestNetwork);
-                }
-
-                // 3) deploy virtual router(s)
-                final int count = routerCount - this.routers.size();
-                for (int i = 0; i < count; i++) {
-                    LinkedHashMap<Network, List<? extends NicProfile>> 
networks =
-                            createRouterNetworks(new Pair<Boolean, PublicIp>(
-                            publicNetwork, sourceNatIp));
-                    //don't start the router as we are holding the network 
lock that needs to be released at the end of router allocation
-                    DomainRouterVO router = nwHelper.deployRouter(this, 
vrProvider, offeringId, networks, false, null);
-
-                    if (router != null) {
-                        routerDao.addRouterToGuestNetwork(router, 
guestNetwork);
-                        this.routers.add(router);
-                    }
-                }
-            }
-        } finally {
-            if (lock != null) {
-                networkDao.releaseFromLockTable(lock.getId());
-                if (logger.isDebugEnabled()) {
-                    logger.debug("Lock is released for network id " + 
lock.getId() + " as a part of router startup in " + dest);
-                }
-            }
-        }
-    }
-
-
-    protected List<HostPodVO> listByDataCenterIdVMTypeAndStates(final long id, 
final VirtualMachine.Type type, final VirtualMachine.State... states) {
-        final SearchBuilder<VMInstanceVO> vmInstanceSearch = 
vmDao.createSearchBuilder();
-        vmInstanceSearch.and("type", vmInstanceSearch.entity().getType(), 
SearchCriteria.Op.EQ);
-        vmInstanceSearch.and("states", vmInstanceSearch.entity().getState(), 
SearchCriteria.Op.IN);
-
-        final SearchBuilder<HostPodVO> podIdSearch = 
podDao.createSearchBuilder();
-        podIdSearch.and("dc", podIdSearch.entity().getDataCenterId(), 
SearchCriteria.Op.EQ);
-        podIdSearch.select(null, SearchCriteria.Func.DISTINCT, 
podIdSearch.entity().getId());
-        podIdSearch.join("vmInstanceSearch", vmInstanceSearch, 
podIdSearch.entity().getId(), vmInstanceSearch.entity().getPodIdToDeployIn(), 
JoinBuilder.JoinType.INNER);
-        podIdSearch.done();
-
-        final SearchCriteria<HostPodVO> sc = podIdSearch.create();
-        sc.setParameters("dc", id);
-        sc.setJoinParameters("vmInstanceSearch", "type", type);
-        sc.setJoinParameters("vmInstanceSearch", "states", (Object[])states);
-        return podDao.search(sc, null);
-    }
-
-    protected void planDeploymentRouters() {
-        if (this.isBasic()) {
-            this.routers = 
routerDao.listByNetworkAndPodAndRole(this.guestNetwork.getId(),
-                    this.getPodId(), Role.VIRTUAL_ROUTER);
-        } else {
-            this.routers = 
routerDao.listByNetworkAndRole(this.guestNetwork.getId(),
-                    Role.VIRTUAL_ROUTER);
-        }
-    }
-
-    private void checkAndResetPriorityOfRedundantRouter(final 
List<DomainRouterVO> routers) {
-        boolean allStopped = true;
-        for (final DomainRouterVO router : routers) {
-            if (!router.getIsRedundantRouter() || router.getState() != 
VirtualMachine.State.Stopped) {
-                allStopped = false;
-                break;
-            }
-        }
-        if (!allStopped) {
-            return;
-        }
-
-        for (final DomainRouterVO router : routers) {
-            // getUpdatedPriority() would update the value later
-            router.setPriority(0);
-            router.setIsPriorityBumpUp(false);
-            routerDao.update(router.getId(), router);
-        }
-    }
-    protected LinkedHashMap<Network, List<? extends NicProfile>> 
createRouterNetworks(
-            final Pair<Boolean, PublicIp> publicNetwork)
-                    throws ConcurrentOperationException, 
InsufficientAddressCapacityException {
-
-        final Network guestNetwork = this.guestNetwork;
-        boolean setupPublicNetwork = false;
-        if (publicNetwork != null) {
-            setupPublicNetwork = publicNetwork.first();
-        }
-
-        //Form networks
-        LinkedHashMap<Network, List<? extends NicProfile>> networks = new 
LinkedHashMap<Network, List<? extends NicProfile>>(3);
-        //1) Guest network
-        boolean hasGuestNetwork = false;
-        if (guestNetwork != null) {
-            logger.debug("Adding nic for Virtual Router in Guest network " + 
guestNetwork);
-            String defaultNetworkStartIp = null, defaultNetworkStartIpv6 = 
null;
-            if (!setupPublicNetwork) {
-                final Nic placeholder = 
networkModel.getPlaceholderNicForRouter(guestNetwork, this.getPodId());
-                if (guestNetwork.getCidr() != null) {
-                    if (placeholder != null && placeholder.getIp4Address() != 
null) {
-                        logger.debug("Requesting ipv4 address " + 
placeholder.getIp4Address() + " stored in placeholder nic for the network " + 
guestNetwork);
-                        defaultNetworkStartIp = placeholder.getIp4Address();
-                    } else {
-                        final String startIp = 
networkModel.getStartIpAddress(guestNetwork.getId());
-                        if (startIp != null && 
ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), 
startIp).getAllocatedTime() == null) {
-                            defaultNetworkStartIp = startIp;
-                        } else if (logger.isDebugEnabled()) {
-                            logger.debug("First ipv4 " + startIp + " in 
network id=" + guestNetwork.getId() +
-                                    " is already allocated, can't use it for 
domain router; will get random ip address from the range");
-                        }
-                    }
-                }
-
-                if (guestNetwork.getIp6Cidr() != null) {
-                    if (placeholder != null && placeholder.getIp6Address() != 
null) {
-                        logger.debug("Requesting ipv6 address " + 
placeholder.getIp6Address() + " stored in placeholder nic for the network " + 
guestNetwork);
-                        defaultNetworkStartIpv6 = placeholder.getIp6Address();
-                    } else {
-                        final String startIpv6 = 
networkModel.getStartIpv6Address(guestNetwork.getId());
-                        if (startIpv6 != null && 
ipv6Dao.findByNetworkIdAndIp(guestNetwork.getId(), startIpv6) == null) {
-                            defaultNetworkStartIpv6 = startIpv6;
-                        } else if (logger.isDebugEnabled()) {
-                            logger.debug("First ipv6 " + startIpv6 + " in 
network id=" + guestNetwork.getId() +
-                                    " is already allocated, can't use it for 
domain router; will get random ipv6 address from the range");
-                        }
-                    }
-                }
-            }
-
-            final NicProfile gatewayNic = new 
NicProfile(defaultNetworkStartIp, defaultNetworkStartIpv6);
-            if (setupPublicNetwork) {
-                if (this.isRedundant) {
-                    
gatewayNic.setIp4Address(ipAddrMgr.acquireGuestIpAddress(guestNetwork, null));
-                } else {
-                    gatewayNic.setIp4Address(guestNetwork.getGateway());
-                }
-                gatewayNic.setBroadcastUri(guestNetwork.getBroadcastUri());
-                
gatewayNic.setBroadcastType(guestNetwork.getBroadcastDomainType());
-                gatewayNic.setIsolationUri(guestNetwork.getBroadcastUri());
-                gatewayNic.setMode(guestNetwork.getMode());
-                final String gatewayCidr = guestNetwork.getCidr();
-                gatewayNic.setNetmask(NetUtils.getCidrNetmask(gatewayCidr));
-            } else {
-                gatewayNic.setDefaultNic(true);
-            }
-
-            networks.put(guestNetwork, new 
ArrayList<NicProfile>(Arrays.asList(gatewayNic)));
-            hasGuestNetwork = true;
-        }
-
-        //2) Control network
-        logger.debug("Adding nic for Virtual Router in Control network ");
-        List<? extends NetworkOffering> offerings = 
networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
-        NetworkOffering controlOffering = offerings.get(0);
-        Network controlConfig = 
networkMgr.setupNetwork(VirtualNwStatus.account, controlOffering, this.plan,
-                null, null, false).get(0);
-        networks.put(controlConfig, new ArrayList<NicProfile>());
-        //3) Public network
-        if (setupPublicNetwork) {
-            final PublicIp sourceNatIp = publicNetwork.second();
-            logger.debug("Adding nic for Virtual Router in Public network ");
-            //if source nat service is supported by the network, get the 
source nat ip address
-            final NicProfile defaultNic = new NicProfile();
-            defaultNic.setDefaultNic(true);
-            defaultNic.setIp4Address(sourceNatIp.getAddress().addr());
-            defaultNic.setGateway(sourceNatIp.getGateway());
-            defaultNic.setNetmask(sourceNatIp.getNetmask());
-            defaultNic.setMacAddress(sourceNatIp.getMacAddress());
-            // get broadcast from public network
-            final Network pubNet = 
networkDao.findById(sourceNatIp.getNetworkId());
-            if (pubNet.getBroadcastDomainType() == BroadcastDomainType.Vxlan) {
-                defaultNic.setBroadcastType(BroadcastDomainType.Vxlan);
-                
defaultNic.setBroadcastUri(BroadcastDomainType.Vxlan.toUri(sourceNatIp.getVlanTag()));
-                
defaultNic.setIsolationUri(BroadcastDomainType.Vxlan.toUri(sourceNatIp.getVlanTag()));
-            } else {
-                defaultNic.setBroadcastType(BroadcastDomainType.Vlan);
-                
defaultNic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(sourceNatIp.getVlanTag()));
-                
defaultNic.setIsolationUri(IsolationType.Vlan.toUri(sourceNatIp.getVlanTag()));
-            }
-            if (hasGuestNetwork) {
-                defaultNic.setDeviceId(2);
-            }
-            final NetworkOffering publicOffering = 
networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemPublicNetwork).get(0);
-            final List<? extends Network> publicNetworks = 
networkMgr.setupNetwork(VirtualNwStatus.account, publicOffering,
-                    this.plan, null, null, false);
-            final String publicIp = defaultNic.getIp4Address();
-            // We want to use the identical MAC address for RvR on public 
interface if possible
-            final NicVO peerNic = 
nicDao.findByIp4AddressAndNetworkId(publicIp, publicNetworks.get(0).getId());
-            if (peerNic != null) {
-                logger.info("Use same MAC as previous RvR, the MAC is " + 
peerNic.getMacAddress());
-                defaultNic.setMacAddress(peerNic.getMacAddress());
-            }
-            networks.put(publicNetworks.get(0), new 
ArrayList<NicProfile>(Arrays.asList(defaultNic)));
-        }
-
-        return networks;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java
 
b/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java
deleted file mode 100644
index f06cb4c..0000000
--- 
a/server/src/com/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package com.cloud.network.router.deployment;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import 
org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
-
-import com.cloud.dc.dao.HostPodDao;
-import com.cloud.dc.dao.VlanDao;
-import com.cloud.deploy.DeployDestination;
-import com.cloud.network.IpAddressManager;
-import com.cloud.network.Network;
-import com.cloud.network.NetworkModel;
-import com.cloud.network.dao.IPAddressDao;
-import com.cloud.network.dao.NetworkDao;
-import com.cloud.network.dao.PhysicalNetworkDao;
-import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
-import com.cloud.network.dao.UserIpv6AddressDao;
-import com.cloud.network.dao.VirtualRouterProviderDao;
-import com.cloud.network.vpc.Vpc;
-import com.cloud.network.vpc.VpcManager;
-import com.cloud.network.vpc.dao.VpcDao;
-import com.cloud.network.vpc.dao.VpcOfferingDao;
-import com.cloud.offerings.dao.NetworkOfferingDao;
-import com.cloud.service.ServiceOfferingVO;
-import com.cloud.user.Account;
-import com.cloud.user.AccountManager;
-import com.cloud.vm.DomainRouterVO;
-import com.cloud.vm.VirtualMachineProfile.Param;
-import com.cloud.vm.dao.DomainRouterDao;
-import com.cloud.vm.dao.NicDao;
-import com.cloud.vm.dao.VMInstanceDao;
-
-public class RouterDeploymentDefinitionBuilder {
-
-    @Inject
-    private NetworkDao networkDao;
-    @Inject
-    private DomainRouterDao routerDao = null;
-    @Inject
-    private PhysicalNetworkServiceProviderDao physicalProviderDao;
-    @Inject
-    private NetworkModel networkModel;
-    @Inject
-    private VirtualRouterProviderDao vrProviderDao;
-    @Inject
-    private NetworkOfferingDao networkOfferingDao;
-    @Inject
-    private IpAddressManager ipAddrMgr;
-    @Inject
-    private VMInstanceDao vmDao;
-    @Inject
-    private HostPodDao podDao;
-    @Inject
-    private AccountManager accountMgr;
-    @Inject
-    private NetworkOrchestrationService networkMgr;
-    @Inject
-    private NicDao nicDao;
-    @Inject
-    private UserIpv6AddressDao ipv6Dao;
-    @Inject
-    private IPAddressDao ipAddressDao;
-    @Inject
-    private VpcDao vpcDao;
-    @Inject
-    private VpcOfferingDao vpcOffDao;
-    @Inject
-    private PhysicalNetworkDao pNtwkDao;
-    @Inject
-    private VpcManager vpcMgr;
-    @Inject
-    private VlanDao vlanDao;
-
-    protected ServiceOfferingVO offering;
-
-    public void setOffering(ServiceOfferingVO offering) {
-        this.offering = offering;
-    }
-
-    public IntermediateStateBuilder create() {
-        return new IntermediateStateBuilder(this);
-    }
-
-    protected RouterDeploymentDefinition injectDependencies(
-            final RouterDeploymentDefinition routerDeploymentDefinition) {
-
-        routerDeploymentDefinition.networkDao = this.networkDao;
-        routerDeploymentDefinition.routerDao = this.routerDao;
-        routerDeploymentDefinition.physicalProviderDao = 
this.physicalProviderDao;
-        routerDeploymentDefinition.networkModel = this.networkModel;
-        routerDeploymentDefinition.vrProviderDao = this.vrProviderDao;
-        routerDeploymentDefinition.networkOfferingDao = 
this.networkOfferingDao;
-        routerDeploymentDefinition.ipAddrMgr = this.ipAddrMgr;
-        routerDeploymentDefinition.vmDao = this.vmDao;
-        routerDeploymentDefinition.podDao = this.podDao;
-        routerDeploymentDefinition.accountMgr = this.accountMgr;
-        routerDeploymentDefinition.networkMgr = this.networkMgr;
-        routerDeploymentDefinition.nicDao = this.nicDao;
-        routerDeploymentDefinition.ipv6Dao = this.ipv6Dao;
-        routerDeploymentDefinition.ipAddressDao = this.ipAddressDao;
-        routerDeploymentDefinition.offering = this.offering;
-
-        if (routerDeploymentDefinition instanceof 
VpcRouterDeploymentDefinition) {
-            this.injectVpcDependencies((VpcRouterDeploymentDefinition) 
routerDeploymentDefinition);
-        }
-
-        return routerDeploymentDefinition;
-    }
-
-    protected void injectVpcDependencies(
-            final VpcRouterDeploymentDefinition routerDeploymentDefinition) {
-
-        routerDeploymentDefinition.vpcDao = this.vpcDao;
-        routerDeploymentDefinition.vpcOffDao = this.vpcOffDao;
-        routerDeploymentDefinition.pNtwkDao = this.pNtwkDao;
-        routerDeploymentDefinition.vpcMgr = this.vpcMgr;
-        routerDeploymentDefinition.vlanDao = this.vlanDao;
-    }
-
-
-    public class IntermediateStateBuilder {
-
-        RouterDeploymentDefinitionBuilder builder;
-
-        protected Vpc vpc;
-        protected Network guestNetwork;
-        protected DeployDestination dest;
-        protected Account owner;
-        protected Map<Param, Object> params;
-        protected boolean isRedundant;
-        protected List<DomainRouterVO> routers = new ArrayList<>();
-
-        protected IntermediateStateBuilder(RouterDeploymentDefinitionBuilder 
builder) {
-            this.builder = builder;
-        }
-
-        public IntermediateStateBuilder makeRedundant() {
-            this.isRedundant = true;
-            return this;
-        }
-
-        public IntermediateStateBuilder setRedundant(boolean isRedundant) {
-            this.isRedundant = isRedundant;
-            return this;
-        }
-
-        public IntermediateStateBuilder setVpc(final Vpc vpc) {
-            this.vpc = vpc;
-            return this;
-        }
-
-        public IntermediateStateBuilder setGuestNetwork(final Network nw) {
-            this.guestNetwork = nw;
-            return this;
-        }
-
-        public IntermediateStateBuilder setAccountOwner(final Account owner) {
-            this.owner = owner;
-            return this;
-        }
-
-        public IntermediateStateBuilder setDeployDestination(final 
DeployDestination dest) {
-            this.dest = dest;
-            return this;
-        }
-
-        public IntermediateStateBuilder setParams(final Map<Param, Object> 
params) {
-            this.params = params;
-            return this;
-        }
-
-        public RouterDeploymentDefinition build() {
-            RouterDeploymentDefinition routerDeploymentDefinition = null;
-            if (this.vpc != null) {
-                routerDeploymentDefinition = new 
VpcRouterDeploymentDefinition(vpc, dest, owner, params, isRedundant);
-            } else {
-                routerDeploymentDefinition = new 
RouterDeploymentDefinition(guestNetwork, dest, owner, params, isRedundant);
-            }
-
-            return builder.injectDependencies(routerDeploymentDefinition);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6852f312/server/src/com/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java
 
b/server/src/com/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java
deleted file mode 100644
index c3e6327..0000000
--- 
a/server/src/com/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package com.cloud.network.router.deployment;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
-
-import javax.inject.Inject;
-
-import 
org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
-import org.apache.log4j.Logger;
-
-import com.cloud.dc.dao.VlanDao;
-import com.cloud.deploy.DeployDestination;
-import com.cloud.exception.ConcurrentOperationException;
-import com.cloud.exception.InsufficientAddressCapacityException;
-import com.cloud.exception.InsufficientCapacityException;
-import com.cloud.exception.InsufficientServerCapacityException;
-import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.exception.StorageUnavailableException;
-import com.cloud.network.IpAddress;
-import com.cloud.network.Network;
-import com.cloud.network.NetworkModel;
-import com.cloud.network.Networks.BroadcastDomainType;
-import com.cloud.network.Networks.IsolationType;
-import com.cloud.network.PhysicalNetwork;
-import com.cloud.network.PhysicalNetworkServiceProvider;
-import com.cloud.network.VirtualRouterProvider;
-import com.cloud.network.VirtualRouterProvider.Type;
-import com.cloud.network.addr.PublicIp;
-import com.cloud.network.dao.IPAddressDao;
-import com.cloud.network.dao.IPAddressVO;
-import com.cloud.network.dao.PhysicalNetworkDao;
-import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
-import com.cloud.network.dao.VirtualRouterProviderDao;
-import com.cloud.network.router.VirtualNwStatus;
-import com.cloud.network.vpc.PrivateGateway;
-import com.cloud.network.vpc.Vpc;
-import com.cloud.network.vpc.VpcManager;
-import com.cloud.network.vpc.dao.VpcDao;
-import com.cloud.network.vpc.dao.VpcOfferingDao;
-import com.cloud.offering.NetworkOffering;
-import com.cloud.user.Account;
-import com.cloud.utils.Pair;
-import com.cloud.utils.db.DB;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.DomainRouterVO;
-import com.cloud.vm.NicProfile;
-import com.cloud.vm.VirtualMachineProfile.Param;
-
-public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition {
-    private static final Logger logger = 
Logger.getLogger(VpcRouterDeploymentDefinition.class);
-
-    @Inject
-    protected VpcDao vpcDao;
-    @Inject
-    protected VpcOfferingDao vpcOffDao;
-    @Inject
-    protected PhysicalNetworkDao pNtwkDao;
-    @Inject
-    protected VpcManager vpcMgr;
-    @Inject
-    protected PhysicalNetworkServiceProviderDao physicalProviderDao;
-    @Inject
-    protected VlanDao vlanDao;
-    @Inject
-    protected IPAddressDao ipAddressDao;
-    @Inject
-    protected NetworkOrchestrationService networkMgr;
-    @Inject
-    protected NetworkModel networkModel;
-    @Inject
-    protected VirtualRouterProviderDao vrProviderDao;
-
-
-    protected Vpc vpc;
-
-
-    protected VpcRouterDeploymentDefinition(final Vpc vpc, final 
DeployDestination dest, final Account owner,
-            final Map<Param, Object> params, final boolean isRedundant) {
-
-        super(null, dest, owner, params, isRedundant);
-
-        this.vpc = vpc;
-    }
-
-    @Override
-    public boolean isVpcRouter() {
-        return true;
-    }
-
-    @Override
-    @DB
-    protected void findOrDeployVirtualRouter()
-            throws ConcurrentOperationException, 
InsufficientCapacityException, ResourceUnavailableException {
-
-        logger.debug("Deploying Virtual Router in VPC " + vpc);
-
-        Vpc vpcLock = vpcDao.acquireInLockTable(vpc.getId());
-        if (vpcLock == null) {
-            throw new ConcurrentOperationException("Unable to lock vpc " + 
vpc.getId());
-        }
-
-        //1) Find out the list of routers and generate deployment plan
-        planDeploymentRouters();
-        this.generateDeploymentPlan();
-
-        //2) Return routers if exist, otherwise...
-        if (this.routers.size() < 1) {
-            try {
-
-                Long offeringId = 
vpcOffDao.findById(vpc.getVpcOfferingId()).getServiceOfferingId();
-                if (offeringId == null) {
-                    offeringId = offering.getId();
-                }
-                //3) Deploy Virtual Router
-                List<? extends PhysicalNetwork> pNtwks = 
pNtwkDao.listByZone(vpc.getZoneId());
-
-                VirtualRouterProvider vpcVrProvider = null;
-
-                for (PhysicalNetwork pNtwk : pNtwks) {
-                    PhysicalNetworkServiceProvider provider = 
physicalProviderDao.findByServiceProvider(pNtwk.getId(), 
Type.VPCVirtualRouter.toString());
-                    if (provider == null) {
-                        throw new CloudRuntimeException("Cannot find service 
provider " + Type.VPCVirtualRouter.toString() + " in physical network " + 
pNtwk.getId());
-                    }
-                    vpcVrProvider = 
vrProviderDao.findByNspIdAndType(provider.getId(), Type.VPCVirtualRouter);
-                    if (vpcVrProvider != null) {
-                        break;
-                    }
-                }
-
-                PublicIp sourceNatIp = 
vpcMgr.assignSourceNatIpAddressToVpc(this.owner, vpc);
-
-                DomainRouterVO router = deployVpcRouter(vpcVrProvider, 
offeringId, sourceNatIp);
-                this.routers.add(router);
-
-            } finally {
-                // TODO Should we do this after the pre or after the whole??
-                if (vpcLock != null) {
-                    vpcDao.releaseFromLockTable(vpc.getId());
-                }
-            }
-        }
-    }
-
-
-    protected DomainRouterVO deployVpcRouter(final VirtualRouterProvider 
vrProvider,
-            final long svcOffId, final PublicIp sourceNatIp) throws 
ConcurrentOperationException, InsufficientAddressCapacityException,
-            InsufficientServerCapacityException, 
InsufficientCapacityException, StorageUnavailableException, 
ResourceUnavailableException {
-
-        LinkedHashMap<Network, List<? extends NicProfile>> networks = 
createVpcRouterNetworks(
-                new Pair<Boolean, PublicIp>(true, sourceNatIp), 
this.vpc.getId());
-
-        DomainRouterVO router =
-                nwHelper.deployRouter(this, vrProvider, svcOffId, networks, 
true, vpcMgr.getSupportedVpcHypervisors());
-
-        return router;
-    }
-
-    protected LinkedHashMap<Network, List<? extends NicProfile>> 
createVpcRouterNetworks(
-            final Pair<Boolean, PublicIp> sourceNatIp, final long vpcId)
-                    throws ConcurrentOperationException, 
InsufficientAddressCapacityException {
-
-        TreeSet<String> publicVlans = new TreeSet<String>();
-        publicVlans.add(sourceNatIp.second().getVlanTag());
-
-        //1) allocate nic for control and source nat public ip
-        LinkedHashMap<Network, List<? extends NicProfile>> networks = 
nwHelper.createRouterNetworks(this, null, sourceNatIp);
-
-
-        //2) allocate nic for private gateways if needed
-        List<PrivateGateway> privateGateways = 
vpcMgr.getVpcPrivateGateways(vpcId);
-        if (privateGateways != null && !privateGateways.isEmpty()) {
-            for (PrivateGateway privateGateway : privateGateways) {
-                NicProfile privateNic = 
vpcHelper.createPrivateNicProfileForGateway(privateGateway);
-                Network privateNetwork = 
networkModel.getNetwork(privateGateway.getNetworkId());
-                networks.put(privateNetwork, new 
ArrayList<NicProfile>(Arrays.asList(privateNic)));
-            }
-        }
-
-        //3) allocate nic for guest gateway if needed
-        List<? extends Network> guestNetworks = vpcMgr.getVpcNetworks(vpcId);
-        for (Network guestNetwork : guestNetworks) {
-            if (networkModel.isPrivateGateway(guestNetwork.getId())) {
-                continue;
-            }
-            if (guestNetwork.getState() == Network.State.Implemented || 
guestNetwork.getState() == Network.State.Setup) {
-                NicProfile guestNic = 
vpcHelper.createGuestNicProfileForVpcRouter(guestNetwork);
-                networks.put(guestNetwork, new 
ArrayList<NicProfile>(Arrays.asList(guestNic)));
-            }
-        }
-
-        //4) allocate nic for additional public network(s)
-        List<IPAddressVO> ips = ipAddressDao.listByAssociatedVpc(vpcId, false);
-        List<NicProfile> publicNics = new ArrayList<NicProfile>();
-        Network publicNetwork = null;
-        for (IPAddressVO ip : ips) {
-            PublicIp publicIp = PublicIp.createFromAddrAndVlan(ip, 
vlanDao.findById(ip.getVlanId()));
-            if ((ip.getState() == IpAddress.State.Allocated || ip.getState() 
== IpAddress.State.Allocating) && vpcMgr.isIpAllocatedToVpc(ip) &&
-                    !publicVlans.contains(publicIp.getVlanTag())) {
-                logger.debug("Allocating nic for router in vlan " + 
publicIp.getVlanTag());
-                NicProfile publicNic = new NicProfile();
-                publicNic.setDefaultNic(false);
-                publicNic.setIp4Address(publicIp.getAddress().addr());
-                publicNic.setGateway(publicIp.getGateway());
-                publicNic.setNetmask(publicIp.getNetmask());
-                publicNic.setMacAddress(publicIp.getMacAddress());
-                publicNic.setBroadcastType(BroadcastDomainType.Vlan);
-                
publicNic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(publicIp.getVlanTag()));
-                
publicNic.setIsolationUri(IsolationType.Vlan.toUri(publicIp.getVlanTag()));
-                NetworkOffering publicOffering = 
networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemPublicNetwork).get(0);
-                if (publicNetwork == null) {
-                    List<? extends Network> publicNetworks = 
networkMgr.setupNetwork(VirtualNwStatus.account,
-                            publicOffering, this.plan, null, null, false);
-                    publicNetwork = publicNetworks.get(0);
-                }
-                publicNics.add(publicNic);
-                publicVlans.add(publicIp.getVlanTag());
-            }
-        }
-        if (publicNetwork != null) {
-            if (networks.get(publicNetwork) != null) {
-                List<NicProfile> publicNicProfiles = 
(List<NicProfile>)networks.get(publicNetwork);
-                publicNicProfiles.addAll(publicNics);
-                networks.put(publicNetwork, publicNicProfiles);
-            } else {
-                networks.put(publicNetwork, publicNics);
-            }
-        }
-
-        return networks;
-    }
-
-    @Override
-    protected void planDeploymentRouters() {
-        this.routers = vpcHelper.getVpcRouters(this.getVpc().getId());
-    }
-
-}

Reply via email to