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

Reply via email to