Updated Branches:
  refs/heads/master 8a6dc7fcf -> 4f5bfd503

Adding getValidDeploymentPolicies API method for AutoScalerSerice


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

Branch: refs/heads/master
Commit: 4f5bfd5033438ec5ee14e02ae80ef2f692e54984
Parents: 8a6dc7f
Author: Udara Liyanage <[email protected]>
Authored: Mon Dec 2 13:28:24 2013 -0500
Committer: Udara Liyanage <[email protected]>
Committed: Mon Dec 2 13:28:24 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java      | 17 +++++++++++++++++
 .../cloud/controller/CloudControllerClient.java    | 12 ++++++++----
 .../interfaces/AutoScalerServiceInterface.java     |  3 +++
 .../processors/AutoscalerTopologyReceiver.java     |  5 +++++
 .../stratos/autoscaler/util/AutoscalerUtil.java    |  4 +++-
 5 files changed, 36 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4f5bfd50/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 95acb43..aa67207 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -18,9 +18,13 @@
  */
 package org.apache.stratos.autoscaler.api;
 
+import java.util.ArrayList;
+
 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.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
@@ -46,4 +50,17 @@ public class AutoScalerServiceImpl implements 
AutoScalerServiceInterface{
                return 
PolicyManager.getInstance().getAutoscalePolicyList().toArray(new 
AutoscalePolicy[0]);
        }
 
+       @Override
+       public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String 
cartridgeType) throws PartitionValidationException {
+               ArrayList<DeploymentPolicy> validPolicies = new 
ArrayList<DeploymentPolicy>();
+               
+               for(DeploymentPolicy deploymentPolicy : 
this.getAllDeploymentPolicies()){
+                       Partition[] policyPartitions = 
deploymentPolicy.getAllPartitions().toArray(new Partition[0]);
+                       boolean isValid = 
CloudControllerClient.getInstance().validatePartitionsOfPolicy(cartridgeType, 
policyPartitions);
+                       if(isValid)
+                               validPolicies.add(deploymentPolicy);            
        
+               }
+               return validPolicies.toArray(new DeploymentPolicy[0]);
+       }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4f5bfd50/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index 20c30bb..1fb9a45 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -86,19 +86,23 @@ public class CloudControllerClient {
         
     }
     
-    public boolean validatePartitionsOfPolicy(String cartridgeType, 
Partition[] partitions) throws PolicyValidationException{
+    /*
+     * This will validate the given partitions against the given cartridge 
type.
+     */
+    
+    public boolean validatePartitionsOfPolicy(String cartridgeType, 
Partition[] partitions) throws PartitionValidationException{
         
         try {
             return stub.validateDeploymentPolicy(cartridgeType, partitions);
         } catch (RemoteException e) {
             log.error(e.getMessage());
-            throw new PolicyValidationException(e);
+            throw new PartitionValidationException(e);
         } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
             log.error(e.getMessage());
-            throw new PolicyValidationException(e);
+            throw new PartitionValidationException(e);
         } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException 
e) {
             log.error(e.getMessage());
-            throw new PolicyValidationException(e);
+            throw new PartitionValidationException(e);
         } 
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4f5bfd50/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index dd6eb42..8d59f85 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@ -1,6 +1,7 @@
 package org.apache.stratos.autoscaler.interfaces;
 
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
 import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 
@@ -10,4 +11,6 @@ public interface AutoScalerServiceInterface {
        public DeploymentPolicy[] getAllDeploymentPolicies();
        
        public AutoscalePolicy[] getAllAutoScalingPolicy();
+       
+       public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String 
cartridgeType) throws  PartitionValidationException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4f5bfd50/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
index c44239d..221daa6 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.ClusterContext;
 import org.apache.stratos.autoscaler.ClusterMonitor;
+import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.PolicyValidationException;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.util.AutoscalerUtil;
@@ -196,6 +197,10 @@ public class AutoscalerTopologyReceiver implements 
Runnable {
                 String msg = "Cluster monitor creation failed for cluster: 
"+cluster.getClusterId();
                 log.error(msg, e);
                 throw new RuntimeException(msg, e);
+            }catch(PartitionValidationException e){
+               String msg = "Cluster monitor creation failed for cluster: 
"+cluster.getClusterId();
+                log.error(msg, e);
+                throw new RuntimeException(msg, e);
             }
             AutoscalerRuleEvaluator ruleCtxt = 
AutoscalerRuleEvaluator.getInstance();
             ClusterMonitor monitor =

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4f5bfd50/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 7136eb7..03b1ddd 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
@@ -32,6 +32,7 @@ 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.InvalidPartitionException;
+import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.PolicyValidationException;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
@@ -59,9 +60,10 @@ public class AutoscalerUtil {
      * @param cluster
      * @return ClusterContext - Updated ClusterContext
      * @throws PolicyValidationException
+     * @throws PartitionValidationException 
      */
     public static ClusterContext
-        getClusterContext(Cluster cluster) throws PolicyValidationException {
+        getClusterContext(Cluster cluster) throws PolicyValidationException, 
PartitionValidationException {
         // FIXME fix the following code to correctly update
         // AutoscalerContext context = AutoscalerContext.getInstance();
         if (null == cluster) {

Reply via email to