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/04 13:31:15 UTC
[4/6] stratos git commit: fixing min rule issue
fixing min rule issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/853e1496
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/853e1496
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/853e1496
Branch: refs/heads/master
Commit: 853e149602d124fc8482e081ba6f889739b25a44
Parents: ad400d9
Author: reka <rt...@gmail.com>
Authored: Thu Dec 4 17:38:41 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 4 17:38:41 2014 +0530
----------------------------------------------------------------------
.../context/cluster/ClusterInstanceContext.java | 32 +--
.../context/cluster/VMClusterContext.java | 31 +--
.../partition/ClusterLevelPartitionContext.java | 201 +++++++++----------
.../context/partition/PartitionContext.java | 9 +-
.../AutoscalerTopologyEventReceiver.java | 2 +
.../monitor/cluster/VMClusterMonitor.java | 131 ++++++------
6 files changed, 177 insertions(+), 229 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/853e1496/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 a6fe42a..509ccfe 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
@@ -25,11 +25,9 @@ import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionCont
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.messaging.domain.topology.Member;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
/*
@@ -62,8 +60,6 @@ public class ClusterInstanceContext extends InstanceContext {
private int minInstanceCount = 0, maxInstanceCount = 0;
private int requiredInstanceCountBasedOnStats;
private int requiredInstanceCountBasedOnDependencies;
- private int minMembers;
- private int maxMembers;
//details required for partition selection algorithms
private int currentPartitionIndex;
@@ -74,14 +70,14 @@ public class ClusterInstanceContext extends InstanceContext {
super(clusterInstanceId);
this.networkPartitionId = networkPartitionId;
- this.setMinMembers(min);
+ this.minInstanceCount = min;
+ this.maxInstanceCount = max;
partitionCtxts = new ArrayList<ClusterLevelPartitionContext>();
this.partitionAlgorithm = partitionAlgo;
//partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>();
requestsInFlight = new RequestsInFlight();
loadAverage = new LoadAverage();
memoryConsumption = new MemoryConsumption();
- maxInstanceCount = max;
requiredInstanceCountBasedOnStats = minInstanceCount;
requiredInstanceCountBasedOnDependencies = minInstanceCount;
@@ -141,10 +137,11 @@ public class ClusterInstanceContext extends InstanceContext {
}
return null;
}
- public int getNonTerminatedMemberCount(){
+
+ public int getNonTerminatedMemberCount() {
int nonTerminatedMemberCount = 0;
- for(ClusterLevelPartitionContext partitionContext : partitionCtxts){
+ for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {
nonTerminatedMemberCount += partitionContext.getNonTerminatedMemberCount();
}
@@ -191,7 +188,7 @@ public class ClusterInstanceContext extends InstanceContext {
if (log.isDebugEnabled()) {
log.debug(String.format("Average Requesets Served Per Instance stats are reset, ready to do scale check " +
- "[network partition] %s" , this.id));
+ "[network partition] %s", this.id));
}
}
@@ -437,23 +434,6 @@ public class ClusterInstanceContext extends InstanceContext {
this.requiredInstanceCountBasedOnDependencies = requiredInstanceCountBasedOnDependencies;
}
-
- public int getMinMembers() {
- return minMembers;
- }
-
- public int getMaxMembers() {
- return maxMembers;
- }
-
- public void setMaxMembers(int maxMembers) {
- this.maxMembers = maxMembers;
- }
-
- public void setMinMembers(int minMembers) {
- this.minMembers = minMembers;
- }
-
public String getNetworkPartitionId() {
return networkPartitionId;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/853e1496/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 f5cdb32..2cdef55 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
@@ -208,14 +208,6 @@ public class VMClusterContext extends AbstractClusterContext {
//Fill cluster instance context with child level partitions
for (ChildLevelPartition childLevelPartition : networkPartition.getChildLevelPartitions()) {
addPartition(clusterInstance, cluster, clusterLevelNetworkPartitionContext, childLevelPartition);
- if (log.isInfoEnabled()) {
- log.info(String.format("Partition context has been added: [partition] %s",
- childLevelPartition.getPartitionId()));
- }
- }
- if (log.isInfoEnabled()) {
- log.info(String.format("Network partition context has been added: " +
- "[network partition] %s", clusterLevelNetworkPartitionContext.getId()));
}
return clusterLevelNetworkPartitionContext;
}
@@ -226,9 +218,6 @@ public class VMClusterContext extends AbstractClusterContext {
ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext,
ChildLevelPartition childLevelPartition)
throws PolicyValidationException, PartitionValidationException {
- //Getting the associated network partition
- /* ChildLevelNetworkPartition networkPartition = deploymentPolicy.
- getChildLevelNetworkPartition(clusterInstance.getNetworkPartitionId());*/
if (clusterLevelNetworkPartitionContext == null) {
String msg =
"Network Partition is null in deployment policy: [policy-name]: " +
@@ -240,7 +229,7 @@ public class VMClusterContext extends AbstractClusterContext {
String nPartitionId = clusterLevelNetworkPartitionContext.getId();
//Getting the associated partition
- if (clusterInstance.getPartitionId() == null || childLevelPartition == null) {
+ if (clusterInstance.getPartitionId() == null && childLevelPartition == null) {
String msg =
"[Partition] " + clusterInstance.getPartitionId() + " for [networkPartition] " +
clusterInstance.getNetworkPartitionId() + "is null " +
@@ -249,13 +238,6 @@ public class VMClusterContext extends AbstractClusterContext {
throw new PolicyValidationException(msg);
}
- /*//Creating cluster level network partitionContext, if not exist
- if (clusterLevelNetworkPartitionContext == null) {
- clusterLevelNetworkPartitionContext =
- new ClusterLevelNetworkPartitionContext(clusterInstance.getNetworkPartitionId()
- , networkPartition.getPartitionAlgo(), networkPartition.getMin());
- }*/
-
ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext.
getClusterInstanceContext(clusterInstance.getInstanceId());
int maxInstances = 2;
@@ -306,13 +288,20 @@ public class VMClusterContext extends AbstractClusterContext {
//adding it to the monitors context
clusterInstanceContext.addPartitionCtxt(clusterLevelPartitionContext);
- clusterLevelNetworkPartitionContext.addClusterInstanceContext(clusterInstanceContext);
-
if (log.isInfoEnabled()) {
log.info(String.format("Partition context has been added: [partition] %s",
clusterLevelPartitionContext.getPartitionId()));
}
+ clusterLevelNetworkPartitionContext.addClusterInstanceContext(clusterInstanceContext);
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Cluster Instance context has been added: " +
+ "[ClusterInstanceContext] %s", clusterInstanceContext.getId()));
+ }
+
+
+
return clusterLevelNetworkPartitionContext;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/853e1496/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
index 850a54b..4594e58 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
@@ -22,52 +22,46 @@ import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
-import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelPartition;
import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.common.constants.StratosConstants;
import java.io.Serializable;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
-import org.apache.stratos.cloud.controller.stub.domain.Partition;
-import org.apache.stratos.common.constants.StratosConstants;
-
/**
* This is an object that inserted to the rules engine.
* Holds information about a partition.
- *
- *
*/
-public class ClusterLevelPartitionContext extends PartitionContext implements Serializable{
+public class ClusterLevelPartitionContext extends PartitionContext implements Serializable {
- private static final long serialVersionUID = -2920388667345980487L;
- private static final Log log = LogFactory.getLog(ClusterLevelPartitionContext.class);
+ private static final long serialVersionUID = -2920388667345980487L;
+ private static final Log log = LogFactory.getLog(ClusterLevelPartitionContext.class);
+ private final int PENDING_MEMBER_FAILURE_THRESHOLD = 5;
private String serviceName;
- private String networkPartitionId;
private int minimumMemberCount = 0;
private int pendingMembersFailureCount = 0;
- private final int PENDING_MEMBER_FAILURE_THRESHOLD = 5;
-
// properties
private Properties properties;
-
+
// 15 mints as the default
private long pendingMemberExpiryTime = 900000;
// pending members
private List<MemberContext> pendingMembers;
-
+
// 1 day as default
- private long obsoltedMemberExpiryTime = 1*24*60*60*1000;
+ private long obsoltedMemberExpiryTime = 1 * 24 * 60 * 60 * 1000;
// 30 mints as default
private long terminationPendingMemberExpiryTime = 1800000;
// members to be terminated
private Map<String, MemberContext> obsoletedMembers;
-
+
// active members
private List<MemberContext> activeMembers;
@@ -87,10 +81,10 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
this.terminationPendingMembers = new ArrayList<MemberContext>();
this.pendingMembers = new ArrayList<MemberContext>();
}
-
+
public ClusterLevelPartitionContext(int max, Partition partition, String networkPartitionId) {
- super(max,partition, networkPartitionId);
+ super(max, partition, networkPartitionId);
this.pendingMembers = new ArrayList<MemberContext>();
this.activeMembers = new ArrayList<MemberContext>();
this.terminationPendingMembers = new ArrayList<MemberContext>();
@@ -103,8 +97,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
pendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_VM_MEMBER_EXPIRY_TIMEOUT, 900000);
obsoltedMemberExpiryTime = conf.getLong(StratosConstants.OBSOLETED_VM_MEMBER_EXPIRY_TIMEOUT, 86400000);
if (log.isDebugEnabled()) {
- log.debug("Member expiry time is set to: " + pendingMemberExpiryTime);
- log.debug("Member obsoleted expiry time is set to: " + obsoltedMemberExpiryTime);
+ log.debug("Member expiry time is set to: " + pendingMemberExpiryTime);
+ log.debug("Member obsoleted expiry time is set to: " + obsoltedMemberExpiryTime);
}
Thread th = new Thread(new PendingMemberWatcher(this));
@@ -118,22 +112,18 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
public long getTerminationPendingStartedTimeOfMember(String memberId) {
return terminationPendingStartedTime.get(memberId);
}
-
+
public List<MemberContext> getPendingMembers() {
return pendingMembers;
}
-
+
public void setPendingMembers(List<MemberContext> pendingMembers) {
this.pendingMembers = pendingMembers;
}
-
+
public int getActiveMemberCount() {
return activeMembers.size();
}
-
- public void setActiveMembers(List<MemberContext> activeMembers) {
- this.activeMembers = activeMembers;
- }
public int getMinimumMemberCount() {
return minimumMemberCount;
@@ -146,9 +136,9 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
public void addPendingMember(MemberContext ctxt) {
this.pendingMembers.add(ctxt);
}
-
+
public boolean removePendingMember(String id) {
- if (id == null) {
+ if (id == null) {
return false;
}
synchronized (pendingMembers) {
@@ -161,10 +151,10 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
}
}
-
- return false;
+
+ return false;
}
-
+
public void movePendingMemberToActiveMembers(String memberId) {
if (memberId == null) {
return;
@@ -318,11 +308,11 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
return null;
}
-
+
public void addActiveMember(MemberContext ctxt) {
this.activeMembers.add(ctxt);
}
-
+
public void removeActiveMember(MemberContext ctxt) {
this.activeMembers.remove(ctxt);
}
@@ -340,24 +330,24 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
}
return terminationPendingMemberAvailable;
}
-
+
public long getObsoltedMemberExpiryTime() {
- return obsoltedMemberExpiryTime;
+ return obsoltedMemberExpiryTime;
}
-
+
public void setObsoltedMemberExpiryTime(long obsoltedMemberExpiryTime) {
- this.obsoltedMemberExpiryTime = obsoltedMemberExpiryTime;
+ this.obsoltedMemberExpiryTime = obsoltedMemberExpiryTime;
}
-
+
public void addObsoleteMember(MemberContext ctxt) {
this.obsoletedMembers.put(ctxt.getMemberId(), ctxt);
}
-
+
public boolean removeObsoleteMember(String memberId) {
- if(this.obsoletedMembers.remove(memberId) == null) {
- return false;
- }
- return true;
+ if (this.obsoletedMembers.remove(memberId) == null) {
+ return false;
+ }
+ return true;
}
public long getPendingMemberExpiryTime() {
@@ -367,30 +357,21 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
public void setPendingMemberExpiryTime(long pendingMemberExpiryTime) {
this.pendingMemberExpiryTime = pendingMemberExpiryTime;
}
-
+
public Map<String, MemberContext> getObsoletedMembers() {
return obsoletedMembers;
}
-
+
public void setObsoletedMembers(Map<String, MemberContext> obsoletedMembers) {
this.obsoletedMembers = obsoletedMembers;
}
- public String getNetworkPartitionId() {
- return networkPartitionId;
- }
-
- public void setNetworkPartitionId(String networkPartitionId) {
- this.networkPartitionId = networkPartitionId;
- }
-
@Override
public int getActiveInstanceCount() {
-
+
return getNonTerminatedMemberCount();
}
-
public Map<String, MemberStatsContext> getMemberStatsContexts() {
return memberStatsContexts;
}
@@ -411,15 +392,14 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
return this.memberStatsContexts.get(id);
}
-// public boolean memberExist(String memberId) {
-// return memberStatsContexts.containsKey(memberId);
-// }
-
-
public Properties getProperties() {
return properties;
}
+// public boolean memberExist(String memberId) {
+// return memberStatsContexts.containsKey(memberId);
+// }
+
public void setProperties(Properties properties) {
this.properties = properties;
}
@@ -448,18 +428,22 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
public int getNonTerminatedMemberCount() {
return activeMembers.size() + pendingMembers.size();
}
-
+
public List<MemberContext> getActiveMembers() {
- return activeMembers;
- }
+ return activeMembers;
+ }
- public boolean removeActiveMemberById(String memberId) {
+ public void setActiveMembers(List<MemberContext> activeMembers) {
+ this.activeMembers = activeMembers;
+ }
+
+ public boolean removeActiveMemberById(String memberId) {
boolean removeActiveMember = false;
synchronized (activeMembers) {
Iterator<MemberContext> iterator = activeMembers.listIterator();
while (iterator.hasNext()) {
MemberContext memberContext = iterator.next();
- if(memberId.equals(memberContext.getMemberId())){
+ if (memberId.equals(memberContext.getMemberId())) {
iterator.remove();
removeActiveMember = true;
@@ -472,47 +456,47 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
public boolean activeMemberExist(String memberId) {
- for (MemberContext memberContext: activeMembers) {
- if(memberId.equals(memberContext.getMemberId())){
+ for (MemberContext memberContext : activeMembers) {
+ if (memberId.equals(memberContext.getMemberId())) {
return true;
}
}
return false;
}
-
- public int getAllMemberForTerminationCount () {
- int count = activeMembers.size() + pendingMembers.size() + terminationPendingMembers.size();
- if (log.isDebugEnabled()) {
- log.debug("PartitionContext:getAllMemberForTerminationCount:size:" + count);
- }
- return count;
+
+ public int getAllMemberForTerminationCount() {
+ int count = activeMembers.size() + pendingMembers.size() + terminationPendingMembers.size();
+ if (log.isDebugEnabled()) {
+ log.debug("PartitionContext:getAllMemberForTerminationCount:size:" + count);
+ }
+ return count;
}
-
+
// Map<String, MemberStatsContext> getMemberStatsContexts().keySet()
- public Set<String> getAllMemberForTermination () {
-
- List<MemberContext> merged = new ArrayList<MemberContext>();
-
-
- merged.addAll(activeMembers);
- merged.addAll(pendingMembers);
- merged.addAll(terminationPendingMembers);
-
- Set<String> results = new HashSet<String>(merged.size());
-
- for (MemberContext ctx: merged) {
- results.add(ctx.getMemberId());
- }
-
-
- if (log.isDebugEnabled()) {
- log.debug("PartitionContext:getAllMemberForTermination:size:" + results.size());
- }
-
- //MemberContext x = new MemberContext();
- //x.getMemberId()
-
- return results;
+ public Set<String> getAllMemberForTermination() {
+
+ List<MemberContext> merged = new ArrayList<MemberContext>();
+
+
+ merged.addAll(activeMembers);
+ merged.addAll(pendingMembers);
+ merged.addAll(terminationPendingMembers);
+
+ Set<String> results = new HashSet<String>(merged.size());
+
+ for (MemberContext ctx : merged) {
+ results.add(ctx.getMemberId());
+ }
+
+
+ if (log.isDebugEnabled()) {
+ log.debug("PartitionContext:getAllMemberForTermination:size:" + results.size());
+ }
+
+ //MemberContext x = new MemberContext();
+ //x.getMemberId()
+
+ return results;
}
public void movePendingTerminationMemberToObsoleteMembers(String memberId) {
@@ -607,10 +591,10 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
while (true) {
long expiryTime = ctxt.getPendingMemberExpiryTime();
List<MemberContext> pendingMembers = ctxt.getPendingMembers();
-
+
synchronized (pendingMembers) {
Iterator<MemberContext> iterator = pendingMembers.listIterator();
- while ( iterator.hasNext()) {
+ while (iterator.hasNext()) {
MemberContext pendingMember = iterator.next();
if (pendingMember == null) {
@@ -622,11 +606,11 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
iterator.remove();
log.info("Pending state of member: " + pendingMember.getMemberId() +
- " is expired. " + "Adding as an obsoleted member.");
+ " is expired. " + "Adding as an obsoleted member.");
// member should be terminated
ctxt.addObsoleteMember(pendingMember);
pendingMembersFailureCount++;
- if( pendingMembersFailureCount > PENDING_MEMBER_FAILURE_THRESHOLD){
+ if (pendingMembersFailureCount > PENDING_MEMBER_FAILURE_THRESHOLD) {
setPendingMemberExpiryTime(expiryTime * 2);//Doubles the expiry time after the threshold of failure exceeded
//TODO Implement an alerting system: STRATOS-369
}
@@ -642,8 +626,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
}
}
- }
-
+ }
+
private class ObsoletedMemberWatcher implements Runnable {
private ClusterLevelPartitionContext ctxt;
@@ -698,7 +682,7 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
while (iterator.hasNext()) {
MemberContext terminationPendingMember = iterator.next();
- if (terminationPendingMember == null){
+ if (terminationPendingMember == null) {
continue;
}
long terminationPendingTime = System.currentTimeMillis()
@@ -712,7 +696,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
try {
// TODO find a constant
Thread.sleep(15000);
- } catch (InterruptedException ignore) {}
+ } catch (InterruptedException ignore) {
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/853e1496/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 db4f2cb..ad6174f 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
@@ -20,19 +20,17 @@ package org.apache.stratos.autoscaler.context.partition;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelPartition;
import org.apache.stratos.cloud.controller.stub.domain.Partition;
import java.io.Serializable;
-import java.util.*;
+import java.util.Properties;
+
/**
* This is an object that inserted to the rules engine.
* Holds information about a partition.
- *
- *
*/
-public abstract class PartitionContext implements Serializable{
+public abstract class PartitionContext implements Serializable {
private static final long serialVersionUID = -2920388667345980487L;
private static final Log log = LogFactory.getLog(ClusterLevelPartitionContext.class);
@@ -80,6 +78,7 @@ public abstract class PartitionContext implements Serializable{
}
public abstract int getActiveInstanceCount();
+
public int getMax() {
return max;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/853e1496/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git 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
index 6251d18..50f2430 100644
--- 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
@@ -456,6 +456,8 @@ public class AutoscalerTopologyEventReceiver {
cluster.getClusterId(),
clusterInstance.getInstanceId());
instance.setParentId(clusterInstance.getParentId());
+ instance.setNetworkPartitionId(clusterInstance.getNetworkPartitionId());
+ instance.setPartitionId(clusterInstance.getPartitionId());
instance.setStatus(clusterInstance.getStatus());
clusterMonitor.addInstance(instance);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/853e1496/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 edea5cc..7e86601 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
@@ -194,94 +194,87 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
if (log.isDebugEnabled()) {
log.debug("Monitor is running for [cluster] : " + getClusterId());
}
-
-
- // store primary members in the cluster instance context
-
// store primary members in the cluster instance context
List<String> primaryMemberListInClusterInstance = new ArrayList<String>();
- //FIXME to check the status of the instance
- if (true) {
+ for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
- for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
-
- // get active primary members in this cluster instance context
- for (MemberContext memberContext : partitionContext.getActiveMembers()) {
- if (isPrimaryMember(memberContext)) {
- primaryMemberListInClusterInstance.add(memberContext.getMemberId());
- }
+ // get active primary members in this cluster instance context
+ for (MemberContext memberContext : partitionContext.getActiveMembers()) {
+ if (isPrimaryMember(memberContext)) {
+ primaryMemberListInClusterInstance.add(memberContext.getMemberId());
}
+ }
- // get pending primary members in this cluster instance context
- for (MemberContext memberContext : partitionContext.getPendingMembers()) {
- if (isPrimaryMember(memberContext)) {
- primaryMemberListInClusterInstance.add(memberContext.getMemberId());
- }
+ // get pending primary members in this cluster instance context
+ for (MemberContext memberContext : partitionContext.getPendingMembers()) {
+ if (isPrimaryMember(memberContext)) {
+ primaryMemberListInClusterInstance.add(memberContext.getMemberId());
}
}
+ }
- getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
- getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
- getMinCheckKnowledgeSession().setGlobal("algorithmName",
- instanceContext.getPartitionAlgorithm());
+ getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
+ getMinCheckKnowledgeSession().setGlobal("algorithmName",
+ instanceContext.getPartitionAlgorithm());
- if (log.isDebugEnabled()) {
- log.debug(String.format("Running minimum check for cluster instance %s ",
- instanceContext.getId()));
- }
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running minimum check for cluster instance %s ",
+ instanceContext.getId()));
+ }
- minCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getMinCheckKnowledgeSession(),
- minCheckFactHandle, instanceContext);
+ minCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getMinCheckKnowledgeSession(),
+ minCheckFactHandle, instanceContext);
- obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluate(
- getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, instanceContext);
+ obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluate(
+ getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, instanceContext);
- //checking the status of the cluster
- boolean rifReset = instanceContext.isRifReset();
- boolean memoryConsumptionReset = instanceContext.isMemoryConsumptionReset();
- boolean loadAverageReset = instanceContext.isLoadAverageReset();
+ //checking the status of the cluster
+ boolean rifReset = instanceContext.isRifReset();
+ boolean memoryConsumptionReset = instanceContext.isMemoryConsumptionReset();
+ boolean loadAverageReset = instanceContext.isLoadAverageReset();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Execution point of scaling Rule, [Is rif Reset] : " + rifReset
+ + " [Is memoryConsumption Reset] : " + memoryConsumptionReset
+ + " [Is loadAverage Reset] : " + loadAverageReset);
+ }
+ if (rifReset || memoryConsumptionReset || loadAverageReset) {
- if (log.isDebugEnabled()) {
- log.debug("Execution point of scaling Rule, [Is rif Reset] : " + rifReset
- + " [Is memoryConsumption Reset] : " + memoryConsumptionReset
- + " [Is loadAverage Reset] : " + loadAverageReset);
- }
- if (rifReset || memoryConsumptionReset || loadAverageReset) {
-
-
- VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
-
- getScaleCheckKnowledgeSession().setGlobal("instance", instanceContext);
- getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
- getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy",
- vmClusterContext.getAutoscalePolicy());
- getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
- getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
- getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
- getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
- getScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInClusterInstance);
- getMinCheckKnowledgeSession().setGlobal("algorithmName",
- instanceContext.getPartitionAlgorithm());
-
- if (log.isDebugEnabled()) {
- log.debug(String.format("Running scale check for [cluster instance context] %s ",
- instanceContext.getId()));
- log.debug(" Primary members : " + primaryMemberListInClusterInstance);
- }
- scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getScaleCheckKnowledgeSession()
- , scaleCheckFactHandle, instanceContext);
+ VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
- instanceContext.setRifReset(false);
- instanceContext.setMemoryConsumptionReset(false);
- instanceContext.setLoadAverageReset(false);
- } else if (log.isDebugEnabled()) {
- log.debug(String.format("Scale rule will not run since the LB statistics have not " +
- "received before this cycle for [cluster instance context] %s ",
+ getScaleCheckKnowledgeSession().setGlobal("instance", instanceContext);
+ getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy",
+ vmClusterContext.getAutoscalePolicy());
+ getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
+ getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
+ getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
+ getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
+ getScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInClusterInstance);
+ getMinCheckKnowledgeSession().setGlobal("algorithmName",
+ instanceContext.getPartitionAlgorithm());
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running scale check for [cluster instance context] %s ",
instanceContext.getId()));
+ log.debug(" Primary members : " + primaryMemberListInClusterInstance);
}
+
+ scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getScaleCheckKnowledgeSession()
+ , scaleCheckFactHandle, instanceContext);
+
+ instanceContext.setRifReset(false);
+ instanceContext.setMemoryConsumptionReset(false);
+ instanceContext.setLoadAverageReset(false);
+ } else if (log.isDebugEnabled()) {
+ log.debug(String.format("Scale rule will not run since the LB statistics have not " +
+ "received before this cycle for [cluster instance context] %s ",
+ instanceContext.getId()));
}
+
}
};
monitoringRunnable.run();