Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 789A710968 for ; Thu, 13 Mar 2014 13:54:36 +0000 (UTC) Received: (qmail 81958 invoked by uid 500); 13 Mar 2014 13:53:50 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 80529 invoked by uid 500); 13 Mar 2014 13:53:11 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 78253 invoked by uid 99); 13 Mar 2014 13:52:54 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2014 13:52:54 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 153BC944144; Thu, 13 Mar 2014 13:52:53 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: muralireddy@apache.org To: commits@cloudstack.apache.org Date: Thu, 13 Mar 2014 13:53:12 -0000 Message-Id: <16bd0bf2262140538db904f9ab7af3cb@git.apache.org> In-Reply-To: <061d0f886bc349f6babdc6ad9d26e14b@git.apache.org> References: <061d0f886bc349f6babdc6ad9d26e14b@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [21/31] git commit: updated refs/heads/distributedrouter to a8d43ba -add check to ensure 'Connectivity' service provider specified in createVpcOffering actually supports 'DistributedRouter' capability - enable OVS to support 'DistributedRouter' capability Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6c1a158c Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6c1a158c Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6c1a158c Branch: refs/heads/distributedrouter Commit: 6c1a158cd9021e6f467ff46cae226d41f4dea009 Parents: 85c9b09 Author: Murali Reddy Authored: Tue Mar 4 17:17:18 2014 +0530 Committer: Murali Reddy Committed: Thu Mar 13 19:22:06 2014 +0530 ---------------------------------------------------------------------- .../com/cloud/network/element/OvsElement.java | 5 +- .../com/cloud/network/vpc/VpcManagerImpl.java | 52 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6c1a158c/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java b/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java index 03eeedd..05e81a1 100644 --- a/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java +++ b/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java @@ -246,7 +246,10 @@ StaticNatServiceProvider, IpDeployer { Map> capabilities = new HashMap>(); // L2 Support : SDN provisioning - capabilities.put(Service.Connectivity, null); + Map connectivityCapabilities = new HashMap(); + connectivityCapabilities.put(Capability.DistributedRouter, null); + capabilities.put(Service.Connectivity, connectivityCapabilities); + // L3 Support : Port Forwarding capabilities.put(Service.PortForwarding, null); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6c1a158c/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 ac82041..36eb444 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -65,6 +65,7 @@ import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.network.element.NetworkElement; import com.cloud.network.IpAddress; import com.cloud.network.IpAddressManager; import com.cloud.network.Network; @@ -376,6 +377,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } } + validateConnectivtyServiceCapablitlies(svcProviderMap.get(Service.Connectivity), serviceCapabilitystList); boolean supportsDistributedRouter = isVpcOfferingSupportsDistributedRouter(serviceCapabilitystList); VpcOffering offering = createVpcOffering(name, displayText, svcProviderMap, false, null, @@ -460,6 +462,56 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis return supportsDistributedRouter; } + private void validateConnectivtyServiceCapablitlies(Set providers, Map serviceCapabilitystList) { + + if (serviceCapabilitystList != null && !serviceCapabilitystList.isEmpty()) { + Collection serviceCapabilityCollection = serviceCapabilitystList.values(); + Iterator iter = serviceCapabilityCollection.iterator(); + Map capabilityMap = null; + + while (iter.hasNext()) { + HashMap svcCapabilityMap = (HashMap)iter.next(); + Network.Capability capability = null; + String svc = svcCapabilityMap.get("service"); + String capabilityName = svcCapabilityMap.get("capabilitytype"); + String capabilityValue = svcCapabilityMap.get("capabilityvalue"); + if (capabilityName != null) { + capability = Network.Capability.getCapability(capabilityName); + } + + if ((capability == null) || (capabilityName == null) || (capabilityValue == null)) { + throw new InvalidParameterValueException("Invalid capability:" + capabilityName + " capability value:" + capabilityValue); + } + + if (!svc.equalsIgnoreCase(Service.Connectivity.getName())) { + throw new InvalidParameterValueException("Invalid Service:" + svc + " specified. Only for 'Connectivity' service capabilities can be specified"); + } + + if (!capabilityName.equalsIgnoreCase("DistributedRouter")) { + throw new InvalidParameterValueException("Invalid Capability:" + capabilityName + " specified. Only 'DistributedRouter' capability can be specified."); + } + + if (!capabilityValue.equalsIgnoreCase("true") && capabilityValue.equalsIgnoreCase("false")) { + throw new InvalidParameterValueException("Invalid Capability value:" + capabilityValue + " specified."); + } + } + + if (providers != null && !providers.isEmpty()) { + for (Provider provider: providers) { + NetworkElement element = _ntwkModel.getElementImplementingProvider(provider.getName()); + Map> capabilities = element.getCapabilities(); + if (capabilities != null && !capabilities.isEmpty()) { + Map connectivityCapabilities = capabilities.get(Service.Connectivity); + if (connectivityCapabilities == null || (connectivityCapabilities != null && !connectivityCapabilities.keySet().contains(Network.Capability.DistributedRouter))) { + throw new InvalidParameterValueException("Provider: " + provider.getName() + " does not support " + + Network.Capability.DistributedRouter.getName() + " capability."); + } + } + } + } + } + } + @Override public Vpc getActiveVpc(long vpcId) { return _vpcDao.getActiveVpcById(vpcId);