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

Reply via email to