You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/12/09 09:36:27 UTC
[7/8] stratos git commit: fixing group level deployment policy
parsing issue
fixing group level deployment policy parsing issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/90ae4716
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/90ae4716
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/90ae4716
Branch: refs/heads/4.1.0-test
Commit: 90ae47169755c922f1b7b9b2928b292c542a937a
Parents: 408852e
Author: reka <rt...@gmail.com>
Authored: Tue Dec 9 14:02:39 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Dec 9 14:02:50 2014 +0530
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 45 ++++++++++++++------
.../partition/GroupLevelPartitionContext.java | 27 ++++++++++++
.../context/partition/PartitionContext.java | 5 +++
.../monitor/component/GroupMonitor.java | 5 ++-
.../domain/applications/ParentComponent.java | 10 +++--
5 files changed, 72 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/90ae4716/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 5f20111..36edb03 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -31,6 +31,7 @@ import org.apache.stratos.autoscaler.context.AutoscalerContext;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
import org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
+import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
import org.apache.stratos.autoscaler.exception.kubernetes.*;
import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException;
@@ -152,26 +153,42 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
Application application = ApplicationHolder.getApplications().
getApplication(deploymentPolicy.getApplicationId());
Partition[] partitions = new Partition[partitionList.size()];
- Group group = application.getGroupRecursively(alias);
- if(group != null) {
- Set<ClusterDataHolder> clusterDataHolders = group.getClusterDataHoldersOfGroup();
- //validating the group deployment policy against the leaf cartridges
- for(ClusterDataHolder clusterDataHolder : clusterDataHolders) {
- CloudControllerClient.getInstance().validateDeploymentPolicy(
- clusterDataHolder.getServiceType(), partitionList.toArray(partitions));
+ if(application != null) {
+ Group group = application.getGroupRecursively(alias);
+ if(group != null) {
+ Set<ClusterDataHolder> clusterDataHolders = group.getClusterDataHoldersOfGroup();
+ //validating the group deployment policy against the leaf cartridges
+ for(ClusterDataHolder clusterDataHolder : clusterDataHolders) {
+ CloudControllerClient.getInstance().validateDeploymentPolicy(
+ clusterDataHolder.getServiceType(), partitionList.toArray(partitions));
+ }
+ } else {
+ //Validating the cartridge level deployment policy
+ ClusterDataHolder clusterDataHolder = application.
+ getClusterDataHolderRecursivelyByAlias(alias);
+ if(clusterDataHolder != null) {
+ CloudControllerClient.getInstance().validateDeploymentPolicy(
+ clusterDataHolder.getServiceType(), partitionList.toArray(partitions));
+ } else {
+ String msg = "Error while retrieving the group/cluster for the Deployment " +
+ "policy: " + alias;
+ log.error(msg);
+ throw new TopologyInConsistentException(msg);
+ }
}
} else {
- //Validating the cartridge level deployment policy
- ClusterDataHolder clusterDataHolder = application.
- getClusterDataHolderRecursivelyByAlias(alias);
- if(clusterDataHolder != null) {
- CloudControllerClient.getInstance().validateDeploymentPolicy(
- clusterDataHolder.getServiceType(), partitionList.toArray(partitions));
- }
+ String msg = "Error while retrieving the application for the Deployment policy: " +
+ deploymentPolicy.getApplicationId();
+ log.error(msg);
+ throw new TopologyInConsistentException(msg);
}
+
} catch (PartitionValidationException e) {
log.error("Error while validating the deployment policy", e);
//TODO throw exception
+ } catch (TopologyInConsistentException e) {
+ log.error("Error while validating the deployment policy", e);
+ //TODO throw exception
} finally {
ApplicationHolder.releaseReadLock();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/90ae4716/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
index 7400415..1f5555d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
@@ -111,6 +111,33 @@ public class GroupLevelPartitionContext extends PartitionContext implements Seri
th3.start();*/
}
+ public GroupLevelPartitionContext(String partitionId, String networkPartitionIid ) {
+ super(partitionId, networkPartitionIid);
+ this.pendingInstances = new ArrayList<Instance>();
+ this.activeInstances = new ArrayList<Instance>();
+ this.terminationPendingInstances = new ArrayList<Instance>();
+ this.obsoletedInstances = new ConcurrentHashMap<String, Instance>();
+ instanceStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>();
+
+
+ terminationPendingStartedTime = new HashMap<String, Long>();
+ // check if a different value has been set for expiryTime
+ XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
+ pendingInstanceExpiryTime = conf.getLong(StratosConstants.PENDING_VM_MEMBER_EXPIRY_TIMEOUT, 900000);
+ obsoltedInstanceExpiryTime = conf.getLong(StratosConstants.OBSOLETED_VM_MEMBER_EXPIRY_TIMEOUT, 86400000);
+ if (log.isDebugEnabled()) {
+ log.debug("Instance expiry time is set to: " + pendingInstanceExpiryTime);
+ log.debug("Instance obsoleted expiry time is set to: " + obsoltedInstanceExpiryTime);
+ }
+
+ /*Thread th = new Thread(new PendingInstanceWatcher(this));
+ th.start();
+ Thread th2 = new Thread(new ObsoletedInstanceWatcher(this));
+ th2.start();
+ Thread th3 = new Thread(new TerminationPendingInstanceWatcher(this));
+ th3.start();*/
+ }
+
public long getTerminationPendingStartedTimeOfInstance(String instanceId) {
return terminationPendingStartedTime.get(instanceId);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/90ae4716/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
index 167caea..459b971 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
@@ -59,6 +59,11 @@ public abstract class PartitionContext implements Serializable {
this.networkPartitionId = networkPartitionId;
}
+ public PartitionContext(String partitionId, String networkPartitionId) {
+ this.partitionId = partitionId;
+ this.networkPartitionId = networkPartitionId;
+ }
+
public Partition getPartition() {
return partition;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/90ae4716/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git 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
index 8d3f42d..3f8d9e0 100644
--- 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
@@ -379,8 +379,9 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
if (policy == null) {
if (parentPartitionId != null &&
- networkPartitionContext.getPartitionCtxt(parentPartitionId) != null) {
- partitionContext = new GroupLevelPartitionContext(0);
+ networkPartitionContext.getPartitionCtxt(parentPartitionId) == null) {
+ partitionContext = new GroupLevelPartitionContext(parentPartitionId,
+ networkPartitionId);
networkPartitionContext.addPartitionContext((GroupLevelPartitionContext) partitionContext);
if (log.isInfoEnabled()) {
log.info("[Partition] " + parentPartitionId + "has been added for the " +
http://git-wip-us.apache.org/repos/asf/stratos/blob/90ae4716/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
index 4dd6b34..6468eaf 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
@@ -328,10 +328,12 @@ public abstract class ParentComponent<T extends Instance> implements Serializabl
if (group.getClusterData(alias) != null) {
return group.getClusterData(alias);
}
- } else {
- if (group.getGroups() != null) {
- return getClusterDataByAlias(alias, group.getGroups());
- }
+ }
+ }
+
+ for(Group group : groups) {
+ if (group.getGroups() != null) {
+ return getClusterDataByAlias(alias, group.getGroups());
}
}
return null;