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