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