Fixed the topology population issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5e711969 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5e711969 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5e711969 Branch: refs/heads/tenant-isolation Commit: 5e711969e2c42817f4c2be7f7062ef81ed054f28 Parents: b7f6ac7 Author: Gayan Gunarathne <[email protected]> Authored: Thu Jul 23 17:29:15 2015 +0530 Committer: Gayan Gunarathne <[email protected]> Committed: Thu Jul 23 17:29:15 2015 +0530 ---------------------------------------------------------------------- .../autoscaler/services/AutoscalerService.java | 10 +- .../services/impl/AutoscalerServiceImpl.java | 33 +- .../common/client/AutoscalerServiceClient.java | 5 + .../rest/endpoint/api/StratosApiV41Utils.java | 37 +- .../util/converter/ObjectConverter.java | 4 +- .../src/main/resources/AutoscalerService.wsdl | 535 +++++++++++-------- 6 files changed, 363 insertions(+), 261 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/5e711969/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java index 3e20dc8..d8fa9e5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java @@ -27,6 +27,7 @@ import org.apache.stratos.autoscaler.exception.application.ApplicationDefinition import org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException; import org.apache.stratos.autoscaler.exception.application.InvalidServiceGroupException; import org.apache.stratos.autoscaler.exception.CartridgeNotFoundException; +import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException; import org.apache.stratos.autoscaler.exception.policy.*; import org.apache.stratos.autoscaler.pojo.ServiceGroup; import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy; @@ -369,7 +370,14 @@ public interface AutoscalerService { */ public ApplicationPolicy[] getApplicationPoliciesByTenant(int tenantId); - + /** + * Validate the network partition with the application + * @param networkPartitionId Network partition id + * @param tenantId tenant id + * @return + */ + public boolean validateNetworkPartitionWithApplication(String networkPartitionId,int tenantId) + throws PartitionValidationException; } http://git-wip-us.apache.org/repos/asf/stratos/blob/5e711969/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 f3b9ade..e7bdc3f 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 @@ -38,6 +38,7 @@ import org.apache.stratos.autoscaler.exception.*; import org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException; import org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException; import org.apache.stratos.autoscaler.exception.application.InvalidServiceGroupException; +import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException; import org.apache.stratos.autoscaler.exception.policy.*; import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor; import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor; @@ -1096,8 +1097,38 @@ public class AutoscalerServiceImpl implements AutoscalerService { return applicationPolicies.toArray(new ApplicationPolicy[applicationPolicies.size()]); } + @Override + public boolean validateNetworkPartitionWithApplication(String networkPartitionId, int tenantId) + throws PartitionValidationException { + + ApplicationContext[] applicationContexts = getApplicationsByTenant(tenantId); + if (applicationContexts != null) { + for (ApplicationContext applicationContext : applicationContexts) { + if (applicationContext != null) { + String[] networkPartitions = getApplicationNetworkPartitions( + applicationContext.getApplicationUuid()); + if (networkPartitions != null) { + for (int i = 0; i < networkPartitions.length; i++) { + if (networkPartitions[i].equals(networkPartitionId)) { + String message = String.format("Cannot remove the network partition: " + + "[network-partition-id] %s since it is used in " + + "application: [application-uuid] %s [application-id] %s", + networkPartitionId, + applicationContext.getApplicationUuid(), + applicationContext.getApplicationId()); + log.error(message); + throw new PartitionValidationException(message); + } + } + } + } + } + } + + return true; + } - private void terminateAllMembersAndClustersForcefully(String applicationId) { + private void terminateAllMembersAndClustersForcefully(String applicationId) { if (StringUtils.isEmpty(applicationId)) { throw new IllegalArgumentException("Application Id cannot be empty"); } http://git-wip-us.apache.org/repos/asf/stratos/blob/5e711969/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java index 026b5e0..21bde9f 100644 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java @@ -285,4 +285,9 @@ public class AutoscalerServiceClient { return stub.getAutoScalingPoliciesByTenant(tenantId); } + public boolean validateNetworkPartitionWithApplication(String networkPartitionId, int tenantId) + throws RemoteException, AutoscalerServicePartitionValidationExceptionException { + return stub.validateNetworkPartitionWithApplication(networkPartitionId,tenantId); + } + } http://git-wip-us.apache.org/repos/asf/stratos/blob/5e711969/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 d7b6f9e..866144e 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 @@ -2815,30 +2815,10 @@ public class StratosApiV41Utils { try { AutoscalerServiceClient autoscalerServiceClient = AutoscalerServiceClient.getInstance(); - ApplicationContext[] applicationContexts = autoscalerServiceClient.getApplicationsByTenant(tenantId); - if (applicationContexts != null) { - for (ApplicationContext applicationContext : applicationContexts) { - if (applicationContext != null) { - String[] networkPartitions = AutoscalerServiceClient.getInstance(). - getApplicationNetworkPartitions(applicationContext.getApplicationUuid()); - if (networkPartitions != null) { - for (int i = 0; i < networkPartitions.length; i++) { - if (networkPartitions[i].equals(networkPartitionId)) { - String message = String.format("Cannot remove the network partition: " + - "[network-partition-id] %s since it is used in " + - "application: [application-uuid] %s [application-id] %s", - networkPartitionId, applicationContext.getApplicationUuid(), - applicationContext.getApplicationId()); - log.error(message); - throw new RestAPIException(message); - } - } - } - } - } - } - String networkPartitionUuid = null; + autoscalerServiceClient.validateNetworkPartitionWithApplication(networkPartitionId, tenantId); + + String networkPartitionUuid = null; PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); for (NetworkPartitionBean networkPartitionBean : getNetworkPartitions()) { if (networkPartitionBean.getTenantId() == carbonContext.getTenantId() && @@ -2890,11 +2870,12 @@ public class StratosApiV41Utils { CloudControllerServiceClient serviceClient = CloudControllerServiceClient.getInstance(); serviceClient.removeNetworkPartition(networkPartitionId, tenantId); - } catch (AutoscalerServiceAutoScalerExceptionException e) { - String message = e.getMessage(); - log.error(message); - throw new RestAPIException(message, e); - } catch (RemoteException e) { + } catch (AutoscalerServicePartitionValidationExceptionException e) { + String message = e.getMessage(); + log.error(message); + throw new RestAPIException(message, e); + } + catch (RemoteException e) { String message = e.getMessage(); log.error(message); throw new RestAPIException(message, e); http://git-wip-us.apache.org/repos/asf/stratos/blob/5e711969/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java index 7ed7b84..bd4d57e 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java @@ -1729,7 +1729,7 @@ public class ObjectConverter { } ApplicationInfoBean applicationBean = new ApplicationInfoBean(); - applicationBean.setId(application.getId()); + applicationBean.setId(application.getUniqueIdentifier()); applicationBean.setName(application.getName()); applicationBean.setStatus(application.getStatus().name()); applicationBean.setDescription(application.getDescription()); @@ -1753,7 +1753,7 @@ public class ObjectConverter { for (ApplicationInstance applicationInstance : applicationInstancesInTopology) { ApplicationInstanceBean instance = new ApplicationInstanceBean(); - instance.setInstanceId(applicationInstance.getAlias()); + instance.setInstanceId(applicationInstance.getInstanceId()); instance.setApplicationId(application.getUniqueIdentifier()); instance.setParentInstanceId(applicationInstance.getParentId()); instance.setStatus(applicationInstance.getStatus().toString());
