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;
             }
         }

Reply via email to