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/tenantisolation Commit: 3d167d400e76b9afd8019b2761b0db340cd015bd Parents: 3487d95 Author: Dinithi <[email protected]> Authored: Thu Jul 2 14:07:36 2015 +0530 Committer: Dinithi <[email protected]> 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);
