You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/02/27 08:24:27 UTC
stratos git commit: fixing an issue in parse deployment policy method
in AS
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 <rr...@gmail.com>
Authored: Fri Feb 27 11:38:46 2015 +0530
Committer: R-Rajkumar <rr...@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);
+ }
+ }
}