Fixing issues when deploying and undeploying an application

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

Branch: refs/heads/tenant-isolation
Commit: ea182b4c0d8f0d9a05980ec1bdbf1c1835e80fa7
Parents: 606f663
Author: Dinithi <[email protected]>
Authored: Fri Jul 17 18:03:52 2015 +0530
Committer: Dinithi <[email protected]>
Committed: Fri Jul 17 18:03:52 2015 +0530

----------------------------------------------------------------------
 .../applications/pojo/CartridgeContext.java     |   9 +
 .../autoscaler/pojo/policy/PolicyManager.java   |   5 +
 .../autoscaler/services/AutoscalerService.java  |  23 +-
 .../services/impl/AutoscalerServiceImpl.java    |  42 +-
 .../beans/cartridge/CartridgeReferenceBean.java |  18 +
 .../common/client/AutoscalerServiceClient.java  |  19 +-
 .../impl/StratosManagerServiceImpl.java         |   4 +-
 .../rest/endpoint/api/StratosApiV41.java        |  11 +-
 .../rest/endpoint/api/StratosApiV41Utils.java   |  82 +-
 .../util/converter/ObjectConverter.java         |  11 +-
 .../src/main/resources/AutoscalerService.wsdl   | 414 ++++++----
 .../main/resources/CloudControllerService.wsdl  | 760 +++++++++----------
 .../main/resources/StratosManagerService.wsdl   | 198 ++---
 13 files changed, 893 insertions(+), 703 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/CartridgeContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/CartridgeContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/CartridgeContext.java
index 6a83a84..39e074d 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/CartridgeContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/CartridgeContext.java
@@ -26,6 +26,7 @@ public class CartridgeContext implements Serializable {
     private static final long serialVersionUID = 7782017881026018352L;
 
     private String uuid;
+    private int tenantId;
        private String type;
     private int cartridgeMin;
     private int cartridgeMax;
@@ -39,6 +40,14 @@ public class CartridgeContext implements Serializable {
         this.uuid = uuid;
     }
 
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
+
     public int getCartridgeMin() {
         return cartridgeMin;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/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 45faf41..b574ff6 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
@@ -474,6 +474,11 @@ public class PolicyManager {
         return true;
     }
 
+    /**
+     * Returns the application policy to which the specified id is mapped or 
null
+     *
+     * @return List of all application policies
+     */
     public ApplicationPolicy[] getApplicationPolicies() {
         return applicationPolicyListMap.values().toArray(new 
ApplicationPolicy[0]);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/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 2350c57..3e20dc8 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
@@ -174,12 +174,21 @@ public interface AutoscalerService {
             InvalidApplicationPolicyException, InvalidPolicyException, 
ApplicationPolicyAlreadyExistsException;
 
     /**
-     * Get application policy by application uuid
+     * Get application policy by application id
      *
      * @param applicationPolicyId the application policy id
+     * @param tenantId tenant id
+     * @return {@link ApplicationPolicy} used by the given application
+     */
+    public ApplicationPolicy getApplicationPolicy(String applicationPolicyId, 
int tenantId);
+
+    /**
+     * Get application policy by application uuid
+     *
+     * @param applicationPolicyUuid the application policy uuid
      * @return {@link ApplicationPolicy} used by the given application
      */
-    public ApplicationPolicy getApplicationPolicy(String applicationPolicyId);
+    public ApplicationPolicy getApplicationPolicyByUuid(String 
applicationPolicyUuid);
 
        /**
         *
@@ -348,10 +357,18 @@ public interface AutoscalerService {
      * Get autoscaling policy definition by tenant
      *
      * @param tenantId tenant id
-     * @return Autoscaling policy
+     * @return Array of autoscaling policies for tenant
      */
     public AutoscalePolicy[] getAutoScalingPoliciesByTenant(int tenantId);
 
+    /**
+     * Returns the application policy to which the specified id is mapped or 
null
+     *
+     * @param tenantId Id of the deployment policy
+     * @return Array of application policies for a tenant
+     */
+    public ApplicationPolicy[] getApplicationPoliciesByTenant(int tenantId);
+
 
 
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/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 91a12ac..f3b9ade 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
@@ -976,9 +976,9 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
             log.debug("Application policy definition: " + 
applicationPolicy.toString());
         }
 
-        String applicationPolicyUuid = applicationPolicy.getUuid();
-        if 
(PolicyManager.getInstance().getApplicationPolicy(applicationPolicyUuid) != 
null) {
-            String message = "Application policy already exists: 
[application-policy-uuid] " + applicationPolicyUuid;
+        String applicationPolicyId = applicationPolicy.getId();
+        if 
(PolicyManager.getInstance().getApplicationPolicy(applicationPolicyId) != null) 
{
+            String message = "Application policy already exists: 
[application-policy-id] " + applicationPolicyId;
             log.error(message);
             throw new ApplicationPolicyAlreadyExistsException(message);
         }
@@ -998,8 +998,23 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
     }
 
     @Override
-    public ApplicationPolicy getApplicationPolicy(String 
applicationPolicyUuid) {
-        return 
PolicyManager.getInstance().getApplicationPolicy(applicationPolicyUuid);
+    public ApplicationPolicy getApplicationPolicyByUuid(String 
applicationPolicyUuid) {
+        return 
PolicyManager.getInstance().getApplicationPolicyByUuid(applicationPolicyUuid);
+    }
+
+    @Override
+    public ApplicationPolicy getApplicationPolicy(String applicationPolicyId, 
int tenantId) {
+        ApplicationPolicy[] applicationPolicies = getApplicationPolicies();
+        ApplicationPolicy applicationPolicy = null;
+        if (applicationPolicies != null) {
+            for (ApplicationPolicy applicationPolicy1 : applicationPolicies) {
+                if (applicationPolicy1.getTenantId() == tenantId && 
applicationPolicy1.getId().equals
+                        (applicationPolicyId)) {
+                    applicationPolicy = applicationPolicy1;
+                }
+            }
+        }
+        return applicationPolicy;
     }
 
        @Override
@@ -1065,6 +1080,23 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
         return PolicyManager.getInstance().getApplicationPolicies();
     }
 
+
+    @Override
+    public ApplicationPolicy[] getApplicationPoliciesByTenant(int tenantId) {
+        ApplicationPolicy[] allApplicationPolicies = getApplicationPolicies();
+        List<ApplicationPolicy> applicationPolicies = new 
ArrayList<ApplicationPolicy>();
+
+        if (allApplicationPolicies != null) {
+            for (ApplicationPolicy applicationPolicy : allApplicationPolicies) 
{
+                if (applicationPolicy.getTenantId() == tenantId) {
+                    applicationPolicies.add(applicationPolicy);
+                }
+            }
+        }
+        return applicationPolicies.toArray(new 
ApplicationPolicy[applicationPolicies.size()]);
+    }
+
+
     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/ea182b4c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeReferenceBean.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeReferenceBean.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeReferenceBean.java
index 163bc6c..7a150d9 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeReferenceBean.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeReferenceBean.java
@@ -31,11 +31,21 @@ public class CartridgeReferenceBean implements Serializable 
{
 
     private static final long serialVersionUID = 8968224678298479827L;
 
+    private String uuid;
     private String type;
+    private int tenantId;
     private int cartridgeMin;
     private int cartridgeMax;
     private SubscribableInfo subscribableInfo;
 
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
     public String getType() {
         return type;
     }
@@ -44,6 +54,14 @@ public class CartridgeReferenceBean implements Serializable {
         this.type = type;
     }
 
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
+
     public int getCartridgeMin() {
         return cartridgeMin;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/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 1e6c0c8..026b5e0 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
@@ -140,18 +140,27 @@ public class AutoscalerServiceClient {
         stub.addApplicationPolicy(applicationPolicy);
     }
 
-    public ApplicationPolicy getApplicationPolicy(String 
applicationPolicyUuid) throws RemoteException {
-        return stub.getApplicationPolicy(applicationPolicyUuid);
+    public ApplicationPolicy getApplicationPolicyByUuid(String 
applicationPolicyUuid) throws RemoteException {
+        return stub.getApplicationPolicyByUuid(applicationPolicyUuid);
     }
 
-       public ApplicationPolicy getApplicationPolicyByTenant(String 
applicationPolicyId,int tenantId) throws RemoteException {
-               return 
stub.getApplicationPolicyByTenant(applicationPolicyId,tenantId);
-       }
+    public ApplicationPolicy getApplicationPolicy(String applicationPolicyId, 
int tenantId) throws RemoteException {
+        return stub.getApplicationPolicy(applicationPolicyId, tenantId);
+    }
+
+    public ApplicationPolicy getApplicationPolicyByTenant(String 
applicationPolicyId,
+                                                          int tenantId) throws 
RemoteException {
+        return stub.getApplicationPolicyByTenant(applicationPolicyId, 
tenantId);
+    }
 
     public ApplicationPolicy[] getApplicationPolicies() throws RemoteException 
{
         return stub.getApplicationPolicies();
     }
 
+    public ApplicationPolicy[] getApplicationPoliciesByTenant(int tenantId) 
throws RemoteException {
+        return stub.getApplicationPoliciesByTenant(tenantId);
+    }
+
     public void updateApplicationPolicy(ApplicationPolicy applicationPolicy)
             throws RemoteException, 
AutoscalerServiceApplicatioinPolicyNotExistsExceptionException,
             AutoscalerServiceRemoteExceptionException, 
AutoscalerServiceInvalidApplicationPolicyExceptionException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/services/impl/StratosManagerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/services/impl/StratosManagerServiceImpl.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/services/impl/StratosManagerServiceImpl.java
index 2864886..30f56b3 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/services/impl/StratosManagerServiceImpl.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/services/impl/StratosManagerServiceImpl.java
@@ -107,11 +107,11 @@ public class StratosManagerServiceImpl implements 
StratosManagerService {
     }
 
     @Override
-    public void removeUsedCartridgesInCartridgeGroups(String 
cartridgeGroupUuid, String[] cartridgeNames) {
+    public void removeUsedCartridgesInCartridgeGroups(String 
cartridgeGroupUuid, String[] cartridgeNamesUuid) {
         Lock lock = null;
         try {
             lock = 
StratosManagerContext.getInstance().acquireCartridgesCartridgeGroupsWriteLock();
-            
StratosManagerContext.getInstance().removeUsedCartridgesInCartridgeGroups(cartridgeGroupUuid,
 cartridgeNames);
+            
StratosManagerContext.getInstance().removeUsedCartridgesInCartridgeGroups(cartridgeGroupUuid,
 cartridgeNamesUuid);
             StratosManagerContext.getInstance().persist();
         } finally {
             if (lock != null) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index b3e7e40..6aa89ea 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -491,7 +491,6 @@ public class StratosApiV41 extends AbstractApi {
     @Produces("application/json")
     @Consumes("application/json")
     @AuthorizationAction("/permission/admin/stratos/cartridgeGroups/manage")
-    @SuperTenantService(true)
     public Response addCartridgeGroup(
             CartridgeGroupBean cartridgeGroupBean) throws RestAPIException {
 
@@ -550,6 +549,9 @@ public class StratosApiV41 extends AbstractApi {
         } catch (RestAPIException e) {
             return Response.status(Response.Status.NOT_FOUND).entity(new 
ResponseMessageBean(
                     ResponseMessageBean.ERROR, "Cartridge group not 
found")).build();
+        } catch (CloudControllerServiceCartridgeNotFoundExceptionException e) {
+            return Response.status(Response.Status.NOT_FOUND).entity(new 
ResponseMessageBean(
+                    ResponseMessageBean.ERROR, "Cartridge not found")).build();
         }
     }
 
@@ -615,15 +617,17 @@ public class StratosApiV41 extends AbstractApi {
     @Produces("application/json")
     @Consumes("application/json")
     @AuthorizationAction("/permission/admin/stratos/cartridgeGroups/manage")
-    @SuperTenantService(true)
     public Response removeServiceGroup(
             @PathParam("name") String name) throws RestAPIException {
         try {
                PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
-            
StratosApiV41Utils.removeServiceGroup(name,carbonContext.getTenantId());
+            StratosApiV41Utils.removeServiceGroup(name, 
carbonContext.getTenantId());
         } catch (AutoscalerServiceCartridgeGroupNotFoundExceptionException e) {
             return Response.status(Response.Status.NOT_FOUND).entity(new 
ResponseMessageBean(
                     ResponseMessageBean.ERROR, "Cartridge group not 
found")).build();
+        } catch (CloudControllerServiceCartridgeNotFoundExceptionException e) {
+            return Response.status(Response.Status.NOT_FOUND).entity(new 
ResponseMessageBean(
+                    ResponseMessageBean.ERROR, "Cartridge not found")).build();
         }
         return Response.ok().entity(new 
ResponseMessageBean(ResponseMessageBean.SUCCESS,
                 String.format("Cartridge Group deleted successfully: 
[cartridge-group] %s", name)))
@@ -1348,7 +1352,6 @@ public class StratosApiV41 extends AbstractApi {
     @Produces("application/json")
     @Consumes("application/json")
     @AuthorizationAction("/permission/admin/stratos/applications/manage")
-    @SuperTenantService(true)
     public Response removeApplication(
             @PathParam("applicationId") String applicationId) throws 
RestAPIException {
         ApplicationBean applicationDefinition = 
StratosApiV41Utils.getApplication(applicationId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/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 7e3564d..a1ff800 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
@@ -710,8 +710,9 @@ public class StratosApiV41Utils {
                 log.error(msg);
                 throw new ApplicationPolicyIsEmptyException(msg);
             }
-
-            NetworkPartition[] existingNetworkPartitions = 
cloudServiceClient.getNetworkPartitions();
+            PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
+            NetworkPartition[] existingNetworkPartitions = 
cloudServiceClient.getNetworkPartitionsByTenant
+                    (carbonContext.getTenantId());
             String[] networkPartitions = 
applicationPolicy.getNetworkPartitions();
             String[] networkPartitionsUuid = new 
String[applicationPolicy.getNetworkPartitions().length];
             for (int i = 0; i < networkPartitions.length; i++) {
@@ -780,30 +781,17 @@ public class StratosApiV41Utils {
 
         ApplicationPolicy[] applicationPolicies = null;
         AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        ApplicationPolicy[] applicationPoliciesForTenantArray = new 
ApplicationPolicy[0];
         if (autoscalerServiceClient != null) {
             try {
-                applicationPolicies = 
autoscalerServiceClient.getApplicationPolicies();
-                if (applicationPolicies != null) {
-                    PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
-                    List<ApplicationPolicy> applicationPoliciesForTenant = new 
ArrayList<ApplicationPolicy>();
-                    for (ApplicationPolicy applicationPolicy : 
applicationPolicies) {
-                        if (carbonContext.getTenantId() == 
applicationPolicy.getTenantId()) {
-                            
applicationPoliciesForTenant.add(applicationPolicy);
-                        }
-                    }
-                    if (applicationPoliciesForTenant.size() != 0) {
-                        applicationPoliciesForTenantArray = 
applicationPoliciesForTenant.toArray(new
-                                
ApplicationPolicy[applicationPoliciesForTenant.size()]);
-                    }
-                }
+                PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
+                applicationPolicies = 
autoscalerServiceClient.getApplicationPoliciesByTenant(carbonContext.getTenantId());
             } catch (RemoteException e) {
                 String msg = "Could not get application policies" + 
e.getLocalizedMessage();
                 log.error(msg, e);
                 throw new RestAPIException(msg);
             }
         }
-        return 
ObjectConverter.convertASStubApplicationPoliciesToApplicationPolicies(applicationPoliciesForTenantArray);
+        return 
ObjectConverter.convertASStubApplicationPoliciesToApplicationPolicies(applicationPolicies);
     }
 
     /**
@@ -827,30 +815,23 @@ public class StratosApiV41Utils {
             throw new ApplicationPolicyIdIsEmptyException(msg);
         }
 
+        ApplicationPolicyBean applicationPolicyBean;
         try {
-            AutoscalerServiceClient serviceClient = 
AutoscalerServiceClient.getInstance();
-            ApplicationPolicy[] applicationPolicies = 
serviceClient.getApplicationPolicies();
-            ApplicationPolicy applicationPolicy = null;
-
             PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
-            for (ApplicationPolicy applicationPolicy1 : applicationPolicies) {
-                if (carbonContext.getTenantId() == 
applicationPolicy1.getTenantId()) {
-                    if 
(applicationPolicy1.getId().equals(applicationPolicyId)) {
-                        applicationPolicy = applicationPolicy1;
-                    }
-                }
-            }
+            
org.apache.stratos.autoscaler.stub.deployment.policy.ApplicationPolicy 
applicationPolicy =
+                    
AutoscalerServiceClient.getInstance().getApplicationPolicy(applicationPolicyId,
+                            carbonContext.getTenantId());
             if (applicationPolicy == null) {
                 return null;
             }
-
-            return 
ObjectConverter.convertASStubApplicationPolicyToApplicationPolicy(applicationPolicy);
+            applicationPolicyBean = 
ObjectConverter.convertASStubApplicationPolicyToApplicationPolicy(applicationPolicy);
         } catch (RemoteException e) {
-            String message = String.format("Could not get application policy 
[application-policy-id] %s",
-                    applicationPolicyId);
-            log.error(message);
-            throw new RestAPIException(message, e);
+            String msg = "Could not find application policy: 
[application-policy-id] " + applicationPolicyId;
+            log.error(msg, e);
+            throw new RestAPIException(msg);
         }
+
+        return applicationPolicyBean;
     }
 
     /**
@@ -1122,7 +1103,7 @@ public class StratosApiV41Utils {
      * @throws RestAPIException
      */
     public static void updateServiceGroup(CartridgeGroupBean 
cartridgeGroup,int tenantId) throws RestAPIException,
-            InvalidCartridgeGroupDefinitionException {
+            InvalidCartridgeGroupDefinitionException, 
CloudControllerServiceCartridgeNotFoundExceptionException {
         try {
                AutoscalerServiceClient autoscalerServiceClient = 
AutoscalerServiceClient.getInstance();
                
cartridgeGroup.setUuid(autoscalerServiceClient.getServiceGroupByTenant(cartridgeGroup.getName(),tenantId).getUuid());
@@ -1317,7 +1298,7 @@ public class StratosApiV41Utils {
      * @param name Group Name
      * @throws RestAPIException
      */
-    public static void removeServiceGroup(String name,int tenantId) throws 
RestAPIException, AutoscalerServiceCartridgeGroupNotFoundExceptionException {
+    public static void removeServiceGroup(String name,int tenantId) throws 
RestAPIException, AutoscalerServiceCartridgeGroupNotFoundExceptionException, 
CloudControllerServiceCartridgeNotFoundExceptionException {
 
         AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient();
         StratosManagerServiceClient smServiceClient = 
getStratosManagerServiceClient();
@@ -1355,7 +1336,7 @@ public class StratosApiV41Utils {
             List<String> cartridgeList = new ArrayList<String>();
             findCartridgesInServiceGroup(serviceGroup, cartridgeList);
             String[] cartridgeNames = cartridgeList.toArray(new 
String[cartridgeList.size()]);
-            smServiceClient.removeUsedCartridgesInCartridgeGroups(name, 
cartridgeNames);
+            
smServiceClient.removeUsedCartridgesInCartridgeGroups(serviceGroupUuid, 
cartridgeNames);
 
         } catch (RemoteException e) {
             throw new RestAPIException("Could not remove cartridge groups", e);
@@ -1370,25 +1351,30 @@ public class StratosApiV41Utils {
      * Find Cartridges In ServiceGroup
      *
      * @param serviceGroup serviceGroup
-     * @param cartridges   List of cartridges
+     * @param cartridgeNames   List of cartridges
      */
-    private static void findCartridgesInServiceGroup(ServiceGroup 
serviceGroup, List<String> cartridges) {
+    private static void findCartridgesInServiceGroup(ServiceGroup 
serviceGroup, List<String> cartridgeNames) throws
+            RemoteException, 
CloudControllerServiceCartridgeNotFoundExceptionException {
 
-        if (serviceGroup == null || cartridges == null) {
+        if (serviceGroup == null || cartridgeNames == null) {
             return;
         }
-
+        String cartridgeUuid;
+        PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
         if (serviceGroup.getCartridges() != null) {
-            for (String cartridge : serviceGroup.getCartridges()) {
-                if (cartridge != null && (!cartridges.contains(cartridge))) {
-                    cartridges.add(cartridge);
+            for (String cartridgeName : serviceGroup.getCartridges()) {
+                cartridgeUuid = 
CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeName,
+                        carbonContext.getTenantId()).getUuid();
+                if (cartridgeName != null && 
(!cartridgeNames.contains(cartridgeUuid))) {
+
+                    cartridgeNames.add(cartridgeUuid);
                 }
             }
         }
 
         if (serviceGroup.getGroups() != null) {
             for (ServiceGroup seGroup : serviceGroup.getGroups()) {
-                findCartridgesInServiceGroup(seGroup, cartridges);
+                findCartridgesInServiceGroup(seGroup, cartridgeNames);
             }
         }
     }
@@ -1615,8 +1601,8 @@ public class StratosApiV41Utils {
         }
 
         for (CartridgeReferenceBean cartridgeReferenceBean : 
cartridgeReferenceBeans) {
-            if (cartridgeReferenceBean != null && 
!cartridges.contains(cartridgeReferenceBean.getType())) {
-                cartridges.add(cartridgeReferenceBean.getType());
+            if (cartridgeReferenceBean != null && 
!cartridges.contains(cartridgeReferenceBean.getUuid())) {
+                cartridges.add(cartridgeReferenceBean.getUuid());
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/ea182b4c/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 707bd68..ee368e0 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
@@ -1211,6 +1211,7 @@ public class ObjectConverter {
                     groupDefinition.setAlias(groupContext.getAlias());
                     
groupDefinition.setGroupMaxInstances(groupContext.getGroupMaxInstances());
                     
groupDefinition.setGroupMinInstances(groupContext.getGroupMinInstances());
+                    groupDefinition.setTenantId(groupContext.getTenantId());
                     groupDefinition.setName(groupContext.getName());
                     
groupDefinition.setGroups(convertStubGroupContextsToGroupDefinitions(groupContext.getGroupContexts()));
                     
groupDefinition.setCartridges(convertStubCartridgeContextsToCartridgeReferenceBeans(
@@ -1284,6 +1285,8 @@ public class ObjectConverter {
             for (CartridgeContext cartridgeContext : cartridgeContexts) {
                 if (cartridgeContext != null) {
                     CartridgeReferenceBean cartridgeDefinition = new 
CartridgeReferenceBean();
+                    cartridgeDefinition.setUuid(cartridgeContext.getUuid());
+                    
cartridgeDefinition.setTenantId(cartridgeContext.getTenantId());
                     cartridgeDefinition.setType(cartridgeContext.getType());
                     
cartridgeDefinition.setCartridgeMin(cartridgeContext.getCartridgeMin());
                     
cartridgeDefinition.setCartridgeMax(cartridgeContext.getCartridgeMax());
@@ -1404,8 +1407,11 @@ public class ObjectConverter {
             context.setCartridgeMax(cartridgeDefinition.getCartridgeMax());
             context.setCartridgeMin(cartridgeDefinition.getCartridgeMin());
             context.setType(cartridgeDefinition.getType());
+            context.setUuid(cartridgeDefinition.getUuid());
+            context.setTenantId(tenantId);
                try {
-                       
context.setUuid(CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeDefinition.getType(),tenantId).getUuid());
+                       
context.setUuid(CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeDefinition
+                        .getType(), tenantId).getUuid());
                } catch (RemoteException e) {
                        throw new RestAPIException(e);
                } catch 
(CloudControllerServiceCartridgeNotFoundExceptionException e) {
@@ -1591,7 +1597,8 @@ public class ObjectConverter {
 
             // Cartridges
             if (groupDefinition.getCartridges() != null) {
-                
groupContext.setCartridgeContexts(convertCartridgeReferenceBeansToStubCartridgeContexts(groupDefinition.getCartridges(),-1234));
+                
groupContext.setCartridgeContexts(convertCartridgeReferenceBeansToStubCartridgeContexts
+                        (groupDefinition.getCartridges(), tenantId));
             }
             groupContexts[i++] = groupContext;
         }

Reply via email to