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')
)
)
);