You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/09/01 14:30:20 UTC
[42/50] [abbrv] stratos git commit: Merge with tenant-isolation branch
Merge with tenant-isolation branch
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2c34f816
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2c34f816
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2c34f816
Branch: refs/heads/master
Commit: 2c34f816cfbd5a93c62ecc4dffe1d87026e7c329
Parents: eefef71 3ab0f9e
Author: gayangunarathne <ga...@wso2.com>
Authored: Tue Sep 1 11:18:43 2015 +0530
Committer: gayangunarathne <ga...@wso2.com>
Committed: Tue Sep 1 11:18:43 2015 +0530
----------------------------------------------------------------------
.../networkpartition/AllAtOnceAlgorithm.java | 4 +-
.../OneAfterAnotherAlgorithm.java | 8 +-
.../applications/ApplicationUtils.java | 6 +-
.../applications/ClusterInformation.java | 4 +-
.../applications/MTClusterInformation.java | 8 +-
.../applications/STClusterInformation.java | 8 +-
.../dependency/DependencyBuilder.java | 1 -
.../context/ApplicationChildContextFactory.java | 1 +
.../dependency/context/ClusterChildContext.java | 9 +
.../parser/DefaultApplicationParser.java | 157 +-
.../applications/parser/ParserUtils.java | 2 +-
.../applications/payload/BasicPayloadData.java | 11 +
.../pojo/ApplicationClusterContext.java | 18 +-
.../applications/pojo/ApplicationContext.java | 23 +-
.../applications/pojo/CartridgeContext.java | 27 +-
.../applications/pojo/GroupContext.java | 28 +
.../pojo/SubscribableInfoContext.java | 40 +-
.../applications/topic/ApplicationBuilder.java | 52 +-
.../client/AutoscalerCloudControllerClient.java | 57 +-
.../autoscaler/context/AutoscalerContext.java | 17 +-
.../context/cluster/ClusterContext.java | 30 +-
.../context/cluster/ClusterContextFactory.java | 2 -
.../context/partition/PartitionContext.java | 2 +-
.../AutoscalerTopologyEventReceiver.java | 85 +-
.../internal/AutoscalerServiceComponent.java | 8 +-
.../autoscaler/monitor/MonitorFactory.java | 20 +-
.../monitor/cluster/ClusterMonitor.java | 209 ++-
.../monitor/component/ApplicationMonitor.java | 141 +-
.../monitor/component/GroupMonitor.java | 24 +-
.../component/ParentComponentMonitor.java | 2 +-
.../stratos/autoscaler/pojo/ServiceGroup.java | 30 +-
.../autoscaler/pojo/policy/PolicyManager.java | 266 ++-
.../pojo/policy/autoscale/AutoscalePolicy.java | 24 +-
.../policy/deployment/ApplicationPolicy.java | 27 +
.../policy/deployment/DeploymentPolicy.java | 35 +-
.../autoscaler/registry/RegistryManager.java | 62 +-
.../autoscaler/rule/RuleTasksDelegator.java | 42 +-
.../autoscaler/services/AutoscalerService.java | 107 +-
.../services/impl/AutoscalerServiceImpl.java | 703 ++++++--
.../group/GroupStatusInactiveProcessor.java | 2 +-
.../processor/group/GroupStatusProcessor.java | 2 +-
.../util/AutoscalerObjectConverter.java | 7 +-
.../stratos/autoscaler/util/AutoscalerUtil.java | 209 ++-
.../stratos/autoscaler/AutoscalerUtilTest.java | 64 -
.../publisher/HealthStatisticsNotifier.java | 10 +-
.../agent/test/JavaCartridgeAgentTest.java | 9 +-
.../concurrent/PartitionValidatorCallable.java | 2 +-
.../context/CloudControllerContext.java | 82 +-
.../domain/ApplicationClusterContext.java | 14 +-
.../cloud/controller/domain/Cartridge.java | 18 +
.../cloud/controller/domain/ClusterContext.java | 18 +-
.../controller/domain/NetworkPartition.java | 38 +-
.../cloud/controller/domain/Partition.java | 36 +-
.../domain/kubernetes/KubernetesCluster.java | 36 +-
.../CloudStackPartitionValidator.java | 2 +-
.../iaases/ec2/EC2PartitionValidator.java | 4 +-
.../iaases/kubernetes/KubernetesIaas.java | 38 +-
.../KubernetesPartitionValidator.java | 4 +-
.../cloud/controller/iaases/mock/MockIaas.java | 2 +-
.../openstack/OpenstackPartitionValidator.java | 4 +-
.../publisher/TopologyEventPublisher.java | 20 +-
.../messaging/topology/TopologyBuilder.java | 1457 ++++++++--------
.../services/CloudControllerService.java | 66 +-
.../impl/CloudControllerServiceImpl.java | 512 ++++--
.../impl/CloudControllerServiceUtil.java | 19 +-
.../services/impl/InstanceCreator.java | 17 +-
.../publisher/BAMUsageDataPublisher.java | 44 +-
.../util/CloudControllerConstants.java | 4 +
.../controller/util/CloudControllerUtil.java | 12 +-
.../beans/application/ApplicationBean.java | 5 +-
.../beans/application/SubscribableInfo.java | 12 +-
.../beans/cartridge/CartridgeGroupBean.java | 18 +-
.../cartridge/CartridgeGroupReferenceBean.java | 19 +-
.../beans/cartridge/CartridgeReferenceBean.java | 18 +
.../beans/kubernetes/KubernetesClusterBean.java | 18 +-
.../beans/partition/NetworkPartitionBean.java | 1 -
.../common/beans/partition/PartitionBean.java | 19 +-
.../beans/partition/PartitionReferenceBean.java | 19 +-
.../deployment/ApplicationPolicyBean.java | 9 +
.../beans/topology/ApplicationInstanceBean.java | 19 +-
.../common/client/AutoscalerServiceClient.java | 81 +-
.../client/CloudControllerServiceClient.java | 68 +-
.../client/StratosManagerServiceClient.java | 20 +-
.../common/constants/StratosConstants.java | 8 +-
.../common/partition/NetworkPartitionRef.java | 11 +-
.../stratos/common/partition/PartitionRef.java | 37 +-
.../publisher/HealthStatisticsPublisher.java | 3 +-
.../publisher/InFlightRequestPublisher.java | 4 +-
.../publisher/StatisticsPublisherType.java | 2 +-
.../publisher/ThriftClientConfig.java | 101 ++
.../publisher/ThriftClientConfigParser.java | 173 ++
.../statistics/publisher/ThriftClientInfo.java | 71 +
.../publisher/ThriftStatisticsPublisher.java | 116 ++
.../publisher/wso2/cep/ThriftClientConfig.java | 81 -
.../wso2/cep/ThriftClientConfigParser.java | 139 --
.../publisher/wso2/cep/ThriftClientInfo.java | 63 -
.../cep/WSO2CEPHealthStatisticsPublisher.java | 29 +-
.../cep/WSO2CEPInFlightRequestPublisher.java | 28 +-
.../wso2/cep/WSO2CEPStatisticsPublisher.java | 114 --
.../common/threading/StratosThreadPool.java | 21 +-
.../test/ThriftClientConfigParserTest.java | 23 +-
.../src/test/resources/thrift-client-config.xml | 22 +-
.../KubernetesAPIClientInterface.java | 13 +-
...LoadBalancerCommonTopologyEventReceiver.java | 2 +-
.../LoadBalancerStatisticsNotifier.java | 3 +-
.../schema/configure/application-policies.json | 4 +-
.../schema/configure/autoscaling-policies.json | 2 +-
.../schema/configure/deployment-policies.json | 2 +-
.../schema/configure/network-partitions.json | 2 +-
.../themes/theme0/partials/configure_form.hbs | 4 +
components/org.apache.stratos.manager/pom.xml | 1 +
.../manager/context/StratosManagerContext.java | 148 +-
.../manager/services/StratosManagerService.java | 42 +-
.../impl/StratosManagerServiceImpl.java | 44 +-
.../domain/application/Application.java | 26 +-
.../domain/application/Applications.java | 18 +-
.../domain/application/ClusterDataHolder.java | 15 +-
.../domain/application/ParentComponent.java | 4 +-
.../messaging/domain/instance/Instance.java | 10 +-
.../messaging/domain/topology/Service.java | 12 +-
.../messaging/domain/topology/Topology.java | 20 +-
.../topology/locking/TopologyLockHierarchy.java | 8 +-
.../topology/ClusterInstanceCreatedEvent.java | 12 +-
.../event/topology/ServiceCreatedEvent.java | 8 +-
.../event/topology/ServiceRemovedEvent.java | 18 +-
...licationInstanceCreatedMessageProcessor.java | 44 +-
...licationClustersCreatedMessageProcessor.java | 21 +-
.../ClusterInstanceCreatedMessageProcessor.java | 14 +-
.../ServiceCreatedMessageProcessor.java | 4 +-
.../ServiceRemovedMessageProcessor.java | 8 +-
.../topology/updater/TopologyUpdater.java | 10 +-
.../publisher/MockHealthStatisticsNotifier.java | 3 +
.../test/PythonCartridgeAgentTest.java | 9 +-
.../rest/endpoint/api/StratosApiV40Utils.java | 7 +-
.../rest/endpoint/api/StratosApiV41.java | 302 ++--
.../rest/endpoint/api/StratosApiV41Utils.java | 1277 ++++++++------
.../util/converter/ObjectConverter.java | 337 ++--
dependencies/fabric8/pom.xml | 2 +-
.../streamdefinitions/stream-manager-config.xml | 486 +++---
extensions/das/README.md | 10 +
.../CloudControllerEventReceiver.xml | 29 +
.../eventreceivers/HealthStatsEventReceiver.xml | 29 +
.../eventreceivers/RIFEventReceiver.xml | 29 +
.../eventsink/cartridge_agent_health_stats.xml | 85 +
.../artifacts/eventsink/in_flight_requests.xml | 64 +
.../org_apache_stratos_cloud_controller.xml | 211 +++
.../cartridge_agent_health_stats_1.0.0.json | 40 +
.../eventstreams/in_flight_requests_1.0.0.json | 28 +
...g.apache.stratos.cloud.controller_1.0.0.json | 112 ++
extensions/das/artifacts/sparkscript/CCEvent | 18 +
extensions/das/pom.xml | 40 +
extensions/das/spark-udf/pom.xml | 36 +
.../das/extension/spark/udf/TimeUDF.java | 49 +
.../pom.xml | 3 +-
.../src/main/conf/drools/dependent-scaling.drl | 11 +-
.../src/main/conf/drools/mincheck.drl | 22 +-
.../src/main/conf/drools/scaling.drl | 17 +-
.../src/main/conf/thrift-client-config.xml | 22 +-
products/stratos/modules/integration/pom.xml | 2 +-
.../integration/tests/RestConstants.java | 8 +
.../tests/StratosTestServerManager.java | 42 +-
.../integration/tests/TopologyHandler.java | 88 +-
.../application/ApplicationBurstingTest.java | 143 +-
.../application/ApplicationUpdateTest.java | 312 ++--
.../application/GroupStartupOrderTest.java | 358 ++--
.../GroupTerminationBehaviorTest.java | 111 +-
.../PartitionOneAfterAnotherClusterTest.java | 56 +-
.../PartitionRoundRobinClusterTest.java | 90 +-
.../application/SampleApplicationsTest.java | 233 +--
.../application/SingleClusterScalingTest.java | 196 +--
.../tests/group/CartridgeGroupTest.java | 226 +--
.../integration/tests/group/CartridgeTest.java | 138 +-
.../tests/policies/ApplicationPolicyTest.java | 179 +-
.../tests/policies/AutoscalingPolicyTest.java | 146 +-
.../tests/policies/DeploymentPolicyTest.java | 199 +--
.../tests/policies/NetworkPartitionTest.java | 108 +-
.../tests/rest/IntegrationMockClient.java | 2 +-
.../integration/tests/rest/RestClient.java | 22 +-
.../integration/tests/users/TenantTest.java | 2 +-
.../integration/tests/users/UserTest.java | 12 +-
...cation-policy-application-bursting-test.json | 18 +
.../app-bursting-single-cartriddge-group.json | 70 +
...caling-policy-application-bursting-test.json | 14 +
...esb-php-group-application-bursting-test.json | 19 +
.../mock/esb-application-bursting-test.json | 50 +
.../mock/php-application-bursting-test.json | 51 +
.../mock/tomcat-application-bursting-test.json | 53 +
...oyment-policy-application-bursting-test.json | 32 +
...k-partition-application-bursting-test-1.json | 15 +
...k-partition-application-bursting-test-2.json | 24 +
.../RegionOne.json | 17 +
.../application-martin.json | 100 ++
.../application-policy-1.json | 17 +
.../application-s-g-c1-c2-c3-s.json | 130 ++
.../application.json | 108 ++
.../startup-order-termination-behavior/c1.json | 45 +
.../startup-order-termination-behavior/c2.json | 45 +
.../startup-order-termination-behavior/c3.json | 45 +
.../startup-order-termination-behavior/c4.json | 45 +
.../startup-order-termination-behavior/c5.json | 132 ++
.../cartridge-groups-s-g-c1-c2-c3-s.json | 26 +
.../cartridge-groups-working.json | 34 +
.../cartridge-groups.json | 77 +
.../cartridge-groups.json.back | 53 +
.../deploy.sh | 43 +
.../economy-policy.json | 15 +
.../static-1.json | 17 +
.../wso2carbon 2.log | 992 +++++++++++
.../wso2carbon-working 2.log | 1053 +++++++++++
.../wso2carbon-working.log | 1053 +++++++++++
.../wso2carbon.log | 992 +++++++++++
.../src/test/resources/mock-iaas.xml | 26 +-
.../single-cluster-scaling-test.json | 2 +-
.../src/test/resources/stratos-testing.xml | 118 +-
.../src/test/resources/tenant/tenant1.json | 9 +
.../src/test/resources/tenant/tenant2.json | 9 +
.../artifacts/application.json | 2 +-
.../scripts/common/deploy.sh | 25 +-
.../scripts/common/undeploy.sh | 16 +-
.../scripts/kubernetes/deploy.sh | 8 +-
.../single-cartridge-app/scripts/mock/deploy.sh | 2 +-
.../scripts/mock/undeploy.sh | 2 +-
.../single-group-app/scripts/common/deploy.sh | 29 +-
.../single-group-app/scripts/common/undeploy.sh | 27 +-
.../single-group-app/scripts/mock/deploy.sh | 2 +-
.../single-group-app/scripts/mock/undeploy.sh | 2 +-
samples/cartridges/kubernetes/php.json | 2 +-
.../kubernetes-cluster-1.json | 2 +-
.../kubernetes-cluster-2.json | 2 +-
samples/tenants/tenant1.json | 9 +
samples/tenants/tenant2.json | 9 +
.../src/main/resources/AutoscalerService.wsdl | 1639 +++++++++++++-----
.../main/resources/CloudControllerService.wsdl | 1369 +++++++++------
.../main/resources/StratosManagerService.wsdl | 268 +--
234 files changed, 15320 insertions(+), 6538 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
index d43f364,4eec5f9..dbf264e
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java
@@@ -37,11 -37,11 +37,12 @@@ import java.util.Set
import java.util.regex.Pattern;
public class ApplicationUtils {
+ private static final Log log = LogFactory.getLog(ApplicationUtils.class);
+
public static final String TOKEN_PAYLOAD_PARAM_NAME = "TOKEN";
public static final String DEPLOYMENT = "DEPLOYMENT";
+ private static final String PORT_SEPARATOR="|";
public static final String PAYLOAD_PARAMETER = "payload_parameter.";
- private static final Log log = LogFactory.getLog(ApplicationUtils.class);
public static Pattern ALIAS_PATTERN = Pattern.compile("([a-z0-9]+([-][a-z0-9])*)+");
public static boolean isAliasValid(String alias) {
@@@ -259,11 -221,9 +260,12 @@@
basicPayloadData.setSubscriptionKey(subscriptionKey);
//basicPayloadData.setDeployment("default");//currently hard coded to default
basicPayloadData.setMultitenant(String.valueOf(cartridge.getMultiTenant()));
- basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridge));
+ basicPayloadData.setPorts(createPortsToPayloadString(cartridge));
+ basicPayloadData.setPortMappings(createPortMappingsToPayloadString(cartridge));
- basicPayloadData.setServiceName(cartridge.getType());
+ basicPayloadData.setServiceName(cartridge.getUuid());
++ basicPayloadData.setServiceType(cartridge.getType());
basicPayloadData.setProvider(cartridge.getProvider());
+ basicPayloadData.setLvsVirtualIP(lvsVirtualIP);
if (repoUrl != null) {
basicPayloadData.setGitRepositoryUrl(repoUrl);
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index d9378ab,9ef6180..3c8f65a
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@@ -471,14 -452,14 +475,14 @@@ public class DefaultApplicationParser i
isLB = true;
}
// create and collect this cluster's information
- ApplicationClusterContext appClusterCtxt = createApplicationClusterContext(appId, groupName, cartridge,
+ ApplicationClusterContext appClusterCtxt = createApplicationClusterContext(appUuid, groupName, cartridge,
key, tenantId, repoUrl, subscriptionAlias, clusterId, hostname,
- subscribableInfoContext.getDeploymentPolicy(), isLB,
+ subscribableInfoContext.getDeploymentPolicyUuid(), isLB,
tenantRange, subscribableInfoContext.getDependencyAliases(),
subscribableInfoContext.getProperties(), arrDependencyClusterIDs, arrExportMetadata,
- arrImportMetadata, subscribableInfoContext.getLvsVirtualIP());
- arrImportMetadata);
++ arrImportMetadata,subscribableInfoContext.getLvsVirtualIP());
- appClusterCtxt.setAutoscalePolicyName(subscribableInfoContext.getAutoscalingPolicy());
+ appClusterCtxt.setAutoscalePolicyName(subscribableInfoContext.getAutoscalingPolicyUuid());
appClusterCtxt.setProperties(subscribableInfoContext.getProperties());
if (subscribableInfoContext.getPersistenceContext() != null) {
appClusterCtxt.setPersistenceContext(subscribableInfoContext.getPersistenceContext());
@@@ -935,17 -941,19 +941,19 @@@
* @return ApplicationClusterContext object with relevant information
* @throws ApplicationDefinitionException If any error occurs
*/
- private ApplicationClusterContext createApplicationClusterContext(String appId, String groupName, Cartridge cartridge,
+ private ApplicationClusterContext createApplicationClusterContext(String applicationUuid, String groupName,
+ Cartridge cartridge,
String subscriptionKey, int tenantId, String repoUrl,
String alias, String clusterId, String hostname,
- String deploymentPolicy, boolean isLB, String tenantRange,
+ String deploymentPolicyUuid, boolean isLB,
+ String tenantRange,
String[] dependencyAliases, Properties properties, String[] dependencyClustorIDs,
- String[] exportMetadata, String[] importMetadata, String lvsVirtualIP)
- String[] exportMetadata, String[] importMetadata)
++ String[] exportMetadata, String[] importMetadata,String lvsVirtualIP)
throws ApplicationDefinitionException {
// Create text payload
- PayloadData payloadData = ApplicationUtils.createPayload(appId, groupName, cartridge, subscriptionKey, tenantId, clusterId,
- hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata, lvsVirtualIP);
+ PayloadData payloadData = ApplicationUtils.createPayload(applicationUuid, groupName, cartridge, subscriptionKey, tenantId, clusterId,
- hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata);
++ hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata,lvsVirtualIP);
String textPayload = payloadData.toString();
if (log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
index 67d88e4,89eed10..ee14a56
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java
@@@ -36,6 -36,6 +36,7 @@@ public class BasicPayloadData implement
private String appId;
private String groupName;
private String serviceName;
++ private String serviceType;
private String clusterId;
private String hostName;
private int tenantId;
@@@ -73,6 -73,6 +74,8 @@@
payloadBuilder.append(",");
payloadBuilder.append("SERVICE_NAME=" + getServiceName());
payloadBuilder.append(",");
++ payloadBuilder.append("SERVICE_TYPE=" + getServiceType());
++ payloadBuilder.append(",");
payloadBuilder.append("HOST_NAME=" + getHostName());
payloadBuilder.append(",");
payloadBuilder.append("MULTITENANT=" + getMultitenant());
@@@ -403,12 -388,4 +406,20 @@@
public void setImportMetadataKeys(String[] importMetadataKeys) {
this.importMetadataKeys = importMetadataKeys;
}
+
+ public String getLvsVirtualIP() {
+ return lvsVirtualIP;
+ }
+
+ public void setLvsVirtualIP(String lvsVirtualIP) {
+ this.lvsVirtualIP = lvsVirtualIP;
+ }
++
++ public String getServiceType() {
++ return serviceType;
++ }
++
++ public void setServiceType(String serviceType) {
++ this.serviceType = serviceType;
++ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
index cd48cd4,e666e54..35c68d2
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java
@@@ -45,9 -47,18 +47,9 @@@ public class ApplicationClusterContext
private Properties properties;
private String[] dependencyClusterIds;
-
- public PersistenceContext getPersistenceContext() {
- return persistenceContext;
- }
-
- public void setPersistenceContext(PersistenceContext persistenceContext) {
- this.persistenceContext = persistenceContext;
- }
-
private PersistenceContext persistenceContext;
- public ApplicationClusterContext(String cartridgeType, String clusterId, String hostName,
+ public ApplicationClusterContext(String cartridgeUuid, String clusterId, String hostName,
String textPayload, String deploymentPolicyName, boolean isLbCluster,
String tenantRange, String[] dependencyClusterIds) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
index c4b57f0,119c162..01c0b98
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java
@@@ -111,11 -111,19 +113,27 @@@ public class SubscribableInfoContext im
this.persistenceContext = persistenceContext;
}
- public String getLvsVirtualIP() {
++ public String getLvsVirtualIP() {
+ return lvsVirtualIP;
+ }
+
+ public void setLvsVirtualIP(String lvsVirtualIP) {
+ this.lvsVirtualIP = lvsVirtualIP;
+ }
++
+ public String getDeploymentPolicy() {
+ return deploymentPolicy;
+ }
+
+ public void setDeploymentPolicy(String deploymentPolicy) {
+ this.deploymentPolicy = deploymentPolicy;
+ }
+
+ public String getAutoscalingPolicy() {
+ return autoscalingPolicy;
+ }
+
+ public void setAutoscalingPolicy(String autoscalingPolicy) {
+ this.autoscalingPolicy = autoscalingPolicy;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index 912a2f6,f865d4b..7dd33c5
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@@ -74,16 -74,16 +73,16 @@@ public class ApplicationBuilder
log.debug("Handling application creation event: [application-id] " +
application.getUniqueIdentifier());
}
- AutoscalerCloudControllerClient.getInstance().createApplicationClusters(application.getUniqueIdentifier(),
- appClusterContexts);
ApplicationHolder.persistApplication(application);
ApplicationsEventPublisher.sendApplicationCreatedEvent(application);
+ AutoscalerCloudControllerClient.getInstance().createApplicationClusters(application.getUniqueIdentifier(),
+ appClusterContexts);
}
- public static ApplicationInstance handleApplicationInstanceCreatedEvent(String appId,
- String networkPartitionId) {
+ public static ApplicationInstance handleApplicationInstanceCreatedEvent(String appUuid,
+ String networkPartitionUuid) {
if (log.isDebugEnabled()) {
- log.debug("Handling application instance creation event: [application-id] " + appId);
+ log.debug("Handling application instance creation event: [application-id] " + appUuid);
}
ApplicationInstance applicationInstance = null;
//acquiring write lock to add the required instances
@@@ -366,7 -361,7 +360,7 @@@
cluster.getInstanceIdToInstanceContextMap().values()) {
ClusterStatusEventPublisher.
sendClusterStatusClusterTerminatingEvent(applicationId,
-- aClusterData.getServiceType(),
++ aClusterData.getServiceUuid(),
aClusterData.getClusterId(),
instance.getInstanceId());
}
@@@ -427,9 -422,9 +421,9 @@@
monitor1.destroy();
}
}
- org.apache.stratos.autoscaler.context.partition.network.ParentLevelNetworkPartitionContext networkPartitionContext =
- (org.apache.stratos.autoscaler.context.partition.network.ParentLevelNetworkPartitionContext) monitor.
+ org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext networkPartitionContext =
+ (org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext) monitor.
- getNetworkPartitionContext(groupInstance.getNetworkPartitionId());
+ getNetworkPartitionContext(groupInstance.getNetworkPartitionUuid());
networkPartitionContext.removeInstanceContext(instanceId);
if (groupInstance.getPartitionId() != null) {
networkPartitionContext.getPartitionCtxt(groupInstance.getPartitionId()).
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/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 0124206,f19531b..5a9aab2
--- 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
@@@ -224,12 -250,4 +250,5 @@@ public class AutoscalerCloudControllerC
log.debug(String.format("Service call terminateInstances() returned in %dms", (endTime - startTime)));
}
}
-}
+
- /* An instance of a CloudControllerClient is created when the class is loaded.
- * Since the class is loaded only once, it is guaranteed that an object of
- * CloudControllerClient is created only once. Hence it is singleton.
- */
- private static class InstanceHolder {
- private static final AutoscalerCloudControllerClient INSTANCE = new AutoscalerCloudControllerClient();
- }
- }
++ }
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
index 235b7b7,8055cb0..b1e3bd4
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
@@@ -137,11 -137,11 +137,11 @@@ public class ClusterContext extends Abs
if (networkPartition == null) {
//Parent should have the partition specified
- networkPartitionContext = new ClusterLevelNetworkPartitionContext(
+ networkPartitionContext = new NetworkPartitionContext(
- clusterInstance.getNetworkPartitionId());
+ clusterInstance.getNetworkPartitionUuid());
} else {
- networkPartitionContext = new ClusterLevelNetworkPartitionContext(networkPartition.getUuid(),
- networkPartition.getPartitionAlgo(), 0);
+ networkPartitionContext = new NetworkPartitionContext(networkPartition.getId(),
+ networkPartition.getPartitionAlgo());
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 2573991,9388985..56a567e
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@@ -276,15 -285,9 +285,15 @@@ public class AutoscalerTopologyEventRec
monitor.notifyParentMonitor(ClusterStatus.Terminating, clusterInstanceId);
InstanceNotificationPublisher.getInstance().
sendInstanceCleanupEventForCluster(clusterId, clusterInstanceId);
+ //Terminating the pending members
+ monitor.terminatePendingMembers(clusterInstanceId,
- clusterInstance.getNetworkPartitionId());
++ clusterInstance.getNetworkPartitionUuid());
+ //Move all members to terminating pending list
+ monitor.moveMembersToTerminatingPending(clusterInstanceId,
- clusterInstance.getNetworkPartitionId());
++ clusterInstance.getNetworkPartitionUuid());
} else {
monitor.notifyParentMonitor(ClusterStatus.Terminating, clusterInstanceId);
- monitor.terminateAllMembers(clusterInstanceId, clusterInstance.getNetworkPartitionId());
+ monitor.terminateAllMembers(clusterInstanceId, clusterInstance.getNetworkPartitionUuid());
}
ServiceReferenceHolder.getInstance().getClusterStatusProcessorChain().
process("", clusterId, clusterInstanceId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index 48ee481,3671762..030a8b5
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@@ -136,8 -135,8 +138,9 @@@ public class AutoscalerServiceComponen
} else {
executeCoordinatorTasks();
}
+
- componentStartUpSynchronizer.waitForWebServiceActivation("AutoscalerService");
+ componentStartUpSynchronizer.waitForAxisServiceActivation(Component.Autoscaler,
+ "AutoscalerService");
componentStartUpSynchronizer.setComponentStatus(Component.Autoscaler, true);
if (log.isInfoEnabled()) {
log.info("Autoscaler service component activated");
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index 43493bd,f700dbc..952be10
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@@ -84,16 -84,16 +84,18 @@@ import java.util.concurrent.atomic.Atom
*/
public class ClusterMonitor extends Monitor {
- private static final Log log = LogFactory.getLog(ClusterMonitor.class);
private final ScheduledExecutorService scheduler;
private final ExecutorService executorService;
+
protected boolean hasFaultyMember = false;
protected ClusterContext clusterContext;
+ protected String serviceType;
+ protected String clusterId;
// future to cancel it when destroying monitors
private ScheduledFuture<?> schedulerFuture;
+ protected String serviceUuid;
private AtomicBoolean monitoringStarted;
- protected String clusterId;
++
private Cluster cluster;
private int monitoringIntervalMilliseconds;
//has scaling dependents
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index 70ee9d4,8638dcb..787458c
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@@ -167,9 -150,9 +152,9 @@@ public class ApplicationMonitor extend
executorService.execute(monitoringRunnable);
}
- private void handleScalingMaxOut(ParentInstanceContext instanceContext,
+ private void handleScalingMaxOut(InstanceContext instanceContext,
NetworkPartitionContext networkPartitionContext) {
- if (((ParentLevelNetworkPartitionContext) networkPartitionContext).getPendingInstancesCount() == 0) {
+ if (((NetworkPartitionContext) networkPartitionContext).getPendingInstancesCount() == 0) {
//handling the application bursting only when there are no pending instances found
try {
if (log.isInfoEnabled()) {
@@@ -546,9 -454,9 +456,9 @@@
return false;
}
- for (String networkPartitionIds : nextNetworkPartitions) {
+ for (String networkPartitionUuids : nextNetworkPartitions) {
- ParentLevelNetworkPartitionContext context =
- new ParentLevelNetworkPartitionContext(networkPartitionUuids);
+ NetworkPartitionContext context =
- new NetworkPartitionContext(networkPartitionIds);
++ new NetworkPartitionContext(networkPartitionUuids);
//If application instances found in the ApplicationsTopology,
// then have to add them first before creating new one
ApplicationInstance appInstance = (ApplicationInstance) application.
@@@ -566,17 -471,17 +476,17 @@@
}
instanceIds.add(instanceId);
- log.info("Application instance has been added for the [network partition uuid] " +
+ log.info("Application instance has been added for the [network partition] " +
- networkPartitionIds + " [appInstanceId] " + instanceId);
+ networkPartitionUuids + " [appInstanceId] " + instanceId);
}
//Find whether any other instances exists in cluster
// which has not been added to in-memory model in the restart
Map<String, ApplicationInstance> instanceMap = application.getInstanceIdToInstanceContextMap();
- for(ApplicationInstance instance : instanceMap.values()) {
- if(!instanceIds.contains(instance.getInstanceId())) {
- ParentLevelNetworkPartitionContext context =
- new ParentLevelNetworkPartitionContext(instance.getNetworkPartitionUuid());
+ for (ApplicationInstance instance : instanceMap.values()) {
+ if (!instanceIds.contains(instance.getInstanceId())) {
+ NetworkPartitionContext context =
- new NetworkPartitionContext(instance.getNetworkPartitionId());
++ new NetworkPartitionContext(instance.getNetworkPartitionUuid());
//If application instances found in the ApplicationsTopology,
// then have to add them first before creating new one
ApplicationInstance appInstance = (ApplicationInstance) application.
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index bc3052a,3bb2254..ffa9552
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@@ -155,69 -155,66 +155,69 @@@ public class GroupMonitor extends Paren
}
}
- ParentLevelNetworkPartitionContext parentLevelNetworkPartitionContext
- = (ParentLevelNetworkPartitionContext) networkPartitionContext;
- Collection<Instance> parentInstances = parent.getInstances();
-
- for (Instance parentInstance : parentInstances) {
- int nonTerminatedInstancesCount = parentLevelNetworkPartitionContext.
- getNonTerminatedInstancesCount(parentInstance.getInstanceId());
- int minInstances = parentLevelNetworkPartitionContext.
- getMinInstanceCount();
- int maxInstances = parentLevelNetworkPartitionContext.
- getMaxInstanceCount();
- int activeInstances = parentLevelNetworkPartitionContext.
- getActiveInstancesCount(parentInstance.getInstanceId());
-
- if (nonTerminatedInstancesCount < minInstances) {
- int instancesToBeCreated = minInstances - nonTerminatedInstancesCount;
- for (int i = 0; i < instancesToBeCreated; i++) {
- for (InstanceContext parentInstanceContext : parent.
- getNetworkPartitionContext(parentLevelNetworkPartitionContext.getId()).
- getInstanceIdToInstanceContextMap().values()) {
- //keep on scale-up/scale-down only if the application is active
- ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
- getAppMonitor(appId);
- int activeAppInstances = ((ParentLevelNetworkPartitionContext) appMonitor.
- getNetworkPartitionContext(parentLevelNetworkPartitionContext.getId())).
- getActiveInstancesCount();
- if (activeAppInstances > 0) {
- //Creating new group instance based on the existing parent instances
- if (log.isDebugEnabled()) {
- log.debug("Creating a group instance of [application] "
- + appId + " [group] " + id +
- " as the the minimum required instances not met");
-
+ ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().
+ getAppMonitor(appId);
+
+ //When the application is getting un-deployed, need to avoid
+ // checking the minimum count sanctification
+ if (!applicationMonitor.isTerminating()) {
+ Collection<Instance> parentInstances = parent.getInstances();
+
+ for (Instance parentInstance : parentInstances) {
- if (parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) {
++ if (parentInstance.getNetworkPartitionUuid().equals(networkPartitionContext.getId())) {
+ int nonTerminatedInstancesCount = networkPartitionContext.
+ getNonTerminatedInstancesCount(parentInstance.getInstanceId());
+ int minInstances = networkPartitionContext.
+ getMinInstanceCount();
+ int maxInstances = networkPartitionContext.
+ getMaxInstanceCount();
+ int activeInstances = networkPartitionContext.
+ getActiveInstancesCount(parentInstance.getInstanceId());
+
+ if (nonTerminatedInstancesCount < minInstances) {
+ int instancesToBeCreated = minInstances - nonTerminatedInstancesCount;
+ for (int i = 0; i < instancesToBeCreated; i++) {
+ for (InstanceContext parentInstanceContext : parent.
+ getNetworkPartitionContext(networkPartitionContext.getId()).
+ getInstanceIdToInstanceContextMap().values()) {
+ //keep on scale-up/scale-down only if the application is active
+ ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
+ getAppMonitor(appId);
+ int activeAppInstances = appMonitor.
+ getNetworkPartitionContext(networkPartitionContext.getId()).
+ getActiveInstancesCount();
+ if (activeAppInstances > 0) {
+ //Creating new group instance based on the existing parent instances
+ log.info("Creating a group instance of [application] "
+ + appId + " [group] " + id +
+ " as the the minimum required instances are not met");
+
+ createInstanceOnDemand(parentInstanceContext.getId());
+ }
}
- createInstanceOnDemand(parentInstanceContext.getId());
+
}
}
+ //If the active instances are higher than the max instances,
+ // the group instance has to get terminated
+ if (activeInstances > maxInstances) {
+ int instancesToBeTerminated = activeInstances - maxInstances;
+ List<InstanceContext> contexts =
+ networkPartitionContext.getInstanceIdToInstanceContextMap(
+ parentInstance.getInstanceId());
+ List<InstanceContext> contextList = new ArrayList<InstanceContext>(contexts);
+ for (int i = 0; i < instancesToBeTerminated; i++) {
+ InstanceContext instanceContext = contextList.get(i);
+ //scale down only when extra instances found
+ log.info("Terminating a group instance of [application] "
+ + appId + " [group] " + id + " as it exceeded the " +
+ "maximum no of instances by " + instancesToBeTerminated);
+
+ handleScalingDownBeyondMin((ParentInstanceContext) instanceContext,
+ networkPartitionContext, true);
- }
- }
- //If the active instances are higher than the max instances,
- // the group instance has to get terminated
- if (activeInstances > maxInstances) {
- int instancesToBeTerminated = activeInstances - maxInstances;
- List<InstanceContext> contexts =
- ((ParentLevelNetworkPartitionContext) networkPartitionContext).
- getInstanceIdToInstanceContextMap(parentInstance.getInstanceId());
- List<InstanceContext> contextList = new ArrayList<InstanceContext>(contexts);
- for (int i = 0; i < instancesToBeTerminated; i++) {
- InstanceContext instanceContext = contextList.get(i);
- //scale down only when extra instances found
- if (log.isDebugEnabled()) {
- log.debug("Terminating a group instance of [application] "
- + appId + " [group] " + id + " as it exceeded the " +
- "maximum no of instances by " + instancesToBeTerminated);
-
+ }
}
- handleScalingDownBeyondMin(instanceContext,
- networkPartitionContext, true);
-
}
}
}
@@@ -686,9 -694,9 +686,9 @@@
String deploymentPolicyId = AutoscalerUtil.getDeploymentPolicyIdByAlias(appId, groupAlias);
DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId);
- String networkPartitionId = parentInstanceContext.getNetworkPartitionId();
+ String networkPartitionId = parentInstanceContext.getNetworkPartitionUuid();
if (this.getNetworkPartitionContextsMap().containsKey(networkPartitionId)) {
- parentLevelNetworkPartitionContext = (ParentLevelNetworkPartitionContext) this.getNetworkPartitionContextsMap().
+ parentLevelNetworkPartitionContext = this.getNetworkPartitionContextsMap().
get(networkPartitionId);
} else {
if (deploymentPolicy != null) {
@@@ -731,9 -739,9 +731,9 @@@
* @param groupAlias alias of the group
*/
private void addPartitionContext(Instance parentInstanceContext,
- ParentLevelNetworkPartitionContext networkPartitionContext, String groupAlias) {
+ NetworkPartitionContext networkPartitionContext, String groupAlias) {
- String networkPartitionId = parentInstanceContext.getNetworkPartitionId();
+ String networkPartitionId = parentInstanceContext.getNetworkPartitionUuid();
String deploymentPolicyId = AutoscalerUtil.getDeploymentPolicyIdByAlias(appId, groupAlias);
DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId);
@@@ -767,14 -775,14 +767,14 @@@
if (partitions != null && partitions.length != 0) {
for (PartitionRef partition : partitions) {
- if (networkPartitionContext.getPartitionCtxt(partition.getId()) == null) {
+ if (networkPartitionContext.getPartitionCtxt(partition.getUuid()) == null) {
- GroupLevelPartitionContext groupLevelPartitionContext = new GroupLevelPartitionContext(
+ ParentLevelPartitionContext parentLevelPartitionContext = new ParentLevelPartitionContext(
- partition.getId(), networkPartitionId, deploymentPolicyId);
+ partition.getUuid(), networkPartitionId, deploymentPolicyId);
- networkPartitionContext.addPartitionContext(groupLevelPartitionContext);
+ networkPartitionContext.addPartitionContext(parentLevelPartitionContext);
if (log.isInfoEnabled()) {
log.info(String.format("[Partition] %s has been added for the [Group] %s",
- partition.getId(), this.id));
+ partition.getUuid(), this.id));
}
}
}
@@@ -788,7 -796,7 +788,7 @@@
* Creates the group instance and adds the required context objects
*
* @param group the group
- * @param parentInstance the parent instance context
- * @param parentInstanceContext the parent instance context
++ * @param partitionContext the parent instance context
* @param partitionContext partition-context used to create the group instance
* @param parentLevelNetworkPartitionContext the group level network partition context
*/
@@@ -804,8 -812,8 +804,8 @@@
partitionId = partitionContext.getPartitionId();
}
- groupInstance = createGroupInstance(group, parentInstance.getNetworkPartitionId(),
- groupInstance = createGroupInstance(group, parentInstanceContext.getNetworkPartitionUuid(),
- parentInstanceContext.getInstanceId(), partitionId);
++ groupInstance = createGroupInstance(group, parentInstance.getNetworkPartitionUuid(),
+ parentInstance.getInstanceId(), partitionId);
}
this.addInstance(groupInstance);
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
index 3336776,957386b..3854544
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
@@@ -350,11 -411,10 +411,11 @@@ public class PolicyManager
RegistryManager.getInstance().persistApplicationPolicy(applicationPolicy);
if (log.isInfoEnabled()) {
- log.info(String
- .format("Application policy is added successfully: [application-policy-id] %s",
- applicationPolicyId));
+ log.info(String.format("Application policy added successfully: [tenant-id] %d [application-policy-uuid] %s " +
+ "[application-policy-id] %s", applicationPolicy.getTenantId(), applicationPolicyUuid,
+ applicationPolicy.getId()));
}
+
}
public boolean removeApplicationPolicy(String applicationPolicyId) throws InvalidPolicyException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/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/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index f0e797f,76d527b..6f447cb
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@@ -1130,36 -1472,35 +1472,36 @@@ public class AutoscalerServiceImpl impl
for (ClusterMonitor clusterMonitor : AutoscalerContext.getInstance().getClusterMonitors().values()) {
//Following if statement checks the relevant clusters for the updated deployment policy
- if (deploymentPolicy.getDeploymentPolicyID().equals(clusterMonitor.getDeploymentPolicyId())) {
+ if (deploymentPolicy.getUuid().equals(clusterMonitor.getDeploymentPolicyId())) {
for (NetworkPartitionRef networkPartition : deploymentPolicy.getNetworkPartitionRefs()) {
- ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext
- = clusterMonitor.getClusterContext().getNetworkPartitionCtxt(networkPartition.getUuid());
-
- try {
- addNewPartitionsToClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition,
- deploymentPolicy.getUuid(), clusterMonitor.getClusterContext().getServiceId());
- } catch (RemoteException e) {
-
- String message = "Connection to cloud controller failed, Cluster monitor update failed for" +
- " [deployment-policy] " + deploymentPolicy.getId();
- log.error(message);
- throw new CloudControllerConnectionException(message, e);
- } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
-
- String message = "Invalid partition, Cluster monitor update failed for [deployment-policy] "
- + deploymentPolicy.getId();
- log.error(message);
- throw new InvalidDeploymentPolicyException(message, e);
- } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException e) {
-
- String message = "Invalid cartridge type, Cluster monitor update failed for [deployment-policy] "
- + deploymentPolicy.getId() + " [cartridge] "
- + clusterMonitor.getClusterContext().getServiceId();
- log.error(message);
- throw new InvalidDeploymentPolicyException(message, e);
+ NetworkPartitionContext clusterLevelNetworkPartitionContext
+ = clusterMonitor.getClusterContext().getNetworkPartitionCtxt(networkPartition.getId());
+ if (clusterLevelNetworkPartitionContext != null) {
+ try {
+ addNewPartitionsToClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition,
- deploymentPolicy.getDeploymentPolicyID(), clusterMonitor.getClusterContext().getServiceId());
++ deploymentPolicy.getUuid(), clusterMonitor.getClusterContext().getServiceId());
+ } catch (RemoteException e) {
+
+ String message = "Connection to cloud controller failed, Cluster monitor update failed for" +
- " [deployment-policy] " + deploymentPolicy.getDeploymentPolicyID();
++ " [deployment-policy] " + deploymentPolicy.getId();
+ log.error(message);
+ throw new CloudControllerConnectionException(message, e);
+ } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
+
+ String message = "Invalid partition, Cluster monitor update failed for [deployment-policy] "
- + deploymentPolicy.getDeploymentPolicyID();
++ + deploymentPolicy.getId();
+ log.error(message);
+ throw new InvalidDeploymentPolicyException(message, e);
+ } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException e) {
+
+ String message = "Invalid cartridge type, Cluster monitor update failed for [deployment-policy] "
- + deploymentPolicy.getDeploymentPolicyID() + " [cartridge] "
++ + deploymentPolicy.getId() + " [cartridge] "
+ + clusterMonitor.getClusterContext().getServiceId();
+ log.error(message);
+ throw new InvalidDeploymentPolicyException(message, e);
+ }
+ removeOldPartitionsFromClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition);
}
- removeOldPartitionsFromClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition);
}
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 18a6956,85a4acc..5e992ae
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@@ -259,6 -269,80 +260,65 @@@ public class AutoscalerUtil
return toCommonProperties(properties);
}
- public synchronized void startApplicationMonitor(String applicationId) {
-
- AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
- if (autoscalerContext.getAppMonitor(applicationId) == null) {
- autoscalerContext.addApplicationPendingMonitor(applicationId);
- ServiceReferenceHolder.getInstance().getExecutorService().submit(new ApplicationMonitorAdder(applicationId));
-
- log.info(String.format("Monitor scheduled: [application] %s ", applicationId));
- } else {
- if (log.isDebugEnabled()) {
- log.debug(String.format("Application monitor thread already exists: " +
- "[application] %s ", applicationId));
- }
- }
- }
+
+ private class ApplicationMonitorAdder implements Runnable {
+ private String applicationId;
+
+ public ApplicationMonitorAdder(String applicationId) {
+ this.applicationId = applicationId;
+ }
+
+ public void run() {
+ long startTime = System.currentTimeMillis();
+ long endTime = startTime;
+ int retries = 5;
+ boolean success = false;
+ ApplicationMonitor applicationMonitor = null;
+ while (!success && retries != 0) {
+
+ try {
+ startTime = System.currentTimeMillis();
+ log.info("Starting monitor: [application] " + applicationId);
+ try {
+ applicationMonitor = MonitorFactory.getApplicationMonitor(applicationId);
+ } catch (PolicyValidationException e) {
+ String msg = "Monitor creation failed: [application] " + applicationId;
+ log.warn(msg, e);
+ retries--;
+ }
+ success = true;
+ endTime = System.currentTimeMillis();
+ } catch (DependencyBuilderException e) {
+ String msg = "Monitor creation failed: [application] " + applicationId;
+ log.warn(msg, e);
+ retries--;
+ } catch (TopologyInConsistentException e) {
+ String msg = "Monitor creation failed: [application] " + applicationId;
+ log.warn(msg, e);
+ retries--;
+ }
+ }
+
+ if (applicationMonitor == null) {
+ String msg = "Monitor creation failed, even after retrying for 5 times: "
+ + "[application] " + applicationId;
+ log.error(msg);
+ throw new RuntimeException(msg);
+ }
+ AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
+ autoscalerContext.removeApplicationPendingMonitor(applicationId);
+ autoscalerContext.removeAppMonitor(applicationId);
+ autoscalerContext.addAppMonitor(applicationMonitor);
+
+ long startupTime = ((endTime - startTime) / 1000);
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Monitor started successfully: [application] %s [dependents] %s " +
+ "[startup-time] %d seconds", applicationMonitor.getId(),
+ applicationMonitor.getStartupDependencyTree(), startupTime));
+ }
+ }
+ }
+
public static Monitor.MonitorType findMonitorType(ApplicationChildContext context) {
if (context instanceof GroupChildContext) {
return Monitor.MonitorType.Group;
@@@ -951,66 -908,53 +1029,9 @@@
}
}
- public static void validateStartupOrders(String groupName, String[] startupOrders) throws InvalidServiceGroupException {
-
- if (startupOrders == null || startupOrders.length == 0) {
- if (log.isDebugEnabled()) {
- log.debug("No Startup Order defined for group " + groupName);
- }
- return;
- }
-
- for (String startupOrder : startupOrders) {
- // split comma separated startup orders
- String[] splittedStartupOrders = startupOrder.split(",");
- for (String splittedStartupOrder : splittedStartupOrders) {
- if (!splittedStartupOrder.trim().startsWith("cartridge.") && !splittedStartupOrder.trim().startsWith("group.")) {
- // invalid startup order; should prefixed by either 'cartridge.' or 'group.'
- throw new InvalidServiceGroupException("Invalid cartridge group: startup order [" + startupOrder +
- "] for group " + groupName +
- ", should prefixed by either 'cartridge.' or 'group.'");
- }
- }
- }
- }
-
- public static void validateScalingDependencies(String groupName, String[] scalingDependents) throws InvalidServiceGroupException {
-
- if (scalingDependents == null || scalingDependents.length == 0) {
- if (log.isDebugEnabled()) {
- log.debug("No Scaling Dependents defined for group " + groupName);
- }
- return;
- }
-
- for (String scalingDependent : scalingDependents) {
- // split comma separated scaling dependents
- String[] splittedDependents = scalingDependent.split(",");
- for (String splittedDependent : splittedDependents) {
- if (!splittedDependent.trim().startsWith("cartridge.") && !splittedDependent.trim().startsWith("group.")) {
- // invalid startup order; should prefixed by either 'cartridge.' or 'group.'
- throw new InvalidServiceGroupException("Invalid cartridge group: Scaling Dependency [" +
- scalingDependent + "] for group " + groupName +
- ", should prefixed by either 'cartridge.' or 'group.'");
- }
- }
- }
+ private static class Holder {
+ private static final AutoscalerUtil INSTANCE = new AutoscalerUtil();
}
- private class ApplicationMonitorAdder implements Runnable {
- private String applicationId;
-
- public ApplicationMonitorAdder(String applicationId) {
- this.applicationId = applicationId;
- }
-
- public void run() {
- long startTime = System.currentTimeMillis();
- long endTime = startTime;
- int retries = 5;
- boolean success = false;
- ApplicationMonitor applicationMonitor = null;
- while (!success && retries != 0) {
-
- try {
- startTime = System.currentTimeMillis();
- log.info("Starting monitor: [application] " + applicationId);
- try {
- applicationMonitor = MonitorFactory.getApplicationMonitor(applicationId);
- } catch (PolicyValidationException e) {
- String msg = "Monitor creation failed: [application] " + applicationId;
- log.warn(msg, e);
- retries--;
- }
- success = true;
- endTime = System.currentTimeMillis();
- } catch (DependencyBuilderException e) {
- String msg = "Monitor creation failed: [application] " + applicationId;
- log.warn(msg, e);
- retries--;
- } catch (TopologyInConsistentException e) {
- String msg = "Monitor creation failed: [application] " + applicationId;
- log.warn(msg, e);
- retries--;
- }
- }
-
- if (applicationMonitor == null) {
- String msg = "Monitor creation failed, even after retrying for 5 times: "
- + "[application] " + applicationId;
- log.error(msg);
- throw new RuntimeException(msg);
- }
- AutoscalerContext autoscalerContext = AutoscalerContext.getInstance();
- autoscalerContext.removeApplicationPendingMonitor(applicationId);
- autoscalerContext.removeAppMonitor(applicationId);
- autoscalerContext.addAppMonitor(applicationMonitor);
-
- long startupTime = ((endTime - startTime) / 1000);
- if (log.isInfoEnabled()) {
- log.info(String.format("Monitor started successfully: [application] %s [dependents] %s " +
- "[startup-time] %d seconds", applicationMonitor.getId(),
- applicationMonitor.getStartupDependencyTree(), startupTime));
- }
- }
- }
- public void updateMonitors() {
- }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
index c676ed1,3706fd4..60b2fae
--- a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
+++ b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
@@@ -75,62 -68,4 +68,5 @@@ public class AutoscalerUtilTest
tenantRange = AutoscalerUtil.findTenantRange(tenantId, null);
assertEquals(tenantRange, "*");
}
+
- @Test
- public void testRemovalOfAutoscalingPolicy() {
- List<CartridgeContext> cartridgeContexts = new ArrayList<CartridgeContext>();
- for (int i = 0; i < 12; i++) {
- CartridgeContext cartridgeContext = new CartridgeContext();
- SubscribableInfoContext subscribableContext = new SubscribableInfoContext();
- subscribableContext.setAlias("cart-" + i);
- subscribableContext.setDeploymentPolicy("dep-" + i);
- subscribableContext.setAutoscalingPolicy("auto-" + i);
- cartridgeContext.setSubscribableInfoContext(subscribableContext);
- cartridgeContexts.add(cartridgeContext);
- }
- List<GroupContext> groupContextList = new ArrayList<GroupContext>();
- for (int i = 0; i < 5; i++) {
- GroupContext groupContext = new GroupContext();
- groupContext.setAlias("group-" + i);
- CartridgeContext[] cartridgeContexts1 = new CartridgeContext[2];
- cartridgeContexts1[0] = cartridgeContexts.get(i);
- cartridgeContexts1[1] = cartridgeContexts.get(i + 5);
-
- groupContext.setCartridgeContexts(cartridgeContexts1);
- groupContextList.add(groupContext);
- }
-
- //Application-1
- ApplicationContext applicationContext = new ApplicationContext();
- applicationContext.setApplicationId("application-1");
- ComponentContext componentContext = new ComponentContext();
- CartridgeContext[] cartridgeContexts1 = new CartridgeContext[2];
- cartridgeContexts1[0] = cartridgeContexts.get(10);
- cartridgeContexts1[1] = cartridgeContexts.get(11);
- componentContext.setCartridgeContexts(cartridgeContexts1);
- GroupContext[] groupContexts = new GroupContext[groupContextList.size()];
- componentContext.setGroupContexts(groupContextList.toArray(groupContexts));
- applicationContext.setComponents(componentContext);
-
- ServiceReferenceHolder holder = ServiceReferenceHolder.getInstance();
- holder.setDistributedObjectProvider(new HazelcastDistributedObjectProvider());
-
- AutoscalerContext.getInstance().addApplicationContext(applicationContext);
-
-
- boolean canRemove;
-
- canRemove = AutoscalerUtil.removableAutoScalerPolicy("test");
- assertEquals(canRemove, true);
-
- for (int i = 0; i < 12; i++) {
- canRemove = AutoscalerUtil.removableAutoScalerPolicy("auto-" + i);
- assertEquals(canRemove, false);
-
- }
- }
-
- public void testRemovalOfDeploymentPolicy() {
-
- }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/cloudstack/CloudStackPartitionValidator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/ec2/EC2PartitionValidator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c34f816/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/openstack/OpenstackPartitionValidator.java
----------------------------------------------------------------------