You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/08/08 20:55:24 UTC
[38/43] git commit: CS-15243: Add service combination check at create
network offering
CS-15243: Add service combination check at create network offering
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/46a12b37
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/46a12b37
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/46a12b37
Branch: refs/heads/vpc
Commit: 46a12b378c288d27d86c9c885534f1309fee0f63
Parents: 70d0ff8
Author: Sheng Yang <sh...@citrix.com>
Authored: Tue Aug 7 13:17:06 2012 -0700
Committer: Sheng Yang <sh...@citrix.com>
Committed: Tue Aug 7 13:17:48 2012 -0700
----------------------------------------------------------------------
.../com/cloud/network/element/NetworkElement.java | 3 +-
.../network/element/CiscoNexusVSMElement.java | 3 +-
.../element/ElasticLoadBalancerElement.java | 2 +-
.../element/F5ExternalLoadBalancerElement.java | 2 +-
.../element/JuniperSRXExternalFirewallElement.java | 2 +-
.../cloud/network/element/NetscalerElement.java | 17 +++++++++-----
.../cloud/network/element/NiciraNvpElement.java | 5 ++-
.../src/com/cloud/network/element/OvsElement.java | 3 +-
.../src/com/cloud/network/NetworkManagerImpl.java | 13 ++++-------
.../cloud/network/element/BareMetalElement.java | 3 +-
.../network/element/CloudZonesNetworkElement.java | 3 +-
.../cloud/network/element/ExternalDhcpElement.java | 3 +-
.../network/element/SecurityGroupElement.java | 3 +-
.../network/element/VirtualRouterElement.java | 15 ++++++++----
14 files changed, 46 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/api/src/com/cloud/network/element/NetworkElement.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/element/NetworkElement.java b/api/src/com/cloud/network/element/NetworkElement.java
index c838fd3..97c0dc8 100644
--- a/api/src/com/cloud/network/element/NetworkElement.java
+++ b/api/src/com/cloud/network/element/NetworkElement.java
@@ -18,6 +18,7 @@ package com.cloud.network.element;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import com.cloud.deploy.DeployDestination;
import com.cloud.exception.ConcurrentOperationException;
@@ -131,5 +132,5 @@ public interface NetworkElement extends Adapter {
* @param services
* @return true/false
*/
- boolean verifyServicesCombination(List<String> services);
+ boolean verifyServicesCombination(Set<Service> services);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java b/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
index 368ef06..80c8ecf 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
@@ -20,6 +20,7 @@ package com.cloud.network.element;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
+import java.util.Set;
import javax.ejb.Local;
@@ -132,7 +133,7 @@ public class CiscoNexusVSMElement extends CiscoNexusVSMDeviceManagerImpl impleme
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
index 1f9356f..8490534 100644
--- a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
+++ b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
@@ -182,7 +182,7 @@ public class ElasticLoadBalancerElement extends AdapterBase implements LoadBalan
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java b/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
index 1b1cbf7..d685ad9 100644
--- a/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
+++ b/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
@@ -453,7 +453,7 @@ public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceMan
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java b/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
index 0473291..ad2516b 100644
--- a/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
+++ b/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
@@ -528,7 +528,7 @@ public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceMan
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
index 7fcb6d0..7d6b753 100644
--- a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
+++ b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
@@ -15,6 +15,7 @@ package com.cloud.network.element;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -591,15 +592,19 @@ public class NetscalerElement extends ExternalLoadBalancerDeviceManagerImpl impl
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
- List<String> netscalerServices = new ArrayList<String>();
- netscalerServices.add(Service.Lb.getName());
- netscalerServices.add(Service.StaticNat.getName());
+ public boolean verifyServicesCombination(Set<Service> services) {
+ Set<Service> netscalerServices = new HashSet<Service>();
+ netscalerServices.add(Service.Lb);
+ netscalerServices.add(Service.StaticNat);
// NetScaler can only act as Lb and Static Nat service provider
if (services != null && !services.isEmpty() && !netscalerServices.containsAll(services)) {
+ String servicesList = "";
+ for (Service service : services) {
+ servicesList += service.getName() + " ";
+ }
s_logger.warn("NetScaler network element can only support LB and Static NAT services and service combination "
- + services + " is not supported.");
+ + servicesList + " is not supported.");
return false;
}
@@ -781,4 +786,4 @@ public class NetscalerElement extends ExternalLoadBalancerDeviceManagerImpl impl
}
return null;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
index 6cc670c..bff69aa 100644
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
@@ -38,6 +38,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import javax.ejb.Local;
@@ -297,7 +298,7 @@ public class NiciraNvpElement extends AdapterBase implements ConnectivityProvide
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
@@ -514,5 +515,5 @@ public class NiciraNvpElement extends AdapterBase implements ConnectivityProvide
}
return new DeleteHostAnswer(true);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/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 9d571ae..bf785e6 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
@@ -18,6 +18,7 @@ package com.cloud.network.element;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.ejb.Local;
@@ -130,7 +131,7 @@ public class OvsElement extends AdapterBase implements NetworkElement {
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index f9c2717..1100734 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -6355,14 +6355,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
l.add(service);
}
- for (String provider : providerSvcs.keySet()) {
- NetworkElement element = getElementImplementingProvider(provider);
- List<String> services = providerSvcs.get(provider);
- if (!element.verifyServicesCombination(services)) {
- throw new UnsupportedServiceException("Provider " + provider + " doesn't support services combination: " + services);
- }
- }
-
return svcProviders;
}
@@ -6459,11 +6451,16 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
+ provider.getName());
}
}
+ List<String> serviceList = new ArrayList<String>();
for (Service service : enabledServices) {
// check if the service is provided by this Provider
if (!element.getCapabilities().containsKey(service)) {
throw new UnsupportedServiceException(provider.getName() + " Provider cannot provide service " + service.getName());
}
+ serviceList.add(service.getName());
+ }
+ if (!element.verifyServicesCombination(enabledServices)) {
+ throw new UnsupportedServiceException("Provider " + provider.getName() + " doesn't support services combination: " + serviceList);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/server/src/com/cloud/network/element/BareMetalElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/BareMetalElement.java b/server/src/com/cloud/network/element/BareMetalElement.java
index ab50ed6..74c30ec 100644
--- a/server/src/com/cloud/network/element/BareMetalElement.java
+++ b/server/src/com/cloud/network/element/BareMetalElement.java
@@ -18,6 +18,7 @@ package com.cloud.network.element;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.ejb.Local;
@@ -122,7 +123,7 @@ public class BareMetalElement extends AdapterBase implements NetworkElement {
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
index fb12140..2659500 100644
--- a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
+++ b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
@@ -19,6 +19,7 @@ package com.cloud.network.element;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.ejb.Local;
@@ -240,7 +241,7 @@ public class CloudZonesNetworkElement extends AdapterBase implements NetworkElem
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/server/src/com/cloud/network/element/ExternalDhcpElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/ExternalDhcpElement.java b/server/src/com/cloud/network/element/ExternalDhcpElement.java
index fd95bbf..896cd85 100755
--- a/server/src/com/cloud/network/element/ExternalDhcpElement.java
+++ b/server/src/com/cloud/network/element/ExternalDhcpElement.java
@@ -19,6 +19,7 @@ package com.cloud.network.element;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.ejb.Local;
@@ -146,7 +147,7 @@ public class ExternalDhcpElement extends AdapterBase implements NetworkElement,
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/server/src/com/cloud/network/element/SecurityGroupElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/SecurityGroupElement.java b/server/src/com/cloud/network/element/SecurityGroupElement.java
index 74bc54c..26b33c9 100644
--- a/server/src/com/cloud/network/element/SecurityGroupElement.java
+++ b/server/src/com/cloud/network/element/SecurityGroupElement.java
@@ -19,6 +19,7 @@ package com.cloud.network.element;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.ejb.Local;
@@ -105,7 +106,7 @@ public class SecurityGroupElement extends AdapterBase implements NetworkElement
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
+ public boolean verifyServicesCombination(Set<Service> services) {
return true;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46a12b37/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 25dfc1a..78ba0ad 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -812,11 +812,16 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
}
@Override
- public boolean verifyServicesCombination(List<String> services) {
- if (!services.contains("SourceNat")) {
- if (services.contains("StaticNat") || services.contains("Firewall") || services.contains("Lb") || services.contains("PortForwarding") ||
- services.contains("Vpn")) {
- s_logger.warn("Virtual router can't enable services " + services + " without source NAT service");
+ public boolean verifyServicesCombination(Set<Service> services) {
+ if (!services.contains(Service.SourceNat)) {
+ if (services.contains(Service.StaticNat) || services.contains(Service.Firewall) || services.contains(Service.Lb) ||
+ services.contains(Service.PortForwarding) || services.contains(Service.Vpn)) {
+ String servicesList = "[";
+ for (Service service : services) {
+ servicesList += service.getName() + " ";
+ }
+ servicesList += "]";
+ s_logger.warn("Virtual router can't enable services " + servicesList + " without source NAT service");
return false;
}
}