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