Repository: stratos
Updated Branches:
  refs/heads/master-deployment-policy-fix-merge aa77d0bbf -> 29a1af788


fixing an issue in parse deployment policy method in AS


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/29a1af78
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/29a1af78
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/29a1af78

Branch: refs/heads/master-deployment-policy-fix-merge
Commit: 29a1af7887e146c99be7b345e11020a577722acc
Parents: aa77d0b
Author: R-Rajkumar <rraju1...@gmail.com>
Authored: Fri Feb 27 11:38:46 2015 +0530
Committer: R-Rajkumar <rraju1...@gmail.com>
Committed: Fri Feb 27 11:38:46 2015 +0530

----------------------------------------------------------------------
 .../context/cluster/ClusterContext.java         | 12 +++-
 .../services/impl/AutoscalerServiceImpl.java    | 73 +-------------------
 .../stratos/autoscaler/util/AutoscalerUtil.java | 71 +++++++++++++++++++
 3 files changed, 81 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/29a1af78/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
index 6f3e4e9..51aca64 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
@@ -139,8 +139,14 @@ public class ClusterContext extends AbstractClusterContext 
{
                                        }
                                }
                        }
-               networkPartitionContext = new 
ClusterLevelNetworkPartitionContext(networkPartitionRef.getId(),
-                               networkPartitionRef.getPartitionAlgo(), 0);
+               
+               if (networkPartitionRef == null) {
+                        //Parent should have the partition specified
+                       networkPartitionContext = new 
ClusterLevelNetworkPartitionContext(clusterInstance.getNetworkPartitionId());
+                       } else {
+                               networkPartitionContext = new 
ClusterLevelNetworkPartitionContext(networkPartitionRef.getId(),
+                                               
networkPartitionRef.getPartitionAlgo(), 0);
+                       }
         }
 
         if (clusterInstance.getPartitionId() != null) {
@@ -196,7 +202,7 @@ public class ClusterContext extends AbstractClusterContext {
 
                if (partitionRefs == null) {
                        String msg = "PartitionRefs are null in deployment 
policy for [cluster-alias] "
-                                       + clusterInstance.getAlias();
+                                       + 
AutoscalerUtil.getAliasFromClusterId(clusterId);
                        log.error(msg);
                        throw new PolicyValidationException(msg);
                }

http://git-wip-us.apache.org/repos/asf/stratos/blob/29a1af78/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 26c8d4d..0d4bcfb 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.stratos.autoscaler.services.impl;
 
-import java.rmi.RemoteException;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -43,7 +42,6 @@ import 
org.apache.stratos.autoscaler.context.AutoscalerContext;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
-import 
org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException;
 import 
org.apache.stratos.autoscaler.exception.kubernetes.InvalidServiceGroupException;
 import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException;
 import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
@@ -52,13 +50,11 @@ import org.apache.stratos.autoscaler.pojo.ServiceGroup;
 import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy;
-import 
org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicyNetworkPartitionReference;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.autoscaler.services.AutoscalerService;
 import org.apache.stratos.autoscaler.util.AutoscalerUtil;
 import org.apache.stratos.common.Properties;
 import org.apache.stratos.common.Property;
-import org.apache.stratos.common.client.CloudControllerServiceClient;
 import org.apache.stratos.common.client.StratosManagerServiceClient;
 import org.apache.stratos.common.util.CommonUtil;
 import 
org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp;
@@ -181,7 +177,7 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
             ApplicationBuilder.handleApplicationCreatedEvent(application, 
applicationContext.getComponents().getApplicationClusterContexts());
 
                        // validating application policy
-                       validateApplicationPolicy(applicationId, 
applicationPolicy);
+                       AutoscalerUtil.validateApplicationPolicy(applicationId, 
applicationPolicy);
                        
                        // Add application policy
                        
PolicyManager.getInstance().addApplicationPolicy(applicationPolicy);
@@ -582,73 +578,6 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
         }
     }
     
-    /**
-     * Validates Application Policy against the given application.
-     * @param applicationId the application id against which the application 
policy needs to be validated
-     * @param applicationPolicy the application policy to be validated
-     * @throws InvalidApplicationPolicyException if application policy is not 
valid
-     * @throws RemoteException is anything went wrong while communicating with 
CC to validate network partitions
-     */
-       private void validateApplicationPolicy(String applicationId, 
ApplicationPolicy applicationPolicy) 
-               throws InvalidApplicationPolicyException, RemoteException {
-       
-       // application policy can't be null
-       if (null == applicationPolicy) {
-                       String msg = "Invalid Application Policy. Cause -> 
Application Policy is null";
-                       log.error(msg);
-                       throw new InvalidApplicationPolicyException(msg);
-               }
-       
-       // application policy should contain at least one network partition 
reference
-       ApplicationPolicyNetworkPartitionReference[] networkPartitionReferences 
= 
-                       applicationPolicy.getNetworkPartitionReferences();
-               if (null == networkPartitionReferences || 
networkPartitionReferences.length == 0) {
-                       String msg = "Invalid Application Policy. "
-                                       + "Cause -> Application Policy is not 
containing any network partition reference";
-                       log.error(msg);
-                       throw new InvalidApplicationPolicyException(msg);
-               }
-       
-       // to count the number of network partitions which are active by default
-       // if the count is 0, we should raise the error
-       int activeByDefaultNetworkPartitionsCount = 0;
-       
-       // validating all network partition references
-       for (ApplicationPolicyNetworkPartitionReference 
applicationPolicyNetworkPartitionReference : networkPartitionReferences) {
-                       
-               // network-partition-id can't be null or empty
-               String networkPartitionId = 
applicationPolicyNetworkPartitionReference.getNetworkPartitionId();
-                       if (null == networkPartitionId || 
networkPartitionId.isEmpty()) {
-                               String msg = String.format("Invalid Application 
Policy. "
-                                               + "Cause -> Invalid 
network-partition-id : %s", networkPartitionId);
-                               log.error(msg);
-                               throw new 
InvalidApplicationPolicyException(msg);
-                       }
-                       
-                       // network partitions should be added already
-                       if (null == 
CloudControllerServiceClient.getInstance().getNetworkPartition(networkPartitionId))
 {
-                               String msg = String.format("Invalid Application 
Policy. "
-                                               + "Cause -> Network partition 
not found for network-partition-id : %s", networkPartitionId);
-                               log.error(msg);
-                               throw new 
InvalidApplicationPolicyException(msg);
-                       }
-                       
-                       //TODO validate application policy against the given 
application
-                       
-                       // counting number of network partitions which are 
active by default
-                       if (true == 
applicationPolicyNetworkPartitionReference.isActiveByDefault()) {
-                               activeByDefaultNetworkPartitionsCount++;
-                       }
-               }
-       
-       // there should be at least one network partition reference which is 
active by default
-       if (activeByDefaultNetworkPartitionsCount == 0) {
-                       String msg = "Invalid Application Policy. Cause -> No 
active by default network partitions found";
-                       log.error(msg);
-                       throw new InvalidApplicationPolicyException(msg);
-               }
-    }
-
        @Override
        public ApplicationPolicy getApplicationPolicy(String applicationId) {
                return 
PolicyManager.getInstance().getApplicationPolicy(applicationId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/29a1af78/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 6ec0197..97b8cb8 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
@@ -19,6 +19,7 @@
 
 package org.apache.stratos.autoscaler.util;
 
+import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -41,11 +42,14 @@ import 
org.apache.stratos.autoscaler.applications.pojo.GroupContext;
 import org.apache.stratos.autoscaler.context.AutoscalerContext;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import 
org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
+import 
org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException;
 import 
org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import 
org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.MonitorFactory;
 import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicyNetworkPartitionReference;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.cloud.controller.stub.domain.DeploymentPolicy;
 import org.apache.stratos.cloud.controller.stub.domain.NetworkPartitionRef;
@@ -551,4 +555,71 @@ public class AutoscalerUtil {
                        }
                }
     }
+    
+    /**
+     * Validates Application Policy against the given application.
+     * @param applicationId the application id against which the application 
policy needs to be validated
+     * @param applicationPolicy the application policy to be validated
+     * @throws InvalidApplicationPolicyException if application policy is not 
valid
+     * @throws RemoteException is anything went wrong while communicating with 
CC to validate network partitions
+     */
+       public static void validateApplicationPolicy(String applicationId, 
ApplicationPolicy applicationPolicy) 
+               throws InvalidApplicationPolicyException, RemoteException {
+       
+       // application policy can't be null
+       if (null == applicationPolicy) {
+                       String msg = "Invalid Application Policy. Cause -> 
Application Policy is null";
+                       log.error(msg);
+                       throw new InvalidApplicationPolicyException(msg);
+               }
+       
+       // application policy should contain at least one network partition 
reference
+       ApplicationPolicyNetworkPartitionReference[] networkPartitionReferences 
= 
+                       applicationPolicy.getNetworkPartitionReferences();
+               if (null == networkPartitionReferences || 
networkPartitionReferences.length == 0) {
+                       String msg = "Invalid Application Policy. "
+                                       + "Cause -> Application Policy is not 
containing any network partition reference";
+                       log.error(msg);
+                       throw new InvalidApplicationPolicyException(msg);
+               }
+       
+       // to count the number of network partitions which are active by default
+       // if the count is 0, we should raise the error
+       int activeByDefaultNetworkPartitionsCount = 0;
+       
+       // validating all network partition references
+       for (ApplicationPolicyNetworkPartitionReference 
applicationPolicyNetworkPartitionReference : networkPartitionReferences) {
+                       
+               // network-partition-id can't be null or empty
+               String networkPartitionId = 
applicationPolicyNetworkPartitionReference.getNetworkPartitionId();
+                       if (null == networkPartitionId || 
networkPartitionId.isEmpty()) {
+                               String msg = String.format("Invalid Application 
Policy. "
+                                               + "Cause -> Invalid 
network-partition-id : %s", networkPartitionId);
+                               log.error(msg);
+                               throw new 
InvalidApplicationPolicyException(msg);
+                       }
+                       
+                       // network partitions should be added already
+                       if (null == 
CloudControllerServiceClient.getInstance().getNetworkPartition(networkPartitionId))
 {
+                               String msg = String.format("Invalid Application 
Policy. "
+                                               + "Cause -> Network partition 
not found for network-partition-id : %s", networkPartitionId);
+                               log.error(msg);
+                               throw new 
InvalidApplicationPolicyException(msg);
+                       }
+                       
+                       //TODO validate application policy against the given 
application
+                       
+                       // counting number of network partitions which are 
active by default
+                       if (true == 
applicationPolicyNetworkPartitionReference.isActiveByDefault()) {
+                               activeByDefaultNetworkPartitionsCount++;
+                       }
+               }
+       
+       // there should be at least one network partition reference which is 
active by default
+       if (activeByDefaultNetworkPartitionsCount == 0) {
+                       String msg = "Invalid Application Policy. Cause -> No 
active by default network partitions found";
+                       log.error(msg);
+                       throw new InvalidApplicationPolicyException(msg);
+               }
+    }
 }

Reply via email to