You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ya...@apache.org on 2014/01/14 22:52:47 UTC

git commit: updated refs/heads/4.3 to 8b9f7af

Updated Branches:
  refs/heads/4.3 65f639219 -> 8b9f7afc9


Add L3VPN isolation method for contrail plugin

Signed-off-by: Sheng Yang <sh...@citrix.com>


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

Branch: refs/heads/4.3
Commit: 8b9f7afc92679f9e316d417ba14c23c587b7d565
Parents: 65f6392
Author: Sachchidanand Vaidya <va...@juniper.net>
Authored: Mon Jan 13 17:30:24 2014 -0800
Committer: Sheng Yang <sh...@citrix.com>
Committed: Tue Jan 14 13:52:40 2014 -0800

----------------------------------------------------------------------
 api/src/com/cloud/network/PhysicalNetwork.java  |  3 ++-
 .../contrail/management/ContrailGuru.java       | 27 ++++++++++++++++----
 .../management/ManagementServerMock.java        |  2 +-
 ui/scripts/ui-custom/zoneWizard.js              |  5 +++-
 4 files changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b9f7afc/api/src/com/cloud/network/PhysicalNetwork.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/PhysicalNetwork.java b/api/src/com/cloud/network/PhysicalNetwork.java
index 55b18e6..5d38b50 100644
--- a/api/src/com/cloud/network/PhysicalNetwork.java
+++ b/api/src/com/cloud/network/PhysicalNetwork.java
@@ -40,7 +40,8 @@ public interface PhysicalNetwork extends Identity, InternalIdentity {
         VNS,
         MIDO,
         SSP,
-        VXLAN;
+        VXLAN,
+        L3VPN;
     }
 
     public enum BroadcastDomainRange {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b9f7afc/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailGuru.java b/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailGuru.java
index 6587534..4e8083b 100644
--- a/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailGuru.java
+++ b/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailGuru.java
@@ -40,6 +40,9 @@ import com.cloud.deploy.DeploymentPlan;
 import com.cloud.exception.ConcurrentOperationException;
 import com.cloud.exception.InsufficientAddressCapacityException;
 import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
+import com.cloud.dc.DataCenter;
+import com.cloud.dc.DataCenter.NetworkType;
+import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.network.Network;
 import com.cloud.network.Network.State;
 import com.cloud.network.NetworkProfile;
@@ -50,6 +53,10 @@ import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.guru.NetworkGuru;
+import com.cloud.network.PhysicalNetwork;
+import com.cloud.network.PhysicalNetwork.IsolationMethod;
+import com.cloud.network.dao.PhysicalNetworkDao;
+import com.cloud.network.dao.PhysicalNetworkVO;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.user.Account;
 import com.cloud.utils.component.AdapterBase;
@@ -74,6 +81,8 @@ public class ContrailGuru extends AdapterBase implements NetworkGuru {
     @Inject NetworkDao _networkDao;
     @Inject ContrailManager _manager;
     @Inject NicDao _nicDao;
+    @Inject PhysicalNetworkDao _physicalNetworkDao;
+    @Inject DataCenterDao _dcDao;
     @Inject IPAddressDao _ipAddressDao;
     @Inject AccountManager _accountMgr;
     @Inject IpAddressManager _ipAddrMgr;
@@ -81,12 +90,16 @@ public class ContrailGuru extends AdapterBase implements NetworkGuru {
     private static final Logger s_logger = Logger.getLogger(ContrailGuru.class);
     private static final TrafficType[] _trafficTypes = {TrafficType.Guest};
 
-    private boolean canHandle(NetworkOffering offering) {
-        if (offering.getId() == _manager.getRouterOffering().getId())
+    private boolean canHandle(NetworkOffering offering, NetworkType networkType, PhysicalNetwork physicalNetwork) {
+        if (networkType == NetworkType.Advanced 
+                && isMyTrafficType(offering.getTrafficType()) 
+                && offering.getGuestType() == Network.GuestType.Isolated
+                && physicalNetwork.getIsolationMethods().contains("L3VPN"))
             return true;
-        return false;
-    }
 
+        return false;
+     }
+ 
     @Override
     public String getName() {
 	return "ContrailGuru";
@@ -95,7 +108,11 @@ public class ContrailGuru extends AdapterBase implements NetworkGuru {
     @Override
     public Network design(NetworkOffering offering, DeploymentPlan plan,
             Network userSpecified, Account owner) {
-        if (!canHandle(offering)) {
+        // Check of the isolation type of the related physical network is L3VPN
+        PhysicalNetworkVO physnet = _physicalNetworkDao.findById(plan.getPhysicalNetworkId());
+        DataCenter dc = _dcDao.findById(plan.getDataCenterId());
+        if (!canHandle(offering, dc.getNetworkType(),physnet)) {
+            s_logger.debug("Refusing to design this network");
             return null;
         }
         NetworkVO network = new NetworkVO(offering.getTrafficType(), Mode.Dhcp, BroadcastDomainType.Lswitch,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b9f7afc/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
index bbff466..36b5374 100644
--- a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
+++ b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
@@ -319,7 +319,7 @@ public class ManagementServerMock {
             }
         } catch (InvalidParameterValueException e) {
             List<String> isolationMethods = new ArrayList<String>();
-            isolationMethods.add("GRE");
+            isolationMethods.add("L3VPN");
             _znet = _networkService.createPhysicalNetwork(_zone.getId(), null, null, isolationMethods,
                     BroadcastDomainRange.ZONE.toString(), _zone.getDomainId(),
                     null, "znet");

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b9f7afc/ui/scripts/ui-custom/zoneWizard.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui-custom/zoneWizard.js b/ui/scripts/ui-custom/zoneWizard.js
index 28df193..7b3a8e1 100644
--- a/ui/scripts/ui-custom/zoneWizard.js
+++ b/ui/scripts/ui-custom/zoneWizard.js
@@ -720,7 +720,10 @@
                             }).html('SSP'),
                             $('<option>').attr({
                                 value: 'VXLAN'
-                            }).html('VXLAN')
+                            }).html('VXLAN'),
+                            $('<option>').attr({
+                                value: 'L3VPN'
+                            }).html('L3VPN')
                         )
                     )
                 );