Fixing issues found when adding a cartridge group
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c8b1d11d Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c8b1d11d Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c8b1d11d Branch: refs/heads/tenant-isolation Commit: c8b1d11dd0645a75e787c12fa806ef0f9a93d920 Parents: 75940f8 Author: Dinithi <[email protected]> Authored: Tue Jul 14 16:26:44 2015 +0530 Committer: Dinithi <[email protected]> Committed: Tue Jul 14 16:26:44 2015 +0530 ---------------------------------------------------------------------- .../parser/DefaultApplicationParser.java | 66 +- .../applications/pojo/GroupContext.java | 18 + .../impl/CloudControllerServiceImpl.java | 35 +- .../cartridge/CartridgeGroupReferenceBean.java | 19 +- .../client/StratosManagerServiceClient.java | 8 +- .../manager/context/StratosManagerContext.java | 8 +- .../rest/endpoint/api/StratosApiV41Utils.java | 29 +- .../util/converter/ObjectConverter.java | 38 +- .../src/main/resources/AutoscalerService.wsdl | 614 ++++++++--------- .../main/resources/StratosManagerService.wsdl | 679 +++++++++---------- 10 files changed, 778 insertions(+), 736 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java index aaaaa2f..33d767c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java @@ -405,15 +405,15 @@ public class DefaultApplicationParser implements ApplicationParser { String[] arrStartUp = startupOrderComponent.split("\\."); if (arrStartUp[0].equals("cartridge")) { String cartridgeAlias = arrStartUp[1]; - String dependentCartridgeType = - findCartridgeTypeFromAlias(cartridgeContextList, cartridgeAlias); - if (StringUtils.isBlank(dependentCartridgeType)) { + String dependentCartridgeUuid = + getCartridgeUuid(cartridgeContextList, cartridgeAlias); + if (StringUtils.isBlank(dependentCartridgeUuid)) { throw new CartridgeNotFoundException( String.format("Could not find dependent cartridge for " + "application: %s cartridge-alias: %s", appId, cartridgeAlias)); } - Cartridge dependencyCartridge = getCartridgeByTenant(dependentCartridgeType, tenantId); - ClusterDataHolder dataHolder = clusterDataMapByType.get(dependentCartridgeType); + Cartridge dependencyCartridge = getCartridge(dependentCartridgeUuid); + ClusterDataHolder dataHolder = clusterDataMapByType.get(dependentCartridgeUuid); if (dataHolder != null) { if (!dataHolder.getClusterId().equals(clusterId)) { @@ -480,7 +480,7 @@ public class DefaultApplicationParser implements ApplicationParser { * @param alias * @return */ - private String findCartridgeTypeFromAlias(List<CartridgeContext> cartridgeContextList, String alias) { + private String getCartridgeUuid(List<CartridgeContext> cartridgeContextList, String alias) { for (CartridgeContext cartridgeContext : cartridgeContextList) { if (alias.equals(cartridgeContext.getSubscribableInfoContext().getAlias())) { return cartridgeContext.getUuid(); @@ -571,7 +571,7 @@ public class DefaultApplicationParser implements ApplicationParser { Map<String, Group> groupAliasToGroup = new HashMap<String, Group>(); for (GroupContext groupCtxt : groupCtxts) { - ServiceGroup serviceGroup = getServiceGroup(groupCtxt.getName()); + ServiceGroup serviceGroup = getServiceGroup(groupCtxt.getUuid()); if (serviceGroup == null) { log.error("Cartridge group not found group-name: " + groupCtxt.getName()); throw new CartridgeGroupNotFoundException("Cartridge group not found group-name: " @@ -729,7 +729,7 @@ public class DefaultApplicationParser implements ApplicationParser { DependencyOrder dependencyOrder = new DependencyOrder(); // create the Dependency Ordering - String[] startupOrders = getStartupOrderForGroup(groupCtxt.getName(), serviceGroup); + String[] startupOrders = getStartupOrderForGroup(groupCtxt.getUuid(), serviceGroup); Set<StartupOrder> setStartUpOrder = null; if (startupOrders != null) { setStartUpOrder = ParserUtils.convertStartupOrder(startupOrders, groupCtxt); @@ -741,7 +741,7 @@ public class DefaultApplicationParser implements ApplicationParser { } } - String[] scaleDependents = getScaleDependentForGroup(groupCtxt.getName(), serviceGroup); + String[] scaleDependents = getScaleDependentForGroup(groupCtxt.getUuid(), serviceGroup); if (scaleDependents != null) { dependencyOrder.setScalingDependents(ParserUtils.convertScalingDependentList(scaleDependents, groupCtxt)); } else { @@ -751,7 +751,7 @@ public class DefaultApplicationParser implements ApplicationParser { } } - dependencyOrder.setTerminationBehaviour(getTerminationBehaviour(groupCtxt.getName(), serviceGroup)); + dependencyOrder.setTerminationBehaviour(getTerminationBehaviour(groupCtxt.getUuid(), serviceGroup)); group.setDependencyOrder(dependencyOrder); Map<String, Map<String, ClusterDataHolder>> clusterDataMap; @@ -793,19 +793,21 @@ public class DefaultApplicationParser implements ApplicationParser { * Find the startup order * * @param serviceGroup GroupContext with Group defintion information + * @param serviceGroupUuid Group Uuid * @return Set of Startup Orders which are defined in the Group * @throws ApplicationDefinitionException */ - private String[] getStartupOrderForGroup(String serviceGroupName, ServiceGroup serviceGroup) throws ApplicationDefinitionException { + private String[] getStartupOrderForGroup(String serviceGroupUuid, ServiceGroup serviceGroup) throws + ApplicationDefinitionException { - ServiceGroup nestedServiceGroup = getNestedServiceGroup(serviceGroupName, serviceGroup); + ServiceGroup nestedServiceGroup = getNestedServiceGroup(serviceGroupUuid, serviceGroup); if (nestedServiceGroup == null) { - handleError("Service Group Definition not found for name " + serviceGroupName); + handleError("Service Group Definition not found for name " + serviceGroupUuid); } if (log.isDebugEnabled()) { - log.debug("parsing application ... getStartupOrderForGroup: " + serviceGroupName); + log.debug("parsing application ... getStartupOrderForGroup: " + serviceGroupUuid); } assert nestedServiceGroup != null; @@ -834,16 +836,16 @@ public class DefaultApplicationParser implements ApplicationParser { * @return Set of Startup Orders which are defined in the Group * @throws ApplicationDefinitionException */ - private String[] getScaleDependentForGroup(String serviceGroupName, ServiceGroup serviceGroup) throws ApplicationDefinitionException { + private String[] getScaleDependentForGroup(String serviceGroupUuid, ServiceGroup serviceGroup) throws ApplicationDefinitionException { - ServiceGroup nestedServiceGroup = getNestedServiceGroup(serviceGroupName, serviceGroup); + ServiceGroup nestedServiceGroup = getNestedServiceGroup(serviceGroupUuid, serviceGroup); if (nestedServiceGroup == null) { - handleError("Service Group Definition not found for name " + serviceGroupName); + handleError("Service Group Definition not found for name " + serviceGroupUuid); } if (log.isDebugEnabled()) { - log.debug("parsing application ... getScaleDependentForGroup: " + serviceGroupName); + log.debug("parsing application ... getScaleDependentForGroup: " + serviceGroupUuid); } assert nestedServiceGroup != null; @@ -868,16 +870,16 @@ public class DefaultApplicationParser implements ApplicationParser { /** * Get kill behaviour related to a Group * - * @param serviceGroupName Group name + * @param serviceGroupUuid Group Uuid * @return String indicating the kill behavior * @throws ApplicationDefinitionException if an error occurs */ - private String getTerminationBehaviour(String serviceGroupName, ServiceGroup serviceGroup) throws ApplicationDefinitionException { + private String getTerminationBehaviour(String serviceGroupUuid, ServiceGroup serviceGroup) throws ApplicationDefinitionException { - ServiceGroup nestedServiceGroup = getNestedServiceGroup(serviceGroupName, serviceGroup); + ServiceGroup nestedServiceGroup = getNestedServiceGroup(serviceGroupUuid, serviceGroup); if (nestedServiceGroup == null) { - handleError("Service Group Definition not found for name " + serviceGroupName); + handleError("Service Group Definition not found for name " + serviceGroupUuid); } assert nestedServiceGroup != null; @@ -889,13 +891,13 @@ public class DefaultApplicationParser implements ApplicationParser { } - private ServiceGroup getNestedServiceGroup(String serviceGroupName, ServiceGroup serviceGroup) { - if (serviceGroup.getUuid().equals(serviceGroupName)) { + private ServiceGroup getNestedServiceGroup(String serviceGroupUuid, ServiceGroup serviceGroup) { + if (serviceGroup.getUuid().equals(serviceGroupUuid)) { return serviceGroup; } else if (serviceGroup.getGroups() != null) { ServiceGroup[] groups = serviceGroup.getGroups(); for (ServiceGroup sg : groups) { - return getNestedServiceGroup(serviceGroupName, sg); + return getNestedServiceGroup(serviceGroupUuid, sg); } } return null; @@ -905,16 +907,16 @@ public class DefaultApplicationParser implements ApplicationParser { /** * Retrieves deployed service group * - * @param serviceGroupName name of the Service Group + * @param serviceGroupUuid Service Group uuid * @return ServiceGroup instance if exists * @throws ApplicationDefinitionException if no Service Group found for the given serviceGroupName */ - private ServiceGroup getServiceGroup(String serviceGroupName) throws ApplicationDefinitionException { + private ServiceGroup getServiceGroup(String serviceGroupUuid) throws ApplicationDefinitionException { try { - return RegistryManager.getInstance().getServiceGroup(serviceGroupName); + return RegistryManager.getInstance().getServiceGroup(serviceGroupUuid); } catch (Exception e) { - String errorMsg = "Could not read cartridge group: " + serviceGroupName; + String errorMsg = "Could not read cartridge group: " + serviceGroupUuid; log.error(errorMsg, e); throw new ApplicationDefinitionException(errorMsg, e); } @@ -996,12 +998,12 @@ public class DefaultApplicationParser implements ApplicationParser { return token; } - private Cartridge getCartridge(String cartridgeType) throws ApplicationDefinitionException { + private Cartridge getCartridge(String cartridgeUuid) throws ApplicationDefinitionException { try { - return CloudControllerServiceClient.getInstance().getCartridge(cartridgeType); + return CloudControllerServiceClient.getInstance().getCartridge(cartridgeUuid); } catch (Exception e) { - log.error("Unable to get the cartridge: " + cartridgeType, e); + log.error("Unable to get the cartridge: " + cartridgeUuid, e); throw new ApplicationDefinitionException(e); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/GroupContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/GroupContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/GroupContext.java index 2a344de..50e3dd6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/GroupContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/GroupContext.java @@ -25,6 +25,8 @@ public class GroupContext implements Serializable { private static final long serialVersionUID = 1595266728968445926L; + private String uuid; + private int tenantId; private String name; private String alias; @@ -39,6 +41,22 @@ public class GroupContext implements Serializable { private GroupContext[] groupContexts; + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public int getTenantId() { + return tenantId; + } + + public void setTenantId(int tenantId) { + this.tenantId = tenantId; + } + public String getName() { return name; } http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java index 0a019b3..c937ffe 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java @@ -772,24 +772,23 @@ public class CloudControllerServiceImpl implements CloudControllerService { } @Override - public Cartridge getCartridgeByTenant(String cartridgeType,int tenantId) throws CartridgeNotFoundException { - // get the list of cartridges registered - Collection<Cartridge> cartridges = CloudControllerContext.getInstance().getCartridges(); - if (cartridges == null) { - log.info("No registered Cartridge found."); - return null; - } - for (Cartridge cartridge : cartridges) { - if (log.isDebugEnabled()) { - log.debug(cartridge); - } - if(cartridge.getType().equals(cartridgeType)&&(cartridge.getTenantId()==tenantId)){ - return cartridge; - } - - } - - String msg = "Could not find cartridge: [cartridge-type] [tenant-id] " + cartridgeType +tenantId; + public Cartridge getCartridgeByTenant(String cartridgeType, int tenantId) throws CartridgeNotFoundException { + // get the list of cartridges registered + Collection<Cartridge> cartridges = CloudControllerContext.getInstance().getCartridges(); + if (cartridges == null || cartridges.size() == 0) { + log.info("No registered Cartridge found."); + return null; + } + for (Cartridge cartridge : cartridges) { + if (log.isDebugEnabled()) { + log.debug(cartridge); + } + if (cartridge.getType().equals(cartridgeType) && (cartridge.getTenantId() == tenantId)) { + return cartridge; + } + } + + String msg = "Could not find cartridge: [cartridge-type] [tenant-id] " + cartridgeType + tenantId; throw new CartridgeNotFoundException(msg); } http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java index 128fc05..3870624 100644 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java @@ -27,7 +27,8 @@ import java.util.List; public class CartridgeGroupReferenceBean implements Serializable { private static final long serialVersionUID = 7261380706841894892L; - + private String uuid; + private int tenantId; private String name; private String alias; private int groupMinInstances; @@ -36,6 +37,22 @@ public class CartridgeGroupReferenceBean implements Serializable { private List<CartridgeReferenceBean> cartridges; private List<CartridgeGroupReferenceBean> groups; + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public int getTenantId() { + return tenantId; + } + + public void setTenantId(int tenantId) { + this.tenantId = tenantId; + } + public String getName() { return name; } http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java index 94455b5..7cef469 100644 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java @@ -159,12 +159,12 @@ public class StratosManagerServiceClient { /** * Adds the used cartridges in cartridge groups to cache. * - * @param cartridgeGroupUuid the cartridge group UUID - * @param cartridgeNames the cartridge names + * @param cartridgeGroupUuid the cartridge group uuid + * @param cartridgeUuids the cartridge uuids * @throws RemoteException the remote exception */ - public void addUsedCartridgesInCartridgeGroups(String cartridgeGroupUuid, String[] cartridgeNames) throws RemoteException { - stub.addUsedCartridgesInCartridgeGroups(cartridgeGroupUuid, cartridgeNames); + public void addUsedCartridgesInCartridgeGroups(String cartridgeGroupUuid, String[] cartridgeUuids) throws RemoteException { + stub.addUsedCartridgesInCartridgeGroups(cartridgeGroupUuid, cartridgeUuids); } /** http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java index c4ce7d9..5443cbd 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java @@ -149,12 +149,12 @@ public class StratosManagerContext implements Serializable { return acquireWriteLock(SM_CARTRIDGEGROUPS_APPLICATIONS_WRITE_LOCK); } - public void addUsedCartridgesInCartridgeGroups(String cartridgeGroupNameUuid, String[] cartridgeNamesUuid) { - if (cartridgeNamesUuid == null) { + public void addUsedCartridgesInCartridgeGroups(String cartridgeGroupUuid, String[] cartridgeUuids) { + if (cartridgeUuids == null) { return; } - for (String cartridgeNameUuid : cartridgeNamesUuid) { + for (String cartridgeNameUuid : cartridgeUuids) { Set<String> cartridgeGroupNames = null; if (cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeNameUuid)) { cartridgeGroupNames = cartridgeTypeToCartridgeGroupsMap.get(cartridgeNameUuid); @@ -162,7 +162,7 @@ public class StratosManagerContext implements Serializable { cartridgeGroupNames = new HashSet<String>(); cartridgeTypeToCartridgeGroupsMap.put(cartridgeNameUuid, cartridgeGroupNames); } - cartridgeGroupNames.add(cartridgeGroupNameUuid); + cartridgeGroupNames.add(cartridgeGroupUuid); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/c8b1d11d/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 df816f3..da56bec 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 @@ -1034,7 +1034,7 @@ public class StratosApiV41Utils { } List<String> cartridgeTypes = new ArrayList<String>(); - String[] cartridgeNames = null; + String[] cartridgeUuids = null; List<String> groupNames; String[] cartridgeGroupNames; @@ -1053,16 +1053,17 @@ public class StratosApiV41Utils { CloudControllerServiceClient ccServiceClient = getCloudControllerServiceClient(); - cartridgeNames = new String[cartridgeTypes.size()]; + cartridgeUuids = new String[cartridgeTypes.size()]; int j = 0; for (String cartridgeType : cartridgeTypes) { try { - if (ccServiceClient.getCartridgeByTenant(cartridgeType,serviceGroupDefinition.getTenantId()) == null) { + Cartridge cartridge = ccServiceClient.getCartridgeByTenant(cartridgeType,serviceGroupDefinition.getTenantId()); + if (cartridge == null) { // cartridge is not deployed, can't continue log.error("Invalid cartridge found in cartridge group " + cartridgeType); throw new InvalidCartridgeException(); } else { - cartridgeNames[j] = cartridgeType; + cartridgeUuids[j] = cartridge.getUuid(); j++; } } catch (RemoteException e) { @@ -1112,7 +1113,7 @@ public class StratosApiV41Utils { asServiceClient.addServiceGroup(serviceGroup); // Add cartridge group elements to SM cache - done after service group has been added StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); - smServiceClient.addUsedCartridgesInCartridgeGroups(serviceGroupDefinition.getUuid(), cartridgeNames); + smServiceClient.addUsedCartridgesInCartridgeGroups(serviceGroupDefinition.getUuid(), cartridgeUuids); } catch (RemoteException e) { String message = "Could not add the cartridge group: " + serviceGroupDefinition.getUuid(); @@ -3824,4 +3825,22 @@ public class StratosApiV41Utils { throw new RestAPIException(message, e); } } + + /** + * Get Service Group uuid by TenantId + * + * @return String Uuid + */ + public static String getServiceGroupUuidByTenant(String serviceGroupName, + int tenantId) throws RestAPIException { + try { + AutoscalerServiceClient autoscalerServiceClient = AutoscalerServiceClient.getInstance(); + return (autoscalerServiceClient.getServiceGroupByTenant(serviceGroupName, tenantId).getUuid()); + } 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/c8b1d11d/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 ca90da7..eeafcc0 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 @@ -20,6 +20,7 @@ package org.apache.stratos.rest.endpoint.util.converter; import org.apache.commons.lang.StringUtils; +import org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy; import org.apache.stratos.autoscaler.stub.deployment.policy.ApplicationPolicy; import org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy; import org.apache.stratos.autoscaler.stub.partition.NetworkPartitionRef; @@ -58,6 +59,7 @@ import org.apache.stratos.messaging.domain.instance.GroupInstance; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.messaging.domain.topology.KubernetesService; import org.apache.stratos.messaging.domain.topology.Port; +import org.apache.stratos.rest.endpoint.api.StratosApiV41Utils; import org.apache.stratos.rest.endpoint.exception.RestAPIException; import org.apache.stratos.rest.endpoint.exception.ServiceGroupDefinitionException; import org.wso2.carbon.stratos.common.beans.TenantInfoBean; @@ -1132,7 +1134,8 @@ public class ObjectConverter { // top level Groups if (applicationDefinition.getComponents().getGroups() != null) { componentContext.setGroupContexts( - convertGroupDefinitionsToStubGroupContexts(applicationDefinition.getComponents().getGroups())); + convertGroupDefinitionsToStubGroupContexts(applicationDefinition.getComponents().getGroups(), + applicationDefinition.getTenantId())); } // top level dependency information if (applicationDefinition.getComponents().getDependencies() != null) { @@ -1141,8 +1144,8 @@ public class ObjectConverter { } // top level cartridge context information if (applicationDefinition.getComponents().getCartridges() != null) { - componentContext.setCartridgeContexts( - convertCartridgeReferenceBeansToStubCartridgeContexts(applicationDefinition.getComponents().getCartridges(),applicationDefinition.getTenantId())); + componentContext.setCartridgeContexts(convertCartridgeReferenceBeansToStubCartridgeContexts + (applicationDefinition.getComponents().getCartridges(), applicationDefinition.getTenantId())); } applicationContext.setComponents(componentContext); } @@ -1414,9 +1417,12 @@ public class ObjectConverter { infoContext.setAutoscalingPolicy(subscribableInfo.getAutoscalingPolicy()); infoContext.setDeploymentPolicy(subscribableInfo.getDeploymentPolicy()); try { - String autoScalerUuid= AutoscalerServiceClient.getInstance().getAutoScalePolicyForTenant(subscribableInfo.getAutoscalingPolicy(), - tenantId).getUuid(); - infoContext.setAutoscalingPolicyUuid(autoScalerUuid); + AutoscalePolicy autoscalePolicy = AutoscalerServiceClient.getInstance().getAutoScalePolicyForTenant + (subscribableInfo.getAutoscalingPolicy(), tenantId); + if (autoscalePolicy != null) { + String autoScalerUuid= autoscalePolicy.getUuid(); + infoContext.setAutoscalingPolicyUuid(autoScalerUuid); + } } catch (RemoteException e) { throw new RestAPIException(e); } @@ -1424,10 +1430,14 @@ public class ObjectConverter { infoContext.setDependencyAliases(subscribableInfo.getDependencyAliases()); try { - String deploymentPolicyUuid = AutoscalerServiceClient.getInstance().getDeploymentPolicyForTenant( - subscribableInfo.getDeploymentPolicy(),tenantId).getUuid(); - infoContext.setDeploymentPolicyUuid(deploymentPolicyUuid); - } catch (RemoteException e) { + DeploymentPolicy deploymentPolicy = AutoscalerServiceClient.getInstance().getDeploymentPolicyForTenant( + subscribableInfo.getDeploymentPolicy(), tenantId); + if (deploymentPolicy != null) { + String deploymentPolicyUuid = deploymentPolicy.getUuid(); + infoContext.setDeploymentPolicyUuid(deploymentPolicyUuid); + } + + } catch (RemoteException e) { throw new RestAPIException(e); } @@ -1539,7 +1549,7 @@ public class ObjectConverter { } private static org.apache.stratos.autoscaler.stub.pojo.GroupContext[] - convertGroupDefinitionsToStubGroupContexts(List<CartridgeGroupReferenceBean> groupDefinitions) + convertGroupDefinitionsToStubGroupContexts(List<CartridgeGroupReferenceBean> groupDefinitions, int tenantId) throws RestAPIException { if (groupDefinitions == null) { @@ -1550,6 +1560,9 @@ public class ObjectConverter { int i = 0; for (CartridgeGroupReferenceBean groupDefinition : groupDefinitions) { GroupContext groupContext = new GroupContext(); + groupContext.setUuid(StratosApiV41Utils.getServiceGroupUuidByTenant(groupDefinition.getName(), + tenantId)); + groupDefinition.setTenantId(tenantId); groupContext.setName(groupDefinition.getName()); groupContext.setAlias(groupDefinition.getAlias()); groupContext.setGroupMaxInstances(groupDefinition.getGroupMaxInstances()); @@ -1558,7 +1571,8 @@ public class ObjectConverter { // Groups if (groupDefinition.getGroups() != null) { - groupContext.setGroupContexts(convertGroupDefinitionsToStubGroupContexts(groupDefinition.getGroups())); + groupContext.setGroupContexts(convertGroupDefinitionsToStubGroupContexts(groupDefinition.getGroups(), + tenantId)); } // Cartridges
