Repository: stratos Updated Branches: refs/heads/master 8caae55b1 -> d39f5f7f1
Adding autoscaling/deployment policy update methods to autoscaler service Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5260f3fe Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5260f3fe Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5260f3fe Branch: refs/heads/master Commit: 5260f3fe840a50287fe2a0bca29c7158853375f9 Parents: 5dd6374 Author: Imesh Gunaratne <[email protected]> Authored: Fri Oct 24 18:58:16 2014 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Fri Oct 24 18:58:16 2014 +0530 ---------------------------------------------------------------------- .../autoscaler/api/AutoScalerServiceImpl.java | 18 ++++-- .../interfaces/AutoScalerServiceInterface.java | 4 ++ .../autoscaler/policy/PolicyManager.java | 67 +++++++++++++++++--- 3 files changed, 77 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/5260f3fe/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 4b6b897..7748c09 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 @@ -88,13 +88,23 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface { } @Override - public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException { - return PolicyManager.getInstance().deployDeploymentPolicy(depPolicy); + public boolean addDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws InvalidPolicyException { + return PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy); } @Override - public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException { - return PolicyManager.getInstance().deployAutoscalePolicy(aspolicy); + public boolean updateDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws InvalidPolicyException { + return PolicyManager.getInstance().updateDeploymentPolicy(deploymentPolicy); + } + + @Override + public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws InvalidPolicyException { + return PolicyManager.getInstance().deployAutoscalePolicy(autoscalePolicy); + } + + @Override + public boolean updateAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws InvalidPolicyException { + return PolicyManager.getInstance().updateAutoscalePolicy(autoscalePolicy); } @Override http://git-wip-us.apache.org/repos/asf/stratos/blob/5260f3fe/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 2f88581..2cc5fb7 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 @@ -41,10 +41,14 @@ public interface AutoScalerServiceInterface { public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException; + public boolean updateDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException; + public AutoscalePolicy[] getAllAutoScalingPolicy(); public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException; + public boolean updateAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException; + public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String cartridgeType); public Partition getPartition(String partitionId); http://git-wip-us.apache.org/repos/asf/stratos/blob/5260f3fe/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 3c3521a..6a91817 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 @@ -64,12 +64,24 @@ public class PolicyManager { // Add the policy to information model and persist. public boolean deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException { if(StringUtils.isEmpty(policy.getId())){ - throw new AutoScalerException("AutoScaling policy id can not be empty"); + throw new AutoScalerException("Autoscaling policy id cannot be empty"); } this.addASPolicyToInformationModel(policy); RegistryManager.getInstance().persistAutoscalerPolicy(policy); if (log.isInfoEnabled()) { - log.info(String.format("AutoScaling policy is deployed successfully: [id] %s", policy.getId())); + log.info(String.format("Autoscaling policy is deployed successfully: [id] %s", policy.getId())); + } + return true; + } + + public boolean updateAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException { + if(StringUtils.isEmpty(policy.getId())){ + throw new AutoScalerException("Autoscaling policy id cannot be empty"); + } + this.updateASPolicyInInformationModel(policy); + RegistryManager.getInstance().persistAutoscalerPolicy(policy); + if (log.isInfoEnabled()) { + log.info(String.format("Autoscaling policy is updated successfully: [id] %s", policy.getId())); } return true; } @@ -77,7 +89,7 @@ public class PolicyManager { // Add the deployment policy to information model and persist. public boolean deployDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException { if(StringUtils.isEmpty(policy.getId())){ - throw new AutoScalerException("Deploying policy id can not be empty"); + throw new AutoScalerException("Deploying policy id cannot be empty"); } try { if(log.isInfoEnabled()) { @@ -89,7 +101,7 @@ public class PolicyManager { throw new InvalidPolicyException(String.format("Deployment policy is invalid: [id] %s", policy.getId()), e); } - this.addDeploymentPolicyToInformationModel(policy); + addDeploymentPolicyToInformationModel(policy); RegistryManager.getInstance().persistDeploymentPolicy(policy); if (log.isInfoEnabled()) { @@ -98,6 +110,29 @@ public class PolicyManager { return true; } + public boolean updateDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException { + if(StringUtils.isEmpty(policy.getId())){ + throw new AutoScalerException("Deploying policy id cannot be empty"); + } + try { + if(log.isInfoEnabled()) { + log.info(String.format("Updating deployment policy: [id] %s", policy.getId())); + } + fillPartitions(policy); + } catch (InvalidPartitionException e) { + log.error(e); + throw new InvalidPolicyException(String.format("Deployment policy is invalid: [id] %s", policy.getId()), e); + } + + updateDeploymentPolicyToInformationModel(policy); + RegistryManager.getInstance().persistDeploymentPolicy(policy); + + if (log.isInfoEnabled()) { + log.info(String.format("Deployment policy is updated successfully: [id] %s", policy.getId())); + } + return true; + } + private void fillPartitions(DeploymentPolicy deploymentPolicy) throws InvalidPartitionException { PartitionManager partitionMgr = PartitionManager.getInstance(); for (Partition partition : deploymentPolicy.getAllPartitions()) { @@ -130,16 +165,25 @@ public class PolicyManager { public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException { if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) { if (log.isDebugEnabled()) { - log.debug("Adding policy :" + asPolicy.getId()); + log.debug("Adding autoscaling policy: " + asPolicy.getId()); } autoscalePolicyListMap.put(asPolicy.getId(), asPolicy); } else { - String errMsg = "Specified policy [" + asPolicy.getId() + "] already exists"; + String errMsg = "Specified autoscaling policy [" + asPolicy.getId() + "] already exists"; log.error(errMsg); throw new InvalidPolicyException(errMsg); } } + public void updateASPolicyInInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException { + if (autoscalePolicyListMap.containsKey(asPolicy.getId())) { + if (log.isDebugEnabled()) { + log.debug("Updating autoscaling policy: " + asPolicy.getId()); + } + autoscalePolicyListMap.put(asPolicy.getId(), asPolicy); + } + } + /** * Removes the specified policy * @@ -181,17 +225,24 @@ public class PolicyManager { public void addDeploymentPolicyToInformationModel(DeploymentPolicy policy) throws InvalidPolicyException { if (!deploymentPolicyListMap.containsKey(policy.getId())) { if (log.isDebugEnabled()) { - log.debug("Adding policy :" + policy.getId()); + log.debug("Adding deployment policy: " + policy.getId()); } PartitionManager.getInstance().deployNewNetworkPartitions(policy); deploymentPolicyListMap.put(policy.getId(), policy); } else { - String errMsg = "Specified policy [" + policy.getId()+ "] already exists"; + String errMsg = "Specified deployment policy [" + policy.getId()+ "] already exists"; log.error(errMsg); throw new InvalidPolicyException(errMsg); } } + public void updateDeploymentPolicyToInformationModel(DeploymentPolicy policy) throws InvalidPolicyException { + if (log.isDebugEnabled()) { + log.debug("Updating deployment policy: " + policy.getId()); + } + deploymentPolicyListMap.put(policy.getId(), policy); + } + /** * Removes the specified policy *
