adapting new changes, fixing conflicts and merging
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/09d0beff Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/09d0beff Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/09d0beff Branch: refs/heads/master Commit: 09d0beffa5cee828868dbec5a1b660b8d4eca57e Parents: ba64484 d926386 Author: Isuru <[email protected]> Authored: Sun Mar 2 10:39:20 2014 +0530 Committer: Isuru <[email protected]> Committed: Sun Mar 2 10:39:20 2014 +0530 ---------------------------------------------------------------------- .../health/AutoscalerHealthStatReceiver.java | 7 +- .../topology/AutoscalerTopologyReceiver.java | 59 +- .../autoscaler/partition/PartitionManager.java | 5 +- .../autoscaler/policy/PolicyManager.java | 8 + .../rule/AutoscalerRuleEvaluator.java | 5 + .../stratos/cartridge/agent/CartridgeAgent.java | 14 +- .../config/CartridgeAgentConfiguration.java | 13 +- .../agent/data/publisher/DataPublisher.java | 6 +- .../data/publisher/GenericDataPublisher.java | 29 + .../publisher/CartridgeAgentEventPublisher.java | 72 +- .../publisher/HealthStatisticsNotifier.java | 4 +- .../publisher/HealthStatisticsReader.java | 32 +- .../agent/util/CartridgeAgentConstants.java | 1 + .../cartridge/agent/util/ExtensionUtils.java | 21 + .../stratos/cli/RestCommandLineService.java | 553 ++++++---- .../apache/stratos/cli/StratosApplication.java | 5 +- .../stratos/cli/beans/TenantInfoBean.java | 28 + .../cli/beans/cartridge/CartridgeInfoBean.java | 30 +- .../cli/commands/AutoscalePolicyCommand.java | 2 +- .../DescribeAutoScalingPolicyCommand.java | 2 +- .../DescribeDeploymentPolicyCommand.java | 2 +- .../stratos/cli/commands/ExitCommand.java | 2 +- .../stratos/cli/commands/ListAllTenants.java | 65 ++ .../stratos/cli/commands/PartitionCommand.java | 1 - .../stratos/cli/commands/SubscribeCommand.java | 53 +- .../UndeployCartridgeDefinitionCommand.java | 2 +- .../apache/stratos/cli/utils/CliConstants.java | 16 +- .../cloud/controller/iaases/AWSEC2Iaas.java | 136 ++- .../controller/iaases/OpenstackNovaIaas.java | 45 +- .../cloud/controller/iaases/VCloudIaas.java | 13 +- .../impl/CloudControllerServiceImpl.java | 286 +++-- .../cloud/controller/interfaces/Iaas.java | 8 +- .../cloud/controller/pojo/Cartridge.java | 43 +- .../cloud/controller/pojo/CartridgeConfig.java | 30 +- .../cloud/controller/pojo/CartridgeInfo.java | 22 +- .../cloud/controller/pojo/ClusterContext.java | 53 +- .../controller/pojo/PersistanceMapping.java | 84 -- .../cloud/controller/pojo/Persistence.java | 48 + .../stratos/cloud/controller/pojo/Volume.java | 110 ++ .../InstanceStatusEventMessageDelegator.java | 6 + .../controller/topology/TopologyBuilder.java | 93 +- .../topology/TopologyEventPublisher.java | 11 +- .../util/CloudControllerConstants.java | 1 + .../controller/util/CloudControllerUtil.java | 9 +- .../validate/AWSEC2PartitionValidator.java | 7 +- .../OpenstackNovaPartitionValidator.java | 15 +- .../validate/VCloudPartitionValidator.java | 54 + .../apache/stratos/common/util/CommonUtil.java | 6 +- .../balancer/LoadBalancerTenantReceiver.java | 7 +- .../balancer/LoadBalancerTopologyReceiver.java | 7 +- .../balancer/cache/AlgorithmContextCache.java | 4 +- .../load/balancer/cache/LoadBalancerCache.java | 51 +- .../TenantAwareLoadBalanceEndpoint.java | 7 +- .../balancer/mediators/ResponseInterceptor.java | 22 +- .../InFlightRequestDecrementCallable.java | 38 + .../InFlightRequestIncrementCallable.java | 38 + .../LoadBalancerStatisticsCollector.java | 159 ++- .../LoadBalancerStatisticsExecutor.java | 56 + .../console/cartridge_info.jag | 13 +- .../console/controllers/acs.jag | 6 +- .../controllers/cartridgeSubscribeSubmit.jag | 14 +- .../controllers/cartridgeUnsubscribeSubmit.jag | 2 - .../console/controllers/loginSubmit.jag | 3 - .../console/controllers/manageTenants.jag | 5 +- .../console/controllers/profileClient.jag | 3 +- .../console/subscribe_cartridge.jag | 2 +- .../console/tenant_management.jag | 2 +- .../console/tenant_new.jag | 2 +- .../console/themes/theme1/pages/index.hbs | 1 + .../console/themes/theme1/pages/plain.hbs | 2 +- .../themes/theme1/partials/cartridge_info.hbs | 78 +- .../themes/theme1/partials/cartridges.hbs | 17 +- .../partials/configure_stratos_wizard.hbs | 54 +- .../themes/theme1/partials/mycartridges.hbs | 4 +- .../theme1/partials/subscribe_cartridge.hbs | 188 ++-- .../themes/theme1/partials/tenant_new.hbs | 99 +- .../themes/theme1/renderers/cartridge_info.js | 8 +- .../themes/theme1/renderers/cartridges.js | 2 + .../console/themes/theme1/renderers/index.js | 3 +- .../console/themes/theme1/renderers/login.js | 2 - .../theme1/renderers/tenant_management.js | 3 +- .../console/themes/theme1/ui/css/main.css | 24 +- .../console/themes/theme1/ui/img/favicon.png | Bin 0 -> 585 bytes .../console/themes/theme1/ui/js/mycartridges.js | 2 +- .../console/themes/theme1/ui/js/popup.js | 1 + .../themes/theme1/ui/js/tenant_management.js | 4 +- .../console/util/utility.jag | 54 +- .../manager/client/AutoscalerServiceClient.java | 12 + .../apache/stratos/manager/dto/Cartridge.java | 28 +- .../listener/InstanceStatusListener.java | 20 +- .../manager/CartridgeSubscriptionManager.java | 53 +- .../manager/payload/BasicPayloadData.java | 23 + .../ApplicationCartridgeSubscription.java | 3 +- .../subscription/CartridgeSubscription.java | 48 +- .../subscription/DataCartridgeSubscription.java | 5 +- .../FrameworkCartridgeSubscription.java | 19 + .../subscription/LBCartridgeSubscription.java | 3 +- .../subscription/PersistenceContext.java | 67 ++ .../manager/subscription/SubscriptionData.java | 16 +- .../SubscriptionSingleTenantBehaviour.java | 115 ++ .../StratosManagerTopologyReceiver.java | 4 + .../utils/ApplicationManagementUtil.java | 2 +- .../manager/utils/CartridgeConstants.java | 2 + .../messaging/domain/topology/MemberStatus.java | 20 +- .../status/InstanceMaintenanceModeEvent.java | 59 + .../topology/MemberMaintenanceModeEvent.java | 79 ++ .../topology/MemberReadyToShutdownEvent.java | 18 + .../topology/MemberMaintenanceListener.java | 24 + .../MemberMaintenanceModeProcessor.java | 147 +++ .../topology/TopologyMessageProcessorChain.java | 7 + .../health/stat/HealthStatReceiver.java | 7 +- .../InstanceNotifierEventMessageReceiver.java | 7 +- .../message/receiver/tenant/TenantReceiver.java | 7 +- .../receiver/topology/TopologyReceiver.java | 7 +- .../stratos/messaging/util/Constants.java | 2 + .../rest/endpoint/bean/CartridgeInfoBean.java | 9 - .../definition/CartridgeDefinitionBean.java | 14 +- .../definition/PersistanceMappingBean.java | 38 - .../cartridge/definition/PersistenceBean.java | 46 + .../bean/cartridge/definition/VolumeBean.java | 39 + .../rest/endpoint/bean/topology/Cluster.java | 17 + .../rest/endpoint/bean/topology/Member.java | 17 + .../bean/util/converter/PojoConverter.java | 43 +- .../stratos/rest/endpoint/mock/MockContext.java | 102 +- .../rest/endpoint/mock/StratosTestAdmin.java | 23 +- .../rest/endpoint/services/ServiceUtils.java | 462 ++------ .../rest/endpoint/services/StratosAdmin.java | 29 +- .../main/webapp/stratos/WEB-INF/cxf-servlet.xml | 2 +- .../extension/FaultHandlingWindowProcessor.java | 8 +- pom.xml | 2 +- .../main/autoscale-policies/economyPolicy.xml | 20 +- .../distribution/src/main/assembly/bin.xml | 1 + .../src/main/extensions/mount_volumes.sh | 86 ++ .../distribution/src/main/conf/log4j.properties | 17 +- .../src/main/conf/cartridge-config.properties | 3 + .../modules/p2-profile-gen/pom.xml | 4 +- .../main/resources/CloudControllerService.wsdl | 28 +- tools/puppet/agent/root/bin/ec2_init.sh | 128 ++- tools/puppet3-agent/config.sh | 94 ++ tools/puppet3-agent/init.sh | 142 +++ tools/puppet3-agent/puppetinstall/puppetinstall | 397 +++++++ tools/puppet3-agent/stratos_sendinfo.rb | 29 + tools/puppet3/auth.conf | 116 ++ tools/puppet3/autosign.conf | 1 + tools/puppet3/fileserver.conf | 41 + tools/puppet3/manifests/nodes.pp | 151 +++ tools/puppet3/manifests/site.pp | 1 + tools/puppet3/modules/agent/manifests/init.pp | 55 + .../modules/agent/manifests/initialize.pp | 70 ++ .../modules/agent/manifests/push_templates.pp | 27 + tools/puppet3/modules/agent/manifests/start.pp | 27 + .../modules/agent/templates/bin/stratos.sh.erb | 48 + .../conf/templates/jndi.properties.template.erb | 26 + .../templates/extensions/addons/_mysql.erb | 15 + .../agent/templates/extensions/addons/_ruby.erb | 17 + .../extensions/artifacts-updated.sh.erb | 29 + .../agent/templates/extensions/clean.sh.erb | 28 + .../extensions/instance-activated.sh.erb | 28 + .../extensions/instance-started.sh.erb | 36 + .../templates/extensions/start-servers.sh.erb | 28 + tools/puppet3/modules/autoscaler/LICENSE | 13 + .../autoscaler/files/configs/bin/stratos.sh | 298 ++++++ .../configs/repository/conf/autoscaler.xml | 34 + .../modules/autoscaler/manifests/clean.pp | 45 + .../modules/autoscaler/manifests/deploy.pp | 43 + .../modules/autoscaler/manifests/init.pp | 97 ++ .../modules/autoscaler/manifests/initialize.pp | 59 + .../modules/autoscaler/manifests/params.pp | 66 ++ .../autoscaler/manifests/push_templates.pp | 26 + .../modules/autoscaler/manifests/start.pp | 27 + .../templates/conf/autoscaler.xml.erb | 39 + .../templates/conf/axis2/axis2.xml.erb | 701 ++++++++++++ .../autoscaler/templates/conf/carbon.xml.erb | 625 +++++++++++ .../templates/conf/jndi.properties.erb | 4 + .../economy-autoscale.xml.erb | 26 + .../economy-deployment.xml.erb | 23 + .../server/partitions/partitions.xml.erb | 19 + tools/puppet3/modules/cc/LICENSE | 13 + .../modules/cc/files/configs/bin/stratos.sh | 299 ++++++ .../repository/conf/cloud-controller.xml | 81 ++ ....stratos.cloud.controller_4.0.0.SNAPSHOT.jar | Bin 0 -> 183364 bytes tools/puppet3/modules/cc/manifests/clean.pp | 45 + tools/puppet3/modules/cc/manifests/deploy.pp | 43 + tools/puppet3/modules/cc/manifests/init.pp | 96 ++ .../puppet3/modules/cc/manifests/initialize.pp | 59 + tools/puppet3/modules/cc/manifests/params.pp | 66 ++ .../modules/cc/manifests/push_templates.pp | 26 + tools/puppet3/modules/cc/manifests/start.pp | 27 + .../cc/templates/conf/axis2/axis2.xml.erb | 703 ++++++++++++ .../modules/cc/templates/conf/carbon.xml.erb | 625 +++++++++++ .../cc/templates/conf/jndi.properties.erb | 4 + tools/puppet3/modules/cep/LICENSE | 13 + .../modules/cep/files/configs/bin/wso2server.sh | 304 ++++++ .../dropins/activemq_client_5.8.0_1.0.0.jar | Bin 0 -> 1032400 bytes .../dropins/andes_client_0.13.wso2v8_1.0.0.jar | Bin 0 -> 1854829 bytes ...che.stratos.cep.extension-1.0.0-SNAPSHOT.jar | Bin 0 -> 16495 bytes .../repository/conf/siddhi/siddhi.extension | 3 + .../repository/conf/stream-manager-config.xml | 177 +++ .../HealthStatisticsEventBuilder.xml | 10 + .../InstanceStatusStatisticsBuilder.xml | 10 + .../LoadBalancerStatisticsEventBuilder.xml | 10 + .../AverageInFlightRequestsEventFormatter.xml | 11 + .../AverageLoadAverageEventFormatter.xml | 11 + .../AverageMemoryConsumptionEventFormatter.xml | 11 + .../FaultMessageEventFormatter.xml | 11 + .../GradientInFlightRequestsEventFormatter.xml | 11 + .../GradientLoadAverageEventFormatter.xml | 11 + .../GradientMemoryConsumptionEventFormatter.xml | 11 + .../MemberAverageLoadAverageEventFormatter.xml | 11 + ...erAverageMemoryConsumptionEventFormatter.xml | 11 + .../MemberGradientLoadAverageEventFormatter.xml | 11 + ...rGradientMemoryConsumptionEventFormatter.xml | 11 + ...econdDerivativeLoadAverageEventFormatter.xml | 11 + ...erivativeMemoryConsumptionEventFormatter.xml | 11 + ...DerivativeInFlightRequestsEventFormatter.xml | 11 + ...econdDerivativeLoadAverageEventFormatter.xml | 11 + ...erivativeMemoryConsumptionEventFormatter.xml | 11 + .../executionplans/AverageHeathRequest.xml | 29 + .../AverageInFlightRequestsFinder.xml | 19 + .../executionplans/GradientOfHealthRequest.xml | 30 + .../GradientOfRequestsInFlightFinder.xml | 18 + .../SecondDerivativeOfHealthRequest.xml | 27 + ...SecondDerivativeOfRequestsInFlightFinder.xml | 19 + .../DefaultWSO2EventInputAdaptor.xml | 3 + .../DefaultWSO2EventOutputAdaptor.xml | 8 + .../outputeventadaptors/JMSOutputAdaptor.xml | 8 + .../streamdefinitions/stream-manager-config.xml | 269 +++++ tools/puppet3/modules/cep/manifests/clean.pp | 45 + tools/puppet3/modules/cep/manifests/deploy.pp | 43 + tools/puppet3/modules/cep/manifests/init.pp | 101 ++ .../puppet3/modules/cep/manifests/initialize.pp | 59 + tools/puppet3/modules/cep/manifests/params.pp | 69 ++ .../modules/cep/manifests/push_templates.pp | 26 + tools/puppet3/modules/cep/manifests/start.pp | 27 + .../cep/templates/conf/axis2/axis2.xml.erb | 698 ++++++++++++ .../modules/cep/templates/conf/carbon.xml.erb | 609 +++++++++++ .../cep/templates/conf/jndi.properties.erb | 32 + .../JMSOutputAdaptor.xml.erb | 8 + tools/puppet3/modules/java/manifests/init.pp | 34 + .../modules/java/templates/java_home.sh.erb | 1 + tools/puppet3/modules/lb/LICENSE | 13 + .../modules/lb/files/configs/bin/stratos.sh | 302 ++++++ tools/puppet3/modules/lb/manifests/clean.pp | 45 + tools/puppet3/modules/lb/manifests/deploy.pp | 43 + tools/puppet3/modules/lb/manifests/init.pp | 95 ++ .../puppet3/modules/lb/manifests/initialize.pp | 67 ++ tools/puppet3/modules/lb/manifests/params.pp | 66 ++ .../modules/lb/manifests/push_templates.pp | 26 + tools/puppet3/modules/lb/manifests/start.pp | 27 + .../lb/templates/conf/axis2/axis2.xml.erb | 527 +++++++++ .../lb/templates/conf/loadbalancer.conf.erb | 149 +++ tools/puppet3/modules/manager/LICENSE | 13 + .../manager/files/configs/bin/stratos.sh | 301 ++++++ .../lib/mysql-connector-java-5.1.26-bin.jar | Bin 0 -> 855948 bytes .../repository/conf/cartridge-config.properties | 63 ++ .../conf/datasources/master-datasources.xml | 27 + .../conf/datasources/stratos-datasources.xml | 66 ++ .../repository/conf/stratos-datasources.xml | 66 ++ .../puppet3/modules/manager/manifests/clean.pp | 45 + .../puppet3/modules/manager/manifests/deploy.pp | 43 + tools/puppet3/modules/manager/manifests/init.pp | 99 ++ .../modules/manager/manifests/initialize.pp | 59 + .../puppet3/modules/manager/manifests/params.pp | 66 ++ .../modules/manager/manifests/push_templates.pp | 26 + .../puppet3/modules/manager/manifests/start.pp | 27 + .../manager/templates/conf/axis2/axis2.xml.erb | 702 ++++++++++++ .../manager/templates/conf/carbon.xml.erb | 625 +++++++++++ .../conf/cartridge-config.properties.erb | 73 ++ .../conf/datasources/master-datasources.xml.erb | 27 + .../datasources/stratos-datasources.xml.erb | 66 ++ .../manager/templates/conf/jndi.properties.erb | 4 + tools/puppet3/modules/messagebroker/LICENSE | 13 + .../files/configs/bin/wso2server.sh | 300 ++++++ .../modules/messagebroker/manifests/clean.pp | 45 + .../modules/messagebroker/manifests/deploy.pp | 43 + .../modules/messagebroker/manifests/init.pp | 99 ++ .../messagebroker/manifests/initialize.pp | 59 + .../modules/messagebroker/manifests/params.pp | 66 ++ .../messagebroker/manifests/push_templates.pp | 26 + .../modules/messagebroker/manifests/start.pp | 27 + .../templates/conf/axis2/axis2.xml.erb | 719 +++++++++++++ .../messagebroker/templates/conf/carbon.xml.erb | 583 ++++++++++ tools/puppet3/modules/mysql/manifests/init.pp | 56 + .../modules/mysql/templates/phpMyAdmin.conf.erb | 73 ++ tools/puppet3/modules/nodejs/manifests/init.pp | 52 + tools/puppet3/modules/php/files/90forceyes | 23 + .../modules/php/lib/facter/stratos_facts.rb | 12 + tools/puppet3/modules/php/manifests/init.pp | 121 +++ .../puppet3/modules/php/manifests/init.pp.back | 131 +++ .../puppet3/modules/php/manifests/init.pp.cent | 94 ++ tools/puppet3/modules/php/manifests/init.pp.deb | 102 ++ tools/puppet3/modules/php/manifests/init.pp.rpm | 78 ++ .../php/templates/apache2/apache2.conf.erb | 256 +++++ .../apache2/sites-available/default-ssl.erb | 195 ++++ .../apache2/sites-available/default.erb | 64 ++ .../modules/php/templates/httpd/httpd.conf.erb | 1009 ++++++++++++++++++ tools/puppet3/modules/ruby/manifests/init.pp | 43 + .../modules/ruby/templates/ruby-start.sh.erb | 18 + tools/puppet3/modules/tomcat/manifests/init.pp | 51 + .../puppet3/modules/wordpress/manifests/init.pp | 70 ++ .../wordpress/templates/httpd/httpd.conf.erb | 1009 ++++++++++++++++++ tools/puppet3/puppet.conf | 14 + tools/stratos-installer/conf/setup.conf | 4 + .../repository/conf/cartridge-config.properties | 2 + tools/stratos-installer/setup.sh | 14 + 305 files changed, 21130 insertions(+), 1668 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/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 69574e1,ac4d8e6..6f2880d --- 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 @@@ -21,7 -21,9 +21,10 @@@ package org.apache.stratos.manager.mana import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.apache.stratos.cloud.controller.pojo.*; + 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.CloudControllerServiceClient; import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo; import org.apache.stratos.manager.dto.SubscriptionInfo; @@@ -31,6 -32,6 +34,7 @@@ import org.apache.stratos.manager.repos import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager; import org.apache.stratos.manager.subscriber.Subscriber; import org.apache.stratos.manager.subscription.CartridgeSubscription; ++import org.apache.stratos.manager.subscription.PersistenceContext; import org.apache.stratos.manager.subscription.SubscriptionData; import org.apache.stratos.manager.subscription.factory.CartridgeSubscriptionFactory; import org.apache.stratos.manager.subscription.tenancy.SubscriptionMultiTenantBehaviour; @@@ -84,140 -115,7 +88,139 @@@ public class CartridgeSubscriptionManag throw new ADCException(message, e); } - //Decide tenancy behaviour + // check if this subscription requires Persistence Mapping, and its supported by the cartridge definition + Properties persistenceMappingProperties = null; - if (subscriptionData.getPersistanceMapping() != null) { - persistenceMappingProperties = getPersistenceMappingProperties(subscriptionData.getPersistanceMapping(), cartridgeInfo); ++ if (subscriptionData.getPersistanceContext() != null) { ++ persistenceMappingProperties = getPersistenceMappingProperties(subscriptionData.getPersistanceContext(), cartridgeInfo); + } + + Properties serviceCartridgeSubscriptionProperties = null; + LBDataContext lbDataCtxt = null; + + // get lb config reference + LoadbalancerConfig lbConfig = cartridgeInfo.getLbConfig(); + if (lbConfig == null || lbConfig.getProperties() == null) { + // no LB ref + if (log.isDebugEnabled()) { + log.debug("This Service does not require a load balancer. " + "[Service Name] " + + subscriptionData.getCartridgeType()); + } + + } else { + // LB ref found, get relevant LB Context data + lbDataCtxt = CartridgeSubscriptionUtils.getLoadBalancerDataContext(subscriptionData.getTenantId(), subscriptionData.getCartridgeType(), + subscriptionData.getDeploymentPolicyName(), lbConfig); + + // subscribe to LB + CartridgeSubscription lbCartridgeSubscription = subscribeToLB (subscriptionData, lbDataCtxt); + + if (lbCartridgeSubscription != null) { + // register LB cartridge subscription + Properties lbCartridgeSubscriptionProperties = new Properties(); + if (lbDataCtxt.getLbProperperties() != null && !lbDataCtxt.getLbProperperties().isEmpty()) { + lbCartridgeSubscriptionProperties.setProperties(lbDataCtxt.getLbProperperties().toArray(new Property[0])); + } + + registerCartridgeSubscription(lbCartridgeSubscription, lbCartridgeSubscriptionProperties); + } + } + + // subscribe to relevant service cartridge + CartridgeSubscription serviceCartridgeSubscription = subscribe (subscriptionData, cartridgeInfo); + serviceCartridgeSubscriptionProperties = new Properties(); + + // lb related properties + if (lbDataCtxt.getLoadBalancedServiceProperties() != null && !lbDataCtxt.getLoadBalancedServiceProperties().isEmpty()) { + serviceCartridgeSubscriptionProperties.setProperties(lbDataCtxt.getLoadBalancedServiceProperties().toArray(new Property[0])); + } + + // Persistence Mapping related properties + if (persistenceMappingProperties != null && persistenceMappingProperties.getProperties().length > 0) { + // add the properties to send to CC via register method + for (Property persistenceMappingProperty : persistenceMappingProperties.getProperties()) { + serviceCartridgeSubscriptionProperties.addProperties(persistenceMappingProperty); + } + } + + // register service cartridge subscription + return registerCartridgeSubscription(serviceCartridgeSubscription, serviceCartridgeSubscriptionProperties); + } + + private CartridgeSubscription subscribeToLB (SubscriptionData subscriptionData, LBDataContext lbDataContext) + + throws ADCException, InvalidCartridgeAliasException, + DuplicateCartridgeAliasException, PolicyException, UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException, + RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException { + + if (lbDataContext.getLbCategory().equals(Constants.NO_LOAD_BALANCER)) { + // no load balancer subscription required + log.info("No LB subscription required for the Subscription with alias: " + subscriptionData.getCartridgeAlias() + ", type: " + + subscriptionData.getCartridgeType()); + return null; + } + + LoadBalancerCategory loadBalancerCategory = null; + + String lbAlias = "lb" + lbDataContext.getLbCartridgeInfo().getType() + new Random().nextInt(); + + 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"); + } + + // Set the load balanced service type + loadBalancerCategory.setLoadBalancedServiceType(subscriptionData.getCartridgeType()); + + // 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()); ++ Repository repository = cartridgeSubscription.manageRepository(null, "", "", false); + + // 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: " + lbDataContext.getLbCartridgeInfo().getType() + + ", 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; + } + + private CartridgeSubscription subscribe (SubscriptionData subscriptionData, CartridgeInfo cartridgeInfo) + + throws ADCException, InvalidCartridgeAliasException, + DuplicateCartridgeAliasException, PolicyException, UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException, + RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException { + + + // Decide tenancy behaviour SubscriptionTenancyBehaviour tenancyBehaviour; if(cartridgeInfo.getMultiTenant()) { tenancyBehaviour = new SubscriptionMultiTenantBehaviour(); @@@ -229,34 -127,42 +232,34 @@@ CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory. getCartridgeSubscriptionInstance(cartridgeInfo, tenancyBehaviour); - + // Generate and set the key String subscriptionKey = CartridgeSubscriptionUtils.generateSubscriptionKey(); - - String encryptedRepoPassword = repositoryPassword != null && !repositoryPassword.isEmpty() ? - RepoPasswordMgtUtil.encryptPassword(repositoryPassword, subscriptionKey) : ""; - - //Create repository - Repository repository = cartridgeSubscription.manageRepository(repositoryURL, - repositoryUsername, - encryptedRepoPassword, - isPrivateRepository, - cartridgeAlias, - cartridgeInfo, tenantDomain); - - //Create subscriber - Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain); - - //Set the key cartridgeSubscription.setSubscriptionKey(subscriptionKey); + // Create repository - Repository repository = cartridgeSubscription.manageRepository(subscriptionData.getRepositoryURL(), - subscriptionData.getRepositoryUsername(), ++ Repository repository = cartridgeSubscription.manageRepository(subscriptionData.getRepositoryURL(), subscriptionData.getRepositoryUsername(), + subscriptionData.getRepositoryPassword(), - subscriptionData.isPrivateRepository(), - subscriptionData.getCartridgeAlias(), - cartridgeInfo, - subscriptionData.getTenantDomain()); ++ subscriptionData.isPrivateRepository()); + + // Create subscriber + Subscriber subscriber = new Subscriber(subscriptionData.getTenantAdminUsername(), subscriptionData.getTenantId(), subscriptionData.getTenantDomain()); + + //create subscription - cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoscalingPolicyName, - deploymentPolicyName, repository); ++ cartridgeSubscription.createSubscription(subscriber, subscriptionData.getCartridgeAlias(), subscriptionData.getAutoscalingPolicyName(), ++ subscriptionData.getDeploymentPolicyName(), repository); ++ + // create subscription + cartridgeSubscription.createSubscription(subscriber, subscriptionData.getCartridgeAlias(), subscriptionData.getAutoscalingPolicyName(), + subscriptionData.getDeploymentPolicyName(), repository); - // set the lb cluster id if its available - if (lbClusterId != null && !lbClusterId.isEmpty()) { - cartridgeSubscription.setLbClusterId(lbClusterId); - } - log.info("Tenant [" + tenantId + "] with username [" + tenantAdminUsername + - " subscribed to " + "] Cartridge Alias " + cartridgeAlias + ", Cartridge Type: " + - cartridgeType + ", Repo URL: " + repositoryURL + ", Policy: " + - autoscalingPolicyName); + log.info("Tenant [" + subscriptionData.getTenantId() + "] with username [" + subscriptionData.getTenantAdminUsername() + + " subscribed to " + "] Cartridge with Alias " + subscriptionData.getCartridgeAlias() + ", Cartridge Type: " + + subscriptionData.getCartridgeType() + ", Repo URL: " + subscriptionData.getRepositoryURL() + ", Autoscale Policy: " + + subscriptionData.getAutoscalingPolicyName() + ", Deployment Policy: " + subscriptionData.getDeploymentPolicyName()); - // Publish tenant subscribed envent to message broker + // Publish tenant subscribed event to message broker CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getCartridgeInfo().getType()); @@@ -351,42 -257,7 +354,22 @@@ throw new NotSubscribedException(errorMsg, alias); } } - + - private Properties getPersistenceMappingProperties (PersistanceMapping persistanceMapping, CartridgeInfo cartridgeInfo) throws ADCException { - - if (!persistanceMapping.getPersistanceRequired()) { - // Persistence Mapping not required for this subscription - return null; - } ++ private Properties getPersistenceMappingProperties (PersistenceContext persistenceCtxt, CartridgeInfo cartridgeInfo) throws ADCException { + - if (persistanceMapping.getPersistanceRequired() && !cartridgeInfo.isPeristanceMappingsSpecified()) { ++ if (!cartridgeInfo.isPersistenceSpecified()) { + // Persistence Mapping not supported in the cartridge definition - error + String errorMsg = "Persistence Mapping not supported by the cartridge type " + cartridgeInfo.getType(); + log.error(errorMsg); + throw new ADCException(errorMsg); + } + - Property persistanceRequiredProperty = new Property(); - persistanceRequiredProperty.setName(Constants.IS_VOLUME_REQUIRED); - persistanceRequiredProperty.setValue(String.valueOf(persistanceMapping.getPersistanceRequired())); - - Property sizeProperty = new Property(); - sizeProperty.setName(Constants.VOLUME_SIZE); - sizeProperty.setValue(Integer.toString(persistanceMapping.getSize())); - - Property deviceProperty = new Property(); - deviceProperty.setName(Constants.DEVICE_NAME); - deviceProperty.setValue(String.valueOf(persistanceMapping.getDevice())); - - Property deleteOnTerminationProperty = new Property(); - deleteOnTerminationProperty.setName(Constants.SHOULD_DELETE_VOLUME); - deleteOnTerminationProperty.setValue(String.valueOf(persistanceMapping.getRemoveOntermination())); - + Properties persistenceMappingProperties = new Properties(); - persistenceMappingProperties.setProperties(new Property[]{persistanceRequiredProperty, sizeProperty, deviceProperty, deleteOnTerminationProperty}); ++ persistenceMappingProperties.setProperties(new Property[]{persistenceCtxt.getPersistanceRequiredProperty(), persistenceCtxt.getSizeProperty(), ++ persistenceCtxt.getDeleteOnTerminationProperty()}); + + return persistenceMappingProperties; + } /** * http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/ApplicationCartridgeSubscription.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/ApplicationCartridgeSubscription.java index eed644a,eed644a..13dd128 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/ApplicationCartridgeSubscription.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/ApplicationCartridgeSubscription.java @@@ -41,8 -41,8 +41,7 @@@ public class ApplicationCartridgeSubscr public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword, -- boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo, -- String tenantDomain) { ++ boolean privateRepo) { //no repository for application cartridge instances return null; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java index 71ae249,a9ddb7f..31bb04a --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java @@@ -180,9 -178,9 +178,6 @@@ public abstract class CartridgeSubscrip * @param repoUserName Repository Username * @param repoUserPassword Repository password * @param privateRepo public/private repository -- * @param cartridgeAlias Alias of the cartridge subscription -- * @param cartridgeInfo CartridgeInfo subscription -- * @param tenantDomain Domain of the tenant * * @return Repository populated with relevant information or null of not repository is relevant to this cartridge * subscription @@@ -192,38 -190,38 +187,9 @@@ * @throws RepositoryTransportException * @throws InvalidRepositoryException */ -- public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword, -- boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo, -- String tenantDomain) -- -- throws ADCException, RepositoryRequiredException, RepositoryCredentialsRequiredException, -- RepositoryTransportException, InvalidRepositoryException { -- -- /*if (!new Boolean(System.getProperty(CartridgeConstants.FEATURE_INTERNAL_REPO_ENABLED))) { -- if (log.isDebugEnabled()) { -- log.debug("Internal repo feature is not enabled."); -- } -- }*/ -- -- //TODO: throw if repo is not given for this cartridge type -- Repository repository = null; -- if (repoURL != null && repoURL.trim().length() > 0) { -- repository = new Repository(); -- log.info("External REPO URL is provided as [" + repoURL + -- "]. Therefore not creating a new repo."); -- //repository.setRepoName(repoURL.substring(0, repoURL.length()-4)); // remove .git part -- repository.setUrl(repoURL); -- repository.setUserName(repoUserName); -- repository.setPassword(repoUserPassword); -- repository.setPrivateRepository(privateRepo); -- } -- -- // Validate Remote Repository. -- //ApplicationManagementUtil.validateRepository(repoURL, repoUserName, repoUserPassword, privateRepo, -- // new Boolean(System.getProperty(CartridgeConstants.FEATURE_EXTERNAL_REPO_VAIDATION_ENABLED))); -- -- return repository; -- } ++ public abstract Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword, ++ boolean privateRepo) throws ADCException, RepositoryRequiredException, RepositoryCredentialsRequiredException, ++ RepositoryTransportException, InvalidRepositoryException; /** * Cleans up the subscription information after unsubscribing http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java index d77a38b,80c95f4..5382619 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java @@@ -74,8 -72,8 +72,7 @@@ public class DataCartridgeSubscription } public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword, -- boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo, -- String tenantDomain) { ++ boolean privateRepo) { //no repository for data cartridge instances return null; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/FrameworkCartridgeSubscription.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/FrameworkCartridgeSubscription.java index ee6a210,ee6a210..2c714da --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/FrameworkCartridgeSubscription.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/FrameworkCartridgeSubscription.java @@@ -21,6 -21,6 +21,8 @@@ package org.apache.stratos.manager.subs import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; ++import org.apache.stratos.manager.exception.*; ++import org.apache.stratos.manager.repository.Repository; import org.apache.stratos.manager.subscription.tenancy.SubscriptionTenancyBehaviour; import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; @@@ -40,4 -40,4 +42,21 @@@ public class FrameworkCartridgeSubscrip subscriptionTenancyBehaviour) { super(cartridgeInfo, subscriptionTenancyBehaviour); } ++ ++ public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword, ++ boolean privateRepo) ++ ++ throws ADCException, RepositoryRequiredException, RepositoryCredentialsRequiredException, ++ RepositoryTransportException, InvalidRepositoryException { ++ ++ log.info("External REPO URL is provided as [" + repoURL + "]"); ++ ++ Repository repository = new Repository(); ++ repository.setUrl(repoURL); ++ repository.setUserName(repoUserName); ++ repository.setPassword(repoUserPassword); ++ repository.setPrivateRepository(privateRepo); ++ ++ return repository; ++ } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java index 17b9eba,0b349ab..a382a73 --- 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 @@@ -76,24 -55,8 +76,23 @@@ public class LBCartridgeSubscription ex } @Override - public CartridgeSubscriptionInfo registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException { - //TODO + public void removeSubscription() throws ADCException, NotSubscribedException { + + getLoadBalancerCategory().remove(getCluster().getClusterDomain(), getAlias());; + } + + public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword, - boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo, - String tenantDomain) { ++ boolean privateRepo) { + + //no repository for data cartridge instances return null; } + + public LoadBalancerCategory getLoadBalancerCategory() { + return loadBalancerCategory; + } + + public void setLoadBalancerCategory(LoadBalancerCategory loadBalancerCategory) { + this.loadBalancerCategory = loadBalancerCategory; + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/PersistenceContext.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/PersistenceContext.java index 0000000,0000000..472e3a3 new file mode 100644 --- /dev/null +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/PersistenceContext.java @@@ -1,0 -1,0 +1,67 @@@ ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, ++ * software distributed under the License is distributed on an ++ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++ * KIND, either express or implied. See the License for the ++ * specific language governing permissions and limitations ++ * under the License. ++ */ ++ ++package org.apache.stratos.manager.subscription; ++ ++import org.apache.commons.logging.Log; ++import org.apache.commons.logging.LogFactory; ++import org.apache.stratos.cloud.controller.pojo.Property; ++ ++public class PersistenceContext { ++ ++ private static Log log = LogFactory.getLog(PersistenceContext.class); ++ ++ private Property persistanceRequiredProperty; ++ private Property sizeProperty; ++ private Property deleteOnTerminationProperty; ++ ++ public PersistenceContext () { ++ persistanceRequiredProperty = new Property(); ++ sizeProperty = new Property(); ++ deleteOnTerminationProperty = new Property(); ++ } ++ ++ ++ public Property getPersistanceRequiredProperty() { ++ return persistanceRequiredProperty; ++ } ++ ++ public void setPersistanceRequiredProperty(String propertyName, String propertyValue) { ++ this.persistanceRequiredProperty.setName(propertyName); ++ this.persistanceRequiredProperty.setValue(propertyValue); ++ } ++ ++ public Property getSizeProperty() { ++ return sizeProperty; ++ } ++ ++ public void setSizeProperty(String propertyName, String propertyValue) { ++ this.sizeProperty.setName(propertyName); ++ this.sizeProperty.setValue(propertyValue); ++ } ++ ++ public Property getDeleteOnTerminationProperty() { ++ return deleteOnTerminationProperty; ++ } ++ ++ public void setDeleteOnTerminationProperty(String propertyName, String propertyValue) { ++ this.deleteOnTerminationProperty.setName(propertyName); ++ this.deleteOnTerminationProperty.setValue(propertyValue); ++ } ++} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/09d0beff/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java index a0801a3,94242c6..99237fa --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java @@@ -18,7 -18,7 +18,6 @@@ package org.apache.stratos.manager.subscription; - import org.apache.stratos.cloud.controller.pojo.PersistanceMapping; -import org.apache.stratos.cloud.controller.pojo.Persistence; import org.apache.stratos.cloud.controller.pojo.Property; /** @@@ -41,8 -42,8 +40,7 @@@ public class SubscriptionData private String repositoryPassword; private String lbClusterId; private Property[] properties; -- private String dataCartridgeAlias; - private PersistanceMapping persistanceMapping; - private String lbAlias; ++ private PersistenceContext persistanceCtxt; public String getCartridgeType() { return cartridgeType; @@@ -156,15 -157,7 +154,11 @@@ this.properties = properties; } -- public void setDataCartridgeAlias(String dataCartridgeAlias) {this.dataCartridgeAlias = dataCartridgeAlias; } - - public String getDataCartridgeAlias() {return dataCartridgeAlias;} - - public PersistanceMapping getPersistanceMapping() { - return persistanceMapping; ++ public PersistenceContext getPersistanceContext() { ++ return persistanceCtxt; + } - public void setPersistanceMapping(PersistanceMapping persistanceMapping) { - this.persistanceMapping = persistanceMapping; - public String getDataCartridgeAlias() {return dataCartridgeAlias;} ++ public void setPersistanceCtxt(PersistenceContext persistanceCtxt) { ++ this.persistanceCtxt = persistanceCtxt; + } }
