Merging master into data-publisher-integration
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f704fa3d Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f704fa3d Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f704fa3d Branch: refs/heads/data-publisher-integration Commit: f704fa3da58e308cbbf9e05a836ba0cbc9fb471d Parents: 18e3fe4 8d321a2 Author: Thanuja <[email protected]> Authored: Tue Aug 11 21:30:36 2015 +0530 Committer: Thanuja <[email protected]> Committed: Tue Aug 11 21:30:36 2015 +0530 ---------------------------------------------------------------------- README.md | 24 +- .../org.apache.stratos.autoscaler/pom.xml | 2 +- .../applications/ApplicationUtils.java | 7 +- .../parser/DefaultApplicationParser.java | 6 +- .../applications/payload/BasicPayloadData.java | 13 + .../pojo/SubscribableInfoContext.java | 10 + .../applications/topic/ApplicationBuilder.java | 11 +- .../client/AutoscalerCloudControllerClient.java | 8 +- .../autoscaler/context/InstanceContext.java | 85 +- .../application/ApplicationInstanceContext.java | 31 - .../application/ParentInstanceContext.java | 162 + .../context/cluster/ClusterContext.java | 34 +- .../context/cluster/ClusterInstanceContext.java | 15 +- .../context/group/GroupInstanceContext.java | 80 - .../partition/ClusterLevelPartitionContext.java | 15 +- .../partition/GroupLevelPartitionContext.java | 738 --- .../partition/ParentLevelPartitionContext.java | 738 +++ .../ClusterLevelNetworkPartitionContext.java | 92 - .../network/NetworkPartitionContext.java | 328 +- .../ParentLevelNetworkPartitionContext.java | 437 -- .../publisher/ClusterStatusEventPublisher.java | 8 +- .../AutoscalerTopologyEventReceiver.java | 2 +- .../autoscaler/monitor/MonitorFactory.java | 11 +- .../monitor/cluster/ClusterMonitor.java | 124 +- .../monitor/component/ApplicationMonitor.java | 67 +- .../monitor/component/GroupMonitor.java | 157 +- .../component/ParentComponentMonitor.java | 31 +- .../autoscaler/rule/RuleTasksDelegator.java | 15 +- .../services/impl/AutoscalerServiceImpl.java | 23 +- .../cluster/ClusterStatusActiveProcessor.java | 4 +- .../cluster/ClusterStatusInactiveProcessor.java | 4 +- .../ClusterStatusTerminatedProcessor.java | 4 +- .../stratos/autoscaler/util/AutoscalerUtil.java | 8 +- .../org.apache.stratos.cartridge.agent/pom.xml | 2 +- .../apache/stratos/cartridge/agent/Main.java | 29 + .../extensions/DefaultExtensionHandler.java | 43 - .../agent/extensions/ExtensionHandler.java | 7 - .../agent/test/JavaCartridgeAgentTest.java | 4 +- components/org.apache.stratos.cli/pom.xml | 6 +- .../src/test/python/README.md | 2 +- .../org.apache.stratos.cloud.controller/pom.xml | 4 +- .../controller/domain/ClusterPortMapping.java | 12 +- .../cloud/controller/domain/PortMapping.java | 9 + .../iaases/kubernetes/KubernetesIaas.java | 70 +- .../status/ClusterStatusTopicReceiver.java | 7 - .../messaging/topology/TopologyBuilder.java | 72 +- .../impl/CloudControllerServiceImpl.java | 16 +- components/org.apache.stratos.common/pom.xml | 2 +- .../beans/application/SubscribableInfo.java | 9 + .../common/beans/cartridge/PortMappingBean.java | 15 +- .../common/constants/StratosConstants.java | 1 + .../common/listeners/TenantMgtListener.java | 45 - .../stratos/common/util/CommandUtils.java | 30 + .../org.apache.stratos.custom.handlers/pom.xml | 2 +- .../org.apache.stratos.deployment/pom.xml | 2 +- .../org.apache.stratos.email.sender/pom.xml | 2 +- .../org.apache.stratos.keystore.mgt/pom.xml | 127 - .../stratos/keystore/mgt/KeyStoreGenerator.java | 249 - .../keystore/mgt/KeyStoreMgtException.java | 40 - .../keystore/mgt/KeystoreTenantMgtListener.java | 86 - .../internal/KeyStoreMgtServiceComponent.java | 88 - .../keystore/mgt/util/RealmServiceHolder.java | 34 - .../mgt/util/RegistryServiceHolder.java | 34 - .../pom.xml | 7 +- .../kubernetes/client/KubernetesApiClient.java | 43 +- .../kubernetes/client/KubernetesConstants.java | 2 + .../KubernetesAPIClientInterface.java | 19 +- .../client/live/AbstractLiveTest.java | 15 +- .../live/KubernetesApiClientLiveTest.java | 3 +- .../pom.xml | 3 +- .../pom.xml | 3 +- .../extension/api/LoadBalancerExtension.java | 2 +- .../org.apache.stratos.load.balancer/pom.xml | 3 +- .../org.apache.stratos.logging.view.ui/pom.xml | 2 +- .../console/README.md | 2 +- .../forms/default/configure/cartridges.json | 8 +- .../forms/schema/configure/cartridges.json | 13 + .../theme0/js/custom/applications-deploy.js | 4 +- .../theme0/partials/applications_deploy.hbs | 4 +- .../org.apache.stratos.manager.styles/pom.xml | 2 +- components/org.apache.stratos.manager/pom.xml | 2 +- .../manager/context/StratosManagerContext.java | 36 +- .../internal/ServiceReferenceHolder.java | 28 +- .../StratosManagerServiceComponent.java | 4 +- .../publisher/TenantEventPublisher.java | 34 +- .../manager/registry/RegistryManager.java | 6 +- .../CartridgeSubscriptionDataPublisher.java | 2 +- .../management/StratosUserManagerUtils.java | 3 +- .../user/management/TenantUserRoleManager.java | 31 +- .../utils/CartridgeConfigFileReader.java | 3 +- .../manager/utils/PermissionConstants.java | 2 +- components/org.apache.stratos.messaging/pom.xml | 3 +- .../domain/topology/KubernetesService.java | 9 + .../application/GroupReadyToShutdownEvent.java | 52 - .../ClusterStatusClusterCreatedEvent.java | 85 - .../event/tenant/TenantSubscribedEvent.java | 53 - .../event/tenant/TenantUnSubscribedEvent.java | 53 - .../topology/ClusterInstanceActivatedEvent.java | 21 +- .../GroupMaintenanceModeEventListener.java | 23 + ...lusterStatusClusterCreatedEventListener.java | 24 - .../tenant/TenantSubscribedEventListener.java | 28 - .../tenant/TenantUnSubscribedEventListener.java | 28 - .../ApplicationsMessageProcessorChain.java | 6 + .../GroupMaintenanceModeProcessor.java | 82 + ...terStatusClusterCreatedMessageProcessor.java | 58 - .../ClusterStatusMessageProcessorChain.java | 8 +- .../ClusterInstanceActivatedProcessor.java | 22 +- .../org.apache.stratos.metadata.client/pom.xml | 2 +- .../org.apache.stratos.metadata.service/pom.xml | 2 +- .../metadata/service/api/MetadataApi.java | 22 +- .../service/registry/CarbonRegistry.java | 149 +- .../org.apache.stratos.mock.iaas.api/pom.xml | 3 +- .../org.apache.stratos.mock.iaas.client/pom.xml | 2 +- components/org.apache.stratos.mock.iaas/pom.xml | 2 +- .../.gitignore | 1 + .../pom.xml | 32 +- .../cartridge.agent/cartridge.agent/agent.conf | 2 + .../cartridge.agent/cartridge.agent/agent.py | 39 +- .../cartridge.agent/cartridge.agent/config.py | 750 +-- .../cartridge.agent/constants.py | 13 +- .../cartridge.agent/cartridge.agent/entity.py | 636 +++ .../cartridge.agent/exception.py | 11 +- .../bash/ApplicationSignUpRemovedEvent.sh | 4 +- .../extensions/bash/ArtifactUpdatedEvent.sh | 5 +- .../extensions/bash/CompleteTenantEvent.sh | 6 +- .../extensions/bash/CompleteTopologyEvent.sh | 10 +- .../extensions/bash/CopyArtifacts.sh | 8 +- .../extensions/bash/DomainMappingAddedEvent.sh | 17 +- .../bash/DomainMappingRemovedEvent.sh | 17 +- .../extensions/bash/InstanceActivatedEvent.sh | 8 +- .../extensions/bash/InstanceStartedEvent.sh | 7 +- .../extensions/bash/MemberActivatedEvent.sh | 23 +- .../extensions/bash/MemberStartedEvent.sh | 23 +- .../extensions/bash/MemberSuspendedEvent.sh | 23 +- .../extensions/bash/MemberTerminatedEvent.sh | 23 +- .../extensions/bash/StartServers.sh | 19 +- .../extensions/bash/TenantSubscribedEvent.sh | 28 - .../cartridge.agent/extensions/bash/clean.sh | 4 +- .../extensions/py/ExtensionExecutor.py | 4 + .../cartridge.agent/healthstats.py | 241 + .../cartridge.agent/logpublisher.py | 287 ++ .../cartridge.agent/mdsclient.py | 22 +- .../modules/artifactmgt/git/agentgithandler.py | 54 +- .../modules/datapublisher/__init__.py | 18 - .../modules/datapublisher/logpublisher.py | 309 -- .../modules/event/eventhandler.py | 247 +- .../modules/event/tenant/events.py | 2 +- .../modules/event/topology/events.py | 2 +- .../modules/healthstatspublisher/__init__.py | 16 - .../abstracthealthstatisticspublisher.py | 63 - .../modules/healthstatspublisher/healthstats.py | 264 - .../modules/publisher/__init__.py | 16 - .../publisher/cartridgeagentpublisher.py | 187 - .../modules/subscriber/__init__.py | 17 - .../modules/subscriber/eventsubscriber.py | 117 - .../cartridge.agent/modules/tenant/__init__.py | 16 - .../modules/tenant/tenantcontext.py | 185 - .../modules/topology/__init__.py | 16 - .../modules/topology/topologycontext.py | 466 -- .../modules/util/cartridgeagentutils.py | 13 +- .../cartridge.agent/plugins/contracts.py | 15 + .../cartridge.agent/publisher.py | 215 + .../cartridge.agent/subscriber.py | 116 + .../test/PythonCartridgeAgentTest.java | 97 +- .../src/test/resources/agent.conf | 2 + .../src/test/resources/jndi.properties | 2 +- .../src/test/resources/payload/launch-params | 2 +- .../src/test/resources/payload/launch-params2 | 2 +- .../org.apache.stratos.rest.endpoint/pom.xml | 8 +- .../rest/endpoint/api/StratosApiV41.java | 38 +- .../rest/endpoint/api/StratosApiV41Utils.java | 126 +- .../util/converter/ObjectConverter.java | 78 +- .../pom.xml | 2 +- .../org.apache.stratos.tenant.activity/pom.xml | 2 +- components/pom.xml | 89 +- dependencies/fabric8/kubernetes-api/README.md | 10 +- dependencies/fabric8/kubernetes-api/pom.xml | 70 +- .../fabric8/kubernetes/api/AbstractWatcher.java | 80 - .../io/fabric8/kubernetes/api/Controller.java | 850 ---- .../java/io/fabric8/kubernetes/api/Entity.java | 28 - .../kubernetes/api/ExceptionResponseMapper.java | 88 - .../io/fabric8/kubernetes/api/Kubernetes.java | 283 -- .../kubernetes/api/KubernetesApiException.java | 30 - .../kubernetes/api/KubernetesClient.java | 1618 ------ .../kubernetes/api/KubernetesExtensions.java | 226 - .../kubernetes/api/KubernetesFactory.java | 384 -- .../api/KubernetesGlobalExtensions.java | 56 - .../kubernetes/api/KubernetesHelper.java | 1724 ------- .../fabric8/kubernetes/api/PodStatusType.java | 25 - .../io/fabric8/kubernetes/api/ServiceNames.java | 58 - .../api/UserConfigurationCompare.java | 201 - .../java/io/fabric8/kubernetes/api/Watcher.java | 32 - .../api/builders/ListEnvVarBuilder.java | 43 - .../api/builds/BuildFinishedEvent.java | 64 - .../kubernetes/api/builds/BuildListener.java | 30 - .../kubernetes/api/builds/BuildWatcher.java | 121 - .../fabric8/kubernetes/api/builds/Builds.java | 199 - .../io/fabric8/kubernetes/api/builds/Links.java | 35 - .../kubernetes/api/extensions/Configs.java | 117 - .../kubernetes/api/extensions/Templates.java | 225 - .../api/support/KindToClassMapping.java | 264 - .../src/main/kubernetes/api/Dockerfile | 24 - .../api/examples/controller-list.json | 35 - .../kubernetes/api/examples/controller.json | 24 - .../api/examples/external-service.json | 13 - .../src/main/kubernetes/api/examples/list.json | 98 - .../api/examples/pod-list-empty-results.json | 19 - .../main/kubernetes/api/examples/pod-list.json | 93 - .../src/main/kubernetes/api/examples/pod.json | 34 - .../kubernetes/api/examples/service-list.json | 28 - .../main/kubernetes/api/examples/service.json | 33 - .../main/kubernetes/api/examples/template.json | 146 - .../src/main/kubernetes/api/kubernetes.html | 1653 ------ .../src/main/kubernetes/api/kubernetes.raml | 204 - .../src/main/resources/log4j.properties | 27 - .../java/io/fabric8/kubernetes/api/Apply.java | 48 - .../kubernetes/api/ConfigComparePodTest.java | 243 - .../ConfigCompareReplicationControllerTest.java | 530 -- .../api/ConfigCompareServiceTest.java | 235 - .../kubernetes/api/ConfigFileParseTest.java | 58 - .../java/io/fabric8/kubernetes/api/Example.java | 134 - .../api/FindOpenShiftNamespaceTest.java | 41 - .../kubernetes/api/KubernetesHelperTest.java | 71 - .../kubernetes/api/ParseDateTimeTest.java | 36 - .../kubernetes/api/ParseExamplesTest.java | 128 - .../kubernetes/api/ParseServiceTest.java | 65 - .../io/fabric8/kubernetes/api/ParseTest.java | 157 - .../PodIdToReplicationControllerIDExample.java | 42 - .../api/ProcessTemplateLocallyTest.java | 54 - .../fabric8/kubernetes/api/TemplatesTest.java | 50 - .../io/fabric8/kubernetes/api/TriggerBuild.java | 45 - .../kubernetes/api/UsingBadAddressTest.java | 47 - .../fabric8/kubernetes/api/ViewEndpoints.java | 88 - .../io/fabric8/kubernetes/api/ViewNodes.java | 61 - .../fabric8/kubernetes/api/ViewServiceIPs.java | 45 - .../io/fabric8/kubernetes/api/WatchBuilds.java | 56 - .../kubernetes/api/WatchBuildsExample.java | 42 - .../kubernetes/api/WatchPodsExample.java | 42 - .../kubernetes/api/WatchServicesExample.java | 42 - .../src/test/resources/config.yml | 70 - .../src/test/resources/errorexample.json | 77 - .../src/test/resources/fmq-service.json | 20 - .../src/test/resources/glance-api-service.yaml | 25 - .../src/test/resources/log4j.properties | 25 - dependencies/fabric8/kubernetes-model/README.md | 7 - dependencies/fabric8/kubernetes-model/pom.xml | 176 - .../io/fabric8/config/KubernetesBaseConfig.java | 33 - .../io/fabric8/config/KubernetesConfig.java | 100 - .../java/io/fabric8/config/OpenshiftConfig.java | 86 - .../kubernetes/api/model/HasMetadata.java | 26 - .../kubernetes/api/model/KubernetesKind.java | 90 - .../kubernetes/api/model/KubernetesList.java | 68 - .../api/model/KubernetesResource.java | 27 - .../kubernetes/api/model/resource/Quantity.java | 153 - .../kubernetes/api/model/util/IntOrString.java | 213 - .../internal/HasMetadataComparator.java | 49 - .../kubernetes/internal/HasMetadataSet.java | 44 - .../internal/KubernetesDeserializer.java | 52 - .../openshift/api/model/template/Template.java | 324 -- .../src/main/resources/log4j.properties | 27 - .../src/main/resources/schema/kube-schema.json | 4692 ------------------ .../kubernetes/api/model/InlineTest.java | 37 - .../api/model/KubernetesListTest.java | 104 - .../kubernetes/api/model/UnmarshallTest.java | 85 - .../src/test/resources/service-list.json | 239 - .../src/test/resources/simple-list.json | 64 - .../src/test/resources/simple-template.json | 45 - .../src/test/resources/valid-pod.json | 22 - dependencies/fabric8/pom.xml | 3 +- .../jclouds/apis/gce/1.8.1-stratos/pom.xml | 23 +- .../openstack-neutron/1.8.1-stratos/pom.xml | 268 +- .../jclouds/apis/vcloud/1.8.1-stratos/pom.xml | 216 +- .../provider/aws-ec2/1.8.1-stratos/pom.xml | 2 +- dependencies/org.wso2.carbon.ui/pom.xml | 6 +- dependencies/pom.xml | 2 +- extensions/cep/distribution/pom.xml | 2 +- extensions/cep/stratos-cep-extension/pom.xml | 7 +- .../load-balancer/haproxy-extension/README.md | 21 + .../load-balancer/haproxy-extension/pom.xml | 2 +- .../haproxy-extension/src/main/license/LICENSE | 8 +- .../load-balancer/lvs-extension/INSTALL.md | 58 + .../load-balancer/lvs-extension/README.md | 40 + extensions/load-balancer/lvs-extension/pom.xml | 110 + .../lvs-extension/src/main/assembly/bin.xml | 106 + .../lvs-extension/src/main/bin/lvs-extension.sh | 54 + .../lvs-extension/src/main/conf/jndi.properties | 22 + .../src/main/conf/log4j.properties | 40 + .../src/main/conf/thrift-client-config.xml | 25 + .../apache/stratos/lvs/extension/Constants.java | 43 + .../org/apache/stratos/lvs/extension/LVS.java | 158 + .../stratos/lvs/extension/LVSConfigWriter.java | 237 + .../stratos/lvs/extension/LVSContext.java | 203 + .../lvs/extension/LVSStatisticsReader.java | 80 + .../org/apache/stratos/lvs/extension/Main.java | 85 + .../lvs-extension/src/main/license/LICENSE | 481 ++ .../lvs-extension/src/main/notice/NOTICE | 395 ++ .../src/main/resources/velocity.properties | 26 + .../src/main/security/client-truststore.jks | Bin 0 -> 35240 bytes .../src/main/templates/keepalived.conf.template | 59 + .../load-balancer/nginx-extension/README.md | 21 + .../load-balancer/nginx-extension/pom.xml | 2 +- .../nginx-extension/src/main/license/LICENSE | 8 +- extensions/load-balancer/pom.xml | 3 +- extensions/pom.xml | 2 +- .../pom.xml | 2 +- features/autoscaler/pom.xml | 2 +- .../pom.xml | 5 +- .../pom.xml | 6 +- features/cep/pom.xml | 2 +- .../pom.xml | 12 +- .../main/resources/conf/cloud-controller.xml | 62 +- features/cloud-controller/pom.xml | 2 +- .../org.apache.stratos.common.feature/pom.xml | 2 +- .../pom.xml | 8 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/common/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/load-balancer/pom.xml | 2 +- features/manager/deployment/pom.xml | 2 +- .../pom.xml | 2 +- features/manager/logging-mgt/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- features/manager/pom.xml | 3 +- .../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 +- features/manager/tenant-activity/pom.xml | 2 +- .../pom.xml | 2 +- features/messaging/pom.xml | 2 +- .../pom.xml | 2 +- features/mock-iaas/pom.xml | 2 +- features/pom.xml | 35 +- pom.xml | 26 +- .../modules/distribution/INSTALL.txt | 2 +- .../modules/distribution/README.txt | 2 +- .../modules/distribution/pom.xml | 2 +- .../conf/templates/jndi.properties.template | 1 - .../distribution/src/main/license/LICENSE | 14 +- products/cartridge-agent/pom.xml | 2 +- .../modules/distribution/INSTALL.txt | 2 +- .../load-balancer/modules/distribution/pom.xml | 2 +- .../src/main/assembly/filter.properties | 5 +- .../distribution/src/main/license/LICENSE | 8 +- .../load-balancer/modules/p2-profile/pom.xml | 2 +- products/load-balancer/pom.xml | 4 +- products/pom.xml | 2 +- .../python-cartridge-agent/distribution/pom.xml | 2 +- products/python-cartridge-agent/pom.xml | 2 +- products/stratos-cli/distribution/README.txt | 2 +- products/stratos-cli/distribution/pom.xml | 2 +- .../distribution/src/main/license/LICENSE | 14 +- products/stratos-cli/pom.xml | 2 +- .../stratos/conf/application-authenticators.xml | 26 - products/stratos/conf/axis2.xml | 526 -- products/stratos/conf/bam.xml | 45 - products/stratos/conf/billing-config.xml | 68 - products/stratos/conf/cipher-text.properties | 26 - products/stratos/conf/cloud-services-desc.xml | 205 - .../conf/data-bridge/data-bridge-config.xml | 74 - .../conf/data-bridge/thrift-agent-config.xml | 47 - products/stratos/conf/datasources.properties | 58 - products/stratos/conf/email-bill-generated.xml | 39 - .../conf/email-billing-notifications.xml | 50 - .../conf/email-new-tenant-activation.xml | 47 - .../conf/email-new-tenant-registration.xml | 47 - products/stratos/conf/email-password-reset.xml | 43 - .../conf/email-payment-received-customer.xml | 39 - .../conf/email-payment-received-wso2.xml | 39 - .../conf/email-registration-complete.xml | 38 - .../conf/email-registration-moderation.xml | 47 - ...l-registration-payment-received-customer.xml | 39 - products/stratos/conf/email-registration.xml | 46 - products/stratos/conf/email-update.xml | 39 - products/stratos/conf/embedded-ldap.xml | 165 - products/stratos/conf/event-broker.xml | 63 - products/stratos/conf/features-dashboard.xml | 66 - products/stratos/conf/identity.xml | 108 - products/stratos/conf/jaas.conf | 30 - products/stratos/conf/jndi.properties | 22 - .../conf/metering-config-non-manager.xml | 104 - products/stratos/conf/mqtttopic.properties | 21 - products/stratos/conf/nhttp.properties | 42 - products/stratos/conf/passthru-http.properties | 34 - products/stratos/conf/registry.xml | 103 - products/stratos/conf/rule-component.conf | 22 - products/stratos/conf/samples-desc.xml | 33 - products/stratos/conf/sso-idp-config.xml | 39 - products/stratos/conf/status-monitor-config.xml | 53 - products/stratos/conf/stratos-config.xml | 30 - products/stratos/conf/stratos-datasources.xml | 69 - .../conf/synapse-configs/default/registry.xml | 26 - .../default/sequences/errorHandler.xml | 31 - .../synapse-configs/default/sequences/fault.xml | 76 - .../synapse-configs/default/sequences/main.xml | 110 - .../conf/synapse-configs/default/synapse.xml | 25 - products/stratos/conf/synapse.properties | 38 - .../conf/temp-artifacts/carbon/module.xml | 69 - .../carbon/scripts/registry/artifacts.js | 595 --- .../carbon/scripts/registry/registry-osgi.js | 466 -- .../carbon/scripts/registry/registry-ws.js | 77 - .../carbon/scripts/registry/registry.js | 45 - .../carbon/scripts/server/config.js | 53 - .../carbon/scripts/server/osgi.js | 31 - .../carbon/scripts/server/server.js | 115 - .../carbon/scripts/server/tenant.js | 70 - .../carbon/scripts/user/registry-space.js | 60 - .../temp-artifacts/carbon/scripts/user/space.js | 31 - .../carbon/scripts/user/user-manager.js | 179 - .../temp-artifacts/carbon/scripts/user/user.js | 99 - ...ryjs.hostobjects.xhr_0.9.0.ALPHA4_wso2v1.jar | Bin 11856 -> 0 bytes .../org.wso2.store.sso.common_1.0.0.jar | Bin 13957 -> 0 bytes ...so2.stratos.identity.saml2.sso.mgt_2.2.0.jar | Bin 12276 -> 0 bytes .../stratos/conf/temp-artifacts/sso/module.xml | 28 - .../temp-artifacts/sso/scripts/sso.client.js | 193 - products/stratos/conf/tenant-mgt.xml | 42 - products/stratos/conf/tenant-reg-agent.xml | 25 - products/stratos/conf/thrift-client-config.xml | 27 - products/stratos/conf/throttling-rules.drl | 270 - products/stratos/conf/user-mgt.xml | 241 - products/stratos/conf/zoo.cfg | 24 - .../stratos/modules/distribution/INSTALL.txt | 2 +- .../stratos/modules/distribution/README.txt | 23 +- .../modules/distribution/lib/home/faq.html | 413 -- .../distribution/lib/home/images/bottom.gif | Bin 523 -> 0 bytes .../distribution/lib/home/images/bullet-01.gif | Bin 159 -> 0 bytes .../distribution/lib/home/images/content-bg.gif | Bin 233 -> 0 bytes .../distribution/lib/home/images/favicon.ico | Bin 17542 -> 0 bytes .../lib/home/images/feature-01-icon.gif | Bin 2825 -> 0 bytes .../lib/home/images/feature-02-icon.gif | Bin 3361 -> 0 bytes .../lib/home/images/feature-03-icon.gif | Bin 3285 -> 0 bytes .../lib/home/images/feature-middle-bg.gif | Bin 1139 -> 0 bytes .../distribution/lib/home/images/intro-bg.gif | Bin 3964 -> 0 bytes .../distribution/lib/home/images/intro-text.gif | Bin 4082 -> 0 bytes .../distribution/lib/home/images/left-bg.gif | Bin 1135 -> 0 bytes .../distribution/lib/home/images/logo.gif | Bin 11127 -> 0 bytes .../lib/home/images/powered-logo.gif | Bin 1280 -> 0 bytes .../distribution/lib/home/images/register.gif | Bin 6946 -> 0 bytes .../distribution/lib/home/images/sign-in.gif | Bin 3150 -> 0 bytes .../lib/home/images/stratos-products-new.jpg | Bin 25720 -> 0 bytes .../distribution/lib/home/images/title-bg.gif | Bin 1182 -> 0 bytes .../distribution/lib/home/images/top.gif | Bin 16149 -> 0 bytes .../distribution/lib/home/images/webinar.png | Bin 12318 -> 0 bytes .../lib/home/images/white-paper.png | Bin 15148 -> 0 bytes .../modules/distribution/lib/home/index.html | 140 - .../lib/home/js/jquery-1.5.1.min.js | 16 - .../lib/home/js/jquery.orbit-1.2.3.min.js | 17 - .../distribution/lib/home/js/orbit-1.2.3.css | 223 - .../lib/home/js/orbit/left-arrow.png | Bin 860 -> 0 bytes .../distribution/lib/home/js/orbit/loading.gif | Bin 2608 -> 0 bytes .../lib/home/js/orbit/mask-black.png | Bin 705 -> 0 bytes .../lib/home/js/orbit/right-arrow.png | Bin 825 -> 0 bytes .../lib/home/js/orbit/rotator-black.png | Bin 733 -> 0 bytes .../lib/home/js/orbit/timer-black.png | Bin 705 -> 0 bytes .../modules/distribution/lib/home/style.css | 181 - products/stratos/modules/distribution/pom.xml | 6 +- .../distribution/qpid-resources/etc/config.xml | 101 - .../qpid-resources/etc/jmxremote.access | 23 - .../qpid-resources/etc/virtualhosts.xml | 62 - .../distribution/qpid-resources/qpid.xml | 25 - .../modules/distribution/src/assembly/bin.xml | 453 +- .../distribution/src/assembly/filter.properties | 4 +- .../main/conf/application-authenticators.xml | 26 + .../distribution/src/main/conf/autoscaler.xml | 1 + .../conf/data-bridge/data-bridge-config.xml | 74 + .../conf/data-bridge/thrift-agent-config.xml | 47 + .../src/main/conf/drools/dependent-scaling.drl | 11 +- .../src/main/conf/drools/mincheck.drl | 19 +- .../src/main/conf/drools/scaling.drl | 16 +- .../distribution/src/main/conf/etc/launch.ini | 269 + .../distribution/src/main/conf/event-broker.xml | 63 + .../distribution/src/main/conf/jndi.properties | 6 +- .../src/main/conf/mqtttopic.properties | 21 + .../distribution/src/main/conf/registry.xml | 103 + .../src/main/conf/sso-idp-config.xml | 39 + .../distribution/src/main/conf/tenant-mgt.xml | 42 + .../src/main/conf/thrift-client-config.xml | 27 + .../distribution/src/main/conf/user-mgt.xml | 343 ++ .../distribution/src/main/license/LICENSE | 35 +- .../resources/allthemes/Dark/admin/logo.gif | Bin 0 -> 3476 bytes .../resources/allthemes/Dark/admin/main.css | 253 + .../allthemes/Dark/admin/powered-stratos.gif | Bin 0 -> 1515 bytes .../allthemes/Dark/admin/right-logo.gif | Bin 0 -> 2325 bytes .../allthemes/Dark/admin/theme-header-bg.gif | Bin 0 -> 4245 bytes .../Dark/admin/theme-header-region-bg.gif | Bin 0 -> 793 bytes .../allthemes/Dark/admin/theme-menu-header.gif | Bin 0 -> 261 bytes .../Dark/admin/theme-menu-panel-l-bg.gif | Bin 0 -> 312 bytes .../Dark/admin/theme-menu-table-bg.gif | Bin 0 -> 5671 bytes .../Dark/admin/theme-right-links-bg.gif | Bin 0 -> 1005 bytes .../src/main/resources/allthemes/Dark/thumb.png | Bin 0 -> 19546 bytes .../allthemes/Default/admin/def-body-bg.gif | Bin 0 -> 419 bytes .../allthemes/Default/admin/def-header-bg.gif | Bin 0 -> 17875 bytes .../Default/admin/def-header-region-bg.gif | Bin 0 -> 22784 bytes .../resources/allthemes/Default/admin/logo.gif | Bin 0 -> 3476 bytes .../resources/allthemes/Default/admin/main.css | 250 + .../allthemes/Default/admin/powered-stratos.gif | Bin 0 -> 1515 bytes .../allthemes/Default/admin/right-logo.gif | Bin 0 -> 3629 bytes .../main/resources/allthemes/Default/thumb.png | Bin 0 -> 24432 bytes .../resources/allthemes/Light/admin/logo.gif | Bin 0 -> 3476 bytes .../resources/allthemes/Light/admin/main.css | 250 + .../allthemes/Light/admin/menu_header.gif | Bin 0 -> 243 bytes .../allthemes/Light/admin/powered-stratos.gif | Bin 0 -> 1515 bytes .../allthemes/Light/admin/right-links-bg.gif | Bin 0 -> 1191 bytes .../allthemes/Light/admin/right-logo.gif | Bin 0 -> 2325 bytes .../allthemes/Light/admin/theme-header-bg.gif | Bin 0 -> 3792 bytes .../Light/admin/theme-header-region-b-bg.gif | Bin 0 -> 121 bytes .../Light/admin/theme-header-region-bg.gif | Bin 0 -> 534 bytes .../Light/admin/theme-menu-panel-l-bg.gif | Bin 0 -> 772 bytes .../Light/admin/theme-menu-table-bg.gif | Bin 0 -> 5991 bytes .../main/resources/allthemes/Light/thumb.png | Bin 0 -> 18102 bytes .../distribution/src/main/resources/launch.ini | 269 - .../powerded-by-logos/appserver-logo.gif | Bin 0 -> 1473 bytes .../resources/powerded-by-logos/bam-logo.gif | Bin 0 -> 1690 bytes .../resources/powerded-by-logos/bps-logo.gif | Bin 0 -> 1606 bytes .../resources/powerded-by-logos/brs-logo.gif | Bin 0 -> 1596 bytes .../resources/powerded-by-logos/csg-logo.gif | Bin 0 -> 2030 bytes .../resources/powerded-by-logos/ds-logo.gif | Bin 0 -> 1528 bytes .../resources/powerded-by-logos/esb-logo.gif | Bin 0 -> 1598 bytes .../resources/powerded-by-logos/gadget-logo.gif | Bin 0 -> 1368 bytes .../powerded-by-logos/governance-logo.gif | Bin 0 -> 1525 bytes .../powerded-by-logos/identity-logo.gif | Bin 0 -> 1398 bytes .../resources/powerded-by-logos/mashup-logo.gif | Bin 0 -> 1440 bytes .../src/main/temp-artifacts/carbon/module.xml | 69 + .../carbon/scripts/registry/artifacts.js | 595 +++ .../carbon/scripts/registry/registry-osgi.js | 466 ++ .../carbon/scripts/registry/registry-ws.js | 77 + .../carbon/scripts/registry/registry.js | 45 + .../carbon/scripts/server/config.js | 53 + .../carbon/scripts/server/osgi.js | 31 + .../carbon/scripts/server/server.js | 115 + .../carbon/scripts/server/tenant.js | 70 + .../carbon/scripts/user/registry-space.js | 60 + .../temp-artifacts/carbon/scripts/user/space.js | 31 + .../carbon/scripts/user/user-manager.js | 179 + .../temp-artifacts/carbon/scripts/user/user.js | 99 + ...ryjs.hostobjects.xhr_0.9.0.ALPHA4_wso2v1.jar | Bin 0 -> 11856 bytes .../org.wso2.store.sso.common_1.0.0.jar | Bin 0 -> 13957 bytes ...so2.stratos.identity.saml2.sso.mgt_2.2.0.jar | Bin 0 -> 12276 bytes .../src/main/temp-artifacts/sso/module.xml | 28 + .../temp-artifacts/sso/scripts/sso.client.js | 193 + products/stratos/modules/integration/pom.xml | 17 +- .../integration/tests/RestConstants.java | 52 + .../tests/SampleApplicationsTest.java | 155 - .../tests/StratosTestServerManager.java | 63 +- .../integration/tests/TopologyHandler.java | 393 ++ .../application/ApplicationBurstingTest.java | 226 + .../application/SampleApplicationsTest.java | 427 ++ .../application/SingleClusterScalingTest.java | 233 + .../tests/config/ApplicationBean.java | 25 + .../tests/config/ApplicationConfigParser.java | 25 + .../tests/group/CartridgeGroupTest.java | 129 + .../integration/tests/group/CartridgeTest.java | 130 + .../tests/policies/ApplicationPolicyTest.java | 133 + .../tests/policies/AutoscalingPolicyTest.java | 91 + .../tests/policies/DeploymentPolicyTest.java | 157 + .../tests/policies/NetworkPartitionTest.java | 92 + .../integration/tests/rest/ErrorResponse.java | 56 + .../integration/tests/rest/HttpResponse.java | 59 + .../tests/rest/HttpResponseHandler.java | 68 + .../integration/tests/rest/RestClient.java | 357 ++ .../tests/rest/WebClientWrapper.java | 62 + .../application-policy-3.json | 18 + .../app-bursting-single-cartriddge-group.json | 70 + .../autoscaling-policy-2.json | 14 + .../cartridges-groups/esb-php-group.json | 19 + .../cartridges/mock/esb.json | 50 + .../cartridges/mock/php.json | 51 + .../cartridges/mock/tomcat.json | 53 + .../deployment-policy-4.json | 32 + .../mock/network-partition-10.json | 24 + .../mock/network-partition-9.json | 15 + .../application-policy-2.json | 18 + .../mock/network-partition-7.json | 15 + .../mock/network-partition-8.json | 24 + .../autoscaling-policy-c0-v1.json | 14 + .../autoscaling-policy-c0.json | 14 + .../cartridges-groups/g4-g5-g6-v1.json | 50 + .../cartridges-groups/g4-g5-g6.json | 50 + .../cartridges/mock/c4.json | 45 + .../cartridges/mock/c5.json | 124 + .../cartridges/mock/c6.json | 45 + .../cartridge-test/cartridges/mock/c0-v1.json | 124 + .../cartridge-test/cartridges/mock/c0.json | 124 + .../deployment-policy-2-v1.json | 36 + .../deployment-policy-2.json | 32 + .../mock/network-partition-5-v1.json | 28 + .../mock/network-partition-5.json | 15 + .../mock/network-partition-6.json | 24 + .../mock/network-partition-3-v1.json | 28 + .../mock/network-partition-3.json | 15 + .../application-policy-1.json | 18 + .../applications/g-sc-G123-1-v1.json | 86 + .../applications/g-sc-G123-1-v2.json | 86 + .../applications/g-sc-G123-1-v3.json | 86 + .../applications/g-sc-G123-1.json | 86 + .../autoscaling-policy-1.json | 14 + .../cartridges-groups/cartrdige-nested-v1.json | 50 + .../cartridges-groups/cartrdige-nested.json | 50 + .../cartridges/mock/c1.json | 45 + .../cartridges/mock/c2.json | 45 + .../cartridges/mock/c3.json | 45 + .../deployment-policy-1-v1.json | 36 + .../deployment-policy-1.json | 32 + .../mock/network-partition-1-v1.json | 28 + .../mock/network-partition-1.json | 15 + .../mock/network-partition-2.json | 24 + .../src/test/resources/stratos-testing.xml | 66 + products/stratos/modules/p2-profile-gen/pom.xml | 73 +- .../payload/user-data/ssl-cert-snakeoil.key | 16 - .../payload/user-data/ssl-cert-snakeoil.pem | 14 - products/stratos/pom.xml | 3 +- .../resources/allthemes/Dark/admin/logo.gif | Bin 3476 -> 0 bytes .../resources/allthemes/Dark/admin/main.css | 253 - .../allthemes/Dark/admin/powered-stratos.gif | Bin 1515 -> 0 bytes .../allthemes/Dark/admin/right-logo.gif | Bin 2325 -> 0 bytes .../allthemes/Dark/admin/theme-header-bg.gif | Bin 4245 -> 0 bytes .../Dark/admin/theme-header-region-bg.gif | Bin 793 -> 0 bytes .../allthemes/Dark/admin/theme-menu-header.gif | Bin 261 -> 0 bytes .../Dark/admin/theme-menu-panel-l-bg.gif | Bin 312 -> 0 bytes .../Dark/admin/theme-menu-table-bg.gif | Bin 5671 -> 0 bytes .../Dark/admin/theme-right-links-bg.gif | Bin 1005 -> 0 bytes .../stratos/resources/allthemes/Dark/thumb.png | Bin 19546 -> 0 bytes .../allthemes/Default/admin/def-body-bg.gif | Bin 419 -> 0 bytes .../allthemes/Default/admin/def-header-bg.gif | Bin 17875 -> 0 bytes .../Default/admin/def-header-region-bg.gif | Bin 22784 -> 0 bytes .../resources/allthemes/Default/admin/logo.gif | Bin 3476 -> 0 bytes .../resources/allthemes/Default/admin/main.css | 250 - .../allthemes/Default/admin/powered-stratos.gif | Bin 1515 -> 0 bytes .../allthemes/Default/admin/right-logo.gif | Bin 3629 -> 0 bytes .../resources/allthemes/Default/thumb.png | Bin 24432 -> 0 bytes .../resources/allthemes/Light/admin/logo.gif | Bin 3476 -> 0 bytes .../resources/allthemes/Light/admin/main.css | 250 - .../allthemes/Light/admin/menu_header.gif | Bin 243 -> 0 bytes .../allthemes/Light/admin/powered-stratos.gif | Bin 1515 -> 0 bytes .../allthemes/Light/admin/right-links-bg.gif | Bin 1191 -> 0 bytes .../allthemes/Light/admin/right-logo.gif | Bin 2325 -> 0 bytes .../allthemes/Light/admin/theme-header-bg.gif | Bin 3792 -> 0 bytes .../Light/admin/theme-header-region-b-bg.gif | Bin 121 -> 0 bytes .../Light/admin/theme-header-region-bg.gif | Bin 534 -> 0 bytes .../Light/admin/theme-menu-panel-l-bg.gif | Bin 772 -> 0 bytes .../Light/admin/theme-menu-table-bg.gif | Bin 5991 -> 0 bytes .../stratos/resources/allthemes/Light/thumb.png | Bin 18102 -> 0 bytes .../cloud-services-icons/appserver.gif | Bin 2086 -> 0 bytes .../resources/cloud-services-icons/bam.gif | Bin 1773 -> 0 bytes .../resources/cloud-services-icons/bps.gif | Bin 1531 -> 0 bytes .../resources/cloud-services-icons/brs-old.gif | Bin 1772 -> 0 bytes .../resources/cloud-services-icons/brs.gif | Bin 2170 -> 0 bytes .../resources/cloud-services-icons/cep.png | Bin 3218 -> 0 bytes .../resources/cloud-services-icons/cg.gif | Bin 2385 -> 0 bytes .../cloud-services-icons/csg-inactive.gif | Bin 3188 -> 0 bytes .../resources/cloud-services-icons/csg.gif | Bin 3176 -> 0 bytes .../resources/cloud-services-icons/ds.gif | Bin 2012 -> 0 bytes .../resources/cloud-services-icons/esb.gif | Bin 1787 -> 0 bytes .../resources/cloud-services-icons/gadget.gif | Bin 2242 -> 0 bytes .../cloud-services-icons/governance.gif | Bin 1977 -> 0 bytes .../resources/cloud-services-icons/identity.gif | Bin 1936 -> 0 bytes .../cloud-services-icons/inactive-appserver.gif | Bin 1957 -> 0 bytes .../cloud-services-icons/inactive-bam.gif | Bin 1647 -> 0 bytes .../cloud-services-icons/inactive-brs.gif | Bin 1874 -> 0 bytes .../cloud-services-icons/inactive-cep.png | Bin 2959 -> 0 bytes .../cloud-services-icons/inactive-esb.gif | Bin 1656 -> 0 bytes .../cloud-services-icons/inactive-gadget.gif | Bin 2087 -> 0 bytes .../inactive-governance.gif | Bin 1850 -> 0 bytes .../cloud-services-icons/inactive-identity.gif | Bin 1794 -> 0 bytes .../cloud-services-icons/inactive-mashup.gif | Bin 1772 -> 0 bytes .../cloud-services-icons/inactive-mb.png | Bin 2746 -> 0 bytes .../resources/cloud-services-icons/mashup.gif | Bin 1850 -> 0 bytes .../resources/cloud-services-icons/mb.png | Bin 3139 -> 0 bytes .../resources/cloud-services-icons/pom.xml | 58 - .../resources/cloud-services-icons/ss.gif | Bin 2432 -> 0 bytes .../resources/cloud-services-icons/ts.gif | Bin 2475 -> 0 bytes .../powerded-by-logos/appserver-logo.gif | Bin 1473 -> 0 bytes .../resources/powerded-by-logos/bam-logo.gif | Bin 1690 -> 0 bytes .../resources/powerded-by-logos/bps-logo.gif | Bin 1606 -> 0 bytes .../resources/powerded-by-logos/brs-logo.gif | Bin 1596 -> 0 bytes .../resources/powerded-by-logos/csg-logo.gif | Bin 2030 -> 0 bytes .../resources/powerded-by-logos/ds-logo.gif | Bin 1528 -> 0 bytes .../resources/powerded-by-logos/esb-logo.gif | Bin 1598 -> 0 bytes .../resources/powerded-by-logos/gadget-logo.gif | Bin 1368 -> 0 bytes .../powerded-by-logos/governance-logo.gif | Bin 1525 -> 0 bytes .../powerded-by-logos/identity-logo.gif | Bin 1398 -> 0 bytes .../resources/powerded-by-logos/mashup-logo.gif | Bin 1440 -> 0 bytes .../artifacts/application.json | 43 +- .../sample-groups/artifacts/application.json | 1 - .../single-group-app/artifacts/application.json | 8 +- samples/cartridges/kubernetes/c1.json | 3 +- samples/cartridges/kubernetes/c2.json | 3 +- samples/cartridges/kubernetes/c3.json | 3 +- samples/cartridges/kubernetes/c4.json | 3 +- samples/cartridges/kubernetes/esb.json | 5 +- samples/cartridges/kubernetes/php.json | 5 +- samples/cartridges/kubernetes/tomcat.json | 5 +- samples/cartridges/kubernetes/tomcat1.json | 5 +- samples/cartridges/kubernetes/tomcat2.json | 5 +- samples/cartridges/kubernetes/tomcat3.json | 3 +- samples/cartridges/kubernetes/wso2-is.json | 3 +- samples/cartridges/mock/php.json | 2 +- samples/cartridges/mock/tomcat.json | 5 + samples/cartridges/openstack/php.json | 2 +- samples/cartridges/openstack/tomcat.json | 5 + .../kubernetes-cluster-1.json | 4 +- .../kubernetes-cluster-2.json | 4 +- .../kubernetes-cluster-ec2.json | 4 +- .../pom.xml | 2 +- .../src/main/resources/AutoscalerService.wsdl | 503 +- .../pom.xml | 2 +- .../main/resources/CloudControllerService.wsdl | 1101 ++-- .../pom.xml | 2 +- service-stubs/pom.xml | 3 +- tools/config-scripts/ec2/config.sh | 2 +- tools/config-scripts/gce/config.sh | 2 +- tools/config-scripts/openstack/config.sh | 2 +- .../base-image/Dockerfile | 10 +- .../base-image/files/run | 14 +- .../base-image/packs/.gitignore | 4 + .../cartridge-docker-images/build.sh | 15 +- .../service-images/php/Dockerfile | 2 +- .../service-images/tomcat-saml-sso/Dockerfile | 6 +- .../service-images/tomcat/Dockerfile | 8 +- .../service-images/wso2is-saml-sso/Dockerfile | 6 +- .../puppetmaster/docker-build.sh | 4 +- .../stratos-docker-images/puppetmaster/run | 4 +- .../stratos-docker-images/run-example.sh | 2 +- tools/pom.xml | 2 +- tools/puppet3/manifests/nodes/base.pp | 4 +- tools/puppet3/modules/agent/files/README.txt | 2 +- tools/puppet3/modules/agent/manifests/init.pp | 4 +- tools/puppet3/modules/haproxy/files/README.txt | 2 +- tools/puppet3/modules/haproxy/manifests/init.pp | 2 +- .../templates/bin/haproxy-extension.sh.erb | 2 +- tools/puppet3/modules/lb/files/README.txt | 2 +- tools/puppet3/modules/lb/manifests/init.pp | 2 +- .../modules/python_agent/files/README.txt | 2 +- .../modules/python_agent/manifests/init.pp | 2 +- .../python_agent/templates/agent.conf.erb | 2 + .../extensions/instance-activated.sh.erb | 7 + tools/stratos-installer/README.md | 4 +- tools/stratos-installer/conf/setup.conf | 2 +- 743 files changed, 17003 insertions(+), 34469 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java index c65a5f7,9504d53..d0a2939 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java @@@ -83,9 -83,8 +83,10 @@@ public class AutoscalerCloudControllerC public synchronized MemberContext startInstance(PartitionRef partition, String clusterId, String clusterInstanceId, - String networkPartitionId, boolean isPrimary, + String networkPartitionId, - int minMemberCount) throws SpawningException { + int minMemberCount, String autoscalingReason, + long scalingTime) throws SpawningException { ++ try { if (log.isInfoEnabled()) { log.info(String.format("Trying to spawn an instance via cloud controller: " + @@@ -116,18 -111,7 +113,17 @@@ minCountProp.setName(StratosConstants.MIN_COUNT); minCountProp.setValue(String.valueOf(minMemberCount)); + Property autoscalingReasonProp = new Property(); + autoscalingReasonProp.setName(StratosConstants.SCALING_REASON); + autoscalingReasonProp.setValue(autoscalingReason); + + Property scalingTimeProp = new Property(); + scalingTimeProp.setName(StratosConstants.SCALING_TIME); + scalingTimeProp.setValue(String.valueOf(scalingTime)); + - memberContextProps.addProperty(isPrimaryProp); memberContextProps.addProperty(minCountProp); + memberContextProps.addProperty(autoscalingReasonProp); + memberContextProps.addProperty(scalingTimeProp); instanceContext.setProperties(AutoscalerUtil.toStubProperties(memberContextProps)); long startTime = System.currentTimeMillis(); http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java index 733ce57,89633f7..87ea7b5 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java @@@ -174,12 -172,9 +173,11 @@@ public class RuleTasksDelegator * @param clusterMonitorPartitionContext Cluster monitor partition context * @param clusterId Cluster id * @param clusterInstanceId Instance id - * @param isPrimary Is a primary member + * @param autoscalingReason scaling reason for member + * @param scalingTime scaling time */ public void delegateSpawn(ClusterLevelPartitionContext clusterMonitorPartitionContext, String clusterId, - String clusterInstanceId, boolean isPrimary, String autoscalingReason, long scalingTime) { - String clusterInstanceId) { ++ String clusterInstanceId, String autoscalingReason, long scalingTime) { try { String nwPartitionId = clusterMonitorPartitionContext.getNetworkPartitionId(); @@@ -200,8 -195,7 +198,8 @@@ .startInstance(clusterMonitorPartitionContext.getPartition(), clusterId, clusterInstanceId, clusterMonitorPartitionContext.getNetworkPartitionId(), - isPrimary, - minimumCountOfNetworkPartition); + minimumCountOfNetworkPartition, autoscalingReason, scalingTime); ++ if (memberContext != null) { ClusterLevelPartitionContext partitionContext = clusterInstanceContext. getPartitionCtxt(clusterMonitorPartitionContext.getPartitionId()); @@@ -370,7 -361,7 +368,8 @@@ float memberMemoryConsumptionAverage = memberStatsContext.getMemoryConsumption().getAverage(); float memberMemoryConsumptionGredient = memberStatsContext.getMemoryConsumption().getGradient(); -- float memberMemoryConsumptionSecondDerivative = memberStatsContext.getMemoryConsumption().getSecondDerivative(); ++ float memberMemoryConsumptionSecondDerivative = ++ memberStatsContext.getMemoryConsumption().getSecondDerivative(); double memberPredictedMemoryConsumption = getPredictedValueForNextMinute(memberMemoryConsumptionAverage, memberMemoryConsumptionGredient, memberMemoryConsumptionSecondDerivative, 1); http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java index 419c711,a11c5bf..e24fda3 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java @@@ -31,7 -31,7 +31,8 @@@ import org.apache.stratos.cloud.control import org.apache.stratos.cloud.controller.statistics.publisher.BAMUsageDataPublisher; import org.apache.stratos.cloud.controller.util.CloudControllerUtil; import org.apache.stratos.common.Property; +import org.apache.stratos.common.constants.StratosConstants; + import org.apache.stratos.kubernetes.client.KubernetesConstants; import org.apache.stratos.messaging.domain.application.ClusterDataHolder; import org.apache.stratos.messaging.domain.instance.ClusterInstance; import org.apache.stratos.messaging.domain.topology.*; http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java index af46cfe,ee0477c..a1f2fa9 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java @@@ -167,9 -164,9 +167,10 @@@ public class StratosConstants // member expiry timeout constants public static final String PENDING_MEMBER_EXPIRY_TIMEOUT = "autoscaler.member.pendingMemberExpiryTimeout"; + public static final String SPIN_TERMINATE_PARALLEL = "autoscaler.member.spinAfterTerminate"; public static final String OBSOLETED_MEMBER_EXPIRY_TIMEOUT = "autoscaler.member.obsoletedMemberExpiryTimeout"; - public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT = "autoscaler.member.pendingTerminationMemberExpiryTimeout"; + public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT = + "autoscaler.member.pendingTerminationMemberExpiryTimeout"; public static final String FILTER_VALUE_SEPARATOR = ","; public static final String TOPOLOGY_APPLICATION_FILTER = "stratos.topology.application.filter"; http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py index 0000000,be45294..0cd76af mode 000000,100644..100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py @@@ -1,0 -1,238 +1,241 @@@ + # Licensed to the Apache Software Foundation (ASF) under one + # or more contributor license agreements. See the NOTICE file + # distributed with this work for additional information + # regarding copyright ownership. The ASF licenses this file + # to you under the Apache License, Version 2.0 (the + # "License"); you may not use this file except in compliance + # with the License. You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, + # software distributed under the License is distributed on an + # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + # KIND, either express or implied. See the License for the + # specific language governing permissions and limitations + # under the License. + + from threading import Thread + import multiprocessing - ++import time + import psutil + + from modules.databridge.agent import * + from config import Config + from modules.util import cartridgeagentutils + from exception import ThriftReceiverOfflineException, CEPPublisherException + import constants + + + class HealthStatisticsPublisherManager(Thread): + """ + Read from provided health stat reader plugin or the default health stat reader, the value for memory usage and + load average and publishes them as ThriftEvents to a CEP server + """ + STREAM_NAME = "cartridge_agent_health_stats" + STREAM_VERSION = "1.0.0" + STREAM_NICKNAME = "agent health stats" + STREAM_DESCRIPTION = "agent health stats" + + def __init__(self, publish_interval, health_stat_plugin): + """ + Initializes a new HealthStatisticsPublisherManager with a given number of seconds as the interval + :param int publish_interval: Number of seconds as the interval + :return: void + """ + Thread.__init__(self) + self.log = LogFactory().get_log(__name__) + self.publish_interval = publish_interval + """:type : int""" + self.terminated = False + self.publisher = HealthStatisticsPublisher() + """:type : HealthStatisticsPublisher""" + # If there are no health stat reader plugins, create the default reader instance + self.stats_reader = health_stat_plugin if health_stat_plugin is not None else DefaultHealthStatisticsReader() + + def run(self): + while not self.terminated: + time.sleep(self.publish_interval) + + try: + ca_health_stat = CartridgeHealthStatistics() + cartridge_stats = self.stats_reader.stat_cartridge_health(ca_health_stat) + self.log.debug("Publishing memory consumption: %r" % cartridge_stats.memory_usage) + self.publisher.publish_memory_usage(cartridge_stats.memory_usage) + + self.log.debug("Publishing load average: %r" % cartridge_stats.load_avg) + self.publisher.publish_load_average(cartridge_stats.load_avg) + except ThriftReceiverOfflineException: + self.log.error("Couldn't publish health statistics to CEP. Thrift Receiver offline. Reconnecting...") + self.publisher = HealthStatisticsPublisher() + + self.publisher.publisher.disconnect() + + + class HealthStatisticsPublisher: + """ + Publishes memory usage and load average to thrift server + """ + log = LogFactory().get_log(__name__) + + @staticmethod + def read_config(conf_key): + """ + Read a given key from the cartridge agent configuration + :param conf_key: The key to look for in the CA config + :return: The value for the key from the CA config + :raise: RuntimeError if the given key is not found in the CA config + """ + conf_value = Config.read_property(conf_key, False) + + if conf_value is None or conf_value.strip() == "": + raise RuntimeError("System property not found: " + conf_key) + + return conf_value + + def __init__(self): + self.ports = [] + cep_port = HealthStatisticsPublisher.read_config(constants.CEP_RECEIVER_PORT) + self.ports.append(cep_port) + + cep_ip = HealthStatisticsPublisher.read_config(constants.CEP_RECEIVER_IP) + + cartridgeagentutils.wait_until_ports_active( + cep_ip, + self.ports, + int(Config.read_property("port.check.timeout", critical=False))) + + cep_active = cartridgeagentutils.check_ports_active( + cep_ip, + self.ports) + + if not cep_active: + raise CEPPublisherException("CEP server not active. Health statistics publishing aborted.") + + cep_admin_username = HealthStatisticsPublisher.read_config(constants.CEP_SERVER_ADMIN_USERNAME) + cep_admin_password = HealthStatisticsPublisher.read_config(constants.CEP_SERVER_ADMIN_PASSWORD) + + self.stream_definition = HealthStatisticsPublisher.create_stream_definition() + HealthStatisticsPublisher.log.debug("Stream definition created: %r" % str(self.stream_definition)) + + self.publisher = ThriftPublisher( + cep_ip, + cep_port, + cep_admin_username, + cep_admin_password, + self.stream_definition) + + HealthStatisticsPublisher.log.debug("HealthStatisticsPublisher initialized") + + @staticmethod + def create_stream_definition(): + """ + Create a StreamDefinition for publishing to CEP + """ + stream_def = StreamDefinition() + stream_def.name = HealthStatisticsPublisherManager.STREAM_NAME + stream_def.version = HealthStatisticsPublisherManager.STREAM_VERSION + stream_def.nickname = HealthStatisticsPublisherManager.STREAM_NICKNAME + stream_def.description = HealthStatisticsPublisherManager.STREAM_DESCRIPTION + + # stream_def.add_payloaddata_attribute() ++ stream_def.add_payloaddata_attribute("time_stamp", StreamDefinition.LONG) + stream_def.add_payloaddata_attribute("cluster_id", StreamDefinition.STRING) + stream_def.add_payloaddata_attribute("cluster_instance_id", StreamDefinition.STRING) + stream_def.add_payloaddata_attribute("network_partition_id", StreamDefinition.STRING) + stream_def.add_payloaddata_attribute("member_id", StreamDefinition.STRING) + stream_def.add_payloaddata_attribute("partition_id", StreamDefinition.STRING) + stream_def.add_payloaddata_attribute("health_description", StreamDefinition.STRING) + stream_def.add_payloaddata_attribute("value", StreamDefinition.DOUBLE) + + return stream_def + + def publish_memory_usage(self, memory_usage): + """ + Publishes the given memory usage value to the thrift server as a ThriftEvent + :param float memory_usage: memory usage + """ + + event = ThriftEvent() ++ event.payloadData.append(int(round(time.time() * 1000))) + event.payloadData.append(Config.cluster_id) + event.payloadData.append(Config.cluster_instance_id) + event.payloadData.append(Config.network_partition_id) + event.payloadData.append(Config.member_id) + event.payloadData.append(Config.partition_id) + event.payloadData.append(constants.MEMORY_CONSUMPTION) + event.payloadData.append(float(memory_usage)) + # event.payloadData.append(str(memory_usage)) + + HealthStatisticsPublisher.log.debug("Publishing cep event: [stream] %r [payload_data] %r [version] %r" + % ( + self.stream_definition.name, + event.payloadData, + self.stream_definition.version)) + + self.publisher.publish(event) + + def publish_load_average(self, load_avg): + """ + Publishes the given load average value to the thrift server as a ThriftEvent + :param float load_avg: load average value + """ + + event = ThriftEvent() ++ event.payloadData.append(int(round(time.time() * 1000))) + event.payloadData.append(Config.cluster_id) + event.payloadData.append(Config.cluster_instance_id) + event.payloadData.append(Config.network_partition_id) + event.payloadData.append(Config.member_id) + event.payloadData.append(Config.partition_id) + event.payloadData.append(constants.LOAD_AVERAGE) + event.payloadData.append(float(load_avg)) + # event.payloadData.append(str(load_avg)) + + HealthStatisticsPublisher.log.debug("Publishing cep event: [stream] %r [payload_data] %r [version] %r" + % ( + self.stream_definition.name, + event.payloadData, + self.stream_definition.version)) + + self.publisher.publish(event) + + + class DefaultHealthStatisticsReader: + """ + Default implementation for the health statistics reader. If no Health Statistics Reader plugins are provided, + this will be used to read health stats from the instance. + """ + + def __init__(self): + self.log = LogFactory().get_log(__name__) + + def stat_cartridge_health(self, ca_health_stat): + ca_health_stat.memory_usage = DefaultHealthStatisticsReader.__read_mem_usage() + ca_health_stat.load_avg = DefaultHealthStatisticsReader.__read_load_avg() + + self.log.debug("Memory read: %r, CPU read: %r" % (ca_health_stat.memory_usage, ca_health_stat.load_avg)) + return ca_health_stat + + @staticmethod + def __read_mem_usage(): + return psutil.virtual_memory().percent + + @staticmethod + def __read_load_avg(): + (one, five, fifteen) = os.getloadavg() + cores = multiprocessing.cpu_count() + + return (one/cores) * 100 + + + class CartridgeHealthStatistics: + """ + Holds the memory usage and load average reading + """ + + def __init__(self): + self.memory_usage = None + """:type : float""" + self.load_avg = None + """:type : float""" http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/extensions/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl ---------------------------------------------------------------------- diff --cc products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl index a8102da,6e76706..f98983c --- a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl @@@ -84,9 -82,7 +82,11 @@@ dialect "mvel log.info("[dependency-scale] [scale-up] Partition available, hence trying to spawn an instance to scale up!" ); log.debug("[dependency-scale] [scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId ); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId()); ++ + long scalingTime = System.currentTimeMillis(); + String scalingReason = "Dependency scaling"; - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary,scalingReason,scalingTime); ++ delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), scalingReason, scalingTime); ++ count++; } else { partitionsAvailable = false; http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl ---------------------------------------------------------------------- diff --cc products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl index 4eaab2b,06b7fe1..9d6386c --- a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl @@@ -84,10 -75,7 +75,10 @@@ dialect "mvel log.info("[min-check] Partition available, hence trying to spawn an instance to fulfil minimum count!" + " [cluster] " + clusterId); log.debug("[min-check] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId()); ++ + long scalingTime = System.currentTimeMillis(); + String scalingReason = "Scaling up to fulfil minimum count, [Cluster Min Members] "+clusterInstanceContext.getMinInstanceCount()+" [Additional instances to be created] " + additionalInstances; - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary,scalingReason,scalingTime); - ++ delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), scalingReason, scalingTime); count++; } else { http://git-wip-us.apache.org/repos/asf/stratos/blob/f704fa3d/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl ---------------------------------------------------------------------- diff --cc products/stratos/modules/distribution/src/main/conf/drools/scaling.drl index 3b4a916,4b55123..77edd2f --- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl @@@ -186,8 -180,7 +184,10 @@@ dialect "mvel " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold); log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId ); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId()); ++ + long scalingTime = System.currentTimeMillis(); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary,autoscalingReason,scalingTime); ++ delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), autoscalingReason, scalingTime); ++ count++; } else {
