http://git-wip-us.apache.org/repos/asf/stratos/blob/4b864473/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 958f1cd..ff52273 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 @@ -24,16 +24,12 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.stub.*; -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.pojo.ApplicationContext; import org.apache.stratos.autoscaler.stub.pojo.ServiceGroup; import org.apache.stratos.cloud.controller.stub.*; import org.apache.stratos.cloud.controller.stub.domain.Cartridge; -import org.apache.stratos.cloud.controller.stub.domain.NetworkPartition; -import org.apache.stratos.cloud.controller.stub.domain.Partition; -import org.apache.stratos.cloud.controller.stub.domain.kubernetes.KubernetesCluster; import org.apache.stratos.common.beans.IaasProviderInfoBean; import org.apache.stratos.common.beans.PropertyBean; import org.apache.stratos.common.beans.TenantInfoBean; @@ -50,8 +46,6 @@ import org.apache.stratos.common.beans.kubernetes.KubernetesClusterBean; import org.apache.stratos.common.beans.kubernetes.KubernetesHostBean; import org.apache.stratos.common.beans.kubernetes.KubernetesMasterBean; import org.apache.stratos.common.beans.partition.NetworkPartitionBean; -import org.apache.stratos.common.beans.partition.NetworkPartitionReferenceBean; -import org.apache.stratos.common.beans.partition.PartitionReferenceBean; import org.apache.stratos.common.beans.policy.autoscale.AutoscalePolicyBean; import org.apache.stratos.common.beans.policy.deployment.ApplicationPolicyBean; import org.apache.stratos.common.beans.policy.deployment.DeploymentPolicyBean; @@ -65,6 +59,7 @@ import org.apache.stratos.common.client.StratosManagerServiceClient; import org.apache.stratos.common.exception.InvalidEmailException; import org.apache.stratos.common.util.ClaimsMgtUtil; import org.apache.stratos.common.util.CommonUtil; +import org.apache.stratos.kubernetes.client.KubernetesConstants; import org.apache.stratos.manager.service.stub.StratosManagerServiceApplicationSignUpExceptionException; import org.apache.stratos.manager.service.stub.StratosManagerServiceDomainMappingExceptionException; import org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp; @@ -105,27 +100,25 @@ import java.util.regex.Pattern; public class StratosApiV41Utils { + private static final Log log = LogFactory.getLog(StratosApiV41Utils.class); + public static final String APPLICATION_STATUS_DEPLOYED = "Deployed"; public static final String APPLICATION_STATUS_CREATED = "Created"; public static final String APPLICATION_STATUS_UNDEPLOYING = "Undeploying"; - public static final int SUPER_TENANT_ID = -1234; - - private static final Log log = LogFactory.getLog(StratosApiV41Utils.class); - + public static final String KUBERNETES_IAAS_PROVIDER = "kubernetes"; /** - * Add new cartridge util method + * Add New Cartridge * * @param cartridgeBean Cartridge definition * @throws RestAPIException */ - public static void addCartridge(CartridgeBean cartridgeBean, String cartridgeUuid, - int tenantId) throws RestAPIException { + // Util methods for cartridges + public static void addCartridge(CartridgeBean cartridgeBean) throws RestAPIException { try { if (log.isDebugEnabled()) { - log.debug(String.format("Adding cartridge: [tenant-id] %d [cartridge-uuid] %s[cartridge-type] %s ", - tenantId, cartridgeUuid, cartridgeBean.getType())); + log.debug(String.format("Adding cartridge: [cartridge-type] %s ", cartridgeBean.getType())); } List<IaasProviderBean> iaasProviders = cartridgeBean.getIaasProvider(); @@ -134,47 +127,68 @@ public class StratosApiV41Utils { cartridgeBean.getType())); } + boolean isKubernetesIaasProviderAvailable = false; + + for (IaasProviderBean providers : iaasProviders) { + if (providers.getType().equals(KUBERNETES_IAAS_PROVIDER)) { + isKubernetesIaasProviderAvailable = true; + break; + } + } + for (PortMappingBean portMapping : cartridgeBean.getPortMapping()) { if (StringUtils.isBlank(portMapping.getName())) { portMapping.setName(portMapping.getProtocol() + "-" + portMapping.getPort()); if (log.isInfoEnabled()) { log.info(String.format("Port mapping name not found, default value generated: " + - "[cartridge-uuid] %s [cartridge-type] %s [port-mapping-name] %s", - cartridgeUuid, cartridgeBean.getType(), portMapping.getName())); + "[cartridge-type] %s [port-mapping-name] %s", + cartridgeBean.getType(), portMapping.getName())); + } + } + + String type = portMapping.getKubernetesPortType(); + + if (isKubernetesIaasProviderAvailable) { + if (type == null || type.equals("")) { + portMapping.setKubernetesPortType(KubernetesConstants.NODE_PORT); + } else if (!type.equals(KubernetesConstants.NODE_PORT) && !type.equals + (KubernetesConstants.CLUSTER_IP)) { + throw new RestAPIException((String.format("Kubernetes" + + "PortType is invalid : %s - Possible values - %s and %s", portMapping.getName(), + KubernetesConstants.NODE_PORT, KubernetesConstants.CLUSTER_IP))); } } + } - Cartridge cartridgeConfig = createCartridgeConfig(cartridgeBean, cartridgeUuid, tenantId); + Cartridge cartridgeConfig = createCartridgeConfig(cartridgeBean); CloudControllerServiceClient cloudControllerServiceClient = CloudControllerServiceClient.getInstance(); cloudControllerServiceClient.addCartridge(cartridgeConfig); if (log.isDebugEnabled()) { log.debug(String.format( - "Successfully added cartridge: [tenant-id] %d [cartridge-uuid] %s [cartridge-type] %s ", - tenantId, cartridgeUuid, cartridgeBean.getType())); + "Successfully added cartridge: [cartridge-type] %s ", + cartridgeBean.getType())); } } catch (CloudControllerServiceCartridgeAlreadyExistsExceptionException e) { - String msg = "Could not add cartridge as it is already exits"; + String msg = "Could not add cartridge. Cartridge already exists."; log.error(msg, e); throw new RestAPIException(msg); } catch (CloudControllerServiceInvalidCartridgeDefinitionExceptionException e) { - String msg = "Could not add cartridge as invalid cartridge definition"; + String msg = "Could not add cartridge. Invalid cartridge definition."; log.error(msg, e); throw new RestAPIException(msg); } catch (RemoteException e) { - String msg = "Could not add cartridge"; + String msg = "Could not add cartridge. " + e.getMessage(); log.error(msg, e); throw new RestAPIException(msg); } catch (CloudControllerServiceInvalidIaasProviderExceptionException e) { - String msg = "Could not add cartridge as invalid iaas provider"; + String msg = "Could not add cartridge. Invalid IaaS provider."; log.error(msg, e); throw new RestAPIException(msg); } } - - /** * Update Cartridge * @@ -182,54 +196,42 @@ public class StratosApiV41Utils { * @throws RestAPIException */ public static void updateCartridge(CartridgeBean cartridgeBean) throws RestAPIException { - try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - - CloudControllerServiceClient cloudControllerServiceClient = CloudControllerServiceClient.getInstance(); - Cartridge existingCartridge = cloudControllerServiceClient.getCartridgeByTenant(cartridgeBean.getType(), - carbonContext.getTenantId()); - Cartridge cartridgeConfig = createCartridgeConfig(cartridgeBean, existingCartridge.getUuid(), - existingCartridge.getTenantId()); - cartridgeConfig.setUuid(existingCartridge.getUuid()); + try { if (log.isDebugEnabled()) { - log.debug(String.format("Updating cartridge: [tenant-id] %d [cartridge-uuid] %s [cartridge-type] %s ", - existingCartridge.getTenantId(), existingCartridge.getUuid(), cartridgeBean.getType())); + log.debug(String.format("Updating cartridge: [cartridge-type] %s ", cartridgeBean.getType())); } List<IaasProviderBean> iaasProviders = cartridgeBean.getIaasProvider(); if ((iaasProviders == null) || iaasProviders.size() == 0) { - throw new RestAPIException(String.format("IaaS providers not found in cartridge: [tenant-id] %d " + - "[cartridge-uuid] %s [cartridge-type] %s ", existingCartridge.getTenantId(), - existingCartridge.getUuid(), cartridgeBean.getType())); + throw new RestAPIException(String.format("IaaS providers not found in cartridge: %s", + cartridgeBean.getType())); } + Cartridge cartridgeConfig = createCartridgeConfig(cartridgeBean); + CloudControllerServiceClient cloudControllerServiceClient = CloudControllerServiceClient.getInstance(); cloudControllerServiceClient.updateCartridge(cartridgeConfig); if (log.isDebugEnabled()) { - log.debug(String.format("Successfully updated cartridge: [tenant-id] %d [cartridge-uuid] %s " + - "[cartridge-type] %s", existingCartridge.getTenantId(), existingCartridge.getUuid(), + log.debug(String.format("Successfully updated cartridge: [cartridge-type] %s ", cartridgeBean.getType())); } } catch (CloudControllerServiceCartridgeDefinitionNotExistsExceptionException e) { - String msg = "Could not add cartridge"; + String msg = "Could not update cartridge. Cartridge definition doesn't exists."; log.error(msg, e); throw new RestAPIException(msg); } catch (CloudControllerServiceInvalidCartridgeDefinitionExceptionException e) { - String msg = "Could not add cartridge"; + String msg = "Could not update cartridge. Invalid cartridge definition."; log.error(msg, e); throw new RestAPIException(msg); } catch (RemoteException e) { - String msg = "Could not add cartridge"; + String msg = "Could not update cartridge. " + e.getMessage(); log.error(msg, e); throw new RestAPIException(msg); } catch (CloudControllerServiceInvalidIaasProviderExceptionException e) { - String msg = "Could not add cartridge"; + String msg = "Could not update cartridge. Invalid IaaS provider."; log.error(msg, e); throw new RestAPIException(msg); - } catch (CloudControllerServiceCartridgeNotFoundExceptionException e) { - String msg = "Could not find existing cartridge"; - log.error(msg, e); } } @@ -240,16 +242,15 @@ public class StratosApiV41Utils { * @return Created cartridge * @throws RestAPIException */ - private static Cartridge createCartridgeConfig(CartridgeBean cartridgeDefinition, String cartridgeUuid, - int tenantId) throws RestAPIException { + private static Cartridge createCartridgeConfig(CartridgeBean cartridgeDefinition) + throws RestAPIException { Cartridge cartridgeConfig = - ObjectConverter.convertCartridgeBeanToStubCartridgeConfig(cartridgeDefinition, cartridgeUuid, tenantId); + ObjectConverter.convertCartridgeBeanToStubCartridgeConfig(cartridgeDefinition); if (cartridgeConfig == null) { throw new RestAPIException("Could not read cartridge definition, cartridge deployment failed"); } if (StringUtils.isEmpty(cartridgeConfig.getCategory())) { - throw new RestAPIException(String.format("Category is not specified in cartridge: [tenant-id] %d [cartridge-uuid] %s " + - "[cartridge-type] %s ", cartridgeConfig.getTenantId(), cartridgeConfig.getUuid(), + throw new RestAPIException(String.format("Category is not specified in cartridge: [cartridge-type] %s", cartridgeConfig.getType())); } return cartridgeConfig; @@ -261,40 +262,32 @@ public class StratosApiV41Utils { * @param cartridgeType Cartridge Type * @throws RestAPIException */ - public static void removeCartridge(String cartridgeType, int tenantId) throws RestAPIException, RemoteException, + public static void removeCartridge(String cartridgeType) throws RestAPIException, RemoteException, CloudControllerServiceCartridgeNotFoundExceptionException, CloudControllerServiceInvalidCartridgeTypeExceptionException { - CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient(); - Cartridge cartridge= cloudControllerServiceClient.getCartridgeByTenant(cartridgeType, tenantId); - if (log.isDebugEnabled()) { - log.debug(String.format("Removing cartridge: [tenant-id] %d [cartridge-uuid] %s [cartridge-type] %s ", - tenantId, cartridge.getUuid(), cartridgeType)); + log.debug(String.format("Removing cartridge: [cartridge-type] %s ", cartridgeType)); } - if (cartridge== null) { - throw new RuntimeException(String.format("Cartridge not found: [cartridge-type] %s in tenant: " + - "[tenant-id] %s", cartridgeType, tenantId)); + CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient(); + if (cloudControllerServiceClient.getCartridge(cartridgeType) == null) { + throw new RuntimeException("Cartridge not found: [cartridge-type] " + cartridgeType); } StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); // Validate whether cartridge can be removed - if (!smServiceClient.canCartridgeBeRemoved(cartridge.getUuid())) { - String logMessage = String.format("Cannot remove cartridge : [tenant-id] %d [cartridge-uuid] %s " + - "[cartridge-type] %s since it is used in another cartridge group or an application", - tenantId, cartridge.getUuid(), cartridgeType); - String message = String.format("Cannot remove cartridge :n[cartridge-type] %s since it is used in another" + - " cartridge group or an application", cartridgeType); - log.error(logMessage); + if (!smServiceClient.canCartridgeBeRemoved(cartridgeType)) { + 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(cartridge.getUuid()); + cloudControllerServiceClient.removeCartridge(cartridgeType); if (log.isInfoEnabled()) { - log.info(String.format("Successfully removed cartridge: [tenant-id] %d [cartridge-uuid] %s " + - "[cartridge-type] %s", tenantId, cartridge.getUuid(), cartridgeType)); + log.info(String.format("Successfully removed cartridge: [cartridge-type] %s ", cartridgeType)); } } @@ -303,22 +296,22 @@ public class StratosApiV41Utils { * * @param filter filter * @param criteria criteria - * @param configurationContext Configuration Context + * @param configurationContext Configuration Contex * @return List of cartridges matches filter * @throws RestAPIException */ public static List<CartridgeBean> getCartridgesByFilter( - String filter, String criteria, ConfigurationContext configurationContext,int tenantId) throws RestAPIException { + String filter, String criteria, ConfigurationContext configurationContext) throws RestAPIException { List<CartridgeBean> cartridges = null; if (Constants.FILTER_TENANT_TYPE_SINGLE_TENANT.equals(filter)) { - cartridges = getAvailableCartridges(null, false, configurationContext,tenantId); + cartridges = getAvailableCartridges(null, false, configurationContext); } else if (Constants.FILTER_TENANT_TYPE_MULTI_TENANT.equals(filter)) { - cartridges = getAvailableCartridges(null, true, configurationContext,tenantId); + cartridges = getAvailableCartridges(null, true, configurationContext); } else if (Constants.FILTER_LOAD_BALANCER.equals(filter)) { - cartridges = getAvailableLbCartridges(false, configurationContext,tenantId); + cartridges = getAvailableLbCartridges(false, configurationContext); } else if (Constants.FILTER_PROVIDER.equals(filter)) { - cartridges = getAvailableCartridgesByProvider(criteria,tenantId); + cartridges = getAvailableCartridgesByProvider(criteria); } @@ -335,8 +328,8 @@ public class StratosApiV41Utils { * @throws RestAPIException */ public static CartridgeBean getCartridgeByFilter( - String filter, String cartridgeType, ConfigurationContext configurationContext,int tenantId) throws RestAPIException { - List<CartridgeBean> cartridges = getCartridgesByFilter(filter, null, configurationContext,tenantId); + String filter, String cartridgeType, ConfigurationContext configurationContext) throws RestAPIException { + List<CartridgeBean> cartridges = getCartridgesByFilter(filter, null, configurationContext); for (CartridgeBean cartridge : cartridges) { if (cartridge.getType().equals(cartridgeType)) { @@ -355,9 +348,9 @@ public class StratosApiV41Utils { * @throws RestAPIException */ private static List<CartridgeBean> getAvailableLbCartridges( - boolean multiTenant, ConfigurationContext configurationContext,int tenantId) throws RestAPIException { + boolean multiTenant, ConfigurationContext configurationContext) throws RestAPIException { List<CartridgeBean> cartridges = getAvailableCartridges(null, multiTenant, - configurationContext,tenantId); + configurationContext); List<CartridgeBean> lbCartridges = new ArrayList<CartridgeBean>(); for (CartridgeBean cartridge : cartridges) { if (Constants.FILTER_LOAD_BALANCER.equalsIgnoreCase(cartridge.getCategory())) { @@ -374,7 +367,7 @@ public class StratosApiV41Utils { * @return List of the cartridge definitions * @throws RestAPIException */ - private static List<CartridgeBean> getAvailableCartridgesByProvider(String provider,int tenantId) throws RestAPIException { + private static List<CartridgeBean> getAvailableCartridgesByProvider(String provider) throws RestAPIException { List<CartridgeBean> cartridges = new ArrayList<CartridgeBean>(); if (log.isDebugEnabled()) { @@ -388,7 +381,7 @@ public class StratosApiV41Utils { for (String cartridgeType : availableCartridges) { Cartridge cartridgeInfo = null; try { - cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeType,tenantId); + cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridge(cartridgeType); } catch (Exception e) { if (log.isWarnEnabled()) { log.warn("Error when calling getCartridgeInfo for " + cartridgeType + ", Error: " @@ -398,8 +391,7 @@ public class StratosApiV41Utils { if (cartridgeInfo == null) { // This cannot happen. But continue if (log.isDebugEnabled()) { - log.debug(String.format("Cartridge Info not found: [tenant-id] %d [cartridge-type] %s", - tenantId, cartridgeType)); + log.debug("Cartridge Info not found: " + cartridgeType); } continue; } @@ -415,7 +407,7 @@ public class StratosApiV41Utils { } } else { if (log.isDebugEnabled()) { - log.debug("There are no available cartridges in the tenant: [tenant-id] " + tenantId); + log.debug("There are no available cartridges"); } } } catch (AxisFault axisFault) { @@ -440,7 +432,7 @@ public class StratosApiV41Utils { } public static List<CartridgeBean> getAvailableCartridges( - String cartridgeSearchString, Boolean multiTenant, ConfigurationContext configurationContext,int tenantId) + String cartridgeSearchString, Boolean multiTenant, ConfigurationContext configurationContext) throws RestAPIException { List<CartridgeBean> cartridges = new ArrayList<CartridgeBean>(); @@ -452,27 +444,23 @@ public class StratosApiV41Utils { try { Pattern searchPattern = getSearchStringPattern(cartridgeSearchString); - //String[] availableCartridges = CloudControllerServiceClient.getInstance().getRegisteredCartridges(); - Cartridge[] availableCartridges = CloudControllerServiceClient.getInstance().getCartridgesByTenant - (tenantId); + String[] availableCartridges = CloudControllerServiceClient.getInstance().getRegisteredCartridges(); if (availableCartridges != null) { - for (Cartridge cartridgeDefinition : availableCartridges) { + for (String cartridgeType : availableCartridges) { Cartridge cartridgeInfo = null; try { - //cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridgeByTenant - // (cartridgeType,tenantId); - cartridgeInfo = cartridgeDefinition; + cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridge(cartridgeType); } catch (Exception e) { if (log.isWarnEnabled()) { - log.warn("Error when calling getCartridgeInfo for " + cartridgeDefinition.getType() + ", Error: " + log.warn("Error when calling getCartridgeInfo for " + cartridgeType + ", Error: " + e.getMessage()); } } if (cartridgeInfo == null) { // This cannot happen. But continue if (log.isDebugEnabled()) { - log.debug("Cartridge Info not found."); + log.debug("Cartridge Info not found: " + cartridgeType); } continue; } @@ -488,10 +476,12 @@ public class StratosApiV41Utils { if (!StratosApiV41Utils.cartridgeMatches(cartridgeInfo, searchPattern)) { continue; } - if(cartridgeInfo.getTenantId() == tenantId) { - CartridgeBean cartridge = ObjectConverter.convertCartridgeToCartridgeDefinitionBean(cartridgeInfo); - cartridges.add(cartridge); - } + + CartridgeBean cartridge = ObjectConverter. + convertCartridgeToCartridgeDefinitionBean(cartridgeInfo); + cartridges.add(cartridge); + + } } else { if (log.isDebugEnabled()) { @@ -516,22 +506,17 @@ public class StratosApiV41Utils { /** * Get cartridge details * - * @param cartridgeType Cartridge Type + * @param cartridgeType Catridge Type * @return Cartridge details * @throws RestAPIException */ - public static CartridgeBean getCartridge(String cartridgeType, int tenantId) throws RestAPIException { + public static CartridgeBean getCartridge(String cartridgeType) throws RestAPIException { try { - Cartridge cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeType, - tenantId); + Cartridge cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridge(cartridgeType); if (cartridgeInfo == null) { return null; } - if (cartridgeInfo.getTenantId() == tenantId) { - return ObjectConverter.convertCartridgeToCartridgeDefinitionBean(cartridgeInfo); - } else { - return null; - } + return ObjectConverter.convertCartridgeToCartridgeDefinitionBean(cartridgeInfo); } catch (RemoteException e) { String message = e.getMessage(); log.error(message); @@ -550,10 +535,10 @@ public class StratosApiV41Utils { * @return CartridgeBean * @throws RestAPIException */ - public static CartridgeBean getCartridgeForValidate(String cartridgeType,int tenantId) throws RestAPIException, + public static CartridgeBean getCartridgeForValidate(String cartridgeType) throws RestAPIException, CloudControllerServiceCartridgeNotFoundExceptionException { try { - Cartridge cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeType,tenantId); + Cartridge cartridgeInfo = CloudControllerServiceClient.getInstance().getCartridge(cartridgeType); if (cartridgeInfo == null) { return null; } @@ -673,18 +658,17 @@ public class StratosApiV41Utils { * @param autoscalePolicyBean autoscalePolicyBean * @throws RestAPIException */ - public static void addAutoscalingPolicy(AutoscalePolicyBean autoscalePolicyBean, String autoscalingPolicyUuid, - int tenantId) throws RestAPIException, + public static void addAutoscalingPolicy(AutoscalePolicyBean autoscalePolicyBean) throws RestAPIException, AutoscalerServiceInvalidPolicyExceptionException, AutoscalerServiceAutoScalingPolicyAlreadyExistExceptionException { - log.info(String.format("Adding autoscaling policy: [tenant-id] %d [autoscaling-policy-uuid] %s " + - "[autoscaling-policy-id] %s", tenantId, autoscalingPolicyUuid, autoscalePolicyBean.getId())); + log.info(String.format("Adding autoscaling policy: [id] %s", autoscalePolicyBean.getId())); AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); if (autoscalerServiceClient != null) { + org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy autoscalePolicy = ObjectConverter. - convertToCCAutoscalerPojo(autoscalePolicyBean, autoscalingPolicyUuid, tenantId); + convertToCCAutoscalerPojo(autoscalePolicyBean); try { autoscalerServiceClient.addAutoscalingPolicy(autoscalePolicy); @@ -701,51 +685,25 @@ public class StratosApiV41Utils { * @param applicationPolicyBean applicationPolicyBean * @throws RestAPIException */ - public static void addApplicationPolicy(ApplicationPolicyBean applicationPolicyBean, String applicationPolicyUuid, - int tenantId) throws RestAPIException, - AutoscalerServiceInvalidApplicationPolicyExceptionException, - AutoscalerServiceApplicationPolicyAlreadyExistsExceptionException { + public static void addApplicationPolicy(ApplicationPolicyBean applicationPolicyBean) throws RestAPIException, + AutoscalerServiceInvalidApplicationPolicyExceptionException, AutoscalerServiceApplicationPolicyAlreadyExistsExceptionException { if (applicationPolicyBean == null) { String msg = "Application policy bean is null"; log.error(msg); throw new ApplicationPolicyIsEmptyException(msg); } - CloudControllerServiceClient cloudServiceClient=getCloudControllerServiceClient(); + AutoscalerServiceClient serviceClient = getAutoscalerServiceClient(); try { ApplicationPolicy applicationPolicy = ObjectConverter.convertApplicationPolicyBeanToStubAppPolicy( - applicationPolicyBean, applicationPolicyUuid, tenantId); + applicationPolicyBean); if (applicationPolicy == null) { String msg = "Application policy is null"; log.error(msg); throw new ApplicationPolicyIsEmptyException(msg); } - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - NetworkPartition[] existingNetworkPartitions = cloudServiceClient.getNetworkPartitionsByTenant - (carbonContext.getTenantId()); - String[] networkPartitions = applicationPolicy.getNetworkPartitions(); - String[] networkPartitionsUuid = new String[applicationPolicy.getNetworkPartitions().length]; - - for (int i = 0; i < networkPartitions.length; i++) { - if (existingNetworkPartitions != null) { - for (NetworkPartition networkPartition : existingNetworkPartitions) { - if (networkPartitions[i].equals(networkPartition.getId()) && (tenantId == networkPartition - .getTenantId())) { - networkPartitionsUuid[i] = networkPartition.getUuid(); - } - } - } else { - String message = String.format("Network partition not found: for [application-policy-id] %s" + - "[network-partition-id] %s", applicationPolicyBean.getId(), - networkPartitions[i]); - throw new RestAPIException(message); - } - } - - applicationPolicy.setNetworkPartitionsUuid(networkPartitionsUuid); serviceClient.addApplicationPolicy(applicationPolicy); - } catch (RemoteException e) { String msg = "Could not add application policy. " + e.getLocalizedMessage(); log.error(msg, e); @@ -767,18 +725,16 @@ public class StratosApiV41Utils { AutoscalerServiceInvalidApplicationPolicyExceptionException, AutoscalerServiceApplicatioinPolicyNotExistsExceptionException { - log.info(String.format("Updating application policy: [application-policy-id] %s", applicationPolicyBean.getId())); + log.info(String.format("Updating application policy: [id] %s", applicationPolicyBean.getId())); AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); if (autoscalerServiceClient != null) { + + ApplicationPolicy applicationPolicy = ObjectConverter.convertApplicationPolicyBeanToStubAppPolicy( + applicationPolicyBean); + try { - AutoscalerServiceClient serviceClient = AutoscalerServiceClient.getInstance(); - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - ApplicationPolicy applicationPolicy = serviceClient.getApplicationPolicyByTenant - (applicationPolicyBean.getId(), carbonContext.getTenantId()); - autoscalerServiceClient.updateApplicationPolicy(ObjectConverter - .convertApplicationPolicyBeanToStubAppPolicy(applicationPolicyBean, - applicationPolicy.getUuid(), applicationPolicy.getTenantId())); + autoscalerServiceClient.updateApplicationPolicy(applicationPolicy); } catch (RemoteException e) { String msg = "Could not update application policy" + e.getLocalizedMessage(); log.error(msg, e); @@ -803,8 +759,7 @@ public class StratosApiV41Utils { AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); if (autoscalerServiceClient != null) { try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - applicationPolicies = autoscalerServiceClient.getApplicationPoliciesByTenant(carbonContext.getTenantId()); + applicationPolicies = autoscalerServiceClient.getApplicationPolicies(); } catch (RemoteException e) { String msg = "Could not get application policies" + e.getLocalizedMessage(); log.error(msg, e); @@ -835,23 +790,16 @@ public class StratosApiV41Utils { throw new ApplicationPolicyIdIsEmptyException(msg); } - ApplicationPolicyBean applicationPolicyBean; try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - org.apache.stratos.autoscaler.stub.deployment.policy.ApplicationPolicy applicationPolicy = - AutoscalerServiceClient.getInstance().getApplicationPolicy(applicationPolicyId, - carbonContext.getTenantId()); - if (applicationPolicy == null) { - return null; - } - applicationPolicyBean = ObjectConverter.convertASStubApplicationPolicyToApplicationPolicy(applicationPolicy); + AutoscalerServiceClient serviceClient = AutoscalerServiceClient.getInstance(); + ApplicationPolicy applicationPolicy = serviceClient.getApplicationPolicy(applicationPolicyId); + return ObjectConverter.convertASStubApplicationPolicyToApplicationPolicy(applicationPolicy); } catch (RemoteException e) { - String msg = "Could not find application policy: [application-policy-id] " + applicationPolicyId; - log.error(msg, e); - throw new RestAPIException(msg); + String message = String.format("Could not get application policy [application-policy-id] %s", + applicationPolicyId); + log.error(message); + throw new RestAPIException(message, e); } - - return applicationPolicyBean; } /** @@ -875,12 +823,9 @@ public class StratosApiV41Utils { throw new ApplicationPolicyIdIsEmptyException(msg); } + AutoscalerServiceClient serviceClient = getAutoscalerServiceClient(); try { - AutoscalerServiceClient serviceClient = AutoscalerServiceClient.getInstance(); - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - ApplicationPolicy applicationPolicy = serviceClient.getApplicationPolicyByTenant - (applicationPolicyId, carbonContext.getTenantId()); - serviceClient.removeApplicationPolicy(applicationPolicy.getUuid()); + serviceClient.removeApplicationPolicy(applicationPolicyId); } catch (RemoteException e) { String msg = "Could not remove application policy. " + e.getLocalizedMessage(); log.error(msg, e); @@ -897,19 +842,14 @@ public class StratosApiV41Utils { public static void updateAutoscalingPolicy(AutoscalePolicyBean autoscalePolicyBean) throws RestAPIException, AutoscalerServiceInvalidPolicyExceptionException { + log.info(String.format("Updating autoscaling policy: [id] %s", autoscalePolicyBean.getId())); + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); if (autoscalerServiceClient != null) { + + org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy autoscalePolicy = ObjectConverter. + convertToCCAutoscalerPojo(autoscalePolicyBean); try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - String autoscalerUuid = autoscalerServiceClient - .getAutoScalePolicyForTenant(autoscalePolicyBean.getId(), carbonContext.getTenantId()) - .getUuid(); - log.debug(String.format("Updating autoscaling policy: [tenant-id] %d [autoscaling-policy-uuid] %s " + - "[autoscaling-policy-id] %s", carbonContext.getTenantId(), autoscalerUuid, - autoscalePolicyBean.getId())); - org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy autoscalePolicy = - ObjectConverter.convertToCCAutoscalerPojo(autoscalePolicyBean, autoscalerUuid, - carbonContext.getTenantId()); autoscalerServiceClient.updateAutoscalingPolicy(autoscalePolicy); } catch (RemoteException e) { log.error(e.getMessage(), e); @@ -928,17 +868,13 @@ public class StratosApiV41Utils { AutoscalerServicePolicyDoesNotExistExceptionException, AutoscalerServiceUnremovablePolicyExceptionException { + log.info(String.format("Removing autoscaling policy: [id] %s", autoscalePolicyId)); + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); if (autoscalerServiceClient != null) { - AutoscalePolicy autoscalePolicyBean; + try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - autoscalePolicyBean =autoscalerServiceClient.getAutoScalePolicyForTenant(autoscalePolicyId, - carbonContext.getTenantId()); - log.debug(String.format("Removing autoscaling policy: [tenant-id] %d [autoscaling-policy-uuid] %s " + - "[autoscaling-policy-id] %s", autoscalePolicyBean.getTenantId(), - autoscalePolicyBean.getUuid(), autoscalePolicyId)); - autoscalerServiceClient.removeAutoscalingPolicy(autoscalePolicyBean.getUuid()); + autoscalerServiceClient.removeAutoscalingPolicy(autoscalePolicyId); } catch (RemoteException e) { log.error(e.getMessage(), e); throw new RestAPIException(e.getMessage(), e); @@ -953,16 +889,20 @@ public class StratosApiV41Utils { * @throws RestAPIException */ public static AutoscalePolicyBean[] getAutoScalePolicies() throws RestAPIException { - try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - AutoscalePolicy[] autoscalePolicies - = AutoscalerServiceClient.getInstance().getAutoScalingPoliciesByTenant(carbonContext.getTenantId()); - return ObjectConverter.convertStubAutoscalePoliciesToAutoscalePolicies(autoscalePolicies); - } catch (RemoteException e) { - String message = "Could not get autoscaling policies"; - log.error(message); - throw new RestAPIException(message, e); + + org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy[] autoscalePolicies = null; + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); + if (autoscalerServiceClient != null) { + try { + autoscalePolicies = autoscalerServiceClient.getAutoScalePolicies(); + + } catch (RemoteException e) { + String errorMsg = "Error while getting available autoscaling policies. Cause : " + e.getMessage(); + log.error(errorMsg, e); + throw new RestAPIException(errorMsg, e); + } } + return ObjectConverter.convertStubAutoscalePoliciesToAutoscalePolicies(autoscalePolicies); } /** @@ -974,25 +914,21 @@ public class StratosApiV41Utils { */ public static AutoscalePolicyBean getAutoScalePolicy(String autoscalePolicyId) throws RestAPIException { - AutoscalePolicyBean autoscalePolicyBean; - try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - AutoscalePolicy autoscalePolicy = AutoscalerServiceClient.getInstance().getAutoScalePolicyForTenant - (autoscalePolicyId, carbonContext.getTenantId()); + org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy autoscalePolicy = null; + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); + if (autoscalerServiceClient != null) { + try { + autoscalePolicy = autoscalerServiceClient.getAutoScalePolicy(autoscalePolicyId); - if (autoscalePolicy == null) { - return null; + } catch (RemoteException e) { + String errorMsg = "Error while getting information for autoscaling policy with id " + + autoscalePolicyId + ". Cause: " + e.getMessage(); + log.error(errorMsg, e); + throw new RestAPIException(errorMsg, e); } - autoscalePolicyBean = ObjectConverter.convertStubAutoscalePolicyToAutoscalePolicy(autoscalePolicy); - } catch (RemoteException e) { - String errorMsg = "Error while getting information for autoscaling policy: [autoscaing-policy-id]" + - autoscalePolicyId + ". Cause: " + e.getMessage(); - log.error(errorMsg, e); - throw new RestAPIException(errorMsg, e); } - return autoscalePolicyBean; - + return ObjectConverter.convertStubAutoscalePolicyToAutoscalePolicy(autoscalePolicy); } // Util methods for repo actions @@ -1023,8 +959,7 @@ public class StratosApiV41Utils { * @throws InvalidCartridgeGroupDefinitionException * @throws RestAPIException */ - public static void addCartridgeGroup(CartridgeGroupBean serviceGroupDefinition, String cartridgeGroupUuid, - int tenantId) + public static void addCartridgeGroup(CartridgeGroupBean serviceGroupDefinition) throws InvalidCartridgeGroupDefinitionException, ServiceGroupDefinitionException, RestAPIException, CloudControllerServiceCartridgeNotFoundExceptionException, AutoscalerServiceInvalidServiceGroupExceptionException { @@ -1034,61 +969,56 @@ public class StratosApiV41Utils { } List<String> cartridgeTypes = new ArrayList<String>(); - String[] cartridgeUuids; + String[] cartridgeNames = null; List<String> groupNames; - String[] cartridgeGroupNames; if (log.isDebugEnabled()) { - log.debug(String.format("Checking cartridges in cartridge group [tenant-id] %d [cartridge-group-uuid] %s " + - "[cartridge-group-name] %s", tenantId, cartridgeGroupUuid, serviceGroupDefinition.getName())); + log.debug("Checking cartridges in cartridge group " + serviceGroupDefinition.getName()); } - ServiceGroup serviceGroup = ObjectConverter.convertServiceGroupDefinitionToASStubServiceGroup - (serviceGroupDefinition, cartridgeGroupUuid, tenantId); - try { - findCartridgesInGroupBean(serviceGroup, cartridgeTypes); - } catch (RemoteException e) { - throw new RestAPIException(e.getMessage()); - } + findCartridgesInGroupBean(serviceGroupDefinition, cartridgeTypes); //validate the group definition to check if cartridges duplicate in any groups defined validateCartridgeDuplicationInGroupDefinition(serviceGroupDefinition); //validate the group definition to check if groups duplicate in any groups and //validate the group definition to check for cyclic group behaviour + validateGroupDuplicationInGroupDefinition(serviceGroupDefinition); - try { - validateGroupDuplicationInGroupDefinition(serviceGroupDefinition); - } catch (RemoteException e) { - String message = String.format("Error while validating group duplications in cartridge group: [tenant-id]" + - " %d [cartridge-group-uuid] %s [cartridge-group-name] %s", tenantId, cartridgeGroupUuid, - serviceGroupDefinition.getName()); - log.error(message, e); - throw new RestAPIException(message, e); - } + CloudControllerServiceClient ccServiceClient = getCloudControllerServiceClient(); - cartridgeUuids = new String[cartridgeTypes.size()]; + cartridgeNames = new String[cartridgeTypes.size()]; int j = 0; - for (String cartridgeUuid : cartridgeTypes) { - cartridgeUuids[j] = cartridgeUuid; - j++; + for (String cartridgeType : cartridgeTypes) { + try { + if (ccServiceClient.getCartridge(cartridgeType) == null) { + // cartridge is not deployed, can't continue + log.error("Invalid cartridge found in cartridge group " + cartridgeType); + throw new InvalidCartridgeException(); + } else { + cartridgeNames[j] = cartridgeType; + j++; + } + } catch (RemoteException e) { + String message = "Could not add the cartridge group: " + serviceGroupDefinition.getName(); + log.error(message, e); + throw new RestAPIException(message, e); + } } + // if any sub groups are specified in the group, they should be already deployed if (serviceGroupDefinition.getGroups() != null) { if (log.isDebugEnabled()) { - log.debug(String.format("checking subGroups in cartridge group: [tenant-id] %d [cartridge-group-uuid]" + - " %s [cartridge-group-name] %s", tenantId, cartridgeGroupUuid, - serviceGroupDefinition.getName())); + log.debug("checking subGroups in cartridge group " + serviceGroupDefinition.getName()); } List<CartridgeGroupBean> groupDefinitions = serviceGroupDefinition.getGroups(); groupNames = new ArrayList<String>(); - cartridgeGroupNames = new String[groupDefinitions.size()]; + int i = 0; for (CartridgeGroupBean groupList : groupDefinitions) { groupNames.add(groupList.getName()); - cartridgeGroupNames[i] = groupList.getName(); i++; } @@ -1106,15 +1036,19 @@ public class StratosApiV41Utils { "sub-groups defined:" + duplicatesOutput.toString()); } } + + ServiceGroup serviceGroup = ObjectConverter.convertServiceGroupDefinitionToASStubServiceGroup( + serviceGroupDefinition); + AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient(); try { asServiceClient.addServiceGroup(serviceGroup); // Add cartridge group elements to SM cache - done after service group has been added StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); - smServiceClient.addUsedCartridgesInCartridgeGroups(serviceGroup.getUuid(), cartridgeUuids); + smServiceClient.addUsedCartridgesInCartridgeGroups(serviceGroupDefinition.getName(), cartridgeNames); } catch (RemoteException e) { - String message = String.format("Could not add the cartridge group: [cartridge-group-name] %s ", - serviceGroupDefinition.getName()); + + String message = "Could not add the cartridge group: " + serviceGroupDefinition.getName(); log.error(message, e); throw new RestAPIException(message, e); } @@ -1126,20 +1060,19 @@ public class StratosApiV41Utils { * @param cartridgeGroup * @throws RestAPIException */ - public static void updateServiceGroup(CartridgeGroupBean cartridgeGroup,int tenantId) throws RestAPIException, - InvalidCartridgeGroupDefinitionException, CloudControllerServiceCartridgeNotFoundExceptionException { + public static void updateServiceGroup(CartridgeGroupBean cartridgeGroup) throws RestAPIException, + InvalidCartridgeGroupDefinitionException { try { + ServiceGroup serviceGroup = ObjectConverter.convertServiceGroupDefinitionToASStubServiceGroup( + cartridgeGroup); AutoscalerServiceClient autoscalerServiceClient = AutoscalerServiceClient.getInstance(); - ServiceGroup existingServiceGroup =autoscalerServiceClient.getServiceGroupByTenant(cartridgeGroup.getName(), tenantId); StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); // Validate whether cartridge group can be updated - if (!smServiceClient.canCartirdgeGroupBeRemoved(existingServiceGroup.getUuid())) { - String message = String.format("Cannot update cartridge group: [cartridge-group-uuid] %s " + - "[cartridge-group-name] %s since it is used in another cartridge group or an application", - existingServiceGroup.getUuid(), cartridgeGroup.getName()); - + if (!smServiceClient.canCartirdgeGroupBeRemoved(cartridgeGroup.getName())) { + String message = "Cannot update cartridge group: [group-name] " + cartridgeGroup.getName() + + " since it is used in another cartridge group or an application"; log.error(message); throw new RestAPIException(message); } @@ -1151,43 +1084,38 @@ public class StratosApiV41Utils { //validate the group definition to check for cyclic group behaviour validateGroupDuplicationInGroupDefinition(cartridgeGroup); - if (existingServiceGroup != null) { - ServiceGroup serviceGroup= ObjectConverter.convertServiceGroupDefinitionToASStubServiceGroup(cartridgeGroup, existingServiceGroup.getUuid(), tenantId); - autoscalerServiceClient.updateServiceGroup(serviceGroup); + if (serviceGroup != null) { + autoscalerServiceClient.updateServiceGroup( + ObjectConverter.convertServiceGroupDefinitionToASStubServiceGroup(cartridgeGroup)); List<String> cartridgesBeforeUpdating = new ArrayList<String>(); List<String> cartridgesAfterUpdating = new ArrayList<String>(); - ServiceGroup serviceGroupToBeUpdated = autoscalerServiceClient.getServiceGroup(existingServiceGroup.getUuid()); + ServiceGroup serviceGroupToBeUpdated = autoscalerServiceClient.getServiceGroup(cartridgeGroup.getName()); findCartridgesInServiceGroup(serviceGroupToBeUpdated, cartridgesBeforeUpdating); - findCartridgesInGroupBean(serviceGroup, cartridgesAfterUpdating); + findCartridgesInGroupBean(cartridgeGroup, cartridgesAfterUpdating); List<String> cartridgesToRemove = new ArrayList<String>(); List<String> cartridgesToAdd = new ArrayList<String>(); - if (cartridgesBeforeUpdating != null) { - if (!cartridgesBeforeUpdating.isEmpty()) { - cartridgesToRemove.addAll(cartridgesBeforeUpdating); - } + + if (!cartridgesBeforeUpdating.isEmpty()) { + cartridgesToRemove.addAll(cartridgesBeforeUpdating); } - if (cartridgesAfterUpdating != null) { - if (!cartridgesAfterUpdating.isEmpty()) { - cartridgesToAdd.addAll(cartridgesAfterUpdating); - } + if (!cartridgesAfterUpdating.isEmpty()) { + cartridgesToAdd.addAll(cartridgesAfterUpdating); } - if ((cartridgesBeforeUpdating != null) && (cartridgesAfterUpdating != null)) { - if ((!cartridgesBeforeUpdating.isEmpty()) && (!cartridgesAfterUpdating.isEmpty())) { - for (String before : cartridgesBeforeUpdating) { - for (String after : cartridgesAfterUpdating) { - if (before.toLowerCase().equals(after.toLowerCase())) { - if (cartridgesToRemove.contains(after)) { - cartridgesToRemove.remove(after); - } - if (cartridgesToAdd.contains(after)) { - cartridgesToAdd.remove(after); - } + if ((!cartridgesBeforeUpdating.isEmpty()) && (!cartridgesAfterUpdating.isEmpty())) { + for (String before : cartridgesBeforeUpdating) { + for (String after : cartridgesAfterUpdating) { + if (before.toLowerCase().equals(after.toLowerCase())) { + if (cartridgesToRemove.contains(after)) { + cartridgesToRemove.remove(after); + } + if (cartridgesToAdd.contains(after)) { + cartridgesToAdd.remove(after); } } } @@ -1198,7 +1126,7 @@ public class StratosApiV41Utils { if (cartridgesToAdd != null) { if (!cartridgesToAdd.isEmpty()) { { - smServiceClient.addUsedCartridgesInCartridgeGroups(existingServiceGroup.getUuid(), + smServiceClient.addUsedCartridgesInCartridgeGroups(cartridgeGroup.getName(), cartridgesToAdd.toArray(new String[cartridgesToRemove.size()])); } } @@ -1207,24 +1135,23 @@ public class StratosApiV41Utils { // Remove cartridge group elements from SM cache - done after cartridge group has been updated if (cartridgesToRemove != null) { if (!cartridgesToRemove.isEmpty()) { - smServiceClient.removeUsedCartridgesInCartridgeGroups(existingServiceGroup.getUuid(), + smServiceClient.removeUsedCartridgesInCartridgeGroups(cartridgeGroup.getName(), cartridgesToRemove.toArray(new String[cartridgesToRemove.size()])); } } } } catch (RemoteException e) { - String message = String.format("Could not update cartridge group: [cartridge-group-name] %s,", + String message = String.format("Could not update cartridge group: [group-name] %s,", cartridgeGroup.getName()); log.error(message); throw new RestAPIException(message, e); } catch (AutoscalerServiceInvalidServiceGroupExceptionException e) { - String message = String.format("Autoscaler invalid cartridge group definition: [cartridge-group-name] %s", + String message = String.format("Autoscaler invalid cartridge group definition: [group-name] %s", cartridgeGroup.getName()); log.error(message); throw new InvalidCartridgeGroupDefinitionException(message, e); } catch (ServiceGroupDefinitionException e) { - String message = String.format("Invalid cartridge group definition: [cartridge-group-name] %s", - cartridgeGroup.getName()); + String message = String.format("Invalid cartridge group definition: [group-name] %s", cartridgeGroup.getName()); log.error(message); throw new InvalidCartridgeGroupDefinitionException(message, e); } @@ -1256,15 +1183,15 @@ public class StratosApiV41Utils { * @return GroupBean * @throws RestAPIException */ - public static CartridgeGroupBean getServiceGroupDefinition(String name,int tenantId) throws RestAPIException { + public static CartridgeGroupBean getServiceGroupDefinition(String name) throws RestAPIException { if (log.isDebugEnabled()) { - log.debug("Reading cartridge group: [cartridge-group-name] " + name); + log.debug("Reading cartridge group: [group-name] " + name); } try { AutoscalerServiceClient asServiceClient = AutoscalerServiceClient.getInstance(); - ServiceGroup serviceGroup = asServiceClient.getServiceGroupByTenant(name, tenantId); + ServiceGroup serviceGroup = asServiceClient.getServiceGroup(name); if (serviceGroup == null) { return null; } @@ -1272,42 +1199,12 @@ public class StratosApiV41Utils { return ObjectConverter.convertStubServiceGroupToServiceGroupDefinition(serviceGroup); } catch (Exception e) { - String message = "Could not get cartridge group: [cartridge-group-name] " + name; - log.error(message, e); - throw new RestAPIException(message, e); - } - } - - /** - * Get a Service Group Definition by Name - * - * @param groupName Group Name - * @param tenantId tenant Id - * @return GroupBean - * @throws RestAPIException - */ - public static CartridgeGroupBean getOuterServiceGroupDefinition(String groupName, - int tenantId) throws RestAPIException { - if (log.isDebugEnabled()) { - log.debug("Reading cartridge group: [cartridge-group-name] " + groupName); - } - - try { - AutoscalerServiceClient asServiceClient = AutoscalerServiceClient.getInstance(); - ServiceGroup serviceGroup = asServiceClient.getOuterServiceGroupByTenant(groupName, tenantId); - if (serviceGroup == null) { - return null; - } - return ObjectConverter.convertStubServiceGroupToServiceGroupDefinition(serviceGroup); - - } catch (Exception e) { - String message = "Could not get cartridge group: [cartridge-group-name] " + groupName; + String message = "Could not get cartridge group: [group-name] " + name; log.error(message, e); throw new RestAPIException(message, e); } } - /** * Get a list of GroupBeans * @@ -1321,9 +1218,8 @@ public class StratosApiV41Utils { } try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); AutoscalerServiceClient asServiceClient = AutoscalerServiceClient.getInstance(); - ServiceGroup[] serviceGroups = asServiceClient.getServiceGroupsByTenant(carbonContext.getTenantId()); + ServiceGroup[] serviceGroups = asServiceClient.getServiceGroups(); if (serviceGroups == null || serviceGroups.length == 0 || (serviceGroups.length == 1 && serviceGroups[0] == null)) { return null; @@ -1348,40 +1244,33 @@ public class StratosApiV41Utils { * @param name Group Name * @throws RestAPIException */ - public static void removeServiceGroup(String name, int tenantId) throws RestAPIException, - AutoscalerServiceCartridgeGroupNotFoundExceptionException, CloudControllerServiceCartridgeNotFoundExceptionException { + public static void removeServiceGroup(String name) throws RestAPIException, AutoscalerServiceCartridgeGroupNotFoundExceptionException { + + if (log.isDebugEnabled()) { + log.debug("Removing cartridge group: [name] " + name); + } AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient(); StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); - String serviceGroupUuid; // Check whether cartridge group exists try { - - ServiceGroup serviceGroup = asServiceClient.getServiceGroupByTenant(name, tenantId); - - if (log.isDebugEnabled()) { - log.debug(String.format("Removing cartridge group: [tenant-id] %d [cartridge-group-uuid] %s " + - "[cartridge-group-name] %s", tenantId, serviceGroup.getUuid(), name)); - } - - if (serviceGroup == null) { - String message = "Cartridge group: [cartridge-group-name] " + name + " cannot be removed since it " + - "does not exist in tenant " + tenantId; + if (asServiceClient.getServiceGroup(name) == null) { + String message = "Cartridge group: [group-name] " + name + " cannot be removed since it does not exist"; log.error(message); throw new RestAPIException(message); } // Validate whether cartridge group can be removed - if (!smServiceClient.canCartirdgeGroupBeRemoved(serviceGroup.getUuid())) { - String message = String.format("Cannot remove cartridge group: [cartridge-group-uuid] %s [group-name]" + - " %s since it is used in another cartridge group or an application in tenant %d", - serviceGroup.getUuid(), serviceGroup.getName(), tenantId); + if (!smServiceClient.canCartirdgeGroupBeRemoved(name)) { + String message = "Cannot remove cartridge group: [group-name] " + name + + " since it is used in another cartridge group or an application"; log.error(message); throw new RestAPIException(message); } - serviceGroupUuid = serviceGroup.getUuid(); - asServiceClient.undeployServiceGroupDefinition(serviceGroup.getUuid()); + ServiceGroup serviceGroup = asServiceClient.getServiceGroup(name); + + asServiceClient.undeployServiceGroupDefinition(name); // Remove the dependent cartridges and cartridge groups from Stratos Manager cache // - done after service group has been removed @@ -1389,56 +1278,51 @@ public class StratosApiV41Utils { List<String> cartridgeList = new ArrayList<String>(); findCartridgesInServiceGroup(serviceGroup, cartridgeList); String[] cartridgeNames = cartridgeList.toArray(new String[cartridgeList.size()]); - smServiceClient.removeUsedCartridgesInCartridgeGroups(serviceGroupUuid, cartridgeNames); + smServiceClient.removeUsedCartridgesInCartridgeGroups(name, cartridgeNames); } catch (RemoteException e) { throw new RestAPIException("Could not remove cartridge groups", e); } - log.info(String.format("Successfully removed the cartridge group: [tenant-id] %d [cartridge-group-uuid] %s " + - "[cartridge-group-name] %s", tenantId, serviceGroupUuid, name)); + + log.info("Successfully removed the cartridge group: [group-name] " + name); } /** * Find Cartridges In ServiceGroup * * @param serviceGroup serviceGroup - * @param cartridgeNames List of cartridges + * @param cartridges List of cartridges */ - private static void findCartridgesInServiceGroup(ServiceGroup serviceGroup, List<String> cartridgeNames) throws - RemoteException, CloudControllerServiceCartridgeNotFoundExceptionException { + private static void findCartridgesInServiceGroup(ServiceGroup serviceGroup, List<String> cartridges) { - if (serviceGroup == null || cartridgeNames == null) { + if (serviceGroup == null || cartridges == null) { return; } - String cartridgeUuid; - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - if (serviceGroup.getCartridges().length > 0) { - for (String cartridgeName : serviceGroup.getCartridges()) { - if (cartridgeName != null && (!cartridgeNames.contains(cartridgeName))) { - cartridgeUuid = CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridgeName, - carbonContext.getTenantId()).getUuid(); - cartridgeNames.add(cartridgeUuid); + + if (serviceGroup.getCartridges() != null) { + for (String cartridge : serviceGroup.getCartridges()) { + if (cartridge != null && (!cartridges.contains(cartridge))) { + cartridges.add(cartridge); } } } if (serviceGroup.getGroups() != null) { for (ServiceGroup seGroup : serviceGroup.getGroups()) { - findCartridgesInServiceGroup(seGroup, cartridgeNames); + findCartridgesInServiceGroup(seGroup, cartridges); } } } /** - * Find Cartridges in GroupBean + * Find Cartrides in GroupBean * * @param groupBean groupBean * @param cartridges List of cartridges */ - private static void findCartridgesInGroupBean(ServiceGroup groupBean, List<String> cartridges) throws - RemoteException, CloudControllerServiceCartridgeNotFoundExceptionException { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + private static void findCartridgesInGroupBean(CartridgeGroupBean groupBean, List<String> cartridges) { + if (groupBean == null || cartridges == null) { return; } @@ -1446,15 +1330,13 @@ public class StratosApiV41Utils { if (groupBean.getCartridges() != null) { for (String cartridge : groupBean.getCartridges()) { if (!cartridges.contains(cartridge)) { - Cartridge cartridge1 = CloudControllerServiceClient.getInstance().getCartridgeByTenant(cartridge, - groupBean.getTenantId()); - cartridges.add(cartridge1.getUuid()); + cartridges.add(cartridge); } } } if (groupBean.getGroups() != null) { - for (ServiceGroup seGroup : groupBean.getGroups()) { + for (CartridgeGroupBean seGroup : groupBean.getGroups()) { findCartridgesInGroupBean(seGroup, cartridges); } } @@ -1471,8 +1353,7 @@ public class StratosApiV41Utils { * @param tenantDomain Tenant Domain * @throws RestAPIException */ - public static void addApplication(ApplicationBean appDefinition, String applicationUuid, int tenantId, - ConfigurationContext ctxt, String userName, + public static void addApplication(ApplicationBean appDefinition, ConfigurationContext ctxt, String userName, String tenantDomain) throws RestAPIException, AutoscalerServiceCartridgeNotFoundExceptionException, AutoscalerServiceCartridgeGroupNotFoundExceptionException { @@ -1484,9 +1365,8 @@ public class StratosApiV41Utils { } // check if an application with same id already exists try { - if (AutoscalerServiceClient.getInstance().existApplication(appDefinition.getApplicationId(), tenantId)) { - String msg = String.format("Application already exists: [application-uuid] %s [application-name] %s", - applicationUuid, appDefinition.getName()); + if (AutoscalerServiceClient.getInstance().existApplication(appDefinition.getApplicationId())) { + String msg = "Application already exists: [application-id] " + appDefinition.getApplicationId(); throw new RestAPIException(msg); } } catch (RemoteException e) { @@ -1500,7 +1380,7 @@ public class StratosApiV41Utils { ApplicationContext applicationContext = ObjectConverter.convertApplicationDefinitionToStubApplicationContext( - appDefinition, applicationUuid, tenantId); + appDefinition); applicationContext.setTenantId(ApplicationManagementUtil.getTenantId(ctxt)); applicationContext.setTenantDomain(tenantDomain); applicationContext.setTenantAdminUsername(userName); @@ -1523,9 +1403,12 @@ public class StratosApiV41Utils { List<String> usedCartridgeGroups = new ArrayList<String>(); findCartridgesAndGroupsInApplication(appDefinition, usedCartridges, usedCartridgeGroups); StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); - smServiceClient.addUsedCartridgesInApplications(applicationUuid, + smServiceClient.addUsedCartridgesInApplications( + appDefinition.getApplicationId(), usedCartridges.toArray(new String[usedCartridges.size()])); - smServiceClient.addUsedCartridgeGroupsInApplications(applicationUuid, + + smServiceClient.addUsedCartridgeGroupsInApplications( + appDefinition.getApplicationId(), usedCartridgeGroups.toArray(new String[usedCartridgeGroups.size()])); } catch (AutoscalerServiceApplicationDefinitionExceptionException e) { @@ -1545,11 +1428,11 @@ public class StratosApiV41Utils { * @param tenantDomain Tenant Domain * @throws RestAPIException */ - public static void updateApplication(ApplicationBean appDefinition, String applicationUuid, int tenantId, - ConfigurationContext ctxt, String userName, String tenantDomain) + public static void updateApplication(ApplicationBean appDefinition, ConfigurationContext ctxt, + String userName, String tenantDomain) throws RestAPIException, AutoscalerServiceCartridgeNotFoundExceptionException, AutoscalerServiceCartridgeGroupNotFoundExceptionException { - if (StringUtils.isBlank(applicationUuid)) { + if (StringUtils.isBlank(appDefinition.getApplicationId())) { String message = "Please specify the application name"; log.error(message); throw new RestAPIException(message); @@ -1558,7 +1441,7 @@ public class StratosApiV41Utils { validateApplication(appDefinition); ApplicationContext applicationContext = ObjectConverter.convertApplicationDefinitionToStubApplicationContext( - appDefinition, applicationUuid, tenantId); + appDefinition); applicationContext.setTenantId(ApplicationManagementUtil.getTenantId(ctxt)); applicationContext.setTenantDomain(tenantDomain); applicationContext.setTenantAdminUsername(userName); @@ -1592,8 +1475,7 @@ public class StratosApiV41Utils { * @param cartridgeGroups List <String> cartridgeGroups */ private static void findCartridgesAndGroupsInApplication( - ApplicationBean applicationBean, List<String> cartridges, List<String> cartridgeGroups) throws - RemoteException, RestAPIException { + ApplicationBean applicationBean, List<String> cartridges, List<String> cartridgeGroups) { if (applicationBean == null || applicationBean.getComponents() == null) { return; @@ -1619,20 +1501,15 @@ public class StratosApiV41Utils { * @param cartridges List <String> * @param cartridgeGroups List <String> */ - private static void findCartridgesAndGroupsInCartridgeGroup(CartridgeGroupReferenceBean groupReferenceBean, - List<String> cartridges, - List<String> cartridgeGroups) throws RemoteException, - RestAPIException { + private static void findCartridgesAndGroupsInCartridgeGroup( + CartridgeGroupReferenceBean groupReferenceBean, List<String> cartridges, List<String> cartridgeGroups) { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); if (groupReferenceBean == null || cartridgeGroups == null) { return; } if (!cartridgeGroups.contains(groupReferenceBean.getName())) { - ServiceGroup serviceGroup = AutoscalerServiceClient.getInstance().getServiceGroupByTenant - (groupReferenceBean.getName(), carbonContext.getTenantId()); - cartridgeGroups.add(serviceGroup.getUuid()); + cartridgeGroups.add(groupReferenceBean.getName()); } if (groupReferenceBean.getGroups() != null) { @@ -1652,26 +1529,15 @@ public class StratosApiV41Utils { * @param cartridges List <String> */ private static void findCartridgeNamesInCartridges( - List<CartridgeReferenceBean> cartridgeReferenceBeans, List<String> cartridges) throws RemoteException, - RestAPIException { + List<CartridgeReferenceBean> cartridgeReferenceBeans, List<String> cartridges) { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); if (cartridgeReferenceBeans == null || cartridges == null) { return; } for (CartridgeReferenceBean cartridgeReferenceBean : cartridgeReferenceBeans) { - if (cartridgeReferenceBean != null && !cartridges.contains(cartridgeReferenceBean.getUuid())) { - Cartridge cartridge = null; - try { - cartridge = CloudControllerServiceClient.getInstance().getCartridgeByTenant - (cartridgeReferenceBean.getType(), carbonContext.getTenantId()); - } catch (CloudControllerServiceCartridgeNotFoundExceptionException e) { - String message = e.getFaultMessage().getCartridgeNotFoundException().getMessage(); - log.error(message); - throw new RestAPIException(message, e); - } - cartridges.add(cartridge.getUuid()); + if (cartridgeReferenceBean != null && !cartridges.contains(cartridgeReferenceBean.getType())) { + cartridges.add(cartridgeReferenceBean.getType()); } } } @@ -1715,7 +1581,11 @@ public class StratosApiV41Utils { // Validate top level group deployment policy with cartridges if (group.getCartridges() != null) { - groupParentHasDeploymentPolicy = group.getDeploymentPolicy() != null; + if (group.getDeploymentPolicy() != null) { + groupParentHasDeploymentPolicy = true; + } else { + groupParentHasDeploymentPolicy = false; + } validateCartridgesForDeploymentPolicy(group.getCartridges(), groupParentHasDeploymentPolicy); } @@ -1750,7 +1620,7 @@ public class StratosApiV41Utils { for (CartridgeReferenceBean cartridge : cartridgeReferenceBeans) { if (cartridge.getSubscribableInfo().getDeploymentPolicy() != null) { String message = "Group deployment policy already exists. Remove deployment policy from " + - "cartridge subscription : [cartridge-alias] " + cartridge.getSubscribableInfo().getAlias(); + "cartridge subscription : [cartridge] " + cartridge.getSubscribableInfo().getAlias(); throw new RestAPIException(message); } } @@ -1781,7 +1651,7 @@ public class StratosApiV41Utils { Collection<CartridgeGroupReferenceBean> groups, boolean hasDeploymentPolicy) throws RestAPIException { - boolean groupHasDeploymentPolicy; + boolean groupHasDeploymentPolicy = false; for (CartridgeGroupReferenceBean group : groups) { if (groupsSet.get(group.getAlias()) != null) { @@ -1817,7 +1687,7 @@ public class StratosApiV41Utils { /** * Deploy application with an application policy. * - * @param applicationId Application Id + * @param applicationId Application ID * @param applicationPolicyId Application policy Id * @throws RestAPIException */ @@ -1831,17 +1701,13 @@ public class StratosApiV41Utils { } try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - int tenantId = carbonContext.getTenantId(); - - AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); - ApplicationContext application = autoscalerServiceClient.getApplicationByTenant(applicationId, tenantId); - if (log.isInfoEnabled()) { - log.info(String.format("Starting to deploy application: [tenant-id] %d [application-uuid] %s " + - "[application-id] %s", tenantId, application.getApplicationUuid(), applicationId)); + log.info(String.format("Starting to deploy application: [application-id] %s", applicationId)); } + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); + ApplicationContext application = autoscalerServiceClient.getApplication(applicationId); + if (application == null) { String message = String.format("Application not found: [application-id] %s", applicationId); log.error(message); @@ -1850,38 +1716,37 @@ public class StratosApiV41Utils { if (application.getStatus().equalsIgnoreCase(APPLICATION_STATUS_DEPLOYED)) { String message = String.format( - "Application is already in DEPLOYED state: [application-uuid] %s [application-id] %s [current" + - " status] %s ", application.getApplicationUuid(), applicationId, + "Application is already in DEPLOYED state: [application-id] %s [current status] %s ", + applicationId, application.getStatus()); log.error(message); throw new ApplicationAlreadyDeployedException(message); } // This is a redundant state since there is only CREATED,DEPLOYED state. - // But this will be useful when more status are added. + // But this will be usefull when more status are added. if (!application.getStatus().equalsIgnoreCase(APPLICATION_STATUS_CREATED)) { String message = String.format( - "Application is not in CREATED state: [application-uuid] %s [application-id] %s [current " + - "status] %s ", application.getApplicationUuid(), applicationId, application.getStatus()); + "Application is not in CREATED state: [application-id] %s [current status] %s ", + applicationId, + application.getStatus()); log.error(message); throw new RestAPIException(message); } - ApplicationBean applicationBean = getApplication(applicationId,tenantId); - //int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + ApplicationBean applicationBean = getApplication(applicationId); + int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); if (applicationBean.isMultiTenant() && (tenantId != -1234)) { String message = String.format( - "Multi-tenant applications can only be deployed by super tenant: [application-uuid] %s " + - "[application-id] %s", application.getApplicationUuid(), applicationId); + "Multi-tenant applications can only be deployed by super tenant: [application-id] %s", + applicationId); log.error(message); throw new RestAPIException(message); } - String applicationPolicyUuid=AutoscalerServiceClient.getInstance().getApplicationPolicyByTenant( - applicationPolicyId,application.getTenantId()).getUuid(); - autoscalerServiceClient.deployApplication(application.getApplicationUuid(), applicationPolicyUuid); + + autoscalerServiceClient.deployApplication(applicationId, applicationPolicyId); if (log.isInfoEnabled()) { - log.info(String.format("Application deployed successfully: [application-uuid] %s [application-id] %s", - application.getApplicationUuid(), applicationId)); + log.info(String.format("Application deployed successfully: [application-id] %s", applicationId)); } } catch (RemoteException e) { log.error(e.getMessage(), e); @@ -1911,8 +1776,7 @@ public class StratosApiV41Utils { appNetworkPartitionsBean.setNetworkPartitionIds(Arrays.asList(networkPartitions)); return appNetworkPartitionsBean; } catch (Exception e) { - String message = String.format("Could not get application network partitions for " + - "application: [application-id] %s", applicationId); + String message = String.format("Could not get application network partitions [application-id] %s", applicationId); log.error(message); throw new RuntimeException(message, e); } @@ -1927,30 +1791,26 @@ public class StratosApiV41Utils { public static void removeApplication(String applicationId) throws RestAPIException { try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient(); - ApplicationContext asApplication = asServiceClient.getApplicationByTenant(applicationId, - carbonContext.getTenantId()); + log.info(String.format("Starting to remove application [application-id %s", applicationId)); - log.info(String.format("Starting to remove application: [tenant-id] %d [application-uuid %s " + - "[application-id] %s", carbonContext.getTenantId(), asApplication.getApplicationUuid(), - applicationId)); + AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient(); + ApplicationContext asApplication = asServiceClient.getApplication(applicationId); ApplicationBean application = ObjectConverter.convertStubApplicationContextToApplicationDefinition( asApplication); - asServiceClient.deleteApplication(asApplication.getApplicationUuid()); + asServiceClient.deleteApplication(applicationId); List<String> usedCartridges = new ArrayList<String>(); List<String> usedCartridgeGroups = new ArrayList<String>(); findCartridgesAndGroupsInApplication(application, usedCartridges, usedCartridgeGroups); StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient(); smServiceClient.removeUsedCartridgesInApplications( - asApplication.getApplicationUuid(), + application.getApplicationId(), usedCartridges.toArray(new String[usedCartridges.size()])); smServiceClient.removeUsedCartridgeGroupsInApplications( - asApplication.getApplicationUuid(), + application.getApplicationId(), usedCartridgeGroups.toArray(new String[usedCartridgeGroups.size()])); } catch (RemoteException e) { @@ -1967,10 +1827,10 @@ public class StratosApiV41Utils { * @return ApplicationBean * @throws RestAPIException */ - public static ApplicationBean getApplication(String applicationId,int tenantId) throws RestAPIException { + public static ApplicationBean getApplication(String applicationId) throws RestAPIException { try { return ObjectConverter.convertStubApplicationContextToApplicationDefinition( - AutoscalerServiceClient.getInstance().getApplicationByTenant(applicationId,tenantId)); + AutoscalerServiceClient.getInstance().getApplication(applicationId)); } catch (RemoteException e) { String message = "Could not read application: [application-id] " + applicationId; log.error(message, e); @@ -1986,15 +1846,18 @@ public class StratosApiV41Utils { */ public static List<ApplicationBean> getApplications() throws RestAPIException { try { - PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); List<ApplicationBean> applicationDefinitions = new ArrayList<ApplicationBean>(); - ApplicationContext[] applicationContexts = AutoscalerServiceClient.getInstance().getApplicationsByTenant - (carbonContext.getTenantId()); + ApplicationContext[] applicationContexts = AutoscalerServiceClient.getInstance().getApplications(); if (applicationContexts != null) { for (ApplicationContext applicationContext : applicationContexts) { if (applicationContext != null) { ApplicationBean applicationDefinition = ObjectConverter.convertStubApplicationContextToApplicationDefinition(applicationContext); + if(applicationDefinition.isMultiTenant()) { + boolean hasSignUps = StratosManagerServiceClient.getInstance(). + applicationSignUpsExist(applicationDefinition.getApplicationId()); + applicationDefinition.setSignUpsExist(hasSignUps); + } applicationDefinitions.add(applicationDefinition); } } @@ -200
<TRUNCATED>
