You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2013/12/12 18:20:08 UTC

git commit: fixing deployment policy persistence logic

Updated Branches:
  refs/heads/master 3e2d598a5 -> bbe57a008


fixing deployment policy persistence logic


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/bbe57a00
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/bbe57a00
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/bbe57a00

Branch: refs/heads/master
Commit: bbe57a008b075ce2aafabe94621237b7b5b654ba
Parents: 3e2d598
Author: Nirmal Fernando <ni...@apache.org>
Authored: Thu Dec 12 22:49:34 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Thu Dec 12 22:49:48 2013 +0530

----------------------------------------------------------------------
 .../autoscaler/policy/PolicyManager.java        | 46 ++++++++++++++++++++
 .../stratos/autoscaler/util/AutoscalerUtil.java | 39 -----------------
 2 files changed, 46 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bbe57a00/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 c7d4605..ecbfd0d 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
@@ -30,10 +30,14 @@ 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.InvalidPartitionException;
 import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
+import org.apache.stratos.autoscaler.exception.PolicyValidationException;
+import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
 /**
@@ -78,12 +82,53 @@ public class PolicyManager {
 	
 	// Add the policy to information model and persist.
 	public boolean deployDeploymentscalePolicy(DeploymentPolicy policy) throws InvalidPolicyException {	
+	    try {
+	        Partition[] allPartitions = policy.getAllPartitions();
+            validateExistenceOfPartions(allPartitions);
+            
+        } catch (InvalidPartitionException e) {
+            String msg = "Deployment Policy is invalid. Policy name: " + policy.getId();
+            log.error(msg, e);
+            throw new InvalidPolicyException(msg, e);
+        }
+	    
 		this.addDeploymentPolicyToInformationModel(policy);
 		this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);
 		
 		log.info("Deployment policy  :" + policy.getId() + " is deployed successfully.");
 		return true;
 	}
+	
+	private static void validateExistenceOfPartions(Partition[] partitions) throws InvalidPartitionException {
+        PartitionManager partitionMgr = PartitionManager.getInstance();
+        for (Partition partition : partitions) {
+            String partitionId = partition.getId();
+            if (partitionId == null || !partitionMgr.partitionExist(partitionId)) {
+                String msg =
+                             "Non existing Partition defined. Partition id: " + partitionId + ". " +
+                                     "Please define the partition in the partition definition file.";
+                log.error(msg);
+                throw new InvalidPartitionException(msg);
+            }
+            fillPartition(partition, partitionMgr.getPartitionById(partitionId));
+        }
+    }
+
+    private static void fillPartition(Partition destPartition, Partition srcPartition) {
+
+        if (!destPartition.isProviderSpecified()) {
+            destPartition.setProvider(srcPartition.getProvider());
+        }
+        if (!destPartition.isPartitionMaxSpecified()) {
+            destPartition.setPartitionMax(srcPartition.getPartitionMax());
+        }
+        if (!destPartition.isPartitionMinSpecified()) {
+            destPartition.setPartitionMin(srcPartition.getPartitionMin());
+        }
+        if (!destPartition.isPropertiesSpecified()) {
+            destPartition.setProperties(srcPartition.getProperties());
+        }
+    }
 		
 	public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException{
 		if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) {
@@ -152,6 +197,7 @@ public class PolicyManager {
 			if(log.isDebugEnabled()){
 				log.debug("Adding policy :" + policy.getId());
 			}
+			PartitionManager.getInstance().deployNewNetworkPartitions(policy);
 			deploymentPolicyListMap.put(policy.getId(), policy);
 		} else {
 			throw new InvalidPolicyException("Specified policy [" + policy.getId()

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bbe57a00/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 7feda4b..44de2a8 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
@@ -104,14 +104,6 @@ public class AutoscalerUtil {
             throw new PolicyValidationException(msg);
         }
 
-        try {
-            validateExistenceOfPartions(allPartitions);
-        } catch (InvalidPartitionException e) {
-            String msg = "Deployment Policy is invalid. Policy name: " + deploymentPolicyName;
-            log.error(msg, e);
-            throw new PolicyValidationException(msg, e);
-        }
-
         CloudControllerClient.getInstance()
                              .validatePartitionsOfPolicy(cluster.getServiceName(),
                                                          allPartitions);
@@ -261,37 +253,6 @@ public class AutoscalerUtil {
         return clusterMonitor;
     }
 
-    private static void validateExistenceOfPartions(Partition[] partitions) throws InvalidPartitionException {
-        PartitionManager partitionMgr = PartitionManager.getInstance();
-        for (Partition partition : partitions) {
-            String partitionId = partition.getId();
-            if (partitionId == null || !partitionMgr.partitionExist(partitionId)) {
-                String msg =
-                             "Non existing Partition defined. Partition id: " + partitionId + ". " +
-                                     "Please define the partition in the partition definition file.";
-                log.error(msg);
-                throw new InvalidPartitionException(msg);
-            }
-            fillPartition(partition, partitionMgr.getPartitionById(partitionId));
-        }
-    }
-
-    private static void fillPartition(Partition destPartition, Partition srcPartition) {
-
-        if (!destPartition.isProviderSpecified()) {
-            destPartition.setProvider(srcPartition.getProvider());
-        }
-        if (!destPartition.isPartitionMaxSpecified()) {
-            destPartition.setPartitionMax(srcPartition.getPartitionMax());
-        }
-        if (!destPartition.isPartitionMinSpecified()) {
-            destPartition.setPartitionMin(srcPartition.getPartitionMin());
-        }
-        if (!destPartition.isPropertiesSpecified()) {
-            destPartition.setProperties(srcPartition.getProperties());
-        }
-    }
-
     public static Properties getProperties(final OMElement elt) {
 
         Iterator<?> it = elt.getChildrenWithName(new QName(AutoScalerConstants.PROPERTY_ELEMENT));