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