Repository: stratos Updated Branches: refs/heads/master d562e6d18 -> d0116d22c
Extending PartitionCOntext by ClusterLevelPartitionContext Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d0116d22 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d0116d22 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d0116d22 Branch: refs/heads/master Commit: d0116d22c84826f4ad8d2aaafd0a26ae8bb7f8ed Parents: d562e6d Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Nov 28 12:24:00 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Nov 28 12:24:00 2014 +0530 ---------------------------------------------------------------------- .../autoscaler/ClusterContextFactory.java | 2 +- .../ClusterLevelPartitionContext.java | 25 ++- .../stratos/autoscaler/PartitionContext.java | 168 ++++--------------- .../autoscaler/rule/RuleTasksDelegator.java | 2 +- .../stratos/autoscaler/util/AutoscalerUtil.java | 10 +- 5 files changed, 46 insertions(+), 161 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java index 7a9d4d6..0c1dcbe 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java @@ -196,7 +196,7 @@ public class ClusterContextFactory { PartitionManager.getInstance() .getNetworkPartitionLbHolder(networkPartitionId); // PartitionManager.getInstance() -// .getNetworkPartitionLbHolder(partitionGroup.getId()); +// .getNetworkPartitionLbHolder(partitionGroup.getPartitionId()); // FIXME pick a random partition Partition partition = partitionGroup.getPartitions()[new Random().nextInt(partitionGroup.getPartitions().length)]; http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java index 01f0b8e..ddf8fd7 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java @@ -38,11 +38,10 @@ import org.apache.stratos.common.constants.StratosConstants; * */ -public class ClusterLevelPartitionContext 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 String partitionId; private String serviceName; private String networkPartitionId; private Partition partition; @@ -81,16 +80,15 @@ public class ClusterLevelPartitionContext implements Serializable{ // for the use of tests public ClusterLevelPartitionContext(long memberExpiryTime) { - + super(memberExpiryTime); this.activeMembers = new ArrayList<MemberContext>(); this.terminationPendingMembers = new ArrayList<MemberContext>(); - pendingMemberExpiryTime = memberExpiryTime; } public ClusterLevelPartitionContext(Partition partition) { - this.setPartition(partition); + + super(partition); this.minimumMemberCount = partition.getPartitionMin(); - this.partitionId = partition.getId(); this.pendingMembers = new ArrayList<MemberContext>(); this.activeMembers = new ArrayList<MemberContext>(); this.terminationPendingMembers = new ArrayList<MemberContext>(); @@ -134,13 +132,6 @@ public class ClusterLevelPartitionContext implements Serializable{ public void setActiveMembers(List<MemberContext> activeMembers) { this.activeMembers = activeMembers; } - - public String getPartitionId() { - return partitionId; - } - public void setPartitionId(String partitionId) { - this.partitionId = partitionId; - } public int getMinimumMemberCount() { return minimumMemberCount; @@ -596,7 +587,13 @@ public class ClusterLevelPartitionContext implements Serializable{ } } - + + @Override + public int getCurrentElementCount() { + //TODO find and return correct member instance count + return 0; + } + private class PendingMemberWatcher implements Runnable { private ClusterLevelPartitionContext ctxt; http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java index a13f4e9..7786eed 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java @@ -21,165 +21,53 @@ package org.apache.stratos.autoscaler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition; -import org.apache.stratos.messaging.domain.instance.context.InstanceContext; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; +import java.io.Serializable; +import java.util.*; /** - * This will keep track of partition level information. + * This is an object that inserted to the rules engine. + * Holds information about a partition. + * + * */ -public abstract class PartitionContext { - private static final Log log = LogFactory.getLog(PartitionContext.class); - private final String id; - private int scaleDownRequestsCount = 0; - private float averageRequestsServedPerInstance; - - private int minInstanceCount = 0, maxInstanceCount = 0; - - - int requiredInstanceCountBasedOnStats; - private int requiredInstanceCountBasedOnDependencies; +public class PartitionContext implements Serializable{ - private Map<String, InstanceContext> instanceIdToInstanceContextMap; + private static final long serialVersionUID = -2920388667345980487L; + private static final Log log = LogFactory.getLog(ClusterLevelPartitionContext.class); + protected String partitionId; + private Partition partition; - private final Partition[] partitions; + // properties + private Properties properties; - //details required for partition selection algorithms - private int currentPartitionIndex; - - public PartitionContext(String id, Partition[] partitions) { - - super(); - this.id = id; - if (partitions == null) { - this.partitions = new Partition[0]; - } else { - this.partitions = Arrays.copyOf(partitions, partitions.length); - } - for (Partition partition : partitions) { - minInstanceCount += partition.getPartitionMin(); - maxInstanceCount += partition.getPartitionMax(); - } - requiredInstanceCountBasedOnStats = minInstanceCount; - requiredInstanceCountBasedOnDependencies = minInstanceCount; - instanceIdToInstanceContextMap = new HashMap<String, InstanceContext>(); + // for the use of tests + public PartitionContext(long memberExpiryTime) { } + public PartitionContext(Partition partition) { - - public int getMinInstanceCount() { - return minInstanceCount; + this.partition = partition; } - public void setMinInstanceCount(int minInstanceCount) { - this.minInstanceCount = minInstanceCount; + public Partition getPartition() { + return partition; } - public int getMaxInstanceCount() { - return maxInstanceCount; + public void setPartition(Partition partition) { + this.partition = partition; } - public void setMaxInstanceCount(int maxInstanceCount) { - this.maxInstanceCount = maxInstanceCount; + public String getPartitionId() { + return partitionId; } - - public int hashCode() { - - final int prime = 31; - int result = 1; - result = prime * result + ((this.id == null) ? 0 : this.id.hashCode()); - return result; - - } - - public boolean equals(final Object obj) { - - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof PartitionContext)) { - return false; - } - final PartitionContext other = (PartitionContext) obj; - if (this.id == null) { - if (this.id != null) { - return false; - } - } else if (!this.id.equals(this.id)) { - return false; - } - return true; - } - - @Override - public String toString() { - return "NetworkPartitionContext [id=" + id + ", minInstanceCount=" + - minInstanceCount + ", maxInstanceCount=" + maxInstanceCount + "]"; - } - - public int getCurrentPartitionIndex() { - return currentPartitionIndex; - } - - public void setCurrentPartitionIndex(int currentPartitionIndex) { - this.currentPartitionIndex = currentPartitionIndex; - } - - public String getId() { - return id; + public void setPartitionId(String partitionId) { + this.partitionId = partitionId; } - public Partition[] getPartitions() { - return partitions; + public int getCurrentElementCount() { + //TODO find and return correct member instance count + return 0; } - - public int getScaleDownRequestsCount() { - return scaleDownRequestsCount; - } - - public void resetScaleDownRequestsCount() { - this.scaleDownRequestsCount = 0; - } - - public void increaseScaleDownRequestsCount() { - this.scaleDownRequestsCount += 1; - } - - public float getRequiredInstanceCountBasedOnStats() { - return requiredInstanceCountBasedOnStats; - } - - public void setRequiredInstanceCountBasedOnStats(int requiredInstanceCountBasedOnStats) { - this.requiredInstanceCountBasedOnStats = requiredInstanceCountBasedOnStats; - } - - public int getRequiredInstanceCountBasedOnDependencies() { - return requiredInstanceCountBasedOnDependencies; - } - - public void setRequiredInstanceCountBasedOnDependencies(int requiredInstanceCountBasedOnDependencies) { - this.requiredInstanceCountBasedOnDependencies = requiredInstanceCountBasedOnDependencies; - } - - public Map<String, InstanceContext> getInstanceIdToInstanceContextMap() { - return instanceIdToInstanceContextMap; - } - - public void setInstanceIdToInstanceContextMap(Map<String, InstanceContext> instanceIdToInstanceContextMap) { - this.instanceIdToInstanceContextMap = instanceIdToInstanceContextMap; - } - - public void addInstanceContext(InstanceContext context) { - this.instanceIdToInstanceContextMap.put(context.getInstanceId(), context); - - } - - public abstract int getCurrentElementCount(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/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 d3e2474..08f379b 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 @@ -246,7 +246,7 @@ public class RuleTasksDelegator { partitionContext.addPendingMember(memberContext); if(log.isDebugEnabled()){ log.debug(String.format("Pending member added, [member] %s [partition] %s", memberContext.getMemberId(), - memberContext.getPartition().getId())); + memberContext.getPartition().getPartitionId())); } } else if(log.isDebugEnabled()){ log.debug("Returned member context is null, did not add to pending members"); http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java ---------------------------------------------------------------------- diff --git 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 index 0efd346..383f083 100644 --- 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 @@ -117,23 +117,23 @@ public class AutoscalerUtil { NetworkPartitionLbHolder networkPartitionLbHolder = PartitionManager.getInstance() - .getNetworkPartitionLbHolder(partitionGroup.getId()); + .getNetworkPartitionLbHolder(partitionGroup.getPartitionId()); // PartitionManager.getInstance() -// .getNetworkPartitionLbHolder(partitionGroup.getId()); +// .getNetworkPartitionLbHolder(partitionGroup.getPartitionId()); // FIXME pick a random partition Partition partition = partitionGroup.getPartitions()[new Random().nextInt(partitionGroup.getPartitions().length)]; PartitionContext partitionContext = new PartitionContext(partition); partitionContext.setServiceName(cluster.getServiceName()); partitionContext.setProperties(cluster.getProperties()); - partitionContext.setNetworkPartitionId(partitionGroup.getId()); + partitionContext.setNetworkPartitionId(partitionGroup.getPartitionId()); partitionContext.setMinimumMemberCount(1);//Here it hard codes the minimum value as one for LB cartridge partitions - NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId(), + NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getPartitionId(), partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions()) ; for (Member member : cluster.getMembers()) { String memberId = member.getMemberId(); - if (member.getNetworkPartitionId().equalsIgnoreCase(networkPartitionContext.getId())) { + if (member.getNetworkPartitionId().equalsIgnoreCase(networkPartitionContext.getPartitionId())) { MemberContext memberContext = new MemberContext(); memberContext.setClusterId(member.getClusterId()); memberContext.setMemberId(memberId);
