You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/03/07 13:26:35 UTC

[03/12] git commit: lb subscription refactoring contd.

lb subscription refactoring contd.


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

Branch: refs/heads/master
Commit: 436abf4f8dfe254eafd9b7222cce502263827ee0
Parents: eaedb07 98edba2
Author: Isuru <is...@wso2.com>
Authored: Sat Feb 15 20:59:42 2014 +0530
Committer: Isuru <is...@wso2.com>
Committed: Sat Feb 15 20:59:42 2014 +0530

----------------------------------------------------------------------
 .../behaviour/CartridgeMgtBehaviour.java        |  46 ++++++++
 .../multitenant/lb/MultiTenantLBService.java    |  17 ++-
 .../manager/CartridgeSubscriptionManager.java   |  91 ++++++++++++++++
 .../subscription/CartridgeSubscription.java     |  26 ++---
 .../subscription/DataCartridgeSubscription.java |   3 +-
 .../ServiceDeploymentMultiTenantBehaviour.java  | 109 -------------------
 .../SubscriptionMultiTenantBehaviour.java       |  50 +++++----
 .../SubscriptionSingleTenantBehaviour.java      |  67 ++++++------
 .../tenancy/SubscriptionTenancyBehaviour.java   |  20 +++-
 .../utils/CartridgeSubscriptionUtils.java       |  34 +++---
 10 files changed, 251 insertions(+), 212 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/436abf4f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java
index 55f9592,55f9592..3d8caa8
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java
@@@ -26,15 -26,15 +26,19 @@@ import org.apache.stratos.cloud.control
  import org.apache.stratos.manager.deploy.service.Service;
  import org.apache.stratos.manager.exception.ADCException;
  import org.apache.stratos.manager.exception.UnregisteredCartridgeException;
--import org.apache.stratos.manager.utils.ApplicationManagementUtil;
--import org.apache.stratos.manager.utils.CartridgeConstants;
++import org.apache.stratos.manager.lb.category.LoadBalancerCategory;
  
  public class MultiTenantLBService extends Service {
  
      private static Log log = LogFactory.getLog(MultiTenantLBService.class);
  
--    public MultiTenantLBService(String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, CartridgeInfo cartridgeInfo, String tenantRange) {
++    private LoadBalancerCategory loadBalancerCategory;
++
++    public MultiTenantLBService(String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId,
++                                CartridgeInfo cartridgeInfo, String tenantRange, LoadBalancerCategory loadBalancerCategory) {
++
          super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange);
++        this.loadBalancerCategory = loadBalancerCategory;
      }
  
      @Override
@@@ -43,8 -43,8 +47,9 @@@
          super.deploy(properties);
  
          //register the service
--        ApplicationManagementUtil.registerService(getType(), getClusterId(), CartridgeConstants.DEFAULT_SUBDOMAIN,
--                getPayloadData().getCompletePayloadData(), getTenantRange(), getHostName(), getAutoscalingPolicyName(),
--                getDeploymentPolicyName(), properties);
++        loadBalancerCategory.register();
++//        ApplicationManagementUtil.registerService(getType(), getClusterId(), CartridgeConstants.DEFAULT_SUBDOMAIN,
++//                getPayloadData().getCompletePayloadData(), getTenantRange(), getHostName(), getAutoscalingPolicyName(),
++//                getDeploymentPolicyName(), properties);
      }
  }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/436abf4f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index 25f1a77,25f1a77..4e603c5
--- 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
@@@ -26,8 -26,8 +26,10 @@@ import org.apache.stratos.cloud.control
  import org.apache.stratos.cloud.controller.pojo.Property;
  import org.apache.stratos.manager.client.CloudControllerServiceClient;
  import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo;
++import org.apache.stratos.manager.dao.Cluster;
  import org.apache.stratos.manager.dto.SubscriptionInfo;
  import org.apache.stratos.manager.exception.*;
++import org.apache.stratos.manager.lb.category.*;
  import org.apache.stratos.manager.repository.Repository;
  import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
  import org.apache.stratos.manager.subscriber.Subscriber;
@@@ -42,9 -42,9 +44,11 @@@ import org.apache.stratos.manager.topol
  import org.apache.stratos.manager.utils.ApplicationManagementUtil;
  import org.apache.stratos.manager.utils.CartridgeConstants;
  import org.apache.stratos.manager.utils.RepoPasswordMgtUtil;
++import org.apache.stratos.messaging.util.Constants;
  import org.wso2.carbon.context.CarbonContext;
  
  import java.util.Collection;
++import java.util.Random;
  
  /**
   * Manager class for the purpose of managing CartridgeSubscriptionInfo subscriptions, groupings, etc.
@@@ -172,6 -172,6 +176,93 @@@ public class CartridgeSubscriptionManag
          return cartridgeSubscription;
      }
  
++    private CartridgeSubscription subscribeToLB (SubscriptionData subscriptionData, LBDataContext lbDataContext)
++
++            throws ADCException, InvalidCartridgeAliasException,
++            DuplicateCartridgeAliasException, PolicyException, UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException,
++            RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException {
++
++        LoadBalancerCategory loadBalancerCategory = null;
++
++        if (lbDataContext.getLbCategory().equals(Constants.NO_LOAD_BALANCER)) {
++            // no load balancer subscription required
++            return null;
++
++        }
++
++        String lbAlias = "lb" + lbDataContext.getLbCartridgeInfo().getType() + new Random().nextInt();
++
++        String lbClusterId = lbAlias + "." + lbDataContext.getLbCartridgeInfo().getType() + ".domain";
++
++        // limit the cartridge alias to 30 characters in length
++        if (lbClusterId.length() > 30) {
++            lbClusterId = CartridgeSubscriptionUtils.limitLengthOfString(lbClusterId, 30);
++        }
++
++        Cluster lbCluster = new Cluster();
++        lbCluster.setClusterDomain(lbClusterId);
++        // set hostname
++        lbCluster.setHostName(lbAlias + "." + lbDataContext.getLbCartridgeInfo().getHostName());
++
++        LBCategoryContext lbCategoryContext = new LBCategoryContext(lbDataContext.getLbCartridgeInfo().getType(), lbCluster, lbDataContext.getAutoscalePolicy(),
++                lbDataContext.getDeploymentPolicy(), lbDataContext.getLbCartridgeInfo(), );
++
++        if (lbDataContext.getLbCategory().equals(Constants.EXISTING_LOAD_BALANCERS)) {
++
++            loadBalancerCategory = new ExistingLoadBalancerCategory();
++
++        } else if (lbDataContext.getLbCategory().equals(Constants.DEFAULT_LOAD_BALANCER)) {
++            loadBalancerCategory = new DefaultLoadBalancerCategory();
++
++        } else if (lbDataContext.getLbCategory().equals(Constants.SERVICE_AWARE_LOAD_BALANCER)) {
++            loadBalancerCategory = new ServiceLevelLoadBalancerCategory();
++        }
++
++        if (loadBalancerCategory == null) {
++            throw new ADCException("The given Load Balancer category " + lbDataContext.getLbCategory() + " not found");
++        }
++
++        if(lbDataContext.getLbCartridgeInfo().getMultiTenant()) {
++            throw new ADCException("LB Cartridge must be single tenant");
++        }
++
++        // Create the CartridgeSubscription instance
++        CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.getLBCartridgeSubscriptionInstance(lbDataContext, loadBalancerCategory);
++
++        // Generate and set the key
++        String subscriptionKey = CartridgeSubscriptionUtils.generateSubscriptionKey();
++        cartridgeSubscription.setSubscriptionKey(subscriptionKey);
++
++        // Create repository
++        Repository repository = cartridgeSubscription.manageRepository(null,
++                "",
++                "",
++                false,
++                lbAlias,
++                lbDataContext.getLbCartridgeInfo(),
++                subscriptionData.getTenantDomain());
++
++        // Create subscriber
++        Subscriber subscriber = new Subscriber(subscriptionData.getTenantAdminUsername(), subscriptionData.getTenantId(), subscriptionData.getTenantDomain());
++
++        // create subscription
++        cartridgeSubscription.createSubscription(subscriber, lbAlias, lbDataContext.getAutoscalePolicy(),
++                lbDataContext.getDeploymentPolicy(), repository);
++
++
++        log.info("Tenant [" + subscriptionData.getTenantId() + "] with username [" + subscriptionData.getTenantAdminUsername() +
++                " subscribed to " + "] Cartridge with Alias " + lbAlias + ", Cartridge Type: " +
++                lbCategoryContext.getLbType() + ", Autoscale Policy: " +
++                lbDataContext.getAutoscalePolicy() + ", Deployment Policy: " + lbDataContext.getDeploymentPolicy());
++
++
++        // Publish tenant subscribed event to message broker
++        CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
++                cartridgeSubscription.getCartridgeInfo().getType());
++
++        return cartridgeSubscription;
++    }
++
      /**
       * Registers the cartridge subscription for the given CartridgeSubscriptionInfo object
       *

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/436abf4f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
index d71e107,ee145f5..30f2b74
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
@@@ -23,24 -22,16 +23,26 @@@ import org.apache.axis2.AxisFault
  import org.apache.commons.lang3.RandomStringUtils;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
 +import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
  import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
 +import org.apache.stratos.cloud.controller.pojo.LoadbalancerConfig;
 +import org.apache.stratos.cloud.controller.pojo.Properties;
 +import org.apache.stratos.cloud.controller.pojo.Property;
 +import org.apache.stratos.manager.client.AutoscalerServiceClient;
 +import org.apache.stratos.manager.client.CloudControllerServiceClient;
+ import org.apache.stratos.manager.dao.Cluster;
  import org.apache.stratos.manager.deploy.service.Service;
  import org.apache.stratos.manager.exception.ADCException;
  import org.apache.stratos.manager.exception.DuplicateCartridgeAliasException;
  import org.apache.stratos.manager.exception.InvalidCartridgeAliasException;
 +import org.apache.stratos.manager.exception.UnregisteredCartridgeException;
 +import org.apache.stratos.manager.lb.category.LBCategoryContext;
 +import org.apache.stratos.manager.lb.category.LBDataContext;
  import org.apache.stratos.manager.payload.BasicPayloadData;
+ import org.apache.stratos.manager.repository.Repository;
  import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
- import org.apache.stratos.manager.subscription.CartridgeSubscription;
 +import org.apache.stratos.manager.subscription.SubscriptionData;
+ import org.apache.stratos.manager.subscriber.Subscriber;
  import org.apache.stratos.messaging.broker.publish.EventPublisher;
  import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent;
  import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent;