Static route can be created for generic VpcGateway now, not just Private gateway


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

Branch: refs/heads/vpc
Commit: c19639e4a2d16513549224870581b72bb6ea2071
Parents: 46b97cb
Author: Alena Prokharchyk <[email protected]>
Authored: Thu Jun 28 13:09:10 2012 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Thu Jun 28 17:17:44 2012 -0700

----------------------------------------------------------------------
 .../api/commands/CreatePrivateGatewayCmd.java      |    2 +-
 .../cloud/api/commands/CreateStaticRouteCmd.java   |    9 ++--
 .../api/commands/DeletePrivateGatewayCmd.java      |    2 +-
 api/src/com/cloud/network/vpc/PrivateGateway.java  |    3 -
 .../com/cloud/network/vpc/StaticRouteProfile.java  |    8 ++--
 api/src/com/cloud/network/vpc/VpcGateway.java      |   15 +++++++
 api/src/com/cloud/network/vpc/VpcService.java      |    8 +++-
 .../VpcVirtualNetworkApplianceManagerImpl.java     |    7 ++-
 .../cloud/network/vpc/PrivateGatewayProfile.java   |   17 ++------
 server/src/com/cloud/network/vpc/VpcGatewayVO.java |   33 ++++++++++++++-
 .../src/com/cloud/network/vpc/VpcManagerImpl.java  |   21 +++++----
 setup/db/create-schema.sql                         |    3 +
 12 files changed, 87 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/api/commands/CreatePrivateGatewayCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/CreatePrivateGatewayCmd.java 
b/api/src/com/cloud/api/commands/CreatePrivateGatewayCmd.java
index 0299c9e..d493b8b 100644
--- a/api/src/com/cloud/api/commands/CreatePrivateGatewayCmd.java
+++ b/api/src/com/cloud/api/commands/CreatePrivateGatewayCmd.java
@@ -129,7 +129,7 @@ public class CreatePrivateGatewayCmd extends 
BaseAsyncCreateCmd {
     @Override
     public void execute() throws InsufficientCapacityException, 
ConcurrentOperationException, 
                                 ResourceAllocationException, 
ResourceUnavailableException {
-        PrivateGateway result = _vpcService.applyVpcGateway(getEntityId());
+        PrivateGateway result = 
_vpcService.applyVpcPrivateGateway(getEntityId());
         if (result != null) {
             PrivateGatewayResponse response = 
_responseGenerator.createPrivateGatewayResponse(result);
             response.setResponseName(getCommandName());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/api/commands/CreateStaticRouteCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/CreateStaticRouteCmd.java 
b/api/src/com/cloud/api/commands/CreateStaticRouteCmd.java
index af6fc00..4be141b 100644
--- a/api/src/com/cloud/api/commands/CreateStaticRouteCmd.java
+++ b/api/src/com/cloud/api/commands/CreateStaticRouteCmd.java
@@ -31,6 +31,7 @@ import com.cloud.exception.ResourceAllocationException;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.network.vpc.PrivateGateway;
 import com.cloud.network.vpc.StaticRoute;
+import com.cloud.network.vpc.VpcGateway;
 import com.cloud.user.UserContext;
 
 /**
@@ -122,7 +123,7 @@ public class CreateStaticRouteCmd extends 
BaseAsyncCreateCmd{
 
     @Override
     public long getEntityOwnerId() {
-         PrivateGateway gateway =  _vpcService.getVpcPrivateGateway(gatewayId);
+         VpcGateway gateway =  _vpcService.getVpcGateway(gatewayId);
          if (gateway == null) {
              throw new InvalidParameterValueException("Invalid gateway id is 
specified");
          }
@@ -136,11 +137,11 @@ public class CreateStaticRouteCmd extends 
BaseAsyncCreateCmd{
 
     @Override
     public Long getSyncObjId() {
-        PrivateGateway privateGateway =  
_vpcService.getVpcPrivateGateway(gatewayId);
-        if (privateGateway == null) {
+        VpcGateway gateway =  _vpcService.getVpcGateway(gatewayId);
+        if (gateway == null) {
             throw new InvalidParameterValueException("Invalid id is specified 
for the gateway");
         }
-        return privateGateway.getVpcId();
+        return gateway.getVpcId();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/api/commands/DeletePrivateGatewayCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/DeletePrivateGatewayCmd.java 
b/api/src/com/cloud/api/commands/DeletePrivateGatewayCmd.java
index 89b941d..8371458 100644
--- a/api/src/com/cloud/api/commands/DeletePrivateGatewayCmd.java
+++ b/api/src/com/cloud/api/commands/DeletePrivateGatewayCmd.java
@@ -93,7 +93,7 @@ public class DeletePrivateGatewayCmd extends BaseAsyncCmd {
     
     @Override
     public String getSyncObjType() {
-        return BaseAsyncCmd.networkSyncObject;
+        return BaseAsyncCmd.vpcSyncObject;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/network/vpc/PrivateGateway.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/PrivateGateway.java 
b/api/src/com/cloud/network/vpc/PrivateGateway.java
index 3ecc75a..d23b1b4 100644
--- a/api/src/com/cloud/network/vpc/PrivateGateway.java
+++ b/api/src/com/cloud/network/vpc/PrivateGateway.java
@@ -16,8 +16,5 @@ package com.cloud.network.vpc;
  * @author Alena Prokharchyk
  */
 public interface PrivateGateway extends VpcGateway{
-    String getVlanTag();
-    String getGateway();
-    String getNetmask();
     long getPhysicalNetworkId();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/network/vpc/StaticRouteProfile.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/StaticRouteProfile.java 
b/api/src/com/cloud/network/vpc/StaticRouteProfile.java
index 073621d..75bfe75 100644
--- a/api/src/com/cloud/network/vpc/StaticRouteProfile.java
+++ b/api/src/com/cloud/network/vpc/StaticRouteProfile.java
@@ -17,7 +17,7 @@ package com.cloud.network.vpc;
  */
 public class StaticRouteProfile implements StaticRoute{
     private long id;
-    private String cidr;
+    private String targetCidr;
     private long accountId;
     private long domainId;
     private long gatewayId;
@@ -29,9 +29,9 @@ public class StaticRouteProfile implements StaticRoute{
     String ipAddress;
     
 
-    public StaticRouteProfile(StaticRoute staticRoute, PrivateGateway gateway) 
{
+    public StaticRouteProfile(StaticRoute staticRoute, VpcGateway gateway) {
         this.id = staticRoute.getId();
-        this.cidr = staticRoute.getCidr();
+        this.targetCidr = staticRoute.getCidr();
         this.accountId = staticRoute.getAccountId();
         this.domainId = staticRoute.getDomainId();
         this.gatewayId = staticRoute.getVpcGatewayId();
@@ -60,7 +60,7 @@ public class StaticRouteProfile implements StaticRoute{
 
     @Override
     public String getCidr() {
-        return cidr;
+        return targetCidr;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/network/vpc/VpcGateway.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/VpcGateway.java 
b/api/src/com/cloud/network/vpc/VpcGateway.java
index e3b532a..1ebaffc 100644
--- a/api/src/com/cloud/network/vpc/VpcGateway.java
+++ b/api/src/com/cloud/network/vpc/VpcGateway.java
@@ -50,4 +50,19 @@ public interface VpcGateway extends Identity {
      * @return
      */
     Long getNetworkId();
+
+    /**
+     * @return
+     */
+    String getGateway();
+
+    /**
+     * @return
+     */
+    String getNetmask();
+
+    /**
+     * @return
+     */
+    String getVlanTag();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/api/src/com/cloud/network/vpc/VpcService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/VpcService.java 
b/api/src/com/cloud/network/vpc/VpcService.java
index a4e1a1a..fec9080 100644
--- a/api/src/com/cloud/network/vpc/VpcService.java
+++ b/api/src/com/cloud/network/vpc/VpcService.java
@@ -164,7 +164,7 @@ public interface VpcService {
      * @throws ResourceUnavailableException 
      * @throws ConcurrentOperationException 
      */
-    public PrivateGateway applyVpcGateway(Long gatewayId) throws 
ConcurrentOperationException, ResourceUnavailableException;
+    public PrivateGateway applyVpcPrivateGateway(Long gatewayId) throws 
ConcurrentOperationException, ResourceUnavailableException;
     
     /**
      * @param id
@@ -213,4 +213,10 @@ public interface VpcService {
      */
     public List<? extends StaticRoute> listStaticRoutes(ListStaticRoutesCmd 
cmd);
 
+    /**
+     * @param id
+     * @return
+     */
+    VpcGateway getVpcGateway(long id);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/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 56c599c..de6b39d 100644
--- 
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -76,6 +76,7 @@ import com.cloud.network.vpc.PrivateGateway;
 import com.cloud.network.vpc.StaticRoute;
 import com.cloud.network.vpc.StaticRouteProfile;
 import com.cloud.network.vpc.Vpc;
+import com.cloud.network.vpc.VpcGateway;
 import com.cloud.network.vpc.VpcManager;
 import com.cloud.network.vpc.Dao.StaticRouteDao;
 import com.cloud.network.vpc.Dao.VpcDao;
@@ -806,11 +807,11 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
         //3) RE-APPLY ALL STATIC ROUTE RULES
         List<? extends StaticRoute> routes = 
_staticRouteDao.listByVpcId(router.getVpcId());
         List<StaticRouteProfile> staticRouteProfiles = new 
ArrayList<StaticRouteProfile>(routes.size());
-        Map<Long, PrivateGateway> gatewayMap = new HashMap<Long, 
PrivateGateway>();
+        Map<Long, VpcGateway> gatewayMap = new HashMap<Long, VpcGateway>();
         for (StaticRoute route : routes) {
-            PrivateGateway gateway = gatewayMap.get(route.getVpcGatewayId());
+            VpcGateway gateway = gatewayMap.get(route.getVpcGatewayId());
             if (gateway == null) {
-                gateway = 
_vpcMgr.getVpcPrivateGateway(route.getVpcGatewayId());
+                gateway = _vpcMgr.getVpcGateway(route.getVpcGatewayId());
                 gatewayMap.put(gateway.getId(), gateway);
             }
             staticRouteProfiles.add(new StaticRouteProfile(route, gateway));

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/server/src/com/cloud/network/vpc/PrivateGatewayProfile.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/PrivateGatewayProfile.java 
b/server/src/com/cloud/network/vpc/PrivateGatewayProfile.java
index 912a143..0ec3883 100644
--- a/server/src/com/cloud/network/vpc/PrivateGatewayProfile.java
+++ b/server/src/com/cloud/network/vpc/PrivateGatewayProfile.java
@@ -17,24 +17,15 @@ package com.cloud.network.vpc;
  */
 public class PrivateGatewayProfile implements PrivateGateway{
     VpcGateway vpcGateway;
-    String vlanTag;
-    String gateway;
-    String netmask;
     long physicalNetworkId;
     
     /**
      * @param vpcGateway
-     * @param vlanTag
-     * @param gateway
-     * @param netmask
      * @param physicalNetworkId TODO
      */
-    public PrivateGatewayProfile(VpcGateway vpcGateway, String vlanTag, String 
gateway, String netmask, long physicalNetworkId) {
+    public PrivateGatewayProfile(VpcGateway vpcGateway, long 
physicalNetworkId) {
         super();
         this.vpcGateway = vpcGateway;
-        this.vlanTag = vlanTag;
-        this.gateway = gateway;
-        this.netmask = netmask;
         this.physicalNetworkId = physicalNetworkId;
     }
 
@@ -75,17 +66,17 @@ public class PrivateGatewayProfile implements 
PrivateGateway{
 
     @Override
     public String getVlanTag() {
-        return vlanTag;
+        return vpcGateway.getVlanTag();
     }
 
     @Override
     public String getGateway() {
-        return gateway;
+        return vpcGateway.getGateway();
     }
 
     @Override
     public String getNetmask() {
-        return netmask;
+        return vpcGateway.getNetmask();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/server/src/com/cloud/network/vpc/VpcGatewayVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcGatewayVO.java 
b/server/src/com/cloud/network/vpc/VpcGatewayVO.java
index 35a1738..58a283c 100644
--- a/server/src/com/cloud/network/vpc/VpcGatewayVO.java
+++ b/server/src/com/cloud/network/vpc/VpcGatewayVO.java
@@ -42,6 +42,15 @@ public class VpcGatewayVO implements VpcGateway{
     @Column(name = "ip4_address")
     String ip4Address;
     
+    @Column(name="gateway") 
+    String gateway;
+    
+    @Column(name="netmask") 
+    String netmask;
+    
+    @Column(name="vlan_tag") 
+    String vlanTag;
+    
     @Column(name = "type")
     @Enumerated(value = EnumType.STRING)
     VpcGateway.Type type;
@@ -74,15 +83,20 @@ public class VpcGatewayVO implements VpcGateway{
      * @param vpcId
      * @param zoneId
      * @param networkId
+     * @param vlanTag TODO
+     * @param gateway TODO
+     * @param netmask TODO
      * @param account_id
      */
-    public VpcGatewayVO(String ip4Address, Type type, Long vpcId, long zoneId, 
Long networkId) {
-        super();
+    public VpcGatewayVO(String ip4Address, Type type, Long vpcId, long zoneId, 
Long networkId, String vlanTag, String gateway, String netmask) {
         this.ip4Address = ip4Address;
         this.type = type;
         this.vpcId = vpcId;
         this.zoneId = zoneId;
         this.networkId = networkId;
+        this.vlanTag = vlanTag;
+        this.gateway = gateway;
+        this.netmask = netmask;
         this.uuid = UUID.randomUUID().toString();
     }
 
@@ -127,4 +141,19 @@ public class VpcGatewayVO implements VpcGateway{
         
buf.append(id).append("|").append(ip4Address.toString()).append("|").append(vpcId).append("]");
         return buf.toString();
     }
+
+    @Override
+    public String getGateway() {
+        return gateway;
+    }
+
+    @Override
+    public String getNetmask() {
+        return netmask;
+    }
+
+    @Override
+    public String getVlanTag() {
+        return vlanTag;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java 
b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index f3b30e9..14dad60 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -995,12 +995,15 @@ public class VpcManagerImpl implements VpcManager, 
Manager{
         }
         return getPrivateGatewayProfile(gateway);
     }
+    
+    @Override
+    public VpcGateway getVpcGateway(long id) {
+        return _vpcGatewayDao.findById(id);
+    }
 
     protected PrivateGateway getPrivateGatewayProfile(VpcGateway gateway) {
         Network network = _ntwkMgr.getNetwork(gateway.getNetworkId());
-        String vlanTag = network.getBroadcastUri().getHost();
-        String netmask = NetUtils.getCidrNetmask(network.getCidr());
-        return new PrivateGatewayProfile(gateway, vlanTag, 
network.getGateway(),netmask, network.getPhysicalNetworkId());
+        return new PrivateGatewayProfile(gateway, 
network.getPhysicalNetworkId());
     }
 
     @Override
@@ -1043,7 +1046,7 @@ public class VpcManagerImpl implements VpcManager, 
Manager{
         
         //2) create gateway entry
         gatewayVO = new VpcGatewayVO(ipAddress, VpcGateway.Type.Private, 
vpcId, privateNtwk.getDataCenterId(),
-                privateNtwk.getId());
+                privateNtwk.getId(), vlan, gateway, netmask);
         _vpcGatewayDao.persist(gatewayVO);
         
         s_logger.debug("Created vpc gateway entry " + gatewayVO);
@@ -1055,7 +1058,7 @@ public class VpcManagerImpl implements VpcManager, 
Manager{
 
 
     @Override
-    public PrivateGateway applyVpcGateway(Long gatewayId) throws 
ConcurrentOperationException, ResourceUnavailableException {
+    public PrivateGateway applyVpcPrivateGateway(Long gatewayId) throws 
ConcurrentOperationException, ResourceUnavailableException {
         PrivateGateway gateway = getVpcPrivateGateway(gatewayId);
         if (getVpcElement().createPrivateGateway(gateway)) {
             s_logger.debug("Private gateway " + gateway + " was applied 
succesfully on the backend");
@@ -1184,11 +1187,11 @@ public class VpcManagerImpl implements VpcManager, 
Manager{
     protected boolean applyStaticRoutes(List<? extends StaticRoute> routes, 
Account caller, boolean updateRoutesInDB) throws ResourceUnavailableException {
         boolean success = true;
         List<StaticRouteProfile> staticRouteProfiles = new 
ArrayList<StaticRouteProfile>(routes.size());
-        Map<Long, PrivateGateway> gatewayMap = new HashMap<Long, 
PrivateGateway>();
+        Map<Long, VpcGateway> gatewayMap = new HashMap<Long, VpcGateway>();
         for (StaticRoute route : routes) {
-            PrivateGateway gateway = gatewayMap.get(route.getVpcGatewayId());
+            VpcGateway gateway = gatewayMap.get(route.getVpcGatewayId());
             if (gateway == null) {
-                gateway = getVpcPrivateGateway(route.getVpcGatewayId());
+                gateway = _vpcGatewayDao.findById(route.getVpcGatewayId());
                 gatewayMap.put(gateway.getId(), gateway);
             }
             staticRouteProfiles.add(new StaticRouteProfile(route, gateway));
@@ -1276,7 +1279,7 @@ public class VpcManagerImpl implements VpcManager, 
Manager{
         Account caller = UserContext.current().getCaller();
         
         //parameters validation
-        PrivateGateway gateway = getVpcPrivateGateway(gatewayId);
+        VpcGateway gateway = _vpcGatewayDao.findById(gatewayId);
         if (gateway == null) {
             throw new InvalidParameterValueException("Invalid gateway id is 
given");
         }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c19639e4/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index b03b24b..cc6b55c 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -2209,6 +2209,9 @@ CREATE TABLE `cloud`.`vpc_gateways` (
   `id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT COMMENT 'id',
   `uuid` varchar(40),
   `ip4_address` char(40) COMMENT 'ip4 address of the gateway',
+  `netmask` varchar(15) COMMENT 'netmask of the gateway',
+  `gateway` varchar(15) COMMENT 'gateway',
+  `vlan_tag` varchar(255),
   `type` varchar(32) COMMENT 'type of gateway; can be Public/Private/Vpn',
   `network_id` bigint unsigned NOT NULL COMMENT 'network id vpc gateway 
belongs to',
   `vpc_id` bigint unsigned NOT NULL COMMENT 'id of the vpc the gateway belongs 
to',

Reply via email to