committing non conflicting files
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/aadd589f Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/aadd589f Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/aadd589f Branch: refs/heads/4.0.0-grouping Commit: aadd589f39b1a946d8a01e4bcbd01aae83ad3516 Parents: bc7f7b2 7f1c44a Author: Isuru Haththotuwa <[email protected]> Authored: Thu Aug 28 15:26:33 2014 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Thu Aug 28 15:26:33 2014 +0530 ---------------------------------------------------------------------- NOTICE | 2 +- README.md | 48 +- .../org.apache.stratos.account.mgt.ui/pom.xml | 2 +- .../org.apache.stratos.account.mgt/pom.xml | 2 +- .../org.apache.stratos.activation/pom.xml | 2 +- .../org.apache.stratos.autoscaler/pom.xml | 4 +- .../stratos/autoscaler/AutoscalerContext.java | 2 - .../autoscaler/NetworkPartitionContext.java | 3 +- .../stratos/autoscaler/PartitionContext.java | 38 +- .../autoscaler/api/AutoScalerServiceImpl.java | 1 - .../cloud/controller/CloudControllerClient.java | 23 +- .../interfaces/AutoScalerServiceInterface.java | 2 - .../AutoscalerHealthStatEventReceiver.java | 3 - .../AutoscalerTopologyEventReceiver.java | 152 ++- .../autoscaler/monitor/AbstractMonitor.java | 76 ++ .../autoscaler/monitor/ClusterMonitor.java | 101 +- .../autoscaler/monitor/LbClusterMonitor.java | 24 +- .../partition/deployers/PartitionDeployer.java | 5 +- .../deployers/AutoscalerPolicyDeployer.java | 114 -- .../deployers/AutoscalerPolicyReader.java | 113 -- .../deployers/DeploymentPolicyDeployer.java | 5 +- .../policy/model/LoadAverageThresholds.java | 52 + .../autoscaler/policy/model/LoadThresholds.java | 30 +- .../model/MemoryConsumptionThresholds.java | 52 + .../model/RequestsInFlightThresholds.java | 53 + .../rule/AutoscalerRuleEvaluator.java | 1 + .../autoscaler/rule/RuleTasksDelegator.java | 43 +- .../autoscaler/util/AutoScalerConstants.java | 6 + .../stratos/autoscaler/util/AutoscalerUtil.java | 27 +- .../org.apache.stratos.cartridge.agent/pom.xml | 2 +- .../cartridge/agent/ArtifactCopyTask.java | 39 + .../stratos/cartridge/agent/CartridgeAgent.java | 555 ++++++++-- .../apache/stratos/cartridge/agent/Main.java | 44 +- .../cartridge/agent/RepositoryFileListener.java | 8 +- .../synchronizer/RepositoryInformation.java | 10 +- .../git/impl/GitBasedArtifactRepository.java | 779 +++++++++---- .../GitDeploymentSynchronizerConstants.java | 12 + .../synchronizer/git/util/Utilities.java | 3 + .../config/CartridgeAgentConfiguration.java | 348 ++++-- .../config/configurator/JndiConfigurator.java | 107 -- .../agent/data/publisher/log/Constants.java | 13 + .../publisher/log/FileBasedLogPublisher.java | 6 +- .../agent/data/publisher/log/LogPublisher.java | 9 +- .../data/publisher/log/LogPublisherManager.java | 65 +- .../publisher/CartridgeAgentEventPublisher.java | 11 +- .../extensions/DefaultExtensionHandler.java | 1034 ++++++++++++++++++ .../agent/extensions/ExtensionHandler.java | 73 ++ .../publisher/HealthStatisticsReader.java | 59 + .../agent/util/CartridgeAgentConstants.java | 54 +- .../agent/util/CartridgeAgentUtils.java | 5 +- .../cartridge/agent/util/ExtensionUtils.java | 557 +++++++++- .../org.apache.stratos.cartridge.mgt.ui/pom.xml | 2 +- components/org.apache.stratos.cli/README.md | 7 + components/org.apache.stratos.cli/pom.xml | 153 ++- .../stratos/cli/RestCommandLineService.java | 300 ++++- .../apache/stratos/cli/StratosApplication.java | 63 +- .../stratos/cli/beans/cartridge/Cartridge.java | 9 + .../stratos/cli/commands/SubscribeCommand.java | 239 ++-- .../stratos/cli/completer/CommandCompleter.java | 9 + .../cli/completer/StratosFileNameCompleter.java | 48 + .../src/test/python/.gitignore | 20 + .../src/test/python/README.md | 82 ++ .../src/test/python/__files/body_cookie.json | 1 + .../test/python/__files/body_tenant_create.json | 1 + .../python/__files/body_tenant_deactivate.json | 1 + .../test/python/__files/body_tenant_list.json | 1 + .../src/test/python/__init__.py | 19 + .../src/test/python/mappings/cookie.json | 18 + .../src/test/python/mappings/tenant-create.json | 19 + .../test/python/mappings/tenant-deactivate.json | 16 + .../src/test/python/mappings/tenant-list.json | 16 + .../src/test/python/test_common.py | 99 ++ .../src/test/python/test_interactive.py | 197 ++++ .../src/test/python/test_noninteractive.py | 89 ++ .../src/test/python/wiremock.py | 117 ++ .../org.apache.stratos.cloud.controller/pom.xml | 2 +- .../concurrent/PartitionValidatorCallable.java | 4 + .../cloud/controller/iaases/AWSEC2Iaas.java | 1 - .../cloud/controller/iaases/DockerIaas.java | 152 +++ .../controller/iaases/OpenstackNovaIaas.java | 8 +- .../impl/CloudControllerServiceImpl.java | 116 +- .../interfaces/CloudControllerService.java | 65 -- .../internal/CloudControllerDSComponent.java | 8 +- .../cloud/controller/pojo/Cartridge.java | 52 +- .../cloud/controller/pojo/CartridgeInfo.java | 10 + .../cloud/controller/pojo/MemberContext.java | 10 + .../CartridgeInstanceDataPublisher.java | 128 ++- .../runtime/FasterLookUpDataHolder.java | 31 + .../InstanceStatusEventMessageListener.java | 1 - .../status/InstanceStatusEventMessageQueue.java | 3 +- .../controller/topology/TopologyBuilder.java | 104 +- .../topology/TopologyEventPublisher.java | 29 +- .../controller/util/CloudControllerUtil.java | 2 +- .../validate/AWSEC2PartitionValidator.java | 29 +- .../validate/DockerPartitionValidator.java | 79 ++ .../OpenstackNovaPartitionValidator.java | 28 +- .../validate/VCloudPartitionValidator.java | 6 +- .../axiom/FasterLookupDataHolderTest.java | 6 - components/org.apache.stratos.common/pom.xml | 2 +- .../stratos/common/util/CommandUtils.java | 30 + .../org.apache.stratos.deployment/pom.xml | 2 +- .../org.apache.stratos.email.sender/pom.xml | 2 +- .../org.apache.stratos.keystore.mgt/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../extension/api/LoadBalancerExtension.java | 13 +- .../org.apache.stratos.load.balancer/pom.xml | 2 +- .../LoadBalancerTenantEventReceiver.java | 203 ++-- .../LoadBalancerTopologyEventReceiver.java | 252 ++++- .../stratos/load/balancer/RequestDelegator.java | 10 + .../algorithm/LoadBalanceAlgorithmFactory.java | 2 +- .../balancer/cache/AlgorithmContextCache.java | 3 +- .../conf/LoadBalancerConfiguration.java | 74 +- .../conf/configurator/JndiConfigurator.java | 82 -- .../load/balancer/conf/util/Constants.java | 3 +- .../balancer/context/LoadBalancerContext.java | 19 +- .../context/LoadBalancerContextUtil.java | 418 ++++++- .../context/map/HostNameAppContextMap.java | 51 + .../context/map/HostNameClusterMap.java | 2 +- .../context/map/MemberIpHostnameMap.java | 64 ++ .../context/map/MultiTenantClusterMap.java | 13 +- .../TenantAwareLoadBalanceEndpoint.java | 428 +++++--- .../internal/LoadBalancerServiceComponent.java | 7 - .../balancer/mediators/LocationReWriter.java | 58 +- .../InFlightRequestDecrementCallable.java | 2 +- .../InFlightRequestIncrementCallable.java | 2 +- .../stratos/load/balancer/util/Constants.java | 11 +- .../test/LoadBalancerConfigurationTest.java | 30 +- .../sample/configuration/loadbalancer1.conf | 6 + .../sample/configuration/loadbalancer2.conf | 6 + .../sample/configuration/loadbalancer3.conf | 6 + .../org.apache.stratos.logging.view.ui/pom.xml | 2 +- .../console/cartridge_info.jag | 12 + .../console/cartridge_info_sg.jag | 69 ++ .../console/cartridges.jag | 3 + .../console/config/acl.json | 4 +- .../console/configure_stratos_wizard.jag | 3 + .../controllers/cartridgeSubscribeSubmit.jag | 67 +- .../controllers/cartridgeUnsubscribeSubmit.jag | 29 +- .../console/controllers/loginSubmit.jag | 1 + .../console/controllers/mycartridges.jag | 2 +- .../console/controllers/router.jag | 1 + .../console/error-404.html | 2 +- .../console/error.html | 4 +- .../console/index.jag | 12 + .../console/subscribe_cartridge.jag | 14 +- .../console/tenant_management.jag | 3 + .../console/themes/theme1/pages/index.hbs | 2 +- .../themes/theme1/partials/cartridge_info.hbs | 8 +- .../theme1/partials/cartridge_info_sg.hbs | 125 +++ .../themes/theme1/partials/cartridges.hbs | 56 +- .../partials/configure_stratos_wizard.hbs | 32 +- .../console/themes/theme1/partials/header.hbs | 1 + .../themes/theme1/partials/mycartridges.hbs | 52 +- .../theme1/partials/subscribe_cartridge.hbs | 63 +- .../themes/theme1/renderers/cartridge_info.js | 1 + .../theme1/renderers/cartridge_info_sg.js | 99 ++ .../themes/theme1/renderers/cartridges.js | 5 +- .../theme1/renderers/configure_stratos.js | 1 + .../renderers/configure_stratos_wizard.js | 1 + .../themes/theme1/renderers/dashboard.js | 0 .../console/themes/theme1/renderers/index.js | 1 + .../theme1/renderers/subscribe_cartridge.js | 4 +- .../theme1/renderers/tenant_management.js | 6 + .../themes/theme1/renderers/tenant_new.js | 2 + .../console/themes/theme1/theme.js | 13 + .../console/themes/theme1/ui/css/main.css | 9 +- .../console/themes/theme1/ui/js/mycartridges.js | 3 +- .../console/util/utility.jag | 7 + .../org.apache.stratos.manager.styles/pom.xml | 2 +- .../src/main/resources/META-INF/product.xml | 6 +- components/org.apache.stratos.manager/pom.xml | 2 +- .../behaviour/CartridgeMgtBehaviour.java | 13 +- .../composite/application/TemporyClass.java | 7 + .../org/apache/stratos/manager/dao/Cluster.java | 4 +- .../stratos/manager/deploy/service/Service.java | 13 +- .../service/ServiceDeploymentManager.java | 56 +- .../service/multitenant/MultiTenantService.java | 4 +- .../multitenant/lb/DefaultLBService.java | 111 ++ .../multitenant/lb/ExistingLBService.java | 54 + .../service/multitenant/lb/LBService.java | 66 ++ .../multitenant/lb/MultiTenantLBService.java | 4 +- .../multitenant/lb/ServiceAwareLBService.java | 139 +++ .../DomainSubscriptionDoesNotExist.java | 28 + .../exception/ServiceDoesNotExistException.java | 48 + .../category/DefaultLoadBalancerCategory.java | 5 +- .../ServiceLevelLoadBalancerCategory.java | 6 +- .../manager/CartridgeSubscriptionManager.java | 30 +- .../payload/FrameworkCartridgePayloadData.java | 27 + .../payload/FramewrokCartridgePayloadData.java | 27 - .../stratos/manager/payload/PayloadFactory.java | 2 +- .../InstanceNotificationPublisher.java | 5 +- .../repository/RepositoryNotification.java | 2 +- .../DataInsertionAndRetrievalManager.java | 25 + .../InternalRepoBasedCartridgeSubscription.java | 14 +- .../factory/CartridgeSubscriptionFactory.java | 9 +- .../model/TopologyClusterInformationModel.java | 19 + .../manager/utils/RepositoryCreator.java | 7 +- components/org.apache.stratos.messaging/pom.xml | 7 +- .../broker/heartbeat/TopicHealthChecker.java | 14 +- .../broker/subscribe/TopicSubscriber.java | 5 +- .../messaging/domain/topology/Member.java | 68 +- .../messaging/domain/topology/Service.java | 30 +- .../instance/notifier/ArtifactUpdatedEvent.java | 9 + .../event/topology/InstanceSpawnedEvent.java | 12 +- .../event/topology/MemberActivatedEvent.java | 3 + .../event/topology/MemberTerminatedEvent.java | 6 + .../event/topology/ServiceCreatedEvent.java | 37 +- .../tenant/TenantMessageProcessorChain.java | 12 + .../ClusterRemovedMessageProcessor.java | 8 +- .../InstanceSpawnedMessageProcessor.java | 1 + .../MemberTerminatedMessageProcessor.java | 6 +- .../ServiceRemovedMessageProcessor.java | 7 +- .../topology/TopologyMessageProcessorChain.java | 6 + .../message/receiver/tenant/TenantManager.java | 5 + .../stratos/messaging/util/Constants.java | 11 + .../org/apache/stratos/messaging/util/Util.java | 41 + .../messaging/test/TenantDomainTest.java | 45 + .../pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.register.ui/pom.xml | 2 +- .../org.apache.stratos.rest.endpoint/as.json | 26 + .../org.apache.stratos.rest.endpoint/pom.xml | 2 +- .../rest/endpoint/bean/CartridgeInfoBean.java | 26 + .../bean/SubscriptionDomainRequest.java | 35 + .../policy/autoscale/LoadAverage.java | 36 - .../policy/autoscale/LoadAverageThresholds.java | 30 + .../policy/autoscale/LoadThresholds.java | 8 +- .../policy/autoscale/MemoryConsumption.java | 36 - .../autoscale/MemoryConsumptionThresholds.java | 30 + .../policy/autoscale/RequestsInFlight.java | 36 - .../autoscale/RequestsInFlightThresholds.java | 31 + .../domain/SubscriptionDomainBean.java | 29 + .../bean/util/converter/PojoConverter.java | 105 +- .../exception/TenantNotFoundException.java | 70 ++ .../handlers/BadRequestExceptionMapper.java | 45 + .../handlers/CustomExceptionMapper.java | 13 +- .../CustomThrowableExceptionMapper.java | 39 + .../handlers/GenericExceptionMapper.java | 46 + .../handlers/StratosAuthenticationHandler.java | 43 +- .../stratos/rest/endpoint/mock/MockContext.java | 108 +- .../rest/endpoint/mock/StratosTestAdmin.java | 54 +- .../stratos/rest/endpoint/services/MyType.java | 16 + .../rest/endpoint/services/ServiceUtils.java | 798 ++++++++------ .../rest/endpoint/services/StratosAdmin.java | 18 +- .../webapp/stratos-test/WEB-INF/cxf-servlet.xml | 38 + .../stratos-test/WEB-INF/schemas/schema.xsd | 229 ++++ .../main/webapp/stratos/WEB-INF/cxf-servlet.xml | 18 + .../webapp/stratos/WEB-INF/schemas/schema.xsd | 229 ++++ .../pom.xml | 2 +- .../pom.xml | 4 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.status.monitor/pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.tenant.activity/pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.tenant.mgt.core/pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.tenant.mgt.ui/pom.xml | 2 +- .../org.apache.stratos.tenant.mgt/pom.xml | 2 +- .../org.apache.stratos.theme.mgt.ui/pom.xml | 2 +- .../mgt/ui/servlets/ThemeResourceServlet.java | 125 +++ .../mgt/ui/servlets/ThemeResourceSevelet.java | 125 --- .../src/main/resources/META-INF/component.xml | 2 +- components/org.apache.stratos.theme.mgt/pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.validate.domain/pom.xml | 2 +- components/pom.xml | 2 +- .../jclouds/apis/docker/1.7.1-stratos/README.md | 52 + .../jclouds/apis/docker/1.7.1-stratos/pom.xml | 145 +++ .../main/java/org/jclouds/docker/DockerApi.java | 38 + .../org/jclouds/docker/DockerApiMetadata.java | 100 ++ .../binders/BindInputStreamToRequest.java | 74 ++ .../DockerComputeServiceContextModule.java | 73 ++ .../extensions/DockerImageExtension.java | 120 ++ .../docker/compute/features/RemoteApi.java | 275 +++++ .../compute/features/internal/Archives.java | 96 ++ .../functions/ContainerToNodeMetadata.java | 131 +++ .../docker/compute/functions/ImageToImage.java | 104 ++ .../docker/compute/functions/StateToStatus.java | 40 + .../compute/options/DockerTemplateOptions.java | 365 +++++++ .../strategy/DockerComputeServiceAdapter.java | 223 ++++ .../docker/config/DockerHttpApiModule.java | 42 + .../docker/config/DockerParserModule.java | 101 ++ .../jclouds/docker/config/DockerProperties.java | 29 + .../java/org/jclouds/docker/domain/Config.java | 460 ++++++++ .../org/jclouds/docker/domain/Container.java | 372 +++++++ .../org/jclouds/docker/domain/ExposedPorts.java | 105 ++ .../org/jclouds/docker/domain/HostConfig.java | 180 +++ .../java/org/jclouds/docker/domain/Image.java | 240 ++++ .../jclouds/docker/domain/NetworkSettings.java | 176 +++ .../java/org/jclouds/docker/domain/Port.java | 91 ++ .../java/org/jclouds/docker/domain/State.java | 169 +++ .../java/org/jclouds/docker/domain/Version.java | 169 +++ .../docker/handlers/DockerErrorHandler.java | 108 ++ .../jclouds/docker/options/BuildOptions.java | 73 ++ .../jclouds/docker/options/CommitOptions.java | 111 ++ .../docker/options/CreateImageOptions.java | 129 +++ .../docker/options/DeleteImageOptions.java | 46 + .../docker/options/ListContainerOptions.java | 97 ++ .../docker/options/ListImageOptions.java | 43 + .../docker/options/RemoveContainerOptions.java | 57 + .../services/org.jclouds.apis.ApiMetadata | 1 + .../src/main/resources/centos/Dockerfile | 29 + .../src/main/resources/ubuntu/Dockerfile | 30 + .../jclouds/docker/DockerApiMetadataTest.java | 49 + .../docker/compute/BaseDockerApiLiveTest.java | 96 ++ .../DockerComputeServiceAdapterLiveTest.java | 138 +++ .../compute/DockerExperimentLiveTest.java | 144 +++ .../compute/features/RemoteApiLiveTest.java | 136 +++ .../compute/features/RemoteApiMockTest.java | 358 ++++++ .../functions/ContainerToNodeMetadataTest.java | 162 +++ .../compute/functions/ImageToImageTest.java | 75 ++ .../compute/functions/StateToStatusTest.java | 83 ++ .../docker/config/DockerParserModuleTest.java | 102 ++ .../docker/internal/BaseDockerMockTest.java | 119 ++ .../1.7.1-stratos/src/test/resources/Dockerfile | 29 + .../src/test/resources/container-creation.json | 1 + .../src/test/resources/container.json | 87 ++ .../src/test/resources/containers.json | 20 + .../src/test/resources/logback.xml | 34 + .../provider/aws-ec2/1.7.1-stratos/pom.xml | 4 +- .../aws/ec2/compute/AWSEC2TemplateOptions.java | 12 +- .../aws/ec2/domain/AWSRunningInstance.java | 2 +- .../aws/ec2/domain/LaunchSpecification.java | 4 +- .../aws/ec2/options/AWSRunInstancesOptions.java | 4 +- dependencies/org.wso2.carbon.ui/pom.xml | 2 +- dependencies/pom.xml | 3 +- doap_Stratos.rdf | 57 + .../executionplans/AverageHeathRequest.xml | 33 +- .../AverageInFlightRequestsFinder.xml | 13 +- .../executionplans/GradientOfHealthRequest.xml | 32 +- .../GradientOfRequestsInFlightFinder.xml | 17 +- .../SecondDerivativeOfHealthRequest.xml | 30 +- ...SecondDerivativeOfRequestsInFlightFinder.xml | 14 +- extensions/cep/stratos-cep-extension/pom.xml | 7 +- .../cep/extension/ConcatWindowProcessor.java | 54 + .../extension/FaultHandlingWindowProcessor.java | 126 ++- .../load-balancer/haproxy-extension/README.txt | 2 +- .../load-balancer/haproxy-extension/pom.xml | 2 +- .../stratos/haproxy/extension/HAProxy.java | 3 + .../haproxy/extension/HAProxyConfigWriter.java | 84 +- .../extension/HAProxyStatisticsReader.java | 38 +- .../haproxy-extension/src/main/license/LICENSE | 1 + .../src/main/templates/haproxy.cfg.template | 9 +- extensions/load-balancer/pom.xml | 2 +- extensions/pom.xml | 2 +- .../pom.xml | 2 +- features/autoscaler/pom.xml | 2 +- .../pom.xml | 15 +- .../main/resources/conf/cloud-controller.xml | 10 +- features/cloud-controller/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/load-balancer/pom.xml | 2 +- .../pom.xml | 2 +- features/manager/cartridge-mgt/pom.xml | 2 +- .../org.apache.stratos.common.feature/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/manager/common/pom.xml | 2 +- features/manager/deployment/pom.xml | 2 +- .../org.apache.stratos.gapp.feature/pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.gapp.ui.feature/pom.xml | 2 +- features/manager/gapp/pom.xml | 2 +- .../pom.xml | 2 +- features/manager/logging-mgt/pom.xml | 2 +- features/manager/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/manager/status-monitor/pom.xml | 2 +- .../org.apache.stratos.manager.feature/pom.xml | 2 +- .../pom.xml | 2 +- features/manager/stratos-mgt/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/manager/tenant-activity/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/manager/tenant-mgt/pom.xml | 2 +- .../pom.xml | 2 +- features/messaging/pom.xml | 2 +- features/pom.xml | 2 +- pom.xml | 28 +- .../modules/distribution/pom.xml | 2 +- .../distribution/src/main/assembly/bin.xml | 30 +- .../distribution/src/main/bin/stratos.sh | 34 +- .../distribution/src/main/conf/jndi.properties | 25 + .../distribution/src/main/conf/log4j.properties | 4 +- .../conf/templates/jndi.properties.template | 3 + .../src/main/extensions/artifacts-copy.sh | 32 + .../src/main/extensions/artifacts-updated.sh | 2 +- .../distribution/src/main/extensions/clean.sh | 2 +- .../src/main/extensions/complete-tenant.sh | 30 + .../src/main/extensions/complete-topology.sh | 34 + .../src/main/extensions/instance-activated.sh | 2 +- .../src/main/extensions/instance-started.sh | 2 +- .../src/main/extensions/member-activated.sh | 43 + .../src/main/extensions/member-started.sh | 43 + .../src/main/extensions/member-suspended.sh | 43 + .../src/main/extensions/member-terminated.sh | 43 + .../src/main/extensions/mount-volumes.sh | 87 ++ .../src/main/extensions/start-servers.sh | 14 +- .../extensions/subscription-domain-added.sh | 39 + .../extensions/subscription-domain-removed.sh | 37 + .../src/main/extensions/tenant-subscribed.sh | 28 + .../src/main/extensions/tenant-unsubscribed.sh | 28 + .../distribution/src/main/license/LICENSE | 11 +- products/cartridge-agent/pom.xml | 2 +- .../modules/distribution/README.txt | 2 +- .../load-balancer/modules/distribution/pom.xml | 2 +- .../distribution/src/main/assembly/bin.xml | 12 +- .../distribution/src/main/bin/stratos.sh | 2 +- .../distribution/src/main/conf/jndi.properties | 25 + .../src/main/conf/loadbalancer.conf | 11 +- .../conf/templates/jndi.properties.template | 25 - .../load-balancer/modules/p2-profile/pom.xml | 2 +- products/load-balancer/pom.xml | 2 +- products/pom.xml | 2 +- products/stratos-cli/distribution/README.txt | 7 +- products/stratos-cli/distribution/pom.xml | 2 +- .../distribution/src/main/bin/stratos.bat | 2 +- .../distribution/src/main/bin/stratos.sh | 2 +- products/stratos-cli/pom.xml | 2 +- products/stratos/conf/tenant-mgt.xml | 42 + products/stratos/modules/distribution/pom.xml | 4 +- .../modules/distribution/src/assembly/bin.xml | 17 +- .../modules/distribution/src/bin/stratos.sh | 6 +- .../distribution/src/main/conf/autoscaler.xml | 8 +- .../src/main/conf/cartridge-config.properties | 5 +- .../distribution/src/main/conf/log4j.properties | 4 +- .../distribution/src/main/conf/mincheck.drl | 17 +- .../distribution/src/main/conf/scaling.drl | 43 +- .../src/main/conf/siddhi/siddhi.extension | 1 + .../distribution/src/main/license/LICENSE | 4 +- products/stratos/modules/p2-profile-gen/pom.xml | 2 +- products/stratos/pom.xml | 2 +- .../org.apache.stratos.account.mgt.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 4 +- .../src/main/resources/AutoScalerService.wsdl | 119 +- .../org.apache.stratos.billing.mgt.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 3 +- .../main/resources/CloudControllerService.wsdl | 306 +++++- .../org.apache.stratos.common.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.manager.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.tenant.mgt.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.theme.mgt.stub/pom.xml | 2 +- .../org.apache.stratos.throttle.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.throttling.stub/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../org.apache.stratos.usage.stub/pom.xml | 2 +- .../pom.xml | 2 +- service-stubs/pom.xml | 2 +- tools/puppet3-agent/centos/init.sh | 6 +- tools/puppet3-agent/init.sh | 14 +- tools/puppet3/manifests/nodes.pp | 113 +- tools/puppet3/manifests/nodes/base.pp | 43 + tools/puppet3/manifests/nodes/default.pp | 24 + tools/puppet3/manifests/nodes/haproxy.pp | 25 + tools/puppet3/manifests/nodes/lb.pp | 25 + tools/puppet3/manifests/nodes/mysql.pp | 27 + tools/puppet3/manifests/nodes/nodejs.pp | 27 + tools/puppet3/manifests/nodes/php.pp | 32 + tools/puppet3/manifests/nodes/ruby.pp | 26 + tools/puppet3/manifests/nodes/tomcat.pp | 28 + tools/puppet3/manifests/nodes/wordpress.pp | 26 + tools/puppet3/manifests/site.pp | 17 +- .../modules/agent/files/activemq/README.txt | 1 + tools/puppet3/modules/agent/manifests/init.pp | 25 +- .../modules/agent/manifests/initialize.pp | 31 +- tools/puppet3/modules/agent/manifests/start.pp | 1 + .../modules/agent/templates/bin/stratos.sh.erb | 40 +- .../agent/templates/conf/jndi.properties.erb | 34 + .../agent/templates/conf/log4j.properties.erb | 40 + .../conf/templates/jndi.properties.template.erb | 33 - .../templates/extensions/addons/_jboss-as.erb | 18 + .../templates/extensions/artifacts-copy.sh.erb | 29 + .../extensions/artifacts-updated.sh.erb | 11 +- .../agent/templates/extensions/clean.sh.erb | 2 +- .../templates/extensions/complete-tenant.sh.erb | 30 + .../extensions/complete-topology.sh.erb | 34 + .../extensions/instance-activated.sh.erb | 2 +- .../extensions/instance-started.sh.erb | 11 +- .../extensions/member-activated.sh.erb | 303 +++++ .../templates/extensions/member-started.sh.erb | 43 + .../extensions/member-suspended.sh.erb | 43 + .../extensions/member-terminated.sh.erb | 43 + .../templates/extensions/mount-volumes.sh.erb | 87 ++ .../templates/extensions/start-servers.sh.erb | 285 ++++- .../extensions/subscription-domain-added.sh.erb | 35 + .../subscription-domain-removed.sh.erb | 34 + tools/puppet3/modules/haproxy/files/README.txt | 12 + tools/puppet3/modules/haproxy/manifests/init.pp | 70 ++ .../modules/haproxy/manifests/initialize.pp | 77 ++ .../modules/haproxy/manifests/push_templates.pp | 30 + .../puppet3/modules/haproxy/manifests/start.pp | 25 + .../templates/bin/haproxy-extension.sh.erb | 48 + .../haproxy/templates/conf/jndi.properties.erb | 33 + tools/puppet3/modules/jboss/files/README.txt | 7 + tools/puppet3/modules/jboss/manifests/as.pp | 72 ++ tools/puppet3/modules/jboss/manifests/config.pp | 46 + .../modules/jboss/manifests/extra_jars.pp | 42 + .../puppet3/modules/jboss/manifests/hornetq.pp | 66 ++ .../modules/jboss/manifests/importssl.pp | 76 ++ tools/puppet3/modules/jboss/manifests/init.pp | 49 + .../puppet3/modules/jboss/manifests/install.pp | 86 ++ .../puppet3/modules/jboss/manifests/service.pp | 105 ++ tools/puppet3/modules/jboss/manifests/user.pp | 51 + .../modules/jboss/templates/hornetq/run.erb | 18 + .../templates/jboss-as/jboss.properties.erb | 23 + .../modules/jboss/templates/jboss-as/run.erb | 43 + .../templates/jboss-as/standalone-full.xml.erb | 431 ++++++++ .../modules/lb/files/configs/bin/stratos.sh | 1 + tools/puppet3/modules/lb/manifests/importssl.pp | 45 + tools/puppet3/modules/lb/manifests/init.pp | 24 +- tools/puppet3/modules/lb/manifests/start.pp | 1 + .../modules/lb/templates/bin/stratos.sh.erb | 308 ++++++ .../lb/templates/conf/jndi.properties.erb | 34 + .../lb/templates/conf/loadbalancer.conf.erb | 5 - .../conf/templates/jndi.properties.template.erb | 33 - .../puppet3/modules/php/manifests/importssl.pp | 40 + tools/puppet3/modules/php/manifests/init.pp | 51 +- .../puppet3/modules/php/manifests/init.pp.back | 131 --- .../puppet3/modules/php/manifests/init.pp.cent | 111 -- tools/puppet3/modules/php/manifests/init.pp.deb | 119 -- tools/puppet3/modules/php/manifests/init.pp.rpm | 95 -- .../apache2/sites-available/default-ssl.erb | 11 +- .../apache2/sites-available/default.erb | 2 +- .../modules/stratos_base/manifests/init.pp | 63 ++ tools/puppet3/puppet.conf | 2 +- tools/stratos-docker-images/README.md | 23 + tools/stratos-docker-images/activemq/Dockerfile | 36 + .../activemq/docker-build.sh | 26 + .../activemq/docker-run.sh | 26 + tools/stratos-docker-images/bind/Dockerfile | 34 + tools/stratos-docker-images/bind/README | 22 + .../stratos-docker-images/bind/docker-build.sh | 23 + tools/stratos-docker-images/bind/run | 54 + tools/stratos-docker-images/bind/run-example.sh | 35 + tools/stratos-docker-images/bind/zone_template | 14 + tools/stratos-docker-images/build-all.sh | 49 + tools/stratos-docker-images/mysql/Dockerfile | 36 + tools/stratos-docker-images/mysql/README.md | 45 + .../stratos-docker-images/mysql/docker-build.sh | 47 + .../mysql/files/.gitignore | 25 + tools/stratos-docker-images/mysql/my.cnf | 8 + tools/stratos-docker-images/mysql/run | 57 + .../puppetmaster/Dockerfile | 51 + .../puppetmaster/addpuppetdomain.txt | 5 + .../puppetmaster/docker-build.sh | 60 + .../puppetmaster/files/.gitignore | 25 + tools/stratos-docker-images/puppetmaster/run | 58 + .../puppetmaster/run-example.sh | 42 + .../puppettestnode/Dockerfile | 36 + .../puppettestnode/docker-build.sh | 25 + tools/stratos-docker-images/puppettestnode/run | 32 + .../puppettestnode/run-example.sh | 36 + tools/stratos-docker-images/push-all.sh | 47 + tools/stratos-docker-images/run-example.sh | 130 +++ .../stop_and_remove_stratos_containers.sh | 31 + tools/stratos-docker-images/stratos/Dockerfile | 86 ++ .../stratos/docker-build.sh | 35 + .../stratos/files/.gitignore | 25 + tools/stratos-docker-images/stratos/run | 201 ++++ tools/stratos-installer/README.txt | 2 +- .../config/all/repository/conf/autoscaler.xml | 3 + .../all/repository/conf/cloud-controller.xml | 2 + .../cc/repository/conf/cloud-controller.xml | 2 + tools/stratos-installer/openstack.sh | 2 + 586 files changed, 23449 insertions(+), 3812 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java index 53eff16,fed35bc..8669441 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java @@@ -22,9 -22,14 +22,16 @@@ package org.apache.stratos.autoscaler.m import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.*; + import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; ++<<<<<<< HEAD ++======= + import org.apache.stratos.autoscaler.exception.PartitionValidationException; + import org.apache.stratos.autoscaler.exception.PolicyValidationException; + import org.apache.stratos.autoscaler.exception.TerminationException; ++>>>>>>> master import org.apache.stratos.autoscaler.monitor.AbstractMonitor; -import org.apache.stratos.autoscaler.monitor.ClusterMonitor; -import org.apache.stratos.autoscaler.monitor.LbClusterMonitor; +import org.apache.stratos.autoscaler.monitor.CompositeApplicationMonitor; import org.apache.stratos.autoscaler.partition.PartitionManager; import org.apache.stratos.autoscaler.policy.PolicyManager; import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; @@@ -102,54 -109,96 +109,147 @@@ public class AutoscalerTopologyEventRec }); ++<<<<<<< HEAD + topologyEventReceiver.addEventListener(new CompositeApplicationCreatedEventListener() { + @Override + protected void onEvent(Event event) { + + log.info("[ClusterCreatedEventListener] Received: " + event.getClass()); + + CompositeApplicationCreatedEvent compositeApplicationCreatedEvent = (CompositeApplicationCreatedEvent) event; + + ConfigCompositeApplication configCompositeApplication = + compositeApplicationCreatedEvent.getCompositeApplication(); + + //acquire read lock + TopologyManager.acquireReadLock(); + + try { + CompositeApplicationBuilder builder = new CompositeApplicationBuilder(); + CompositeApplication compositeApplication = + builder.buildCompositeApplication(TopologyManager.getTopology(), + configCompositeApplication.getAlias()); + //start the app monitor + + + } finally { + //release read lock + TopologyManager.releaseReadLock(); + } + + } + }); + +// topologyEventReceiver.addEventListener(new ClusterCreatedEventListener() { +// @Override +// protected void onEvent(Event event) { +// try { +// log.info("Event received: " + event); +// ClusterCreatedEvent e = (ClusterCreatedEvent) event; +// TopologyManager.acquireReadLock(); +// Service service = TopologyManager.getTopology().getService(e.getServiceName()); +// Cluster cluster = service.getCluster(e.getClusterId()); +// startClusterMonitor(cluster); +// } catch (Exception e) { +// log.error("Error processing event", e); +// } finally { +// TopologyManager.releaseReadLock(); +// } +// } +// +// }); ++======= + topologyEventReceiver.addEventListener(new MemberReadyToShutdownEventListener() { + @Override + protected void onEvent(Event event) { + try { + MemberReadyToShutdownEvent memberReadyToShutdownEvent = (MemberReadyToShutdownEvent)event; + AutoscalerContext asCtx = AutoscalerContext.getInstance(); + AbstractMonitor monitor; + String clusterId = memberReadyToShutdownEvent.getClusterId(); + String memberId = memberReadyToShutdownEvent.getMemberId(); + + if(asCtx.monitorExist(clusterId)){ + monitor = asCtx.getMonitor(clusterId); + }else if(asCtx.lbMonitorExist(clusterId)){ + monitor = asCtx.getLBMonitor(clusterId); + }else{ + if(log.isDebugEnabled()){ + log.debug(String.format("A cluster monitor is not found in autoscaler context [cluster] %s", clusterId)); + } + return; + } + + NetworkPartitionContext nwPartitionCtxt; + nwPartitionCtxt = monitor.getNetworkPartitionCtxt(memberReadyToShutdownEvent.getNetworkPartitionId()); + + // start a new member in the same Partition + String partitionId = monitor.getPartitionOfMember(memberId); + PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId); + + + // terminate the shutdown ready member + CloudControllerClient ccClient = CloudControllerClient.getInstance(); + ccClient.terminate(memberId); + + // remove from active member list + partitionCtxt.removeActiveMemberById(memberId); + + if (log.isInfoEnabled()) { + log.info(String.format("Member is terminated and removed from the active members list: [member] %s [partition] %s [cluster] %s ", + memberId, partitionId, clusterId)); + } + } catch (TerminationException e) { + log.error(e); + } + } + + }); + + topologyEventReceiver.addEventListener(new ClusterCreatedEventListener() { + @Override + protected void onEvent(Event event) { + try { + log.info("Event received: " + event); + ClusterCreatedEvent e = (ClusterCreatedEvent) event; + TopologyManager.acquireReadLock(); + Service service = TopologyManager.getTopology().getService(e.getServiceName()); + Cluster cluster = service.getCluster(e.getClusterId()); + startClusterMonitor(cluster); + } catch (Exception e) { + log.error("Error processing event", e); + } finally { + TopologyManager.releaseReadLock(); + } + } + + }); + + topologyEventReceiver.addEventListener(new ClusterMaintenanceModeEventListener() { + @Override + protected void onEvent(Event event) { + try { + log.info("Event received: " + event); + ClusterMaintenanceModeEvent e = (ClusterMaintenanceModeEvent) event; + TopologyManager.acquireReadLock(); + Service service = TopologyManager.getTopology().getService(e.getServiceName()); + Cluster cluster = service.getCluster(e.getClusterId()); + if(AutoscalerContext.getInstance().monitorExist((cluster.getClusterId()))) { + AutoscalerContext.getInstance().getMonitor(e.getClusterId()).setStatus(e.getStatus()); + } else if (AutoscalerContext.getInstance().lbMonitorExist((cluster.getClusterId()))) { + AutoscalerContext.getInstance().getLBMonitor(e.getClusterId()).setStatus(e.getStatus()); + } else { + log.error("cluster monitor not exists for the cluster: " + cluster.toString()); + } + } catch (Exception e) { + log.error("Error processing event", e); + } finally { + TopologyManager.releaseReadLock(); + } + } + + }); ++>>>>>>> master topologyEventReceiver.addEventListener(new ClusterRemovedEventListener() { @Override @@@ -475,59 -563,9 +622,60 @@@ } } } +// +// +// private class ClusterMonitorAdder implements Runnable { +// private Cluster cluster; +// +// public ClusterMonitorAdder(Cluster cluster) { +// this.cluster = cluster; +// } +// +// public void run() { +// ClusterMonitor monitor = null; +// int retries = 5; +// boolean success = false; +// do { +// try { +// Thread.sleep(5000); +// } catch (InterruptedException e1) { +// } +// +// try { +// monitor = AutoscalerUtil.getClusterMonitor(cluster); +// success = true; +// +// } catch (PolicyValidationException e) { +// String msg = "Cluster monitor creation failed for cluster: " + cluster.getClusterId(); +// log.debug(msg, e); +// retries--; +// +// } catch (PartitionValidationException e) { +// String msg = "Cluster monitor creation failed for cluster: " + cluster.getClusterId(); +// log.debug(msg, e); +// retries--; +// } +// } while (!success && retries != 0); +// +// if (monitor == null) { +// String msg = "Cluster monitor creation failed, even after retrying for 5 times, " +// + "for cluster: " + cluster.getClusterId(); +// log.error(msg); +// throw new RuntimeException(msg); +// } +// +// Thread th = new Thread(monitor); +// th.start(); +// AutoscalerContext.getInstance().addMonitor(monitor); +// if (log.isInfoEnabled()) { +// log.info(String.format("Cluster monitor has been added successfully: [cluster] %s", +// cluster.getClusterId())); +// } +// } +// } - private void runTerminateAllRule(AbstractMonitor monitor) { + @SuppressWarnings("unused") + private void runTerminateAllRule(AbstractMonitor monitor) { FactHandle terminateAllFactHandle = null; http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java index 02eb62e,c1441bb..d19694a --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java @@@ -18,6 -18,9 +18,12 @@@ */ package org.apache.stratos.autoscaler.monitor; ++<<<<<<< HEAD ++======= + import java.util.Map; + + import org.apache.commons.configuration.XMLConfiguration; ++>>>>>>> master import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.NetworkPartitionContext; @@@ -37,52 -40,67 +45,114 @@@ import java.util.Map * Is responsible for monitoring a service cluster. This runs periodically * and perform minimum instance check and scaling check using the underlying * rules engine. - * */ ++<<<<<<< HEAD +abstract public class AbstractMonitor implements Runnable { + + private static final Log log = LogFactory.getLog(AbstractMonitor.class); + // Map<NetworkpartitionId, Network Partition Context> + protected Map<String, NetworkPartitionContext> networkPartitionCtxts; + protected DeploymentPolicy deploymentPolicy; + protected AutoscalePolicy autoscalePolicy; + + + protected FactHandle minCheckFactHandle; + protected FactHandle scaleCheckFactHandle; + protected FactHandle terminateDependencyFactHandle; + + protected StatefulKnowledgeSession minCheckKnowledgeSession; + protected StatefulKnowledgeSession scaleCheckKnowledgeSession; + protected StatefulKnowledgeSession terminateDependencyKnowledgeSession; + protected boolean isDestroyed; + + protected String clusterId; + protected String serviceId; + + protected AutoscalerRuleEvaluator autoscalerRuleEvaluator; + + @Override + public void run() { + // TODO Auto-generated method stub + + } + + + public NetworkPartitionContext getNetworkPartitionCtxt(Member member) { + log.info("***** getNetworkPartitionCtxt " + member.getNetworkPartitionId()); + String networkPartitionId = member.getNetworkPartitionId(); + if (networkPartitionCtxts.containsKey(networkPartitionId)) { + log.info("returnnig network partition context " + networkPartitionCtxts.get(networkPartitionId)); + return networkPartitionCtxts.get(networkPartitionId); + } + log.info("returning null getNetworkPartitionCtxt"); + return null; + } + + public String getPartitionOfMember(String memberId) { + for (Service service : TopologyManager.getTopology().getServices()) { + for (Cluster cluster : service.getClusters()) { + if (cluster.memberExists(memberId)) { ++======= + abstract public class AbstractMonitor implements Runnable{ + + private static final Log log = LogFactory.getLog(AbstractMonitor.class); + // Map<NetworkpartitionId, Network Partition Context> + protected Map<String, NetworkPartitionContext> networkPartitionCtxts; + protected DeploymentPolicy deploymentPolicy; + protected AutoscalePolicy autoscalePolicy; + + + protected FactHandle minCheckFactHandle; + protected FactHandle scaleCheckFactHandle; + + protected StatefulKnowledgeSession minCheckKnowledgeSession; + protected StatefulKnowledgeSession scaleCheckKnowledgeSession; + protected boolean isDestroyed; + + protected String clusterId; + protected String serviceId; + + protected AutoscalerRuleEvaluator autoscalerRuleEvaluator; + + // time intereval between two runs of the Monitor. Default is 90000ms. + protected int monitorInterval; + + public AbstractMonitor() { + readConfigurations(); + } + + private void readConfigurations () { + + XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration(); + monitorInterval = conf.getInt(AutoScalerConstants.AUTOSCALER_MONITOR_INTERVAL, 90000); + if (log.isDebugEnabled()) { + log.debug("Cluster Monitor task interval: " + getMonitorInterval()); + } + } + + @Override + public void run() { + // TODO Auto-generated method stub + + } + + + public NetworkPartitionContext getNetworkPartitionCtxt(Member member) { + log.info("***** getNetworkPartitionCtxt " + member.getNetworkPartitionId()); + String networkPartitionId = member.getNetworkPartitionId(); + if(networkPartitionCtxts.containsKey(networkPartitionId)) { + log.info("returnnig network partition context " + networkPartitionCtxts.get(networkPartitionId)); + return networkPartitionCtxts.get(networkPartitionId); + } + log.info("returning null getNetworkPartitionCtxt"); + return null; + } + + public String getPartitionOfMember(String memberId){ + for(Service service: TopologyManager.getTopology().getServices()){ + for(Cluster cluster: service.getClusters()){ + if(cluster.memberExists(memberId)){ ++>>>>>>> master return cluster.getMember(memberId).getPartitionId(); } } @@@ -180,23 -197,7 +250,29 @@@ this.minCheckFactHandle = minCheckFactHandle; } ++<<<<<<< HEAD + public StatefulKnowledgeSession getTerminateDependencyKnowledgeSession() { + return terminateDependencyKnowledgeSession; + } + + public void setTerminateDependencyKnowledgeSession( + StatefulKnowledgeSession terminateDependencyKnowledgeSession) { + this.terminateDependencyKnowledgeSession = terminateDependencyKnowledgeSession; + } + + public FactHandle getTerminateDependencyFactHandle() { + return terminateDependencyFactHandle; + } + + public void setTerminateDependencyFactHandle( + FactHandle terminateDependencyFactHandle) { + this.terminateDependencyFactHandle = terminateDependencyFactHandle; + } + + ++======= + public int getMonitorInterval() { + return monitorInterval; + } ++>>>>>>> master } http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitor.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitor.java index 3358469,5bb478e..2428c6f --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitor.java @@@ -83,18 -96,53 +98,66 @@@ public class ClusterMonitor extends Abs } } ++<<<<<<< HEAD + private void monitor() { +// if(clusterCtxt != null ) { ++======= + private boolean isPrimaryMember(MemberContext memberContext){ + Properties props = memberContext.getProperties(); + if (log.isDebugEnabled()) { + log.debug(" Properties [" + props + "] "); + } + if (props != null && props.getProperties() != null) { + for (Property prop : props.getProperties()) { + if (prop.getName().equals("PRIMARY")) { + if (Boolean.parseBoolean(prop.getValue())) { + log.debug("Adding member id [" + memberContext.getMemberId() + "] " + + "member instance id [" + memberContext.getInstanceId() + "] as a primary member"); + return true; + } + } + } + } + return false; + } + + private void monitor() { + ++>>>>>>> master //TODO make this concurrent for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) { + // store primary members in the network partition context + List<String> primaryMemberListInNetworkPartition = new ArrayList<String>(); //minimum check per partition for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) { ++<<<<<<< HEAD + + minCheckKnowledgeSession.setGlobal("clusterId", clusterId); + minCheckKnowledgeSession.setGlobal("lbRef", lbReferenceType); + minCheckKnowledgeSession.setGlobal("autoscalePolicy", autoscalePolicy); + minCheckKnowledgeSession.setGlobal("serviceId", serviceId); ++======= + // store primary members in the partition context + List<String> primaryMemberListInPartition = new ArrayList<String>(); + // get active primary members in this partition context + for (MemberContext memberContext : partitionContext.getActiveMembers()) { + if (isPrimaryMember(memberContext)){ + primaryMemberListInPartition.add(memberContext.getMemberId()); + } + } + // get pending primary members in this partition context + for (MemberContext memberContext : partitionContext.getPendingMembers()) { + if (isPrimaryMember(memberContext)){ + primaryMemberListInPartition.add(memberContext.getMemberId()); + } + } + primaryMemberListInNetworkPartition.addAll(primaryMemberListInPartition); + minCheckKnowledgeSession.setGlobal("clusterId", clusterId); + minCheckKnowledgeSession.setGlobal("lbRef", lbReferenceType); + minCheckKnowledgeSession.setGlobal("isPrimary", hasPrimary); + minCheckKnowledgeSession.setGlobal("primaryMemberCount", primaryMemberListInPartition.size()); ++>>>>>>> master if (log.isDebugEnabled()) { log.debug(String.format("Running minimum check for partition %s ", partitionContext.getPartitionId())); @@@ -126,8 -156,11 +189,16 @@@ boolean rifReset = networkPartitionContext.isRifReset(); boolean memoryConsumptionReset = networkPartitionContext.isMemoryConsumptionReset(); boolean loadAverageReset = networkPartitionContext.isLoadAverageReset(); ++<<<<<<< HEAD + if (rifReset || memoryConsumptionReset || loadAverageReset) { + ++======= + if (log.isDebugEnabled()) { + log.debug("flag of rifReset: " + rifReset + " flag of memoryConsumptionReset" + memoryConsumptionReset + + " flag of loadAverageReset" + loadAverageReset); + } + if (rifReset || memoryConsumptionReset || loadAverageReset) { ++>>>>>>> master scaleCheckKnowledgeSession.setGlobal("clusterId", clusterId); //scaleCheckKnowledgeSession.setGlobal("deploymentPolicy", deploymentPolicy); scaleCheckKnowledgeSession.setGlobal("autoscalePolicy", autoscalePolicy); @@@ -157,7 -193,8 +231,12 @@@ public String toString() { return "ClusterMonitor [clusterId=" + clusterId + ", serviceId=" + serviceId + ", deploymentPolicy=" + deploymentPolicy + ", autoscalePolicy=" + autoscalePolicy + ++<<<<<<< HEAD + ", lbReferenceType=" + lbReferenceType + "]"; ++======= + ", lbReferenceType=" + lbReferenceType + + ", hasPrimary=" + hasPrimary + " ]"; ++>>>>>>> master } public String getLbReferenceType() { http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/LbClusterMonitor.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/LbClusterMonitor.java index 0522206,8d6c40b..ee1161c --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/LbClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/LbClusterMonitor.java @@@ -25,17 -27,18 +25,19 @@@ import org.apache.stratos.autoscaler.Pa import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; + import org.apache.stratos.messaging.domain.topology.ClusterStatus; +import java.util.concurrent.ConcurrentHashMap; + /** * Is responsible for monitoring a service cluster. This runs periodically * and perform minimum instance check and scaling check using the underlying * rules engine. - * */ -public class LbClusterMonitor extends AbstractMonitor{ +public class LbClusterMonitor extends AbstractMonitor { private static final Log log = LogFactory.getLog(LbClusterMonitor.class); + private ClusterStatus status; public LbClusterMonitor(String clusterId, String serviceId, DeploymentPolicy deploymentPolicy, AutoscalePolicy autoscalePolicy) { @@@ -56,16 -59,22 +58,22 @@@ while (!isDestroyed()) { if (log.isDebugEnabled()) { - log.debug("Cluster monitor is running.. "+this.toString()); + log.debug("Cluster monitor is running.. " + this.toString()); } try { - monitor(); + if( !ClusterStatus.In_Maintenance.equals(status)) { + monitor(); + } else { + if (log.isDebugEnabled()) { + log.debug("LB Cluster monitor is suspended as the cluster is in " + + ClusterStatus.In_Maintenance + " mode......"); + } + } } catch (Exception e) { - log.error("Cluster monitor: Monitor failed. "+this.toString(), e); + log.error("Cluster monitor: Monitor failed. " + this.toString(), e); } try { - // TODO make this configurable - Thread.sleep(30000); + Thread.sleep(monitorInterval); } catch (InterruptedException ignore) { } } @@@ -81,10 -90,11 +89,11 @@@ if (partitionContext != null) { minCheckKnowledgeSession.setGlobal("clusterId", clusterId); - + minCheckKnowledgeSession.setGlobal("isPrimary", false); + if (log.isDebugEnabled()) { log.debug(String.format("Running minimum check for partition %s ", - partitionContext.getPartitionId())); + partitionContext.getPartitionId())); } minCheckFactHandle = http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java index 0d6de77,4bf9207..133483e --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java @@@ -51,8 -50,8 +51,9 @@@ public class AutoscalerRuleEvaluator private static KnowledgeBase minCheckKbase; private static KnowledgeBase scaleCheckKbase; + @SuppressWarnings("unused") private static KnowledgeBase terminateAllKbase; + private static KnowledgeBase terminateDependencyKbase; public AutoscalerRuleEvaluator(){ http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java index c7f3603,bce3c08..b73db36 --- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java +++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java @@@ -53,27 -78,30 +78,36 @@@ import java.util.concurrent.TimeUnit */ public class CartridgeAgent implements Runnable { - private static final Log log = LogFactory.getLog(CartridgeAgent.class); - + private static final Log log = LogFactory.getLog(CartridgeAgent.class); + private static final ExtensionHandler extensionHandler = new DefaultExtensionHandler(); private boolean terminated; + // We have an asynchronous activity running to respond to ADC updates. We want to ensure + // that no publishInstanceActivatedEvent() call is made *before* the port activation test + // has succeeded. This flag controls that. + private boolean portsActivated; + @Override public void run() { - if(log.isInfoEnabled()) { + if (log.isInfoEnabled()) { log.info("Cartridge agent started"); } validateRequiredSystemProperties(); // Start instance notifier listener thread + portsActivated = false; subscribeToTopicsAndRegisterListeners(); + // Start topology event receiver thread + registerTopologyEventListeners(); + + // Start tenant event receiver thread + registerTenantEventListeners(); + + // Execute instance started shell script + extensionHandler.onInstanceStartedEvent(); + // Publish instance started event CartridgeAgentEventPublisher.publishInstanceStartedEvent(); @@@ -90,28 -120,63 +130,66 @@@ // Check repo url String repoUrl = CartridgeAgentConfiguration.getInstance().getRepoUrl(); + /*if(CartridgeAgentConfiguration.getInstance().isMultitenant()) { + if (CartridgeAgentConfiguration.getInstance().isCommitsEnabled()) { + log.info(" Commits enabled. Starting File listener "); + ScheduledExecutorService scheduler = Executors + .newScheduledThreadPool(1); + scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, + 10, TimeUnit.SECONDS); + } + + // Start super tenant artifact copy task + // from temp location to super tenant app path + //ScheduledExecutorService scheduler = Executors + // .newScheduledThreadPool(1); + //scheduler.scheduleWithFixedDelay(new ArtifactCopyTask( + // CartridgeAgentConstants.SUPERTENANT_TEMP_PATH, + // CartridgeAgentConfiguration.getInstance().getAppPath()+ "/repository/deployment/server/" + // ), + // 0, 10, TimeUnit.SECONDS); + } */ + if ("null".equals(repoUrl) || StringUtils.isBlank(repoUrl)) { - if(log.isInfoEnabled()) { + if (log.isInfoEnabled()) { log.info("No artifact repository found"); } ++<<<<<<< HEAD ++======= + // Execute instance activated shell script + extensionHandler.onInstanceActivatedEvent(); + + // Publish instance activated event + CartridgeAgentEventPublisher.publishInstanceActivatedEvent(); ++>>>>>>> master } else { //Start periodical file checker task - if (CartridgeAgentConfiguration.getInstance().isCommitsEnabled()) { - log.info(" Commits enabled. Starting File listener "); - ScheduledExecutorService scheduler = Executors - .newScheduledThreadPool(1); - scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, - 10, TimeUnit.SECONDS); - } + /*if (CartridgeAgentConfiguration.getInstance().isCommitsEnabled()) { + log.info(" Commits enabled. Starting File listener "); + ScheduledExecutorService scheduler = Executors + .newScheduledThreadPool(1); + scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, + 10, TimeUnit.SECONDS); + } */ } - String persistanceMappingsPayload = CartridgeAgentConfiguration.getInstance().getPersistenceMappings(); - if(persistanceMappingsPayload != null) { - ExtensionUtils.executeVolumeMountExtension(persistanceMappingsPayload); + // if (CartridgeAgentConfiguration.getInstance().isInternalRepo()) { + // // Start periodic file copy for super tenant + // // From repo/deployment/server to /tmp/-1234 + // + // ScheduledExecutorService scheduler = Executors + // .newScheduledThreadPool(1); + // scheduler.scheduleWithFixedDelay( + // new ArtifactCopyTask(CartridgeAgentConfiguration.getInstance().getAppPath() + // + "/repository/deployment/server/", + // CartridgeAgentConstants.SUPERTENANT_TEMP_PATH), 0, + // 10, TimeUnit.SECONDS); + // } + + String persistenceMappingsPayload = CartridgeAgentConfiguration.getInstance().getPersistenceMappings(); + if (persistenceMappingsPayload != null) { + extensionHandler.volumeMountExtension(persistenceMappingsPayload); } - - - // Keep the thread live until terminated // start log publishing LogPublisherManager logPublisherManager = new LogPublisherManager(); @@@ -232,94 -607,27 +620,77 @@@ } } ++<<<<<<< HEAD + private void onArtifactUpdateEvent(ArtifactUpdatedEvent event) { + ArtifactUpdatedEvent artifactUpdatedEvent = event; + if(log.isInfoEnabled()) { + log.info(String.format("Artifact update event received: %s", artifactUpdatedEvent.toString())); + } + + String clusterIdInPayload = CartridgeAgentConfiguration.getInstance().getClusterId(); + String localRepoPath = CartridgeAgentConfiguration.getInstance().getAppPath(); + String clusterIdInMessage = artifactUpdatedEvent.getClusterId(); + String repoURL = artifactUpdatedEvent.getRepoURL(); + String repoPassword = CartridgeAgentUtils.decryptPassword(artifactUpdatedEvent.getRepoPassword()); + String repoUsername = artifactUpdatedEvent.getRepoUserName(); + String tenantId = artifactUpdatedEvent.getTenantId(); + boolean isMultitenant = CartridgeAgentConfiguration.getInstance().isMultitenant(); + + if(StringUtils.isNotEmpty(repoURL) && (clusterIdInPayload != null) && clusterIdInPayload.equals(clusterIdInMessage)) { + if(log.isInfoEnabled()) { + log.info("Executing git checkout"); + } + RepositoryInformation repoInformation = new RepositoryInformation(); + repoInformation.setRepoUsername(repoUsername); + if(repoPassword == null) { + repoInformation.setRepoPassword(""); + }else { + repoInformation.setRepoPassword(repoPassword); + } + repoInformation.setRepoUrl(repoURL); + repoInformation.setRepoPath(localRepoPath); + repoInformation.setTenantId(tenantId); + repoInformation.setMultitenant(isMultitenant); + boolean cloneExists = GitBasedArtifactRepository.getInstance().cloneExists(repoInformation); + GitBasedArtifactRepository.getInstance().checkout(repoInformation); + + ExtensionUtils.executeArtifactsUpdatedExtension(); + + if (!cloneExists && portsActivated) { + // Executed git clone, publish instance activated event + CartridgeAgentEventPublisher.publishInstanceActivatedEvent(); + } + + // Start the artifact update task + boolean artifactUpdateEnabled = Boolean.parseBoolean(System.getProperty(CartridgeAgentConstants.ENABLE_ARTIFACT_UPDATE)); + if (artifactUpdateEnabled) { + + long artifactUpdateInterval = 10; + // get update interval + String artifactUpdateIntervalStr = System.getProperty(CartridgeAgentConstants.ARTIFACT_UPDATE_INTERVAL); ++======= + public static ExtensionHandler getExtensionHandler() { + return extensionHandler; + } ++>>>>>>> master - if (artifactUpdateIntervalStr != null && !artifactUpdateIntervalStr.isEmpty()) { - try { - artifactUpdateInterval = Long.parseLong(artifactUpdateIntervalStr); + public void terminate() { + terminated = true; + } - } catch (NumberFormatException e) { - log.error("Invalid artifact sync interval specified ", e); - artifactUpdateInterval = 10; + private String findTenantDomain(int tenantId) { + try { + TenantManager.acquireReadLock(); + Tenant tenant = TenantManager.getInstance().getTenant(tenantId); + if(tenant == null) { + throw new RuntimeException(String.format("Tenant could not be found: [tenant-id] %d", tenantId)); } + return tenant.getTenantDomain(); + } + finally { + TenantManager.releaseReadLock(); } - - log.info("Artifact updating task enabled, update interval: " + artifactUpdateInterval + "s"); - GitBasedArtifactRepository.getInstance().scheduleSyncTask(repoInformation, artifactUpdateInterval); - - } else { - log.info("Artifact updating task disabled"); } - } - } - private void onInstanceCleanupEvent() { - if(log.isInfoEnabled()) { - log.info("Executing cleaning up the data in the cartridge instance..."); - } - //sending event on the maintenance mode - CartridgeAgentEventPublisher.publishMaintenanceModeEvent(); - - //cleaning up the cartridge instance's data - ExtensionUtils.executeCleanupExtension(); - if(log.isInfoEnabled()) { - log.info("cleaning up finished in the cartridge instance..."); - } - if(log.isInfoEnabled()) { - log.info("publishing ready to shutdown event..."); - } - //publishing the Ready to shutdown event after performing the cleanup - CartridgeAgentEventPublisher.publishInstanceReadyToShutdownEvent(); - } - - public void terminate() { - terminated = true; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/statistics/publisher/HealthStatisticsReader.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/statistics/publisher/HealthStatisticsReader.java index 96e4661,9a56043..f934d0a --- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/statistics/publisher/HealthStatisticsReader.java +++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/statistics/publisher/HealthStatisticsReader.java @@@ -25,8 -26,10 +26,14 @@@ import org.apache.commons.logging.LogFa import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration; import org.apache.stratos.cartridge.agent.util.CartridgeAgentUtils; + import java.io.FileInputStream; + import java.io.IOException; import java.lang.management.ManagementFactory; ++<<<<<<< HEAD +import java.io.IOException; ++======= + import java.util.Scanner; ++>>>>>>> master /** * Health statistics reader. @@@ -36,33 -38,76 +43,85 @@@ public class HealthStatisticsReader imp private static final int MB = 1024 * 1024; private static final Log log = LogFactory.getLog(HealthStatisticsReader.class); ++<<<<<<< HEAD + public boolean init() { + return true; + } + + public CartridgeStatistics getCartridgeStatistics() throws IOException { + OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + double totalMemory = (double)(osBean.getTotalPhysicalMemorySize()/ MB); + double usedMemory = (double)((totalMemory - (osBean.getFreePhysicalMemorySize() / MB) )); + double loadAvg = (double)osBean.getSystemLoadAverage(); + // assume system cores = available cores to JVM + int cores = osBean.getAvailableProcessors(); ++======= + public static double getMemoryConsumption() { + double totalMemory = 0, usedMemory = 0; + + if (isWindows()) { + OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + totalMemory = (double)(osBean.getTotalPhysicalMemorySize()/ MB); + usedMemory = (double)((totalMemory - (osBean.getFreePhysicalMemorySize() / MB) )); + } else { + String fName = "/proc/meminfo"; + try { + FileInputStream f = new FileInputStream(fName); + + /* $ cat /proc/meminfo + * MemTotal: 2056964 kB + * MemFree: 16716 kB + * Buffers: 9776 kB + * Cached: 127220 kB + */ + Scanner scanner = new Scanner(f).useDelimiter("\\D+"); + try { + long memTotal = scanner.nextLong(); + long memFree = scanner.nextLong(); + long buffers = scanner.nextLong(); + long cached = scanner.nextLong(); + + totalMemory = memTotal; + usedMemory = memTotal - (memFree + buffers + cached); + } catch (Exception ex) { + log.error("Could not calculate memory usage.", ex); + } finally { + scanner.close(); + } + } catch (IOException ex) { + log.error("Could not calculate memory usage.", ex); + } + } + + if(log.isDebugEnabled()) { + log.debug("Calculating memory consumption: [totalMemory] "+totalMemory+" [usedMemory] "+usedMemory); + } ++>>>>>>> master double memoryConsumption = (usedMemory / totalMemory) * 100; - if(log.isDebugEnabled()) { - log.debug("Calculating memory consumption: [percentage] "+memoryConsumption); - } - return memoryConsumption; - } - - public static double getLoadAverage() { - double loadAvg = (double)ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage(); - // assume system cores = available cores to JVM - int cores = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors(); - - if(log.isDebugEnabled()) { - log.debug("Calculating load average consumption: [loadAverage] "+loadAvg+" [cores] "+cores); - } - double loadAvgPercentage = (loadAvg/cores) * 100; + if(log.isDebugEnabled()) { - log.debug("Calculating load average consumption: [percentage] "+loadAvgPercentage); + log.debug("Memory consumption: [totalMemory] "+totalMemory+"Mb [usedMemory] "+usedMemory+"Mb: "+memoryConsumption+"%"); + log.debug("Processor consumption: [loadAverage] "+loadAvg+" [cores] "+cores+": "+loadAvgPercentage+"%"); } - return loadAvgPercentage; + + return (new CartridgeStatistics(memoryConsumption, loadAvgPercentage)); } public static boolean allPortsActive() { return CartridgeAgentUtils.checkPortsActive(CartridgeAgentConfiguration.getInstance().getListenAddress(), CartridgeAgentConfiguration.getInstance().getPorts()); } ++<<<<<<< HEAD + + public void delete() { + } +} ++======= + + private static boolean isWindows() { + String os = System.getProperty("os.name").toLowerCase(); + return os.indexOf("win") >= 0; + } -} ++} ++>>>>>>> master http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java index 8299d0d,c661ee6..f10f860 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java @@@ -728,20 -904,6 +904,23 @@@ public class RestCommandLineService DefaultHttpClient httpClient = new DefaultHttpClient(); CartridgeInfoBean cartridgeInfoBean = new CartridgeInfoBean(); ++<<<<<<< HEAD + cartridgeInfoBean.setCartridgeType(null); + cartridgeInfoBean.setAlias(null); + cartridgeInfoBean.setRepoURL(null); + cartridgeInfoBean.setPrivateRepo(false); + cartridgeInfoBean.setRepoUsername(null); + cartridgeInfoBean.setRepoPassword(null); + cartridgeInfoBean.setAutoscalePolicy(null); + cartridgeInfoBean.setDeploymentPolicy(null); + cartridgeInfoBean.setSize(size); + + cartridgeInfoBean.setRemoveOnTermination(remoOnTermination); + cartridgeInfoBean.setPersistanceRequired(persistanceMapping); + cartridgeInfoBean.setCommitsEnabled(enableCommits); + ++======= ++>>>>>>> master GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java index 7450d79,dc76667..5031aed --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java @@@ -282,9 -279,8 +282,9 @@@ public class StratosApplication extend allCommandOptions.addOption((Option) o); } - commandLine = parser.parse(allCommandOptions, args); + commandLine = parser.parse(options, args, true); remainingArgs = commandLine.getArgs(); + actionOptions = commandLine.getOptions(); if (remainingArgs != null && remainingArgs.length > 0) { // Get command action action = remainingArgs[0];
