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();
