Repository: incubator-stratos
Updated Branches:
  refs/heads/master a0e97c144 -> 3cd4c3407


Fixing LB and Service subscription issues for multitenant services


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/2f549c50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/2f549c50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/2f549c50

Branch: refs/heads/master
Commit: 2f549c5038e965ed28d05d1e05d83b828af3fb66
Parents: 2651d6a
Author: Sajith Kariyawasam <[email protected]>
Authored: Tue Apr 1 03:38:12 2014 +0530
Committer: Sajith Kariyawasam <[email protected]>
Committed: Tue Apr 1 03:38:12 2014 +0530

----------------------------------------------------------------------
 .../behaviour/CartridgeMgtBehaviour.java        |  5 +++-
 .../service/ServiceDeploymentManager.java       |  7 +++++
 .../category/DefaultLoadBalancerCategory.java   | 12 +++++---
 .../lb/category/LoadBalancerCategory.java       |  7 +++--
 .../manager/CartridgeSubscriptionManager.java   |  4 ++-
 .../subscription/LBCartridgeSubscription.java   | 30 +++++++++++++++-----
 .../rest/endpoint/services/ServiceUtils.java    |  2 +-
 7 files changed, 51 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java
index b083d56..56f7e10 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java
@@ -115,8 +115,11 @@ public abstract class CartridgeMgtBehaviour implements 
Serializable {
     }
 
     public void register(CartridgeInfo cartridgeInfo, Cluster cluster, 
PayloadData payloadData, String autoscalePolicyName, String 
deploymentPolicyName, Properties properties) throws ADCException, 
UnregisteredCartridgeException {
-
+       if(payloadData != null) {
         log.info("Payload: " + 
payloadData.getCompletePayloadData().toString());
+       }else {
+               log.info("Payload is null");
+       }
 
         ApplicationManagementUtil.registerService(cartridgeInfo.getType(),
                 cluster.getClusterDomain(),

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
index cac4f91..b4ab369 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
@@ -358,6 +358,13 @@ public class ServiceDeploymentManager {
         // Set the load balanced service type
         loadBalancerCategory.setLoadBalancedServiceType(loadBalancedService);
 
+        // Set if the load balanced service is multi tenant or not
+        loadBalancerCategory.setLoadBalancedServiceMultiTenant(true); // TODO 
--- temp hack
+
+        // set the relevant deployment policy
+        log.info(" ******* Setting Deployment Policy name : ------>  " + 
lbDataCtxt.getDeploymentPolicy());
+        
loadBalancerCategory.setDeploymentPolicyName(lbDataCtxt.getDeploymentPolicy());
+
         Service lbService = new 
MultiTenantLBService(lbDataCtxt.getLbCartridgeInfo().getType(), 
lbDataCtxt.getAutoscalePolicy(),
                 lbDataCtxt.getDeploymentPolicy(), -1234, 
lbDataCtxt.getLbCartridgeInfo(),
                 tenantRange, loadBalancerCategory);

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
index ac368e8..2a8c98f 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
@@ -80,22 +80,26 @@ public class DefaultLoadBalancerCategory extends 
LoadBalancerCategory {
                     log.debug("Set existing default LB hostname " + 
clusterContext.getHostName() + " to the LB Subscription with alias: " + alias);
                 }
             }
+         
+            return null;
 
         } else {
             // set cluster domain
             cluster.setClusterDomain(generateClusterId(alias, 
cartridgeInfo.getType()));
             // set hostname
             cluster.setHostName(generateHostName(alias, 
cartridgeInfo.getHostName()));
-        }
-
+        
         return createPayload(cartridgeInfo, subscriptionKey, subscriber,
                 cluster, repository, alias, customPayloadEntries);
+        }
     }
 
     public void register(CartridgeInfo cartridgeInfo, Cluster cluster, 
PayloadData payloadData, String autoscalePolicyName, String 
deploymentPolicyName, Properties properties) throws ADCException, 
UnregisteredCartridgeException {
-
+       log.info("Register service with payload data ["+payloadData+"] ");
         if (!isDefaultLBExists()) {
-            log.info("Payload: " + 
payloadData.getCompletePayloadData().toString());
+               if(payloadData != null) {
+                       log.info("Payload: " + 
payloadData.getCompletePayloadData().toString());
+               }
             super.register(cartridgeInfo, cluster, payloadData, 
autoscalePolicyName, deploymentPolicyName, properties);
         }else {
                log.info(" Default LB exists... Not registering...");

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
index 43ae859..ef6be1f 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
@@ -89,15 +89,18 @@ public abstract class LoadBalancerCategory extends 
CartridgeMgtBehaviour {
                        
cluster.setClusterDomain(deployedLBService.getClusterId());
                        cluster.setHostName(deployedLBService.getHostName());
 
+                       return null;
                } else {
             // set cluster domain
                        cluster.setClusterDomain(generateClusterId(alias, 
cartridgeInfo.getType()));
                        // set hostname
                        cluster.setHostName(generateHostName(alias, 
cartridgeInfo.getHostName()));
+                       
+                       return createPayload(cartridgeInfo, subscriptionKey, 
subscriber,
+                                       cluster, repository, alias, 
customPayloadEntries);
                }
 
-               return createPayload(cartridgeInfo, subscriptionKey, subscriber,
-                               cluster, repository, alias, 
customPayloadEntries);
+               
        }
 
        public boolean isLoadBalancedServiceMultiTenant() {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index ad4accc..ab13ddf 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@ -169,7 +169,7 @@ public class CartridgeSubscriptionManager {
 
         
         if (lbDataContext.getLbCategory() == null || 
lbDataContext.getLbCategory().equals(Constants.NO_LOAD_BALANCER)) {
-            // no load balancer subscription required
+            // no load balancer subscription requiredgenerateSubscriptionKey
             log.info("No LB subscription required for the Subscription with 
alias: " + subscriptionData.getCartridgeAlias() + ", type: " +
                     subscriptionData.getCartridgeType());
             return null;
@@ -288,7 +288,9 @@ public class CartridgeSubscriptionManager {
                                                 
subscriptionData.getDeploymentPolicyName(), repository);
         
         // Add whether the subscription is enabled upstream git commits
+        if(cartridgeSubscription.getPayloadData() != null) {
         
cartridgeSubscription.getPayloadData().add(CartridgeConstants.COMMIT_ENABLED, 
String.valueOf(subscriptionData.isCommitsEnabled()));
+        }
         
 
         log.info("Tenant [" + subscriptionData.getTenantId() + "] with 
username [" + subscriptionData.getTenantAdminUsername() +

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
index 10d7cb5..0c2254d 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
@@ -22,7 +22,17 @@ package org.apache.stratos.manager.subscription;
 import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo;
-import org.apache.stratos.manager.exception.*;
+import org.apache.stratos.manager.exception.ADCException;
+import org.apache.stratos.manager.exception.AlreadySubscribedException;
+import org.apache.stratos.manager.exception.DuplicateCartridgeAliasException;
+import org.apache.stratos.manager.exception.InvalidCartridgeAliasException;
+import org.apache.stratos.manager.exception.InvalidRepositoryException;
+import org.apache.stratos.manager.exception.NotSubscribedException;
+import org.apache.stratos.manager.exception.PolicyException;
+import 
org.apache.stratos.manager.exception.RepositoryCredentialsRequiredException;
+import org.apache.stratos.manager.exception.RepositoryRequiredException;
+import org.apache.stratos.manager.exception.RepositoryTransportException;
+import org.apache.stratos.manager.exception.UnregisteredCartridgeException;
 import org.apache.stratos.manager.lb.category.LoadBalancerCategory;
 import org.apache.stratos.manager.repository.Repository;
 import org.apache.stratos.manager.subscriber.Subscriber;
@@ -58,16 +68,22 @@ public class LBCartridgeSubscription extends 
CartridgeSubscription {
         setAutoscalingPolicyName(autoscalingPolicy);
         setDeploymentPolicyName(deploymentPolicyName);
         setRepository(repository);
-
-        setPayloadData(getLoadBalancerCategory().create(getAlias(), 
getCluster(), getSubscriber(), getRepository(), getCartridgeInfo(),
-                getSubscriptionKey(), getCustomPayloadEntries()));
+        // If LB subscription is for MT service, payload data should not be set
+        if(!loadBalancerCategory.isLoadBalancedServiceMultiTenant()) {         
+               setPayloadData(getLoadBalancerCategory().create(getAlias(), 
getCluster(), getSubscriber(), getRepository(), getCartridgeInfo(),
+                    getSubscriptionKey(), getCustomPayloadEntries())); 
+        }        
     }
 
+    
     @Override
     public CartridgeSubscriptionInfo registerSubscription(Properties 
properties) throws ADCException, UnregisteredCartridgeException {
-
-        getLoadBalancerCategory().register (getCartridgeInfo(), getCluster(), 
getPayloadData(), getAutoscalingPolicyName(),
-                getDeploymentPolicyName(), properties);
+       CartridgeInfo cartridgeInfo = getCartridgeInfo();
+       if(!cartridgeInfo.isMultiTenantSpecified()) {
+                getLoadBalancerCategory().register (cartridgeInfo, 
getCluster(), getPayloadData(), getAutoscalingPolicyName(),
+                       getDeploymentPolicyName(), properties);
+       }
+       
 
         return 
ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), 
getAutoscalingPolicyName(),
                 getType(), getAlias(), getSubscriber().getTenantId(), 
getSubscriber().getTenantDomain(),

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2f549c50/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 38fbc8c..a17eb0f 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@ -978,7 +978,7 @@ public class ServiceUtils {
 
         SubscriptionData subscriptionData = new SubscriptionData();
         
subscriptionData.setCartridgeType(cartridgeInfoBean.getCartridgeType());
-        
subscriptionData.setCartridgeAlias(cartridgeInfoBean.getAlias().trim());
+        
subscriptionData.setCartridgeAlias(cartridgeInfoBean.getAlias().trim());        
         
subscriptionData.setAutoscalingPolicyName(cartridgeInfoBean.getAutoscalePolicy());
         
subscriptionData.setDeploymentPolicyName(cartridgeInfoBean.getDeploymentPolicy());
         subscriptionData.setTenantDomain(tenantDomain);

Reply via email to