Repository: stratos Updated Branches: refs/heads/master 4b9919995 -> 217a3845b
Validate whether all the deployment policies used in the application are using the same network partitions of Application policy Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/217a3845 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/217a3845 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/217a3845 Branch: refs/heads/master Commit: 217a3845b673e537584a269259094e99a99ead14 Parents: 4b99199 Author: lasinducharith <[email protected]> Authored: Mon Jun 22 14:18:20 2015 +0530 Committer: lasinducharith <[email protected]> Committed: Mon Jun 22 14:18:20 2015 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/util/AutoscalerUtil.java | 36 +++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/217a3845/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 9a10070..e71017f 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 @@ -389,7 +389,7 @@ public class AutoscalerUtil { */ public static List<String> getNetworkPartitionIdsReferedInApplication(String applicationId) { - List<String> deploymentPolicyIdsReferedInApplication = getDeploymentPolicyIdsReferedInApplication(applicationId); + List<String> deploymentPolicyIdsReferedInApplication = getDeploymentPolicyIdsReferredInApplication(applicationId); if (deploymentPolicyIdsReferedInApplication == null) { return null; } @@ -422,7 +422,7 @@ public class AutoscalerUtil { * @param applicationId the application id * @return list of deployment policy ids */ - private static List<String> getDeploymentPolicyIdsReferedInApplication(String applicationId) { + private static List<String> getDeploymentPolicyIdsReferredInApplication(String applicationId) { if (applicationId == null || StringUtils.isBlank(applicationId)) { return null; @@ -748,14 +748,40 @@ public class AutoscalerUtil { } } + /** + * Validate whether all the deployment policies used in the application are using the same network partitions of Application policy + */ private static boolean isAppUsingNetworkPartitionId(String applicationId, String networkPartitionId) { if (applicationId == null || StringUtils.isBlank(applicationId) || networkPartitionId == null || StringUtils.isBlank(networkPartitionId)) { return false; } - List<String> networkPartitionsReferredInApplication = AutoscalerUtil.getNetworkPartitionIdsReferedInApplication(applicationId); - for (String appNetworkPartitionId : networkPartitionsReferredInApplication) { - if (appNetworkPartitionId != null && appNetworkPartitionId.equals(networkPartitionId)) { + List<String> deploymentPolicyIdsReferredInApplication = AutoscalerUtil.getDeploymentPolicyIdsReferredInApplication(applicationId); + if (deploymentPolicyIdsReferredInApplication == null) { + return false; + } + + for (String deploymentPolicyIDReferredInApp : deploymentPolicyIdsReferredInApplication) { + int referencesOfNetworkPartition = 0; + try { + DeploymentPolicy deploymentPolicyInApp = PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyIDReferredInApp); + if (deploymentPolicyInApp != null) { + for (NetworkPartitionRef networkPartitionOfDeploymentPolicy : deploymentPolicyInApp.getNetworkPartitionRefs()) { + if (networkPartitionOfDeploymentPolicy != null) { + if (networkPartitionOfDeploymentPolicy != null && networkPartitionOfDeploymentPolicy.getId(). + equals(networkPartitionId)) { + referencesOfNetworkPartition++; + } + } + } + } + } catch (Exception e) { + String msg = String.format("Error while getting deployment policy from cloud controller [deployment-policy-id] %s ", + deploymentPolicyIDReferredInApp); + log.error(msg, e); + throw new AutoScalerException(msg, e); + } + if (deploymentPolicyIdsReferredInApplication.size() == referencesOfNetworkPartition) { return true; } }
