You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2013/12/08 08:20:21 UTC
git commit: Added properties service.multi-tenant,
cluster.tenant-range to load balancer configuration and updated unit
tests
Updated Branches:
refs/heads/master 3780649d9 -> c30afba9d
Added properties service.multi-tenant, cluster.tenant-range to load balancer configuration and updated unit tests
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/c30afba9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/c30afba9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/c30afba9
Branch: refs/heads/master
Commit: c30afba9d439735e31f2865edc3a92023262fa15
Parents: 3780649
Author: Imesh Gunaratne <im...@apache.org>
Authored: Sun Dec 8 12:50:10 2013 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Sun Dec 8 12:50:10 2013 +0530
----------------------------------------------------------------------
.../balancer/conf/LoadBalancerConfiguration.java | 19 ++++++++++++++++---
.../load/balancer/conf/util/Constants.java | 2 ++
.../test/LoadBalancerConfigurationTest.java | 5 ++++-
.../sample/configuration/loadbalancer2.conf | 2 ++
.../distribution/src/main/conf/loadbalancer.conf | 2 ++
5 files changed, 26 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/c30afba9/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
index cb2397d..a977391 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
@@ -374,14 +374,27 @@ public class LoadBalancerConfiguration {
validateRequiredNode(servicesNode, Constants.CONF_ELEMENT_SERVICES);
for (Node serviceNode : servicesNode.getChildNodes()) {
- // TODO: Add service type to service node
- Service service = new Service(serviceNode.getName(), ServiceType.SingleTenant);
+ ServiceType serviceType = ServiceType.SingleTenant;
+ String multiTenant = serviceNode.getProperty(Constants.CONF_PROPERTY_MULTI_TENANT);
+ if (StringUtils.isNotBlank(multiTenant) && (Boolean.parseBoolean(multiTenant))) {
+ serviceType = ServiceType.MultiTenant;
+ }
+ Service service = new Service(serviceNode.getName(), serviceType);
Node clustersNode = serviceNode.findChildNodeByName(Constants.CONF_ELEMENT_CLUSTERS);
for (Node clusterNode : clustersNode.getChildNodes()) {
String clusterId = clusterNode.getName();
Cluster cluster = new Cluster(service.getServiceName(), clusterId, null);
+ String tenantRange = clusterNode.getProperty(Constants.CONF_PROPERTY_TENANT_RANGE);
+ if (StringUtils.isNotBlank(tenantRange)) {
+ if (service.getServiceType() != ServiceType.MultiTenant) {
+ throw new InvalidConfigurationException(String.format("%s property is not valid for non multi-tenant service cluster: [service] %s [cluster] %s",
+ Constants.CONF_PROPERTY_TENANT_RANGE, service.getServiceName(), cluster.getClusterId()));
+ }
+ cluster.setTenantRange(tenantRange);
+ }
+
String algorithm = clusterNode.getProperty(Constants.CONF_PROPERTY_ALGORITHM);
if (StringUtils.isNotBlank(algorithm)) {
cluster.setLoadBalanceAlgorithmName(algorithm);
@@ -426,7 +439,7 @@ public class LoadBalancerConfiguration {
// Add service to topology manager if not exists
try {
TopologyManager.acquireWriteLock();
- if(!TopologyManager.getTopology().serviceExists(service.getServiceName())) {
+ if (!TopologyManager.getTopology().serviceExists(service.getServiceName())) {
TopologyManager.getTopology().addService(service);
}
} finally {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/c30afba9/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/util/Constants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/util/Constants.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/util/Constants.java
index cc5181b..e858858 100755
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/util/Constants.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/util/Constants.java
@@ -49,7 +49,9 @@ public class Constants {
public static final String CONF_PROPERTY_TOPOLOGY_SERVICE_FILTER = "topology-service-filter";
public static final String CONF_PROPERTY_TOPOLOGY_CLUSTER_FILTER = "topology-cluster-filter";
public static final String CONF_PROPERTY_MULTI_TENANCY = "multi-tenancy";
+ public static final String CONF_PROPERTY_MULTI_TENANT = "multi-tenant";
public static final String CONF_PROPERTY_TENANT_IDENTIFIER = "tenant-identifier";
+ public static final String CONF_PROPERTY_TENANT_RANGE = "tenant-range";
public static final String CONF_PROPERTY_VALUE_TENANT_ID = "tenant-id";
public static final String CONF_PROPERTY_VALUE_TENANT_DOMAIN = "tenant-domain";
public static final String CONF_PROPERTY_TENANT_IDENTIFIER_REGEX = "tenant-identifier-regex";
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/c30afba9/components/org.apache.stratos.load.balancer/src/test/java/org/apache/stratos/load/balancer/test/LoadBalancerConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/test/java/org/apache/stratos/load/balancer/test/LoadBalancerConfigurationTest.java b/components/org.apache.stratos.load.balancer/src/test/java/org/apache/stratos/load/balancer/test/LoadBalancerConfigurationTest.java
index 89ee6f3..7353fed 100755
--- a/components/org.apache.stratos.load.balancer/src/test/java/org/apache/stratos/load/balancer/test/LoadBalancerConfigurationTest.java
+++ b/components/org.apache.stratos.load.balancer/src/test/java/org/apache/stratos/load/balancer/test/LoadBalancerConfigurationTest.java
@@ -80,7 +80,7 @@ public class LoadBalancerConfigurationTest {
Assert.assertEquals(String.format("%s, cep port is not valid", validationError), 7615, configuration.getCepPort());
Assert.assertTrue(String.format("%s, multi-tenancy is not true", validationError), configuration.isMultiTenancyEnabled());
Assert.assertEquals(String.format("%s, tenant-identifier is not valid", validationError), TenantIdentifier.TenantDomain, configuration.getTenantIdentifier());
- Assert.assertEquals(String.format("%s, tenant-identifier-regex is not valid", validationError), "t/(.+)/", configuration.getTenantIdentifierRegex());
+ Assert.assertEquals(String.format("%s, tenant-identifier-regex is not valid", validationError), "t/([^/]*)/", configuration.getTenantIdentifierRegex());
} finally {
LoadBalancerConfiguration.clear();
}
@@ -108,9 +108,12 @@ public class LoadBalancerConfigurationTest {
Service appServer = topology.getService(serviceName);
Assert.assertNotNull(String.format("%s, service not found: [service] %s", validationError, serviceName), appServer);
+ Assert.assertTrue(String.format("%s, multi-tenant is not true: [service] %s", validationError, serviceName), appServer.getServiceType() == ServiceType.MultiTenant);
+
String clusterId = "app-server-cluster1";
Cluster cluster1 = appServer.getCluster(clusterId);
Assert.assertNotNull(String.format("%s, cluster not found: [cluster] %s", validationError, clusterId), cluster1);
+ Assert.assertEquals(String.format("%s, tenant range is not valid: [cluster] %s", validationError, clusterId), cluster1.getTenantRange(), "1-100");
String hostName = "cluster1.appserver.foo.org";
Assert.assertTrue(String.format("%s, hostname not found: [hostname] %s", validationError, hostName), hostNameExist(cluster1, hostName));
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/c30afba9/components/org.apache.stratos.load.balancer/src/test/resources/sample/configuration/loadbalancer2.conf
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/test/resources/sample/configuration/loadbalancer2.conf b/components/org.apache.stratos.load.balancer/src/test/resources/sample/configuration/loadbalancer2.conf
index 4663336..d49d4ab 100755
--- a/components/org.apache.stratos.load.balancer/src/test/resources/sample/configuration/loadbalancer2.conf
+++ b/components/org.apache.stratos.load.balancer/src/test/resources/sample/configuration/loadbalancer2.conf
@@ -87,9 +87,11 @@ loadbalancer {
services {
app-server { # service name, a unique identifier to identify a service
+ multi-tenant: true; # Set to true if the service is multi-tenant
clusters {
app-server-cluster1 { # cluster id, a unique identifier to identify a cluster
hosts: cluster1.appserver.foo.org, cluster1.org; # comma separated hostname list
+ tenant-range: 1-100; # Tenant range of the cluster
algorithm: round-robin; # algorithm name
members {
m1 { # member id, a unique identifier to identify a member
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/c30afba9/products/load-balancer/modules/distribution/src/main/conf/loadbalancer.conf
----------------------------------------------------------------------
diff --git a/products/load-balancer/modules/distribution/src/main/conf/loadbalancer.conf b/products/load-balancer/modules/distribution/src/main/conf/loadbalancer.conf
index ce9967f..789f12a 100644
--- a/products/load-balancer/modules/distribution/src/main/conf/loadbalancer.conf
+++ b/products/load-balancer/modules/distribution/src/main/conf/loadbalancer.conf
@@ -85,9 +85,11 @@ loadbalancer {
#
# services {
# app-server { # service name, a unique identifier to identify a service
+ # multi-tenant: true; # Set to true if the service is multi-tenant
# clusters {
# app-server-cluster1 { # cluster id, a unique identifier to identify a cluster
# hosts: cluster1.appserver.foo.org, cluster1.org; # comma separated hostname list
+ # tenant-range: 1-100; # Tenant range of the cluster
# algorithm: round-robin; # algorithm name
# members {
# m1 { # member id, a unique identifier to identify a member