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);
