Fix cluster instance context and cluster context
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a8ee3393 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a8ee3393 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a8ee3393 Branch: refs/heads/master Commit: a8ee3393afa8622c2cbe183fca325e7215985492 Parents: 16c4976 Author: Lahiru Sandaruwan <[email protected]> Authored: Mon Dec 1 00:41:39 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Mon Dec 1 00:41:39 2014 +0530 ---------------------------------------------------------------------- .../context/cluster/ClusterInstanceContext.java | 14 +++++++++++++- .../autoscaler/context/cluster/VMClusterContext.java | 9 +++++---- 2 files changed, 18 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/a8ee3393/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java index f183755..4d1818e 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java @@ -21,6 +21,7 @@ package org.apache.stratos.autoscaler.context.cluster; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext; +import org.apache.stratos.autoscaler.context.partition.PartitionContext; import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage; import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption; import org.apache.stratos.autoscaler.pojo.policy.autoscale.RequestsInFlight; @@ -69,15 +70,19 @@ public class ClusterInstanceContext { private int requiredInstanceCountBasedOnStats; private int requiredInstanceCountBasedOnDependencies; + private int min; + //details required for partition selection algorithms private int currentPartitionIndex; // Map<PartitionId, Partition Context> protected Map<String, ClusterLevelPartitionContext> partitionCtxts; - public ClusterInstanceContext(String clusterInstanceId, String partitionAlgo, ChildLevelPartition[] partitions) { + public ClusterInstanceContext(String clusterInstanceId, String partitionAlgo, ChildLevelPartition[] partitions, + int min) { this.id = clusterInstanceId; + this.min = min; partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>(); this.partitionAlgorithm = partitionAlgo; //partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>(); @@ -96,6 +101,10 @@ public class ClusterInstanceContext { public Map<String, ClusterLevelPartitionContext> getPartitionCtxts(){ return partitionCtxts; } + public PartitionContext[] getPartitionCtxtsAsAnArray(){ + + return (PartitionContext[])getPartitionCtxts().values().toArray(); + } public ClusterLevelPartitionContext getNetworkPartitionCtxt(String PartitionId) { return partitionCtxts.get(PartitionId); @@ -421,4 +430,7 @@ public class ClusterInstanceContext { } + public int getMin() { + return min; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a8ee3393/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java index d1b4c31..39303dd 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java @@ -175,14 +175,14 @@ public class VMClusterContext extends AbstractClusterContext { if (clusterLevelNetworkPartitionContext == null) { clusterLevelNetworkPartitionContext = new ClusterLevelNetworkPartitionContext( - networkPartitionId); + networkPartitionId, networkPartition.getPartitionAlgo(), networkPartition.getMin()); } ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext. getClusterInstanceContext(instance.getInstanceId()); if (clusterInstanceContext == null) { clusterInstanceContext = new ClusterInstanceContext(instance.getInstanceId(), networkPartition.getPartitionAlgo(), - networkPartition.getChildLevelPartitions()); + networkPartition.getChildLevelPartitions(), networkPartition.getMin()); } for (ChildLevelPartition partition : networkPartition.getChildLevelPartitions()) { @@ -243,7 +243,8 @@ public class VMClusterContext extends AbstractClusterContext { CloudControllerClient.getInstance().validatePartition(partition1); if (clusterLevelNetworkPartitionContext == null) { clusterLevelNetworkPartitionContext = - new ClusterLevelNetworkPartitionContext(clusterInstance.getNetworkPartitionId()); + new ClusterLevelNetworkPartitionContext(clusterInstance.getNetworkPartitionId() + , networkPartition.getPartitionAlgo(), networkPartition.getMin()); } //FIXME to have correct member expiry time ClusterLevelPartitionContext clusterLevelPartitionContext = @@ -259,7 +260,7 @@ public class VMClusterContext extends AbstractClusterContext { if (clusterInstanceContext == null) { clusterInstanceContext = new ClusterInstanceContext(clusterInstance.getInstanceId(), networkPartition.getPartitionAlgo(), - networkPartition.getChildLevelPartitions()); + networkPartition.getChildLevelPartitions(), networkPartition.getMin()); } clusterInstanceContext.addPartitionCtxt(clusterLevelPartitionContext); clusterLevelNetworkPartitionContext.addClusterInstanceContext(clusterInstanceContext);
