Tenant isolation - Application policy modified

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

Branch: refs/heads/tenant-isolation
Commit: 36099c6b7923c2a5fbe90aa08866c3272e4cb275
Parents: af8b38d
Author: Dinithi <[email protected]>
Authored: Wed Jul 8 15:25:22 2015 +0530
Committer: Dinithi <[email protected]>
Committed: Wed Jul 8 15:25:22 2015 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/util/AutoscalerUtil.java |  20 +-
 .../rest/endpoint/api/StratosApiV41Utils.java   |  40 +-
 .../src/main/resources/AutoscalerService.wsdl   | 632 ++++++++---------
 .../main/resources/CloudControllerService.wsdl  | 684 +++++++++----------
 4 files changed, 693 insertions(+), 683 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/36099c6b/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 4e7a4ae..1851064 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
@@ -35,8 +35,8 @@ import 
org.apache.stratos.autoscaler.context.AutoscalerContext;
 import org.apache.stratos.autoscaler.context.InstanceContext;
 import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
-import 
org.apache.stratos.autoscaler.context.partition.network.ParentLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext;
+import 
org.apache.stratos.autoscaler.context.partition.network.ParentLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.application.*;
 import 
org.apache.stratos.autoscaler.exception.policy.ApplicatioinPolicyNotExistsException;
@@ -659,15 +659,23 @@ public class AutoscalerUtil {
             }
 
             // network partitions should be added already
-            NetworkPartition networkPartition = 
CloudControllerServiceClient.getInstance()
-                    .getNetworkPartition(networkPartitionId);
-            if (null == networkPartition) {
+            NetworkPartition[] networkPartitions = 
CloudControllerServiceClient.getInstance().getNetworkPartitions();
+            NetworkPartition networkPartitionForTenant = null;
+            if (networkPartitions != null) {
+                for (NetworkPartition networkPartition : networkPartitions) {
+                    if (applicationPolicy.getTenantId() == 
networkPartition.getTenantId() && networkPartition.getUuid()
+                            .equals(networkPartitionId)) {
+                        networkPartitionForTenant = networkPartition;
+                    }
+                }
+            }
+            if (networkPartitionForTenant == null) {
                 String msg = String.format("Network partition not found: 
[network-partition-id]  %s in " +
-                        "[application-policy-id] %s", networkPartitionId, 
applicationPolicy.getUuid());
+                        "[application-policy-uuid] %s [application-policy-id] 
%s", networkPartitionId,
+                        applicationPolicy.getUuid(), 
applicationPolicy.getId());
                 log.error(msg);
                 throw new InvalidApplicationPolicyException(msg);
             }
-
         }
 
         // if networkPartitionGroups property is set, we need to validate that 
too

http://git-wip-us.apache.org/repos/asf/stratos/blob/36099c6b/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 2b1c7b9..4e7f1ff 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
@@ -692,20 +692,19 @@ public class StratosApiV41Utils {
                 throw new ApplicationPolicyIsEmptyException(msg);
             }
 
-
-               NetworkPartition[] 
existingNetworkPartitions=cloudServiceClient.getNetworkPartitions();
-               String[] networkPartitions= 
applicationPolicy.getNetworkPartitions();
-                       String[] networkPartitionsUuid=new 
String[applicationPolicy.getNetworkPartitions().length];
-               for(int i=0;i< networkPartitions.length;i++) {
-                       for (NetworkPartition networkPartition : 
existingNetworkPartitions) {
-                               if 
(existingNetworkPartitions[i].getId().equals(networkPartition.getId())&&(existingNetworkPartitions[i].getTenantId()==networkPartition.getTenantId()))
-                               {
-                                       networkPartitionsUuid[i] = 
networkPartition.getUuid();
-                               }
-                       }
-               }
-                       
applicationPolicy.setNetworkPartitionsUuid(networkPartitionsUuid);
-               serviceClient.addApplicationPolicy(applicationPolicy);
+            NetworkPartition[] existingNetworkPartitions = 
cloudServiceClient.getNetworkPartitions();
+            String[] networkPartitions = 
applicationPolicy.getNetworkPartitions();
+            String[] networkPartitionsUuid = new 
String[applicationPolicy.getNetworkPartitions().length];
+            for (int i = 0; i < networkPartitions.length; i++) {
+                for (NetworkPartition networkPartition : 
existingNetworkPartitions) {
+                    if (networkPartitions[i].equals(networkPartition.getId()) 
&& (applicationPolicyBean.getTenantId()
+                            == networkPartition.getTenantId())) {
+                        networkPartitionsUuid[i] = networkPartition.getUuid();
+                    }
+                }
+            }
+            applicationPolicy.setNetworkPartitionsUuid(networkPartitionsUuid);
+            serviceClient.addApplicationPolicy(applicationPolicy);
 
 
         } catch (RemoteException e) {
@@ -859,6 +858,7 @@ public class StratosApiV41Utils {
         AutoscalerServiceClient serviceClient = getAutoscalerServiceClient();
         ApplicationPolicyBean applicationPolicyBean;
         try {
+
             applicationPolicyBean = getApplicationPolicy(applicationPolicyId);
             
serviceClient.removeApplicationPolicy(applicationPolicyBean.getUuid());
         } catch (RemoteException e) {
@@ -2870,12 +2870,14 @@ public class StratosApiV41Utils {
                 for (ApplicationPolicy applicationPolicy : 
applicationPolicies) {
 
                     for (String networkPartition :
-                            applicationPolicy.getNetworkPartitions()) {
+                            applicationPolicy.getNetworkPartitionsUuid()) {
 
-                        if (networkPartition.equals(networkPartitionId)) {
-                            String message = String.format("Cannot remove the 
network partition %s, since" +
-                                            " it is used in application policy 
%s", networkPartitionId,
-                                    applicationPolicy.getId());
+                        if (networkPartition.equals(networkPartitionUuid)) {
+                            String message = String.format("Cannot remove the 
network partition: " +
+                                            "[network-partition-uuid] %s 
[network-partition-id] %s since it is used " +
+                                            "in application policy: 
[application-policy-uuid] %s " +
+                                            "[application-policy-id] %s", 
networkPartitionUuid, networkPartitionId,
+                                    applicationPolicy.getUuid(), 
applicationPolicy.getId());
                             log.error(message);
                             throw new RestAPIException(message);
                         }

Reply via email to