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 <[email protected]> Authored: Thu Dec 12 22:49:34 2013 +0530 Committer: Nirmal Fernando <[email protected]> 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));
