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) {