Repository: stratos
Updated Branches:
  refs/heads/tenant-isolation 92547545b -> 8ac13e17b


Update the cartridge flow with tenant isolation


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

Branch: refs/heads/tenant-isolation
Commit: 8ac13e17b3a41c65a9a86334a72cf85e76dc3cd2
Parents: 9254754
Author: Gayan Gunarathne <[email protected]>
Authored: Tue Jul 7 13:46:16 2015 +0530
Committer: Gayan Gunarathne <[email protected]>
Committed: Tue Jul 7 13:46:16 2015 +0530

----------------------------------------------------------------------
 .../parser/DefaultApplicationParser.java        |  14 +-
 .../services/CloudControllerService.java        |   2 +-
 .../impl/CloudControllerServiceImpl.java        |  26 +++-
 .../beans/cartridge/CartridgeGroupBean.java     |  18 +++
 .../client/CloudControllerServiceClient.java    |   6 +-
 .../client/StratosManagerServiceClient.java     |   6 +-
 .../manager/context/StratosManagerContext.java  | 148 +++++++++----------
 .../rest/endpoint/api/StratosApiV40Utils.java   |   2 +-
 .../rest/endpoint/api/StratosApiV41.java        |  13 +-
 .../rest/endpoint/api/StratosApiV41Utils.java   |  29 ++--
 10 files changed, 150 insertions(+), 114 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/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 d0f8514..7248fa5 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
@@ -354,7 +354,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
         Map<String, ClusterDataHolder> clusterDataMap = new HashMap<String, 
ClusterDataHolder>();
         Map<String, ClusterDataHolder> clusterDataMapByType = new 
HashMap<String, ClusterDataHolder>();
 
-        createClusterDataMap(appId, cartridgeContextList, clusterDataMap, 
clusterDataMapByType);
+        createClusterDataMap(appId, cartridgeContextList, clusterDataMap, 
clusterDataMapByType,tenantId);
 
         for (CartridgeContext cartridgeContext : cartridgeContextList) {
             List<String> dependencyClusterIDs = new ArrayList<String>();
@@ -364,7 +364,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
             SubscribableInfoContext subscribableInfoContext = 
cartridgeContext.getSubscribableInfoContext();
             String subscriptionAlias = subscribableInfoContext.getAlias();
 
-            Cartridge cartridge = getCartridge(cartridgeType);
+            Cartridge cartridge = getCartridge(cartridgeType,tenantId);
             if (cartridge == null) {
                 throw new CartridgeNotFoundException("Cartridge not found " + 
cartridgeType);
             }
@@ -410,7 +410,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
                                         String.format("Could not find 
dependent cartridge for " +
                                                 "application: %s 
cartridge-alias: %s", appId, cartridgeAlias));
                             }
-                            Cartridge dependencyCartridge = 
getCartridge(dependentCartridgeType);
+                            Cartridge dependencyCartridge = 
getCartridge(dependentCartridgeType,tenantId);
                             ClusterDataHolder dataHolder = 
clusterDataMapByType.get(dependentCartridgeType);
 
                             if (dataHolder != null) {
@@ -489,7 +489,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
 
     private void createClusterDataMap(String applicationId,
                                       List<CartridgeContext> 
cartridgeContextList,
-                                      Map<String, ClusterDataHolder> 
clusterDataMap, Map<String, ClusterDataHolder> clusterDataMapByType)
+                                      Map<String, ClusterDataHolder> 
clusterDataMap, Map<String, ClusterDataHolder> clusterDataMapByType,int 
tenantId)
             throws ApplicationDefinitionException {
         for (CartridgeContext cartridgeContext : cartridgeContextList) {
 
@@ -498,7 +498,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
             String subscriptionAlias = subscribableInfoContext.getAlias();
 
             // check if a cartridge with relevant type is already deployed. 
else, can't continue
-            Cartridge cartridge = getCartridge(cartridgeType);
+            Cartridge cartridge = getCartridge(cartridgeType,tenantId);
             if (cartridge == null) {
                 handleError("No deployed Cartridge found with type [ " + 
cartridgeType +
                         " ] for Composite Application");
@@ -991,10 +991,10 @@ public class DefaultApplicationParser implements 
ApplicationParser {
         return token;
     }
 
-    private Cartridge getCartridge(String cartridgeType) throws 
ApplicationDefinitionException {
+    private Cartridge getCartridge(String cartridgeType,int tenantId) throws 
ApplicationDefinitionException {
 
         try {
-            return 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType);
+            return 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType,tenantId);
         } catch (Exception e) {
             log.error("Unable to get the cartridge: " + cartridgeType, e);
             throw new ApplicationDefinitionException(e);

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
index 169c665..a7b9117 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
@@ -213,7 +213,7 @@ public interface CloudControllerService {
      * @throws 
org.apache.stratos.cloud.controller.exception.CartridgeNotFoundException if 
there is no registered
      *                                                                         
         cartridge with this type.
      */
-    Cartridge getCartridge(String cartridgeType) throws 
CartridgeNotFoundException;
+    Cartridge getCartridge(String cartridgeType,int tenantId) throws 
CartridgeNotFoundException;
 
     /**
      * Calling this method will result in returning the types of {@link 
org.apache.stratos.cloud.controller.domain

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/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 13aa76f..2c80fd1 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
@@ -761,13 +761,25 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
     }
 
     @Override
-    public Cartridge getCartridge(String cartridgeType) throws 
CartridgeNotFoundException {
-        Cartridge cartridge = 
CloudControllerContext.getInstance().getCartridge(cartridgeType);
-        if (cartridge != null) {
-            return cartridge;
-        }
-
-        String msg = "Could not find cartridge: [cartridge-type] " + 
cartridgeType;
+    public Cartridge getCartridge(String cartridgeType,int tenantId) throws 
CartridgeNotFoundException {
+           // get the list of cartridges registered
+           Collection<Cartridge> cartridges = 
CloudControllerContext.getInstance().getCartridges();
+        Cartridge selectedCartridge=null;
+           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;
         throw new CartridgeNotFoundException(msg);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java
index 3fe85df..e75f7c8 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupBean.java
@@ -30,10 +30,12 @@ public class CartridgeGroupBean implements Serializable {
 
     private static final long serialVersionUID = 4696832597498594267L;
 
+       private String uuid;
     private String name;
     private List<CartridgeGroupBean> groups;
     private List<String> cartridges;
     private DependencyBean dependencies;
+       private int tenantId;
 
     public String getName() {
         return name;
@@ -66,4 +68,20 @@ public class CartridgeGroupBean implements Serializable {
     public void setGroups(List<CartridgeGroupBean> groups) {
         this.groups = 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;
+       }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
index 8944564..fb931b5 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
@@ -92,8 +92,8 @@ public class CloudControllerServiceClient {
         stub.updateCartridge(cartridgeConfig);
     }
 
-    public void removeCartridge(String cartridgeType) throws RemoteException, 
CloudControllerServiceInvalidCartridgeTypeExceptionException {
-        stub.removeCartridge(cartridgeType);
+    public void removeCartridge(String cartridgeTypeUuid) throws 
RemoteException, CloudControllerServiceInvalidCartridgeTypeExceptionException {
+        stub.removeCartridge(cartridgeTypeUuid);
     }
 
     public String[] getServiceGroupSubGroups(String name) throws 
RemoteException, CloudControllerServiceInvalidServiceGroupExceptionException {
@@ -116,7 +116,7 @@ public class CloudControllerServiceClient {
         return stub.getCartridges();
     }
 
-    public Cartridge getCartridge(String cartridgeType) throws RemoteException,
+    public Cartridge getCartridge(String cartridgeType,int tenantId) throws 
RemoteException,
             CloudControllerServiceCartridgeNotFoundExceptionException {
         return stub.getCartridge(cartridgeType);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/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 909d52e..fcafc0e 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
@@ -203,12 +203,12 @@ public class StratosManagerServiceClient {
     /**
      * Validates whether a cartridge can be removed.
      *
-     * @param cartridgeName the cartridge name
+     * @param cartridgeNameUuid the cartridge name
      * @return true, if successful
      * @throws RemoteException the remote exception
      */
-    public boolean canCartridgeBeRemoved(String cartridgeName) throws 
RemoteException {
-        return stub.canCartridgeBeRemoved(cartridgeName);
+    public boolean canCartridgeBeRemoved(String cartridgeNameUuid) throws 
RemoteException {
+        return stub.canCartridgeBeRemoved(cartridgeNameUuid);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/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 299f2fd..c4ce7d9 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
@@ -56,26 +56,26 @@ public class StratosManagerContext implements Serializable {
     private static final Log log = 
LogFactory.getLog(StratosManagerContext.class);
 
     /**
-     * Key - cartridge type
-     * Value - list of cartridgeGroupNames
+     * Key - cartridge type uuid
+     * Value - list of cartridgeGroupNames uuid
      */
-    private Map<String, Set<String>> cartridgeTypeToCartridgeGroupsMap;
+    private Map<String,Set<String>> cartridgeTypeToCartridgeGroupsMap;
 
     /**
-     * Key - cartridge type
-     * Value - list of ApplicationNames
+     * Key - cartridge type uuid
+     * Value - list of ApplicationNames uuid
      */
     private Map<String, Set<String>> cartridgeTypeToApplicationsMap;
 
     /**
-     * Key - cartridge group name
-     * Value - list of cartridgeGroupNames
+     * Key - cartridge group name uuid
+     * Value - list of cartridgeGroupNames uuid
      */
     private Map<String, Set<String>> cartridgeGroupToCartridgeSubGroupsMap;
 
     /**
-     * Key - cartridge group name
-     * Value - list of ApplicationNames
+     * Key - cartridge group name uuid
+     * Value - list of ApplicationNames uuid
      */
     private Map<String, Set<String>> cartridgeGroupToApplicationsMap;
 
@@ -149,46 +149,46 @@ public class StratosManagerContext implements 
Serializable {
         return acquireWriteLock(SM_CARTRIDGEGROUPS_APPLICATIONS_WRITE_LOCK);
     }
 
-    public void addUsedCartridgesInCartridgeGroups(String cartridgeGroupName, 
String[] cartridgeNames) {
-        if (cartridgeNames == null) {
+    public void addUsedCartridgesInCartridgeGroups(String 
cartridgeGroupNameUuid, String[] cartridgeNamesUuid) {
+        if (cartridgeNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeName : cartridgeNames) {
+        for (String cartridgeNameUuid : cartridgeNamesUuid) {
             Set<String> cartridgeGroupNames = null;
-            if (cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeName)) {
-                cartridgeGroupNames = 
cartridgeTypeToCartridgeGroupsMap.get(cartridgeName);
+            if 
(cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeNameUuid)) {
+                cartridgeGroupNames = 
cartridgeTypeToCartridgeGroupsMap.get(cartridgeNameUuid);
             } else {
                 cartridgeGroupNames = new HashSet<String>();
-                cartridgeTypeToCartridgeGroupsMap.put(cartridgeName, 
cartridgeGroupNames);
+                cartridgeTypeToCartridgeGroupsMap.put(cartridgeNameUuid, 
cartridgeGroupNames);
             }
-            cartridgeGroupNames.add(cartridgeGroupName);
+            cartridgeGroupNames.add(cartridgeGroupNameUuid);
         }
     }
 
-    public void removeUsedCartridgesInCartridgeGroups(String 
cartridgeGroupName, String[] cartridgeNames) {
-        if (cartridgeNames == null) {
+    public void removeUsedCartridgesInCartridgeGroups(String 
cartridgeGroupNameUuid, String[] cartridgeNamesUuid) {
+        if (cartridgeNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeName : cartridgeNames) {
+        for (String cartridgeNameUuid : cartridgeNamesUuid) {
             Set<String> cartridgeGroupNames = null;
-            if (cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeName)) {
-                cartridgeGroupNames = 
cartridgeTypeToCartridgeGroupsMap.get(cartridgeName);
+            if 
(cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeNameUuid)) {
+                cartridgeGroupNames = 
cartridgeTypeToCartridgeGroupsMap.get(cartridgeNameUuid);
                 // Remove current cartridge group name
-                cartridgeGroupNames.remove(cartridgeGroupName);
+                cartridgeGroupNames.remove(cartridgeGroupNameUuid);
                 // Remove entry if there are no more cartridge group names for 
that cartridge type
                 if (cartridgeGroupNames.isEmpty()) {
                     cartridgeGroupNames = null;
-                    cartridgeTypeToCartridgeGroupsMap.remove(cartridgeName);
+                    
cartridgeTypeToCartridgeGroupsMap.remove(cartridgeNameUuid);
                 }
             }
         }
     }
 
-    public boolean isCartridgeIncludedInCartridgeGroups(String cartridgeName) {
-        if (cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeName)) {
-            if 
(!cartridgeTypeToCartridgeGroupsMap.get(cartridgeName).isEmpty()) {
+    public boolean isCartridgeIncludedInCartridgeGroups(String 
cartridgeNameUuid) {
+        if (cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeNameUuid)) {
+            if 
(!cartridgeTypeToCartridgeGroupsMap.get(cartridgeNameUuid).isEmpty()) {
                 return true;
             }
             return false;
@@ -196,12 +196,12 @@ public class StratosManagerContext implements 
Serializable {
         return false;
     }
 
-    public void addUsedCartridgesInApplications(String applicationName, 
String[] cartridgeNames) {
-        if (cartridgeNames == null) {
+    public void addUsedCartridgesInApplications(String applicationNameUuid, 
String[] cartridgeNamesUuid) {
+        if (cartridgeNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeName : cartridgeNames) {
+        for (String cartridgeName : cartridgeNamesUuid) {
             Set<String> applicationNames = null;
             if (cartridgeTypeToApplicationsMap.containsKey(cartridgeName)) {
                 applicationNames = 
cartridgeTypeToApplicationsMap.get(cartridgeName);
@@ -209,33 +209,33 @@ public class StratosManagerContext implements 
Serializable {
                 applicationNames = new HashSet<String>();
                 cartridgeTypeToApplicationsMap.put(cartridgeName, 
applicationNames);
             }
-            applicationNames.add(applicationName);
+            applicationNames.add(applicationNameUuid);
         }
     }
 
-    public void removeUsedCartridgesInApplications(String applicationName, 
String[] cartridgeNames) {
-        if (cartridgeNames == null) {
+    public void removeUsedCartridgesInApplications(String applicationNameUuid, 
String[] cartridgeNamesUuid) {
+        if (cartridgeNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeName : cartridgeNames) {
+        for (String cartridgeNameUuid : cartridgeNamesUuid) {
             Set<String> applicationNames = null;
-            if (cartridgeTypeToApplicationsMap.containsKey(cartridgeName)) {
-                applicationNames = 
cartridgeTypeToApplicationsMap.get(cartridgeName);
+            if (cartridgeTypeToApplicationsMap.containsKey(cartridgeNameUuid)) 
{
+                applicationNames = 
cartridgeTypeToApplicationsMap.get(cartridgeNameUuid);
                 // Remove current application name
-                applicationNames.remove(applicationName);
+                applicationNames.remove(applicationNameUuid);
                 // Remove entry if there are no more cartridge group names for 
that cartridge type
                 if (applicationNames.isEmpty()) {
                     applicationNames = null;
-                    cartridgeTypeToApplicationsMap.remove(cartridgeName);
+                    cartridgeTypeToApplicationsMap.remove(cartridgeNameUuid);
                 }
             }
         }
     }
 
-    public boolean isCartridgeIncludedInApplications(String cartridgeName) {
-        if (cartridgeTypeToApplicationsMap.containsKey(cartridgeName)) {
-            if (!cartridgeTypeToApplicationsMap.get(cartridgeName).isEmpty()) {
+    public boolean isCartridgeIncludedInApplications(String cartridgeNameUuid) 
{
+        if (cartridgeTypeToApplicationsMap.containsKey(cartridgeNameUuid)) {
+            if 
(!cartridgeTypeToApplicationsMap.get(cartridgeNameUuid).isEmpty()) {
                 return true;
             }
             return false;
@@ -243,46 +243,46 @@ public class StratosManagerContext implements 
Serializable {
         return false;
     }
 
-    public void addUsedCartridgeGroupsInCartridgeSubGroups(String 
cartridgeSubGroupName, String[] cartridgeGroupNames) {
-        if (cartridgeGroupNames == null) {
+    public void addUsedCartridgeGroupsInCartridgeSubGroups(String 
cartridgeSubGroupNameUuid, String[] cartridgeGroupNamesUuid) {
+        if (cartridgeGroupNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeGroupName : cartridgeGroupNames) {
+        for (String cartridgeGroupNameUuid : cartridgeGroupNamesUuid) {
             Set<String> cartridgeSubGroupNames = null;
-            if 
(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupName)) {
-                cartridgeSubGroupNames = 
cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupName);
+            if 
(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupNameUuid)) {
+                cartridgeSubGroupNames = 
cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupNameUuid);
             } else {
                 cartridgeSubGroupNames = new HashSet<String>();
-                
cartridgeGroupToCartridgeSubGroupsMap.put(cartridgeSubGroupName, 
cartridgeSubGroupNames);
+                
cartridgeGroupToCartridgeSubGroupsMap.put(cartridgeSubGroupNameUuid, 
cartridgeSubGroupNames);
             }
-            cartridgeSubGroupNames.add(cartridgeGroupName);
+            cartridgeSubGroupNames.add(cartridgeGroupNameUuid);
         }
     }
 
-    public void removeUsedCartridgeGroupsInCartridgeSubGroups(String 
cartridgeSubGroupName, String[] cartridgeGroupNames) {
-        if (cartridgeGroupNames == null) {
+    public void removeUsedCartridgeGroupsInCartridgeSubGroups(String 
cartridgeSubGroupNameUuid, String[] cartridgeGroupNamesUuid) {
+        if (cartridgeGroupNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeGroupName : cartridgeGroupNames) {
+        for (String cartridgeGroupNameUuid : cartridgeGroupNamesUuid) {
             Set<String> cartridgeSubGroupNames = null;
-            if 
(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupName)) {
-                cartridgeSubGroupNames = 
cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupName);
+            if 
(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupNameUuid)) {
+                cartridgeSubGroupNames = 
cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupNameUuid);
                 // Remove current cartridge group name
-                cartridgeSubGroupNames.remove(cartridgeGroupName);
+                cartridgeSubGroupNames.remove(cartridgeGroupNameUuid);
                 // Remove entry if there are no more cartridge group names for 
that cartridge type
                 if (cartridgeSubGroupNames.isEmpty()) {
                     cartridgeSubGroupNames = null;
-                    
cartridgeGroupToCartridgeSubGroupsMap.remove(cartridgeGroupName);
+                    
cartridgeGroupToCartridgeSubGroupsMap.remove(cartridgeGroupNameUuid);
                 }
             }
         }
     }
 
-    public boolean isCartridgeGroupIncludedInCartridgeSubGroups(String 
cartridgeGroupName) {
-        if 
(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupName)) {
-            if 
(!cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupName).isEmpty()) {
+    public boolean isCartridgeGroupIncludedInCartridgeSubGroups(String 
cartridgeGroupNameUuid) {
+        if 
(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupNameUuid)) {
+            if 
(!cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupNameUuid).isEmpty()) {
                 return true;
             }
             return false;
@@ -290,46 +290,46 @@ public class StratosManagerContext implements 
Serializable {
         return false;
     }
 
-    public void addUsedCartridgeGroupsInApplications(String applicationName, 
String[] cartridgeGroupNames) {
-        if (cartridgeGroupNames == null) {
+    public void addUsedCartridgeGroupsInApplications(String 
applicationNameUuid, String[] cartridgeGroupNamesUuid) {
+        if (cartridgeGroupNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeGroupName : cartridgeGroupNames) {
+        for (String cartridgeGroupNameUuid : cartridgeGroupNamesUuid) {
             Set<String> applicationNames = null;
-            if 
(cartridgeGroupToApplicationsMap.containsKey(cartridgeGroupName)) {
-                applicationNames = 
cartridgeGroupToApplicationsMap.get(cartridgeGroupName);
+            if 
(cartridgeGroupToApplicationsMap.containsKey(cartridgeGroupNameUuid)) {
+                applicationNames = 
cartridgeGroupToApplicationsMap.get(cartridgeGroupNameUuid);
             } else {
                 applicationNames = new HashSet<String>();
-                cartridgeGroupToApplicationsMap.put(cartridgeGroupName, 
applicationNames);
+                cartridgeGroupToApplicationsMap.put(cartridgeGroupNameUuid, 
applicationNames);
             }
-            applicationNames.add(applicationName);
+            applicationNames.add(applicationNameUuid);
         }
     }
 
-    public void removeUsedCartridgeGroupsInApplications(String 
applicationName, String[] cartridgeGroupNames) {
-        if (cartridgeGroupNames == null) {
+    public void removeUsedCartridgeGroupsInApplications(String 
applicationNameUuid, String[] cartridgeGroupNamesUuid) {
+        if (cartridgeGroupNamesUuid == null) {
             return;
         }
 
-        for (String cartridgeGroupName : cartridgeGroupNames) {
+        for (String cartridgeGroupNameUuid : cartridgeGroupNamesUuid) {
             Set<String> applicationNames = null;
-            if 
(cartridgeGroupToApplicationsMap.containsKey(cartridgeGroupName)) {
-                applicationNames = 
cartridgeGroupToApplicationsMap.get(cartridgeGroupName);
+            if 
(cartridgeGroupToApplicationsMap.containsKey(cartridgeGroupNameUuid)) {
+                applicationNames = 
cartridgeGroupToApplicationsMap.get(cartridgeGroupNameUuid);
                 // Remove current application name
-                applicationNames.remove(applicationName);
+                applicationNames.remove(applicationNameUuid);
                 // Remove entry if there are no more cartridge group names for 
that cartridge type
                 if (applicationNames.isEmpty()) {
                     applicationNames = null;
-                    cartridgeGroupToApplicationsMap.remove(cartridgeGroupName);
+                    
cartridgeGroupToApplicationsMap.remove(cartridgeGroupNameUuid);
                 }
             }
         }
     }
 
-    public boolean isCartridgeGroupIncludedInApplications(String 
cartridgeGroupName) {
-        if (cartridgeGroupToApplicationsMap.containsKey(cartridgeGroupName)) {
-            if 
(!cartridgeGroupToApplicationsMap.get(cartridgeGroupName).isEmpty()) {
+    public boolean isCartridgeGroupIncludedInApplications(String 
cartridgeGroupNameUuid) {
+        if 
(cartridgeGroupToApplicationsMap.containsKey(cartridgeGroupNameUuid)) {
+            if 
(!cartridgeGroupToApplicationsMap.get(cartridgeGroupNameUuid).isEmpty()) {
                 return true;
             }
             return false;

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
index abc02e9..dc9d7a2 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
@@ -371,7 +371,7 @@ public class StratosApiV40Utils {
                 for (String cartridgeType : availableCartridges) {
                     Cartridge cartridgeInfo = null;
                     try {
-                        cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType);
+                        cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType,-1234);
                     } catch (Exception e) {
                         if (log.isWarnEnabled()) {
                             log.warn("Error when calling getCartridgeInfo for 
" + cartridgeType + ", Error: "

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/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 2c54388..d667c8d 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
@@ -290,7 +290,7 @@ public class StratosApiV41 extends AbstractApi {
 
         CartridgeBean cartridgeBean = null;
         try {
-            cartridgeBean = 
StratosApiV41Utils.getCartridgeForValidate(cartridgeType);
+            cartridgeBean = 
StratosApiV41Utils.getCartridgeForValidate(cartridgeType,carbonContext.getTenantId());
         } catch (CloudControllerServiceCartridgeNotFoundExceptionException 
ignore) {
             //Ignore this since this is valid(cartridge is does not exist) 
when adding the cartridge for first time
         }
@@ -386,7 +386,7 @@ public class StratosApiV41 extends AbstractApi {
      * @param filter   Filter
      * @param criteria Criteria
      * @return 200 if cartridges are found for specified filter, 404 if none 
found
-     * @throws RestAPIExcept
+     * @throws RestAPIException
      */
     @GET
     @Path("/cartridges/filter/{filter}")
@@ -449,10 +449,11 @@ public class StratosApiV41 extends AbstractApi {
     @AuthorizationAction("/permission/admin/stratos/cartridges/manage")
     public Response removeCartridge(
             @PathParam("cartridgeType") String cartridgeType) throws 
RestAPIException {
+           PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
         try {
-            StratosApiV41Utils.removeCartridge(cartridgeType);
+            
StratosApiV41Utils.removeCartridge(cartridgeType,carbonContext.getTenantId());
             return Response.ok().entity(new 
ResponseMessageBean(ResponseMessageBean.SUCCESS,
-                    String.format("Cartridge deleted successfully: 
[cartridge-type] %s", cartridgeType))).build();
+                    String.format("Cartridge deleted successfully: 
[cartridge-type] %s [tenantId]", 
cartridgeType,carbonContext.getTenantId()))).build();
         } catch (RemoteException e) {
             throw new RestAPIException(e.getMessage());
         } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException 
e) {
@@ -482,6 +483,10 @@ public class StratosApiV41 extends AbstractApi {
     @SuperTenantService(true)
     public Response addCartridgeGroup(
             CartridgeGroupBean cartridgeGroupBean) throws RestAPIException {
+
+           PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
+           cartridgeGroupBean.setUuid(UUID.randomUUID().toString());
+           cartridgeGroupBean.setTenantId(carbonContext.getTenantId());
         try {
             StratosApiV41Utils.addCartridgeGroup(cartridgeGroupBean);
             URI url = 
uriInfo.getAbsolutePathBuilder().path(cartridgeGroupBean.getName()).build();

http://git-wip-us.apache.org/repos/asf/stratos/blob/8ac13e17/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 adfc0da..d0bdcb8 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
@@ -243,29 +243,30 @@ public class StratosApiV41Utils {
      * @param cartridgeType Cartridge Type
      * @throws RestAPIException
      */
-    public static void removeCartridge(String cartridgeType) throws 
RestAPIException, RemoteException,
+    public static void removeCartridge(String cartridgeType,int tenantId) 
throws RestAPIException, RemoteException,
             CloudControllerServiceCartridgeNotFoundExceptionException,
             CloudControllerServiceInvalidCartridgeTypeExceptionException {
 
         if (log.isDebugEnabled()) {
-            log.debug(String.format("Removing cartridge: [cartridge-type] %s 
", cartridgeType));
+            log.debug(String.format("Removing cartridge: [cartridge-type] %s 
[tenant-id] %d", cartridgeType,tenantId));
         }
 
         CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
-        if (cloudControllerServiceClient.getCartridge(cartridgeType) == null) {
-            throw new RuntimeException("Cartridge not found: [cartridge-type] 
" + cartridgeType);
+           Cartridge cartridge= 
cloudControllerServiceClient.getCartridge(cartridgeType,tenantId);
+           if (cartridge== null) {
+            throw new RuntimeException("Cartridge not found: [cartridge-type] 
[tenant-id]" + cartridgeType + tenantId);
         }
 
         StratosManagerServiceClient smServiceClient = 
getStratosManagerServiceClient();
 
         // Validate whether cartridge can be removed
-        if (!smServiceClient.canCartridgeBeRemoved(cartridgeType)) {
+        if (!smServiceClient.canCartridgeBeRemoved(cartridge.getUuid())) {
             String message = "Cannot remove cartridge : [cartridge-type] " + 
cartridgeType +
                     " since it is used in another cartridge group or an 
application";
             log.error(message);
             throw new RestAPIException(message);
         }
-        cloudControllerServiceClient.removeCartridge(cartridgeType);
+        cloudControllerServiceClient.removeCartridge(cartridge.getUuid());
 
         if (log.isInfoEnabled()) {
             log.info(String.format("Successfully removed cartridge: 
[cartridge-type] %s ", cartridgeType));
@@ -292,7 +293,7 @@ public class StratosApiV41Utils {
         } else if (Constants.FILTER_LOAD_BALANCER.equals(filter)) {
             cartridges = getAvailableLbCartridges(false, 
configurationContext,tenantId);
         } else if (Constants.FILTER_PROVIDER.equals(filter)) {
-            cartridges = getAvailableCartridgesByProvider(criteria);
+            cartridges = getAvailableCartridgesByProvider(criteria,tenantId);
         }
 
 
@@ -348,7 +349,7 @@ public class StratosApiV41Utils {
      * @return List of the cartridge definitions
      * @throws RestAPIException
      */
-    private static List<CartridgeBean> getAvailableCartridgesByProvider(String 
provider) throws RestAPIException {
+    private static List<CartridgeBean> getAvailableCartridgesByProvider(String 
provider,int tenantId) throws RestAPIException {
         List<CartridgeBean> cartridges = new ArrayList<CartridgeBean>();
 
         if (log.isDebugEnabled()) {
@@ -362,7 +363,7 @@ public class StratosApiV41Utils {
                 for (String cartridgeType : availableCartridges) {
                     Cartridge cartridgeInfo = null;
                     try {
-                        cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType);
+                        cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType,tenantId);
                     } catch (Exception e) {
                         if (log.isWarnEnabled()) {
                             log.warn("Error when calling getCartridgeInfo for 
" + cartridgeType + ", Error: "
@@ -431,7 +432,7 @@ public class StratosApiV41Utils {
                 for (String cartridgeType : availableCartridges) {
                     Cartridge cartridgeInfo = null;
                     try {
-                        cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType);
+                        cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType,tenantId);
                     } catch (Exception e) {
                         if (log.isWarnEnabled()) {
                             log.warn("Error when calling getCartridgeInfo for 
" + cartridgeType + ", Error: "
@@ -493,7 +494,7 @@ public class StratosApiV41Utils {
      */
     public static CartridgeBean getCartridge(String cartridgeType,int 
tenantId) throws RestAPIException {
         try {
-            Cartridge cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType);
+            Cartridge cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType,tenantId);
             if (cartridgeInfo == null) {
                 return null;
             }
@@ -521,10 +522,10 @@ public class StratosApiV41Utils {
      * @return CartridgeBean
      * @throws RestAPIException
      */
-    public static CartridgeBean getCartridgeForValidate(String cartridgeType) 
throws RestAPIException,
+    public static CartridgeBean getCartridgeForValidate(String 
cartridgeType,int tenantId) throws RestAPIException,
             CloudControllerServiceCartridgeNotFoundExceptionException {
         try {
-            Cartridge cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType);
+            Cartridge cartridgeInfo = 
CloudControllerServiceClient.getInstance().getCartridge(cartridgeType,tenantId);
             if (cartridgeInfo == null) {
                 return null;
             }
@@ -1033,7 +1034,7 @@ public class StratosApiV41Utils {
         int j = 0;
         for (String cartridgeType : cartridgeTypes) {
             try {
-                if (ccServiceClient.getCartridge(cartridgeType) == null) {
+                if 
(ccServiceClient.getCartridge(cartridgeType,serviceGroupDefinition.getTenantId())
 == null) {
                     // cartridge is not deployed, can't continue
                     log.error("Invalid cartridge found in cartridge group " + 
cartridgeType);
                     throw new InvalidCartridgeException();

Reply via email to