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

Reply via email to