Updated Branches: refs/heads/master 7d0d1e9e5 -> 42c37dbf0
Modificatoins needed for partition algorithm Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/42c37dbf Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/42c37dbf Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/42c37dbf Branch: refs/heads/master Commit: 42c37dbf048b902873b22fd0e7815bc6f9ccc204 Parents: 7d0d1e9 Author: Lahiru Sandaruwan <[email protected]> Authored: Thu Dec 12 00:04:25 2013 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Thu Dec 12 00:04:25 2013 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/NetworkPartitionContext.java | 15 +++++++++++++-- .../autoscaler/algorithm/OneAfterAnother.java | 14 +++++++------- .../stratos/autoscaler/algorithm/RoundRobin.java | 16 ++++++++-------- .../stratos/autoscaler/util/AutoscalerUtil.java | 2 +- 4 files changed, 29 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/42c37dbf/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java index 2c2a53a..a41d332 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java @@ -18,11 +18,13 @@ */ package org.apache.stratos.autoscaler; -import java.util.*; +import org.apache.stratos.cloud.controller.deployment.partition.Partition; + +import java.util.HashMap; +import java.util.Map; /** * Holds runtime data of a network partition. - * @author nirmal * */ public class NetworkPartitionContext { @@ -40,6 +42,7 @@ public class NetworkPartitionContext { //FIXME this should be populated via PartitionGroups a.k.a. NetworkPartitions private int minInstanceCount = 1, maxInstanceCount = 1; + private Partition[] partitions; //Following information will keep events details private float averageRequestsInFlight; @@ -283,4 +286,12 @@ public class NetworkPartitionContext { public void setPartitionAlgorithm(String partitionAlgorithm) { this.partitionAlgorithm = partitionAlgorithm; } + + public Partition[] getPartitions() { + return partitions; + } + + public void setPartitions(Partition[] partitions) { + this.partitions = partitions; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/42c37dbf/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java index 7b0dce3..b933d17 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java @@ -47,14 +47,14 @@ public class OneAfterAnother implements AutoscaleAlgorithm { public Partition getNextScaleUpPartition(NetworkPartitionContext networkPartitionContext, String clusterId) { int currentPartitionIndex = networkPartitionContext.getCurrentPartitionIndex(); - List<?> partitionContexts = Arrays.asList(networkPartitionContext.getPartitionCtxts()); - int noOfPartitions = partitionContexts.size(); + List<?> partitions = Arrays.asList(networkPartitionContext.getPartitions()); + int noOfPartitions = partitions.size(); for(int i=currentPartitionIndex; i< noOfPartitions; i++) { - if (partitionContexts.get(currentPartitionIndex) instanceof Partition) { + if (partitions.get(currentPartitionIndex) instanceof Partition) { currentPartitionIndex = networkPartitionContext.getCurrentPartitionIndex(); - Partition currentPartition = (Partition) partitionContexts.get(currentPartitionIndex); + Partition currentPartition = (Partition) partitions.get(currentPartitionIndex); String currentPartitionId = currentPartition.getId(); if (networkPartitionContext.partitionCountExists(currentPartitionId)) { @@ -90,13 +90,13 @@ public class OneAfterAnother implements AutoscaleAlgorithm { public Partition getNextScaleDownPartition(NetworkPartitionContext networkPartitionContext, String clusterId) { int currentPartitionIndex = networkPartitionContext.getCurrentPartitionIndex(); - List<?> partitionContexts = Arrays.asList(networkPartitionContext.getPartitionCtxts()); + List<?> partitions = Arrays.asList(networkPartitionContext.getPartitions()); for(int i = currentPartitionIndex; i >= 0; i--) { - if (partitionContexts.get(currentPartitionIndex) instanceof Partition) { + if (partitions.get(currentPartitionIndex) instanceof Partition) { currentPartitionIndex = networkPartitionContext.getCurrentPartitionIndex(); - Partition currentPartition = (Partition) partitionContexts.get(currentPartitionIndex); + Partition currentPartition = (Partition) partitions.get(currentPartitionIndex); String currentPartitionId = currentPartition.getId(); // has more than minimum instances. http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/42c37dbf/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java index 9597c74..55a3178 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java @@ -39,14 +39,14 @@ public class RoundRobin implements AutoscaleAlgorithm{ public Partition getNextScaleUpPartition(NetworkPartitionContext networkPartitionContext, String clusterId){ - List<?> partitionContexts = Arrays.asList(networkPartitionContext.getPartitionCtxts()); - int noOfPartitions = partitionContexts.size(); + List<?> partitions = Arrays.asList(networkPartitionContext.getPartitions()); + int noOfPartitions = partitions.size(); for(int i=0; i < noOfPartitions; i++) { int currentPartitionIndex = networkPartitionContext.getCurrentPartitionIndex(); - if (partitionContexts.get(currentPartitionIndex) instanceof Partition) { - Partition currentPartition = (Partition) partitionContexts.get(currentPartitionIndex); + if (partitions.get(currentPartitionIndex) instanceof Partition) { + Partition currentPartition = (Partition) partitions.get(currentPartitionIndex); String currentPartitionId = currentPartition.getId(); // point to next partition @@ -84,8 +84,8 @@ public class RoundRobin implements AutoscaleAlgorithm{ @Override public Partition getNextScaleDownPartition(NetworkPartitionContext networkPartitionContext, String clusterId) { - List<?> partitionContexts = Arrays.asList(networkPartitionContext.getPartitionCtxts()); - int noOfPartitions = partitionContexts.size(); + List<?> partitions = Arrays.asList(networkPartitionContext.getPartitions()); + int noOfPartitions = partitions.size(); for (int i = 0; i < noOfPartitions; i++) { int currentPartitionIndex = networkPartitionContext.getCurrentPartitionIndex(); @@ -101,9 +101,9 @@ public class RoundRobin implements AutoscaleAlgorithm{ // Set next partition as current partition in Autoscaler Context networkPartitionContext.setCurrentPartitionIndex(currentPartitionIndex); - if (partitionContexts.get(currentPartitionIndex) instanceof Partition) { + if (partitions.get(currentPartitionIndex) instanceof Partition) { - Partition currentPartition = (Partition) partitionContexts.get(currentPartitionIndex); + Partition currentPartition = (Partition) partitions.get(currentPartitionIndex); String currentPartitionId = currentPartition.getId(); if (!networkPartitionContext.partitionCountExists(currentPartitionId)) http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/42c37dbf/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 8791503..8d06141 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 @@ -124,7 +124,7 @@ public class AutoscalerUtil { NetworkPartitionContext networkPartitionContext = PartitionManager.getInstance().getNetworkPartition(partitionGroup.getId()); - for(Partition partition: deploymentPolicy.getAllPartitions()){ + for(Partition partition: partitionGroup.getPartitions()){ PartitionContext partitionContext = new PartitionContext(partition); partitionContext.setServiceName(cluster.getServiceName()); partitionContext.setProperties(cluster.getProperties());
