You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/07/06 13:35:56 UTC
[16/24] stratos git commit: Validating Deploymant policies,
Autoscaling policies,
Application policies and Network partitions as per the modifications
Validating Deploymant policies, Autoscaling policies, Application policies and Network partitions as per the modifications
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/3d167d40
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/3d167d40
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/3d167d40
Branch: refs/heads/tenant-isolation
Commit: 3d167d400e76b9afd8019b2761b0db340cd015bd
Parents: 3487d95
Author: Dinithi <di...@wso2.com>
Authored: Thu Jul 2 14:07:36 2015 +0530
Committer: Dinithi <di...@wso2.com>
Committed: Thu Jul 2 14:07:36 2015 +0530
----------------------------------------------------------------------
.../autoscaler/pojo/policy/PolicyManager.java | 74 ++++++++++++++++----
.../autoscaler/registry/RegistryManager.java | 6 +-
.../services/impl/AutoscalerServiceImpl.java | 35 +++++++--
.../impl/CloudControllerServiceImpl.java | 13 +++-
.../rest/endpoint/api/StratosApiV41Utils.java | 4 +-
5 files changed, 108 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/3d167d40/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
index 129227e..07cde0d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
@@ -138,7 +138,7 @@ public class PolicyManager {
}
/**
- * Retrieve deployment policies from registy and add it to in memory model
+ * Retrieve deployment policies from registry and add it to in memory model
*
* @param deploymentPolicy
* @throws InvalidDeploymentPolicyException
@@ -173,16 +173,16 @@ public class PolicyManager {
/**
* Remove deployment policy from in memory map and registry.
*
- * @param deploymentPolicyID
+ * @param deploymentPolicyId Deployment policy Id
* @throws InvalidPolicyException
*/
- public void removeDeploymentPolicy(String deploymentPolicyID) {
- removeDeploymentPolicyFromMap(deploymentPolicyID);
- RegistryManager.getInstance().removeDeploymentPolicy(deploymentPolicyID);
+ public void removeDeploymentPolicy(String deploymentPolicyId) {
+ removeDeploymentPolicyFromMap(deploymentPolicyId);
+ RegistryManager.getInstance().removeDeploymentPolicy(deploymentPolicyId);
if (log.isInfoEnabled()) {
log.info(String.format("Deployment policy is removed successfully: [deployment-policy-id] %s",
- deploymentPolicyID));
+ deploymentPolicyId));
}
}
@@ -269,11 +269,27 @@ public class PolicyManager {
/**
* Returns the autoscale policy to which the specified id is mapped or null
*
- * @param id
+ * @param uuid Autoscale policy UUID
* @return
*/
- public AutoscalePolicy getAutoscalePolicy(String id) {
- return autoscalePolicyListMap.get(id);
+ public AutoscalePolicy getAutoscalePolicy(String uuid) {
+ return autoscalePolicyListMap.get(uuid);
+ }
+
+ /**
+ * Returns the autoscale policy to which the specified id is mapped or null
+ *
+ * @param id Autoscle policy Id
+ * @return
+ */
+ public AutoscalePolicy getAutoscalePolicyById(String id) {
+ AutoscalePolicy autoscalePolicy = null;
+ for (AutoscalePolicy autoscalePolicy1 : getAutoscalePolicyList()) {
+ if (autoscalePolicy1.getId().equals(id)) {
+ autoscalePolicy = autoscalePolicy1;
+ }
+ }
+ return autoscalePolicy;
}
@@ -340,11 +356,27 @@ public class PolicyManager {
/**
* Returns the deployment policy to which the specified id is mapped or null
*
- * @param id
+ * @param uuid UUID of the deployment policy
* @return
*/
- public DeploymentPolicy getDeploymentPolicy(String id) {
- return deploymentPolicyListMap.get(id);
+ public DeploymentPolicy getDeploymentPolicy(String uuid) {
+ return deploymentPolicyListMap.get(uuid);
+ }
+
+ /**
+ * Returns the deployment policy to which the specified id is mapped or null
+ *
+ * @param id Id of the deployment policy
+ * @return
+ */
+ public DeploymentPolicy getDeploymentPolicyById(String id) {
+ DeploymentPolicy deploymentPolicy = null;
+ for (DeploymentPolicy deploymentPolicy1 : getDeploymentPolicies()) {
+ if (deploymentPolicy1.getId().equals(id)) {
+ deploymentPolicy = deploymentPolicy1;
+ }
+ }
+ return deploymentPolicy;
}
@@ -394,13 +426,29 @@ public class PolicyManager {
/**
* Retruns an ApplicationPolicy of a given application
*
- * @param applicationPolicyId
+ * @param applicationPolicyId Application policy Id
* @return
*/
public ApplicationPolicy getApplicationPolicy(String applicationPolicyId) {
return applicationPolicyListMap.get(applicationPolicyId);
}
+ /**
+ * Returns the deployment policy to which the specified id is mapped or null
+ *
+ * @param id Id of the deployment policy
+ * @return
+ */
+ public ApplicationPolicy getApplicationPolicyById(String id) {
+ ApplicationPolicy applicationPolicy = null;
+ for (ApplicationPolicy applicationPolicy1 : getApplicationPolicies()) {
+ if (applicationPolicy1.getId().equals(id)) {
+ applicationPolicy = applicationPolicy1;
+ }
+ }
+ return applicationPolicy;
+ }
+
public void updateApplicationPolicyInInformationModel(ApplicationPolicy applicationPolicy) {
if (applicationPolicyListMap.containsKey(applicationPolicy.getUuid())) {
if (log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/3d167d40/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 15a8107..57d318f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -640,13 +640,13 @@ public class RegistryManager {
}
}
- public void removeDeploymentPolicy(String deploymentPolicyID) {
+ public void removeDeploymentPolicy(String deploymentPolicyId) {
String resourcePath = AutoscalerConstants.AUTOSCALER_RESOURCE + AutoscalerConstants.DEPLOYMENT_POLICY_RESOURCE + "/" +
- deploymentPolicyID;
+ deploymentPolicyId;
this.delete(resourcePath);
if (log.isDebugEnabled()) {
log.debug(String.format("Deployment policy deleted from registry: [id] %s",
- deploymentPolicyID));
+ deploymentPolicyId));
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/3d167d40/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 3f3c071..960dc29 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
@@ -90,6 +90,14 @@ public class AutoscalerServiceImpl implements AutoscalerService {
@Override
public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy)
throws AutoScalingPolicyAlreadyExistException {
+ String autoscalePolicyId = autoscalePolicy.getId();
+ if (PolicyManager.getInstance().getAutoscalePolicyById(autoscalePolicyId) != null && PolicyManager
+ .getInstance().getAutoscalePolicyById(autoscalePolicyId).getTenantId() == autoscalePolicy.getTenantId
+ ()) {
+ String message = "Autoscaling policy already exists: [autoscaling-policy-id] " + autoscalePolicyId;
+ log.error(message);
+ throw new AutoScalingPolicyAlreadyExistException(message);
+ }
return PolicyManager.getInstance().addAutoscalePolicy(autoscalePolicy);
}
@@ -887,8 +895,16 @@ public class AutoscalerServiceImpl implements AutoscalerService {
log.debug("Application policy definition: " + applicationPolicy.toString());
}
- String applicationPolicyId = applicationPolicy.getUuid();
- if (PolicyManager.getInstance().getApplicationPolicy(applicationPolicyId) != null) {
+ String applicationPolicyUuid = applicationPolicy.getUuid();
+ if (PolicyManager.getInstance().getApplicationPolicy(applicationPolicyUuid) != null) {
+ String message = "Application policy already exists: [application-policy-uuid] " + applicationPolicyUuid;
+ log.error(message);
+ throw new ApplicationPolicyAlreadyExistsException(message);
+ }
+
+ String applicationPolicyId = applicationPolicy.getId();
+ if (PolicyManager.getInstance().getApplicationPolicyById(applicationPolicyId) != null && PolicyManager
+ .getInstance().getApplicationPolicyById(applicationPolicyId).getTenantId() == applicationPolicy.getTenantId()) {
String message = "Application policy already exists: [application-policy-id] " + applicationPolicyId;
log.error(message);
throw new ApplicationPolicyAlreadyExistsException(message);
@@ -1041,17 +1057,26 @@ public class AutoscalerServiceImpl implements AutoscalerService {
log.debug("Deployment policy definition: " + deploymentPolicy.toString());
}
- String deploymentPolicyId = deploymentPolicy.getUuid();
- if (PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId) != null) {
+ String deploymentPolicyUuid = deploymentPolicy.getUuid();
+ if (PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyUuid) != null) {
+ String message = "Deployment policy already exists: [deployment-policy-uuid] " + deploymentPolicyUuid;
+ log.error(message);
+ throw new DeploymentPolicyAlreadyExistsException(message);
+ }
+
+ String deploymentPolicyId = deploymentPolicy.getId();
+ if (PolicyManager.getInstance().getDeploymentPolicyById(deploymentPolicyId) != null && PolicyManager
+ .getInstance().getDeploymentPolicyById(deploymentPolicyId).getTenantId() == deploymentPolicy.getTenantId()) {
String message = "Deployment policy already exists: [deployment-policy-id] " + deploymentPolicyId;
log.error(message);
throw new DeploymentPolicyAlreadyExistsException(message);
}
+
// Add cartridge to the cloud controller context and persist
PolicyManager.getInstance().addDeploymentPolicy(deploymentPolicy);
if (log.isInfoEnabled()) {
- log.info("Successfully added deployment policy: [deployment-policy-id] " + deploymentPolicyId);
+ log.info("Successfully added deployment policy: [deployment-policy-uuid] " + deploymentPolicyUuid);
}
return true;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/3d167d40/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index 17a523b..0e754c8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -38,6 +38,7 @@ import org.apache.stratos.common.Property;
import org.apache.stratos.common.domain.LoadBalancingIPType;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.apache.stratos.messaging.domain.topology.*;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
import java.net.MalformedURLException;
import java.net.URL;
@@ -62,7 +63,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
private CloudControllerContext cloudControllerContext = CloudControllerContext.getInstance();
private ExecutorService executorService;
-
+ private int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
public CloudControllerServiceImpl() {
executorService = StratosThreadPool.getExecutorService("cloud.controller.instance.manager.thread.pool", 50);
@@ -1453,7 +1454,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
InvalidNetworkPartitionException {
handleNullObject(networkPartition, "Network Partition is null");
- handleNullObject(networkPartition.getUuid(), "Network Partition ID is null");
+ handleNullObject(networkPartition.getUuid(), "Network Partition Id is null");
if (log.isInfoEnabled()) {
log.info(String.format("Adding network partition: [network-partition-uuid] %s",
@@ -1468,6 +1469,14 @@ public class CloudControllerServiceImpl implements CloudControllerService {
throw new NetworkPartitionAlreadyExistsException(message);
}
+ String networkPartitionId = networkPartition.getId();
+ if (cloudControllerContext.getNetworkPartition(networkPartitionId) != null && cloudControllerContext
+ .getNetworkPartition(networkPartitionId).getTenantId() == networkPartition.getTenantId()) {
+ String message = "Network partition already exists: [network-partition-id] " + networkPartitionId;
+ log.error(message);
+ throw new NetworkPartitionAlreadyExistsException(message);
+ }
+
if (networkPartition.getPartitions() != null && networkPartition.getPartitions().length != 0) {
for (Partition partition : networkPartition.getPartitions()) {
if (partition != null) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/3d167d40/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 817a9de..466dfb1 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -832,8 +832,10 @@ public class StratosApiV41Utils {
}
AutoscalerServiceClient serviceClient = getAutoscalerServiceClient();
+ ApplicationPolicyBean applicationPolicyBean;
try {
- serviceClient.removeApplicationPolicy(applicationPolicyId);
+ applicationPolicyBean = getApplicationPolicy(applicationPolicyId);
+ serviceClient.removeApplicationPolicy(applicationPolicyBean.getUuid());
} catch (RemoteException e) {
String msg = "Could not remove application policy. " + e.getLocalizedMessage();
log.error(msg, e);