You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2014/12/01 12:12:43 UTC
stratos git commit: Changing partition context map to a list
Repository: stratos
Updated Branches:
refs/heads/master 664c219f7 -> ec3561606
Changing partition context map to a list
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ec356160
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ec356160
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ec356160
Branch: refs/heads/master
Commit: ec35616060c670ff8f28b73cfabca92a14815d93
Parents: 664c219
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 1 16:44:18 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 1 16:44:18 2014 +0530
----------------------------------------------------------------------
.../context/cluster/ClusterInstanceContext.java | 61 ++++++++++++++------
.../monitor/cluster/VMClusterMonitor.java | 2 +-
.../cluster/VMServiceClusterMonitor.java | 2 +-
.../autoscaler/rule/RuleTasksDelegator.java | 4 +-
.../cluster/ClusterStatusActiveProcessor.java | 2 +-
.../cluster/ClusterStatusInActiveProcessor.java | 2 +-
.../ClusterStatusTerminatedProcessor.java | 2 +-
7 files changed, 50 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/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 ff2aaf3..f2c13b9 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,15 +21,17 @@ 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.GroupLevelPartitionContext;
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;
import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelPartition;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelNetworkPartition;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
import org.apache.stratos.messaging.domain.topology.Member;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
/*
* It holds the runtime data of a VM cluster
@@ -76,13 +78,21 @@ public class ClusterInstanceContext {
private int currentPartitionIndex;
// Map<PartitionId, Partition Context>
- protected Map<String, ClusterLevelPartitionContext> partitionCtxts;
+ protected List<ClusterLevelPartitionContext> partitionCtxts;
+
+ private ChildLevelPartition[] partitions;
+
public ClusterInstanceContext(String clusterInstanceId, String partitionAlgo, ChildLevelPartition[] partitions,
int min) {
this.id = clusterInstanceId;
this.min = min;
- partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>();
+ if (partitions == null) {
+ this.partitions = new ChildLevelPartition[0];
+ } else {
+ this.partitions = Arrays.copyOf(partitions, partitions.length);
+ }
+ partitionCtxts = new ArrayList<ClusterLevelPartitionContext>();
this.partitionAlgorithm = partitionAlgo;
//partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>();
requestsInFlight = new RequestsInFlight();
@@ -97,42 +107,57 @@ public class ClusterInstanceContext {
}
- public Map<String, ClusterLevelPartitionContext> getPartitionCtxts(){
+ public List<ClusterLevelPartitionContext> getPartitionCtxts(){
return partitionCtxts;
}
- public PartitionContext[] getPartitionCtxtsAsAnArray(){
- return (PartitionContext[])getPartitionCtxts().values().toArray();
- }
+ public ClusterLevelPartitionContext[] getPartitionCtxtsAsAnArray(){
- public ClusterLevelPartitionContext getNetworkPartitionCtxt(String PartitionId) {
- return partitionCtxts.get(PartitionId);
+ return partitionCtxts.toArray(new ClusterLevelPartitionContext[0]);
}
- public void setPartitionCtxt(Map<String, ClusterLevelPartitionContext> partitionCtxt) {
+// public ClusterLevelPartitionContext getNetworkPartitionCtxt(String PartitionId) {
+// return partitionCtxts.get(PartitionId);
+// }
+
+ public void setPartitionCtxts(List<ClusterLevelPartitionContext> partitionCtxt) {
this.partitionCtxts = partitionCtxt;
}
public boolean partitionCtxtAvailable(String partitionId) {
- return partitionCtxts.containsKey(partitionId);
+
+ for(ClusterLevelPartitionContext partitionContext : partitionCtxts){
+ if(partitionContext.getPartitionId().equals(partitionId)){
+ return true;
+ }
+ }
+ return false;
}
public void addPartitionCtxt(ClusterLevelPartitionContext ctxt) {
- this.partitionCtxts.put(ctxt.getPartitionId(), ctxt);
+ this.partitionCtxts.add(ctxt);
}
public ClusterLevelPartitionContext getPartitionCtxt(String id) {
- return this.partitionCtxts.get(id);
+
+ for(ClusterLevelPartitionContext partitionContext : partitionCtxts){
+ if(partitionContext.getPartitionId().equals(id)){
+ return partitionContext;
+ }
+ }
+ return null;
}
public ClusterLevelPartitionContext getPartitionCtxt(Member member) {
log.info("Getting [Partition] " + member.getPartitionId());
String partitionId = member.getPartitionId();
- if (partitionCtxts.containsKey(partitionId)) {
- log.info("Returning partition context, of [partition] " + partitionCtxts.get(partitionId));
- return partitionCtxts.get(partitionId);
- }
+ for(ClusterLevelPartitionContext partitionContext : partitionCtxts){
+ if(partitionContext.getPartitionId().equals(partitionId)){
+ log.info("Returning partition context, of [partition] " + partitionId);
+ return partitionContext;
+ }
+ }
return null;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index 1db7a31..69e7ca0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -687,7 +687,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
for (ClusterLevelNetworkPartitionContext networkPartitionContext : getAllNetworkPartitionCtxts().values()) {
for(ClusterInstanceContext instanceContext : networkPartitionContext.getClusterInstanceContextMap().values()) {
- for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts().values()) {
+ for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
//if (log.isDebugEnabled()) {
log.info("Starting to terminate all members in cluster [" + getClusterId() + "] Network Partition [ " +
networkPartitionContext.getId() + " ], Partition [ " +
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
index 68ce932..a20e1f2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
@@ -127,7 +127,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
//FIXME to check the status of the instance
if (true) {
for (ClusterLevelPartitionContext partitionContext :
- instanceContext.getPartitionCtxts().values()) {
+ instanceContext.getPartitionCtxts()) {
// store primary members in the partition context
List<String> primaryMemberListInPartition = new ArrayList<String>();
// get active primary members in this partition context
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git 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
index 2582fb8..2dfe967 100644
--- 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
@@ -481,7 +481,7 @@ public class RuleTasksDelegator {
public double getLoadAveragePredictedValue(ClusterInstanceContext clusterInstanceContext) {
double loadAveragePredicted = 0.0d;
int totalMemberCount = 0;
- for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts().values()) {
+ for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts()) {
for (MemberStatsContext memberStatsContext : partitionContext.getMemberStatsContexts().values()) {
float memberAverageLoadAverage = memberStatsContext.getLoadAverage().getAverage();
@@ -508,7 +508,7 @@ public class RuleTasksDelegator {
public double getMemoryConsumptionPredictedValue(ClusterInstanceContext clusterInstanceContext) {
double memoryConsumptionPredicted = 0.0d;
int totalMemberCount = 0;
- for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts().values()) {
+ for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts()) {
for (MemberStatsContext memberStatsContext : partitionContext.getMemberStatsContexts().values()) {
float memberMemoryConsumptionAverage = memberStatsContext.getMemoryConsumption().getAverage();
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
index d6dc59e..1967a4b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
@@ -70,7 +70,7 @@ public class ClusterStatusActiveProcessor extends ClusterStatusProcessor {
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getNetworkPartitionCtxts()) {
//minimum check per partition
ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
- for (ClusterLevelPartitionContext clusterMonitorPartitionContext : instanceContext.getPartitionCtxts().values()) {
+ for (ClusterLevelPartitionContext clusterMonitorPartitionContext : instanceContext.getPartitionCtxts()) {
if (clusterMonitorPartitionContext.getMinimumMemberCount() == clusterMonitorPartitionContext.getActiveMemberCount()) {
clusterActive = true;
} else if (clusterMonitorPartitionContext.getActiveMemberCount() > clusterMonitorPartitionContext.getMinimumMemberCount()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
index 01daa54..c0773a4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
@@ -94,7 +94,7 @@ public class ClusterStatusInActiveProcessor extends ClusterStatusProcessor {
boolean clusterInActive = false;
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
- for (ClusterLevelPartitionContext partition : instanceContext.getPartitionCtxts().values()) {
+ for (ClusterLevelPartitionContext partition : instanceContext.getPartitionCtxts()) {
if (partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) {
clusterInActive = true;
return clusterInActive;
http://git-wip-us.apache.org/repos/asf/stratos/blob/ec356160/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
index 45a8b5f..00abe34 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
@@ -127,7 +127,7 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
for(ClusterInstanceContext clusterInstanceContext :
clusterLevelNetworkPartitionContext.getClusterInstanceContextMap().values()) {
for (ClusterLevelPartitionContext partitionContext :
- clusterInstanceContext.getPartitionCtxts().values()) {
+ clusterInstanceContext.getPartitionCtxts()) {
if (partitionContext.getNonTerminatedMemberCount() > 0) {
hasMember = true;
} else {