You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2013/12/11 05:21:56 UTC
[2/9] git commit: Registry based deployment for Auto scaler partitions
Registry based deployment for Auto scaler partitions
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/976e555b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/976e555b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/976e555b
Branch: refs/heads/master
Commit: 976e555b5e9d5c8edd0a6967c982ac2ffb90821e
Parents: f7c9b9c
Author: Udara Liyanage <ud...@wso2.com>
Authored: Sat Dec 7 22:00:12 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Sat Dec 7 22:22:49 2013 -0500
----------------------------------------------------------------------
.../autoscaler/partition/PartitionManager.java | 16 ++++++++++------
.../stratos/autoscaler/policy/PolicyManager.java | 15 +++++++++++++++
.../autoscaler/policy/model/AutoscalePolicy.java | 5 ++++-
.../autoscaler/policy/model/LoadAverage.java | 7 +++++--
.../autoscaler/policy/model/LoadThresholds.java | 5 ++++-
.../autoscaler/policy/model/MemoryConsumption.java | 7 +++++--
.../autoscaler/policy/model/RequestsInFlight.java | 7 +++++--
.../autoscaler/util/AutoScalerConstants.java | 1 +
.../stratos/autoscaler/util/AutoscalerUtil.java | 5 +++++
9 files changed, 54 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index c86176e..51a10e1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.registry.RegistryManager;
@@ -97,19 +98,22 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
}
- public boolean validatePartition(Partition partition) throws PartitionValidationException{
- return true;
- //return CloudControllerClient.getInstance().validatePartition(partition);
+ public boolean validatePartition(Partition partition) throws PartitionValidationException{
+ return CloudControllerClient.getInstance().validatePartition(partition);
}
- public void updatePartition(Partition newPartition,Partition oldPartition) throws RegistryException {
+ public void updatePartition(Partition newPartition,Partition oldPartition){
if(!oldPartition.getId().equals(newPartition.getId()))
throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
oldPartition=newPartition;
//overwrite the registry resource.
- RegistryManager.getInstance().persist(
- newPartition, this.partitionResourcePath + newPartition.getId());
+ try {
+ RegistryManager.getInstance().persist(
+ newPartition, this.partitionResourcePath + newPartition.getId());
+ } catch (RegistryException e) {
+ throw new AutoScalerException(e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index f2ab9ae..65d7e59 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -29,8 +29,12 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
/**
*
@@ -39,6 +43,8 @@ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
public class PolicyManager {
private static final Log log = LogFactory.getLog(PolicyManager.class);
+
+ private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
@@ -76,12 +82,21 @@ public class PolicyManager {
log.debug("Adding policy :" + policy.getId());
}
autoscalePolicyListMap.put(policy.getId(), policy);
+ this.persitASPolicy(asResourcePath+policy.getId(), policy);
} else {
throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ "] already exists");
}
}
+ private void persitASPolicy(String asResourcePath, AutoscalePolicy policy){
+ try {
+ RegistryManager.getInstance().persist(policy, asResourcePath);
+ } catch (RegistryException e) {
+ throw new AutoScalerException(e);
+ }
+ }
+
/**
* Appends the specified policy
* @param policy
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
index 22727a4..9efde70 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
@@ -19,11 +19,14 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for Autoscale-policy definition.
*/
-public class AutoscalePolicy {
+public class AutoscalePolicy implements Serializable {
+ private static final long serialVersionUID = 1754373171598089271L;
private LoadThresholds loadThresholds;
private String id;
private String displayName;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
index a8147f2..9a64de0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
@@ -19,12 +19,15 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for LoadAverage definition.
*/
-public class LoadAverage {
+public class LoadAverage implements Serializable{
- private float average;
+ private static final long serialVersionUID = -2109860338694123343L;
+ private float average;
private float secondDerivative;
private float gradient;
private float scaleDownMarginOfGradient;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
index abbb868..61677d7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
@@ -19,11 +19,14 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for LoadThresholds definition.
*/
-public class LoadThresholds {
+public class LoadThresholds implements Serializable{
+ private static final long serialVersionUID = -8148571245537655867L;
private RequestsInFlight requestsInFlight;
private MemoryConsumption memoryConsumption;
private LoadAverage loadAverage;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
index c9a720b..9696f41 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
@@ -19,12 +19,15 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for MemoryConsumption definition.
*/
-public class MemoryConsumption {
+public class MemoryConsumption implements Serializable {
- private float average;
+ private static final long serialVersionUID = 5755634390464664663L;
+ private float average;
private float secondDerivative;
private float gradient;
private float scaleDownMarginOfGradient;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
index fc40016..b56e305 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
@@ -19,12 +19,15 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for RequestsInFlight definition.
*/
-public class RequestsInFlight {
+public class RequestsInFlight implements Serializable{
- private float average;
+ private static final long serialVersionUID = 8113964958155294290L;
+ private float average;
private float secondDerivative;
private float gradient;
private float scaleDownMarginOfGradient;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
index 462f39f..1a777e5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
@@ -35,5 +35,6 @@ public final class AutoScalerConstants {
*/
public static final String AUTOSCALER_RESOURCE = "/autoscaler";
public static final String PARTITION_RESOURCE = "/partitions";
+ public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/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 caacebd..4428336 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
@@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.ClusterContext;
import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.InvalidPartitionException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.exception.PolicyValidationException;
@@ -42,6 +43,7 @@ import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.pojo.Properties;
import org.apache.stratos.cloud.controller.pojo.Property;
import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
/**
* This class contains utility methods used by Autoscaler.
@@ -161,6 +163,9 @@ public class AutoscalerUtil {
if (!destPartition.isPropertiesSpecified()) {
destPartition.setProperties(srcPartition.getProperties());
}
+
+ // update the partitions with the extra properties in the deployment policy.
+ PartitionManager.getInstance().updatePartition(destPartition, srcPartition);
}
public static Properties getProperties(final OMElement elt) {