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

Reply via email to