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 2013/12/02 07:48:46 UTC
[1/2] git commit: Fixing STRATOS-223
Updated Branches:
refs/heads/master 1ed43c887 -> 8a6dc7fcf
Fixing STRATOS-223
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/99d1d3c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/99d1d3c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/99d1d3c6
Branch: refs/heads/master
Commit: 99d1d3c63680d5811fa47f85b5d36c7afb94ff59
Parents: 63c5c1c
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 2 12:22:49 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 2 12:22:49 2013 +0530
----------------------------------------------------------------------
.../algorithm/AutoscaleAlgorithm.java | 32 +++++++++++++++++---
.../autoscaler/algorithm/OneAfterAnother.java | 27 +++++++++++------
.../PartitionGroupOneAfterAnother.java | 14 ++++-----
.../autoscaler/algorithm/RoundRobin.java | 28 +++++++++--------
.../interfaces/CloudControllerService.java | 2 +-
5 files changed, 69 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/99d1d3c6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/AutoscaleAlgorithm.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/AutoscaleAlgorithm.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/AutoscaleAlgorithm.java
index 54ec855..8f003aa 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/AutoscaleAlgorithm.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/AutoscaleAlgorithm.java
@@ -24,15 +24,39 @@ import org.apache.stratos.cloud.controller.deployment.partition.Partition;
/**
- *
+ * This interface is should be implemented by all the algorithms that are there to select partitions of a particulaler
+ * partition group
*/
public interface AutoscaleAlgorithm {
+ /**
+ * Returns whether there is available {@link Partition} to scale up considering the current count and maximum
+ * @param clusterId Id of the cluster which need the availability information
+ * @return availability of {@link Partition}s to scale up
+ */
public boolean scaleUpPartitionAvailable(String clusterId);
+ /**
+ * Returns whether there is available {@link Partition} to scale down considering the current count and minimum
+ * @param clusterId Id of the cluster which need the availability information
+ * @return availability of {@link Partition}s to scale down
+ */
public boolean scaleDownPartitionAvailable(String clusterId);
- public Partition getNextScaleUpPartition(PartitionGroup partition, String clusterId);
-
- public Partition getNextScaleDownPartition(PartitionGroup partition, String clusterId);
+ /**
+ * Returns a {@link Partition} to scale up from the given {@link PartitionGroup} according to algorithm
+ * @param partitionGroup {@link PartitionGroup} which need the {@link Partition}
+ * @param clusterId Id of the cluster which need the {@link Partition}
+ * @return {@link Partition} to scale up
+ */
+ public Partition getNextScaleUpPartition(PartitionGroup partitionGroup, String clusterId);
+
+
+ /**
+ * Returns a {@link Partition} to scale down from the given {@link PartitionGroup} according to algorithm
+ * @param partitionGroup {@link PartitionGroup} which need the {@link Partition}
+ * @param clusterId Id of the cluster which need the {@link Partition}
+ * @return {@link Partition} to scale down
+ */
+ public Partition getNextScaleDownPartition(PartitionGroup partitionGroup, String clusterId);
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/99d1d3c6/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 9d34385..ae01360 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
@@ -19,8 +19,7 @@
package org.apache.stratos.autoscaler.algorithm;
-import java.util.List;
-
+import edu.emory.mathcs.backport.java.util.Arrays;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.AutoscalerContext;
@@ -28,20 +27,28 @@ import org.apache.stratos.autoscaler.ClusterContext;
import org.apache.stratos.autoscaler.partition.PartitionGroup;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
-import edu.emory.mathcs.backport.java.util.Arrays;
+import java.util.List;
/**
- * Completes partitions in the order defined in autoscaler policy, go to next if current one reached the max limit
+ *
*/
+/**
+* This class is used for selecting a {@link Partition} one after another and checking availability of
+ * partitions of a {@link PartitionGroup}
+ * One after another means it completes partitions in the order defined in
+ * {@link org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy}, and go to next if current one
+ * reached the max limit
+ *
+*/
public class OneAfterAnother implements AutoscaleAlgorithm {
private static final Log log = LogFactory.getLog(OneAfterAnother.class);
- public Partition getNextScaleUpPartition(PartitionGroup partitionGrp, String clusterId) {
+ public Partition getNextScaleUpPartition(PartitionGroup partitionGroup, String clusterId) {
ClusterContext clusterContext = AutoscalerContext.getInstance().getClusterContext(clusterId);
int currentPartitionIndex = clusterContext.getCurrentPartitionIndex();
- List<?> partitions = Arrays.asList(partitionGrp.getPartitions());
+ List<?> partitions = Arrays.asList(partitionGroup.getPartitions());
int noOfPartitions = partitions.size();
for(int i=currentPartitionIndex; i< noOfPartitions; i++)
@@ -76,16 +83,16 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
}
if(log.isDebugEnabled())
- log.debug("No free partition found at partition group" + partitionGrp);
+ log.debug("No free partition found at partition group" + partitionGroup);
return null;
}
- public Partition getNextScaleDownPartition(PartitionGroup partitionGrp, String clusterId) {
+ public Partition getNextScaleDownPartition(PartitionGroup partitionGroup, String clusterId) {
ClusterContext clusterContext = AutoscalerContext.getInstance().getClusterContext(clusterId);
int currentPartitionIndex = clusterContext.getCurrentPartitionIndex();
- List<?> partitions = Arrays.asList(partitionGrp.getPartitions());
+ List<?> partitions = Arrays.asList(partitionGroup.getPartitions());
for(int i = currentPartitionIndex; i >= 0; i--)
{
@@ -116,7 +123,7 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
}
if(log.isDebugEnabled())
- log.debug("No space found in this partition group " + partitionGrp.getId());
+ log.debug("No space found in this partition group " + partitionGroup.getId());
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/99d1d3c6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/PartitionGroupOneAfterAnother.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/PartitionGroupOneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/PartitionGroupOneAfterAnother.java
index f954c97..91e7e38 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/PartitionGroupOneAfterAnother.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/PartitionGroupOneAfterAnother.java
@@ -19,22 +19,22 @@
package org.apache.stratos.autoscaler.algorithm;
-import java.util.List;
-
+import edu.emory.mathcs.backport.java.util.Arrays;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.AutoscalerContext;
import org.apache.stratos.autoscaler.ClusterContext;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
import org.apache.stratos.autoscaler.partition.PartitionGroup;
import org.apache.stratos.autoscaler.policy.PolicyManager;
import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-import edu.emory.mathcs.backport.java.util.Arrays;
+import java.util.List;
/**
- * Completes partitions in the order defined in autoscaler policy, go to next if current one reached the max limit
+ * Completes {@link PartitionGroup} in the order defined in * {@link org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy}, and go to next if current one
+ * reached the max limit policy, go to next if current one reached the max limit
*/
public class PartitionGroupOneAfterAnother implements AutoscaleAlgorithm {
@@ -149,14 +149,14 @@ public class PartitionGroupOneAfterAnother implements AutoscaleAlgorithm {
}
@Override
- public Partition getNextScaleUpPartition(PartitionGroup partition,
+ public Partition getNextScaleUpPartition(PartitionGroup partitionGroup,
String clusterId) {
// TODO Auto-generated method stub
return null;
}
@Override
- public Partition getNextScaleDownPartition(PartitionGroup partition,
+ public Partition getNextScaleDownPartition(PartitionGroup partitionGroup,
String clusterId) {
// TODO Auto-generated method stub
return null;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/99d1d3c6/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 83d48bc..01b63fc 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
@@ -31,16 +31,19 @@ import edu.emory.mathcs.backport.java.util.Arrays;
import java.util.List;
/**
-* Select partition in round robin manner and return
+* This class is used for selecting a {@link Partition} in round robin manner and checking availability of
+ * {@link Partition}s of a {@link PartitionGroup}
+ *
*/
public class RoundRobin implements AutoscaleAlgorithm{
private static final Log log = LogFactory.getLog(RoundRobin.class);
- public Partition getNextScaleUpPartition(PartitionGroup partitionGrp, String clusterId){
-
- ClusterContext clusterContext = AutoscalerContext.getInstance().getClusterContext(clusterId);
- List<?> partitions = Arrays.asList(partitionGrp.getPartitions());
+ public Partition getNextScaleUpPartition(PartitionGroup partitionGroup, String clusterId){
+
+
+ ClusterContext clusterContext = AutoscalerContext.getInstance().getClusterContext(clusterId);
+ List<?> partitions = Arrays.asList(partitionGroup.getPartitions());
int noOfPartitions = partitions.size();
for(int i=0; i < noOfPartitions; i++)
@@ -64,29 +67,30 @@ public class RoundRobin implements AutoscaleAlgorithm{
if(log.isDebugEnabled())
log.debug("Free space found in partition " + currentPartition.getId());
return currentPartition;
- }
- if(log.isDebugEnabled()) {
+ }
+
+ if(log.isDebugEnabled())
log.debug("No free space for a new instance in partition " + currentPartition.getId());
- }
+
}
}
// none of the partitions were free.
if(log.isDebugEnabled()) {
- log.debug("No free partition found at partition group " + partitionGrp);
+ log.debug("No free partition found at partition group " + partitionGroup);
}
return null;
}
@Override
- public Partition getNextScaleDownPartition(PartitionGroup partitionGrp, String clusterId) {
+ public Partition getNextScaleDownPartition(PartitionGroup partitionGroup, String clusterId) {
ClusterContext clusterContext =
AutoscalerContext.getInstance()
.getClusterContext(clusterId);
- List<?> partitions = Arrays.asList(partitionGrp.getPartitions());
+ List<?> partitions = Arrays.asList(partitionGroup.getPartitions());
int noOfPartitions = partitions.size();
for (int i = 0; i < noOfPartitions; i++) {
@@ -130,7 +134,7 @@ public class RoundRobin implements AutoscaleAlgorithm{
if (log.isDebugEnabled())
log.debug("No partition found for scale down at partition group " +
- partitionGrp.getId());
+ partitionGroup.getId());
// none of the partitions were free.
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/99d1d3c6/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
index b4bba09..2784eb8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
@@ -87,7 +87,7 @@ public interface CloudControllerService {
public MemberContext startInstance(MemberContext member) throws IllegalArgumentException, UnregisteredCartridgeException;
/**
- * Calling this method will spawn more than one ininstances in the
+ * Calling this method will spawn more than one instances in the
* specified partition for the particular cluster
*
* @param clusterId
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos
Posted by la...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8a6dc7fc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8a6dc7fc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8a6dc7fc
Branch: refs/heads/master
Commit: 8a6dc7fcfc1f1491058441f9a53c8335f8bd4da0
Parents: 99d1d3c 1ed43c8
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 2 12:23:19 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 2 12:23:19 2013 +0530
----------------------------------------------------------------------
.../distribution/src/main/assembly/bin.xml | 8 +++++
.../src/main/partitions/partitions.xml | 33 ++++++++++++++++++++
2 files changed, 41 insertions(+)
----------------------------------------------------------------------