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;