You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/03/07 13:26:41 UTC
[09/12] git commit: fixing confilcts and merging
fixing confilcts and merging
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/bc336fa9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/bc336fa9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/bc336fa9
Branch: refs/heads/master
Commit: bc336fa979dbf6769f34119305a153dc64dc4e13
Parents: 09d0bef 5bd3ffe
Author: Isuru <is...@wso2.com>
Authored: Sun Mar 2 11:52:38 2014 +0530
Committer: Isuru <is...@wso2.com>
Committed: Sun Mar 2 11:52:38 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/CloudControllerClient.java | 69 +-
.../exception/InvalidPartitionException.java | 8 +
.../exception/InvalidPolicyException.java | 8 +-
.../exception/NonExistingLBException.java | 13 +-
.../exception/PartitionValidationException.java | 18 +-
.../exception/PolicyValidationException.java | 14 +-
.../autoscaler/exception/SpawningException.java | 13 +-
.../exception/TerminationException.java | 12 +-
.../autoscaler/partition/PartitionManager.java | 8 +-
.../stratos/cli/RestCommandLineService.java | 44 +-
.../InvalidCartridgeDefinitionException.java | 13 +-
.../InvalidCartridgeTypeException.java | 13 +-
.../exception/InvalidClusterException.java | 13 +-
.../exception/InvalidHostException.java | 13 +-
.../exception/InvalidIaasProviderException.java | 13 +-
.../exception/InvalidMemberException.java | 13 +-
.../exception/InvalidPartitionException.java | 11 +-
.../exception/InvalidRegionException.java | 11 +
.../exception/InvalidXMLException.java | 11 +
.../exception/InvalidZoneException.java | 11 +
.../MalformedConfigurationFileException.java | 10 +
.../exception/NoInstanceFoundException.java | 11 +
.../exception/SerializationException.java | 11 +
.../UnregisteredCartridgeException.java | 11 +
.../exception/UnregisteredClusterException.java | 10 +
.../cloud/controller/iaases/AWSEC2Iaas.java | 10 +-
.../impl/CloudControllerServiceImpl.java | 233 +------
.../interfaces/CloudControllerService.java | 21 +-
.../util/CloudControllerConstants.java | 1 +
.../validate/AWSEC2PartitionValidator.java | 2 +-
.../OpenstackNovaPartitionValidator.java | 2 +-
.../manager/client/AutoscalerServiceClient.java | 268 +++-----
.../client/CloudControllerServiceClient.java | 61 +-
.../service/ServiceDeploymentManager.java | 5 +-
.../UnregisteredCartridgeException.java | 6 +
.../manager/CartridgeSubscriptionManager.java | 10 +-
.../utils/CartridgeSubscriptionUtils.java | 10 -
.../rest/endpoint/services/ServiceUtils.java | 440 ++++++++----
.../src/main/resources/AutoScalerService.wsdl | 678 ++++++++++---------
.../pom.xml | 2 +-
.../main/resources/CloudControllerService.wsdl | 96 ++-
41 files changed, 1224 insertions(+), 1003 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bc336fa9/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
index a80aea0,11e57a1..3ea0fc6
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
@@@ -25,6 -26,8 +25,7 @@@ import org.apache.stratos.cloud.control
import org.apache.stratos.cloud.controller.pojo.LoadbalancerConfig;
import org.apache.stratos.cloud.controller.pojo.Properties;
import org.apache.stratos.cloud.controller.pojo.Property;
+ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
-import org.apache.stratos.manager.client.AutoscalerServiceClient;
import org.apache.stratos.manager.client.CloudControllerServiceClient;
import org.apache.stratos.manager.deploy.service.multitenant.MultiTenantService;
import org.apache.stratos.manager.deploy.service.multitenant.lb.MultiTenantLBService;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bc336fa9/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index 6f2880d,cb27159..5cb9721
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@@ -22,9 -22,9 +22,10 @@@ package org.apache.stratos.manager.mana
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+import org.apache.stratos.cloud.controller.pojo.LoadbalancerConfig;
import org.apache.stratos.cloud.controller.pojo.Properties;
import org.apache.stratos.cloud.controller.pojo.Property;
+ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
import org.apache.stratos.manager.client.CloudControllerServiceClient;
import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo;
import org.apache.stratos.manager.dto.SubscriptionInfo;
@@@ -74,16 -85,33 +75,15 @@@ public class CartridgeSubscriptionManag
CartridgeInfo cartridgeInfo;
try {
- cartridgeInfo =
- CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
- /*
- if (props != null) {
- // TODO: temp fix, need to do a proper fix
- Property[] cartridgeInfoProperties = cartridgeInfo.getProperties();
- if(cartridgeInfoProperties != null) {
- int length = cartridgeInfoProperties.length + props.length;
- Property[] combined = new Property[length];
- System.arraycopy(cartridgeInfoProperties, 0, combined, 0, cartridgeInfoProperties.length);
- System.arraycopy(props, 0, combined, cartridgeInfoProperties.length, props.length);
- cartridgeInfo.setProperties(combined);
- } else {
- cartridgeInfo.setProperties(props);
- }
+ cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(subscriptionData.getCartridgeType());
- } catch (UnregisteredCartridgeException e) {
- String message =
- subscriptionData.getCartridgeType() + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
- }
- */
+ } catch (CloudControllerServiceUnregisteredCartridgeExceptionException e) {
- String message =
- cartridgeType +
- " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
++ String message = subscriptionData.getCartridgeType() + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
log.error(message);
- throw e;
+ throw new ADCException(message, e);
} catch (Exception e) {
- String message = "Error getting info for " + cartridgeType;
+ String message = "Error getting info for " + subscriptionData.getCartridgeType();
log.error(message, e);
throw new ADCException(message, e);
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bc336fa9/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
index d318224,ee145f5..5fa3717
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
@@@ -221,242 -178,4 +221,232 @@@ public class CartridgeSubscriptionUtil
return source.substring(0, length);
}
+
+ public static LBDataContext getLoadBalancerDataContext (int tenantId, String serviceType, String deploymentPolicyName, LoadbalancerConfig lbConfig) throws UnregisteredCartridgeException, ADCException {
+
+ String lbCartridgeType = lbConfig.getType();
+
+ LBDataContext lbDataCtxt = new LBDataContext();
+ // set tenant Id
+ lbDataCtxt.setTenantId(tenantId);
+
+ Properties lbReferenceProperties = lbConfig.getProperties();
+
+ Property lbRefProperty = new Property();
+ lbRefProperty.setName(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF);
+
+ for (org.apache.stratos.cloud.controller.pojo.Property prop : lbReferenceProperties.getProperties()) {
+
+ String name = prop.getName();
+ String value = prop.getValue();
+
+ // TODO make following a chain of responsibility pattern
+ if (Constants.NO_LOAD_BALANCER.equals(name)) {
+
+ if ("true".equals(value)) {
+ if (log.isDebugEnabled()) {
+ log.debug("This cartridge does not require a load balancer. " + "[Type] " + serviceType);
+ }
+ lbRefProperty.setValue(name);
+ lbDataCtxt.addLoadBalancedServiceProperty(lbRefProperty);
+ break;
+ }
+ } else if (Constants.EXISTING_LOAD_BALANCERS.equals(name)) {
+
+ String clusterIdsVal = value;
+ if (log.isDebugEnabled()) {
+ log.debug("This cartridge refers to existing load balancers. " + "[Type] " + serviceType + "[Referenced Cluster Ids] " + clusterIdsVal);
+ }
+
+ String[] clusterIds = clusterIdsVal.split(",");
+
+ for (String clusterId : clusterIds) {
+ try {
+ AutoscalerServiceClient.getServiceClient().checkLBExistenceAgainstPolicy(clusterId, deploymentPolicyName);
+ } catch (Exception ex) {
+ // we don't need to throw the error here.
+ log.error(ex.getMessage(), ex);
+ }
+ }
+
+ lbRefProperty.setValue(name);
+ lbDataCtxt.addLoadBalancedServiceProperty(lbRefProperty);
+ break;
+
+ } else if (Constants.DEFAULT_LOAD_BALANCER.equals(name)) {
+
+ if ("true".equals(value)) {
+
+ lbRefProperty.setValue(name);
+
+ CartridgeInfo lbCartridgeInfo;
+
+ try {
+ lbCartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(lbCartridgeType);
+
- } catch (UnregisteredCartridgeException e) {
- String message = lbCartridgeType + " is not a valid cartridgeSubscription type";
- log.error(message);
- throw e;
-
+ } catch (Exception e) {
+ String message = "Error getting info for " + lbCartridgeType;
+ log.error(message, e);
+ throw new ADCException(message, e);
+ }
+
+ if (lbCartridgeInfo == null) {
+ String msg = "Please specify a LB cartridge type for the cartridge: " + serviceType + " as category: " +
+ Constants.DEFAULT_LOAD_BALANCER;
+ log.error(msg);
+ throw new ADCException(msg);
+ }
+
+ lbDataCtxt.setLbCartridgeInfo(lbCartridgeInfo);
+
+ if (log.isDebugEnabled()) {
+ log.debug("This cartridge uses default load balancer. " + "[Type] " + serviceType);
+ }
+
+ try {
+ // get the valid policies for lb cartridge
+ DeploymentPolicy[] lbCartridgeDepPolicies =
+ getAutoscalerServiceClient().getDeploymentPolicies(lbCartridgeType);
+ // traverse deployment policies of lb cartridge
+ for (DeploymentPolicy policy : lbCartridgeDepPolicies) {
+
+ // check existence of the subscribed policy
+ if (deploymentPolicyName.equals(policy.getId())) {
+
+ if (!getAutoscalerServiceClient().checkDefaultLBExistenceAgainstPolicy(deploymentPolicyName)) {
+
+ Properties lbProperties = new Properties();
+
+ // if LB cartridge definition has properties as well, combine
+ if (lbCartridgeInfo.getProperties() != null && lbCartridgeInfo.getProperties().length > 0) {
+ lbProperties.setProperties(combine(lbCartridgeInfo.getProperties(), new Property[]{lbRefProperty}));
+
+ } else {
+ lbProperties.setProperties(new Property[]{lbRefProperty});
+ }
+
+ lbDataCtxt.addLBProperties(lbProperties);
+ }
+ }
+ }
+
+ } catch (Exception ex) {
+ // we don't need to throw the error here.
+ log.error(ex.getMessage(), ex);
+ }
+
+ // set deployment and autoscaling policies
+ lbDataCtxt.setDeploymentPolicy(deploymentPolicyName);
+ lbDataCtxt.setAutoscalePolicy(lbCartridgeInfo.getDefaultAutoscalingPolicy());
+
+ lbDataCtxt.addLoadBalancedServiceProperty(lbRefProperty);
+ break;
+ }
+
+ } else if (Constants.SERVICE_AWARE_LOAD_BALANCER.equals(name)) {
+
+ if ("true".equals(value)) {
+
+ lbRefProperty.setValue(name);
+
+ CartridgeInfo lbCartridgeInfo;
+
+ try {
+ lbCartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(lbCartridgeType);
+
- } catch (UnregisteredCartridgeException e) {
- String message = lbCartridgeType + " is not a valid cartridgeSubscription type";
- log.error(message);
- throw e;
-
+ } catch (Exception e) {
+ String message = "Error getting info for " + lbCartridgeType;
+ log.error(message, e);
+ throw new ADCException(message, e);
+ }
+
+ if (lbCartridgeInfo == null) {
+ String msg = "Please specify a LB cartridge type for the cartridge: " + serviceType + " as category: " +
+ Constants.SERVICE_AWARE_LOAD_BALANCER;
+ log.error(msg);
+ throw new ADCException(msg);
+ }
+
+ lbDataCtxt.setLbCartridgeInfo(lbCartridgeInfo);
+
+ // add a property for the service type
+ Property loadBalancedServiceTypeProperty = new Property();
+ loadBalancedServiceTypeProperty.setName(Constants.LOAD_BALANCED_SERVICE_TYPE);
+ // set the load balanced service type
+ loadBalancedServiceTypeProperty.setValue(serviceType);
+
+ if (log.isDebugEnabled()) {
+ log.debug("This cartridge uses a service aware load balancer. [Type] " + serviceType);
+ }
+
+ try {
+
+ // get the valid policies for lb cartridge
+ DeploymentPolicy[] lbCartridgeDepPolicies = getAutoscalerServiceClient().getDeploymentPolicies(lbCartridgeType);
+ // traverse deployment policies of lb cartridge
+ for (DeploymentPolicy policy : lbCartridgeDepPolicies) {
+ // check existence of the subscribed policy
+ if (deploymentPolicyName.equals(policy.getId())) {
+
+ if (!getAutoscalerServiceClient().checkServiceLBExistenceAgainstPolicy(serviceType, deploymentPolicyName)) {
+
+ Properties lbProperties = new Properties();
+
+ // if LB cartridge definition has properties as well, combine
+ if (lbCartridgeInfo.getProperties() != null && lbCartridgeInfo.getProperties().length > 0) {
+ lbProperties.setProperties(combine(lbCartridgeInfo.getProperties(), new Property[]{lbRefProperty, loadBalancedServiceTypeProperty}));
+
+ } else {
+ lbProperties.setProperties(new Property[]{lbRefProperty, loadBalancedServiceTypeProperty});
+ }
+
+ // set a payload property for load balanced service type
+ Property payloadProperty = new Property();
+ payloadProperty.setName("LOAD_BALANCED_SERVICE_TYPE"); //TODO: refactor hardcoded name
+ payloadProperty.setValue(serviceType);
+
+ lbDataCtxt.addLBProperties(lbProperties);
+ }
+ }
+ }
+
+ } catch (Exception ex) {
+ // we don't need to throw the error here.
+ log.error(ex.getMessage(), ex);
+ }
+
+ // set deployment and autoscaling policies
+ lbDataCtxt.setDeploymentPolicy(deploymentPolicyName);
+ lbDataCtxt.setAutoscalePolicy(lbCartridgeInfo.getDefaultAutoscalingPolicy());
+
+ lbDataCtxt.addLoadBalancedServiceProperty(lbRefProperty);
+ break;
+ }
+ }
+ }
+
+ return lbDataCtxt;
+ }
+
+ private static AutoscalerServiceClient getAutoscalerServiceClient () throws ADCException {
+
+ try {
+ return AutoscalerServiceClient.getServiceClient();
+
+ } catch (AxisFault axisFault) {
+ String errorMsg = "Error in getting AutoscalerServiceClient instance";
+ log.error(errorMsg, axisFault);
+ throw new ADCException (errorMsg, axisFault);
+ }
+ }
+
+ private static Property[] combine (Property[] propertyArray1, Property[] propertyArray2) {
+
+ int length = propertyArray1.length + propertyArray2.length;
+ Property[] combinedProperties = new Property[length];
+ System.arraycopy(propertyArray1, 0, combinedProperties, 0, propertyArray1.length);
+ System.arraycopy(propertyArray2, 0, combinedProperties, propertyArray1.length, propertyArray2.length);
+
+ return combinedProperties;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bc336fa9/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index e243ed8,f95d935..ff52750
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@@ -23,9 -23,15 +23,15 @@@ import org.apache.axis2.context.Configu
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.cloud.controller.pojo.CartridgeConfig;
+import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+import org.apache.stratos.cloud.controller.pojo.Property;
+ import org.apache.stratos.autoscaler.stub.AutoScalerServiceInvalidPartitionExceptionException;
+ import org.apache.stratos.autoscaler.stub.AutoScalerServiceInvalidPolicyExceptionException;
-import org.apache.stratos.cloud.controller.pojo.*;
-import org.apache.stratos.cloud.controller.pojo.Properties;
+ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceIllegalArgumentExceptionException;
+ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeDefinitionExceptionException;
+ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException;
+ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException;
-import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
import org.apache.stratos.manager.client.AutoscalerServiceClient;
import org.apache.stratos.manager.client.CloudControllerServiceClient;
import org.apache.stratos.manager.deploy.service.Service;
@@@ -875,19 -1024,302 +996,16 @@@ public class ServiceUtils
subscriptionData.setRepositoryUsername(cartridgeInfoBean.getRepoURL());
subscriptionData.setRepositoryPassword(cartridgeInfoBean.getRepoPassword());
- Properties properties = new Properties();
- if(cartridgeInfoBean.isPersistanceRequired()){
- /*
- PersistanceMapping persistanceMapping = new PersistanceMapping();
- persistanceMapping.setPersistanceRequired(persistanceMappingBean.persistanceRequired);
- persistanceMapping.setSize(persistanceMappingBean.size);
- persistanceMapping.setDevice(persistanceMappingBean.device);
- persistanceMapping.setRemoveOntermination(persistanceMappingBean.removeOnTermination);
- subscriptionData.setPersistanceMapping(persistanceMapping);
- */
-
- // Add persistance mapping properties to the subscription.
- Property persistanceRequiredProperty = new Property();
- persistanceRequiredProperty.setName(IS_VOLUME_REQUIRED);
- persistanceRequiredProperty.setValue(String.valueOf(cartridgeInfoBean.isPersistanceRequired()));
-
- Property sizeProperty = new Property();
- sizeProperty.setName(VOLUME_SIZE);
- sizeProperty.setValue(cartridgeInfoBean.getSize());
-
- Property deleteOnTerminationProperty = new Property();
- deleteOnTerminationProperty.setName(SHOULD_DELETE_VOLUME);
- deleteOnTerminationProperty.setValue(String.valueOf( cartridgeInfoBean.isRemoveOnTermination()));
-
- properties.setProperties(new Property[]{persistanceRequiredProperty,sizeProperty, deleteOnTerminationProperty});
- }
-
-
- // If multitenant, return for now. TODO -- fix properly
- if(cartridgeInfo != null && cartridgeInfo.getMultiTenant()) {
- log.info(" ******* MT cartridge ******* ");
-
- subscriptionData.setPrivateRepository(false);
- subscriptionData.setLbClusterId(null);
- subscriptionData.setProperties(null);
-
- CartridgeSubscription cartridgeSubscription =
- cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(subscriptionData);
- log.info(" --- ** -- ");
- return cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription, properties);
-
+ if (cartridgeInfoBean.isPersistanceRequired()) {
+ // Add persistence related properties to PersistenceContext
+ PersistenceContext persistenceContext = new PersistenceContext();
+ persistenceContext.setPersistanceRequiredProperty(IS_VOLUME_REQUIRED, String.valueOf(cartridgeInfoBean.isPersistanceRequired()));
+ persistenceContext.setSizeProperty(VOLUME_SIZE, cartridgeInfoBean.getSize());
+ persistenceContext.setDeleteOnTerminationProperty(SHOULD_DELETE_VOLUME, String.valueOf(cartridgeInfoBean.isRemoveOnTermination()));
-
- // set the PersistenceContext to to SubscriptionData
- subscriptionData.setPersistanceCtxt(persistenceContext);
}
-
- List<Property> lbRefProp = new ArrayList<Property>();
-
- // get lb config reference
- LoadbalancerConfig lbConfig = cartridgeInfo.getLbConfig();
- String lbClusterId = null;
-
- if (lbConfig == null || lbConfig.getProperties() == null) {
- if (log.isDebugEnabled()) {
- log.debug("This Service does not require a load balancer. " + "[Service Name] " +
- cartridgeType);
- }
- } else {
-
- Properties lbReferenceProperties = lbConfig.getProperties();
-
- Property property = new Property();
- property.setName(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF);
-
- for (org.apache.stratos.cloud.controller.pojo.Property prop : lbReferenceProperties.getProperties()) {
-
- String name = prop.getName();
- String value = prop.getValue();
-
- // TODO make following a chain of responsibility pattern
- if (Constants.NO_LOAD_BALANCER.equals(name)) {
- if ("true".equals(value)) {
- if (log.isDebugEnabled()) {
- log.debug("This cartridge does not require a load balancer. " +
- "[Type] " + cartridgeType);
- }
- property.setValue(name);
- lbRefProp.add(property);
- break;
- }
- } else if (Constants.EXISTING_LOAD_BALANCERS.equals(name)) {
- String clusterIdsVal = value;
- if (log.isDebugEnabled()) {
- log.debug("This cartridge refers to existing load balancers. " + "[Type] " +
- cartridgeType + "[Referenced Cluster Ids] " + clusterIdsVal);
- }
-
- String[] clusterIds = clusterIdsVal.split(",");
-
- for (String clusterId : clusterIds) {
- if (autoscalerServiceClient != null) {
- try {
- autoscalerServiceClient.checkLBExistenceAgainstPolicy(clusterId,
- deploymentPolicy);
- } catch (Exception ex) {
- // we don't need to throw the error here.
- log.error(ex.getMessage(), ex);
- }
- }
- }
-
- property.setValue(name);
- lbRefProp.add(property);
- break;
-
- } else if (Constants.DEFAULT_LOAD_BALANCER.equals(name)) {
-
- if ("true".equals(value)) {
-
- CartridgeInfo lbCartridgeInfo = null;
- String lbCartridgeType = lbConfig.getType();
- try {
- // retrieve lb Cartridge info
- if(lbCartridgeType != null) {
- lbCartridgeInfo = cloudControllerServiceClient.getCartridgeInfo(lbCartridgeType);
- }
- } catch (Exception e) {
- String msg = "Cannot get cartridge info: " + cartridgeType;
- log.error(msg, e);
- throw new ADCException(msg, e);
- }
-
- property.setValue(name);
- if (log.isDebugEnabled()) {
- log.debug("This cartridge uses default load balancer. " + "[Type] " +
- cartridgeType);
- }
- if (autoscalerServiceClient != null) {
- try {
- // get the valid policies for lb cartridge
- DeploymentPolicy[] lbCartridgeDepPolicies =
- autoscalerServiceClient.getDeploymentPolicies(lbCartridgeType);
- // traverse deployment policies of lb cartridge
- for (DeploymentPolicy policy : lbCartridgeDepPolicies) {
- // check existence of the subscribed policy
- if (deploymentPolicy.equals(policy.getId())) {
-
- if (!autoscalerServiceClient.checkDefaultLBExistenceAgainstPolicy(deploymentPolicy)) {
-
- // if lb cluster doesn't exist
- String lbAlias = "lb" + new Random().nextInt();
- if(lbCartridgeInfo != null) {
- lbCartridgeInfo.addProperties(property);
- lbClusterId = subscribeToLb(lbCartridgeType, cartridgeType,
- lbAlias,
- lbCartridgeInfo.getDefaultAutoscalingPolicy(),
- deploymentPolicy, configurationContext,
- tenantUsername, tenantDomain,
- lbCartridgeInfo.getProperties());
- } else {
- String msg = "Please specify a LB cartridge type for the cartridge: "
- + cartridgeType + " as category: " +
- Constants.DEFAULT_LOAD_BALANCER;
- log.error(msg);
- throw new ADCException(msg);
- }
- }
- }
- }
-
- } catch (Exception ex) {
- // we don't need to throw the error here.
- log.error(ex.getMessage(), ex);
- }
- }
-
- lbRefProp.add(property);
- break;
- }
-
- } else if (Constants.SERVICE_AWARE_LOAD_BALANCER.equals(name)) {
-
- if ("true".equals(value)) {
-
- CartridgeInfo lbCartridgeInfo = null;
- String lbCartridgeType = lbConfig.getType();
- try {
- // retrieve lb Cartridge info
- if(lbCartridgeType != null) {
- lbCartridgeInfo = cloudControllerServiceClient.getCartridgeInfo(lbCartridgeType);
- }
- } catch (Exception e) {
- String msg = "Cannot get cartridge info: " + cartridgeType+". Cause: "+e.getMessage();
- log.error(msg, e);
- throw new ADCException(msg, e);
- }
-
- // add a property for the service type
- Property loadBalancedServiceTypeProperty = new Property();
- loadBalancedServiceTypeProperty.setName(Constants.LOAD_BALANCED_SERVICE_TYPE);
-
- property.setValue(name);
- // set the load balanced service type
- loadBalancedServiceTypeProperty.setValue(cartridgeType);
- if (log.isDebugEnabled()) {
- log.debug("This cartridge uses a service aware load balancer. " +
- "[Type] " + cartridgeType);
- }
- if (autoscalerServiceClient != null) {
- try {
-
- // get the valid policies for lb cartridge
- DeploymentPolicy[] lbCartridgeDepPolicies =
- autoscalerServiceClient.getDeploymentPolicies(lbCartridgeType);
- // traverse deployment policies of lb cartridge
- for (DeploymentPolicy policy : lbCartridgeDepPolicies) {
- // check existence of the subscribed policy
- if (deploymentPolicy.equals(policy.getId())) {
-
- if (!autoscalerServiceClient.checkServiceLBExistenceAgainstPolicy(cartridgeType,
- deploymentPolicy)) {
-
- // if lb cluster doesn't exist
- String lbAlias =
- "lb" + cartridgeType +
- new Random().nextInt();
-
- if(lbCartridgeInfo != null) {
- lbCartridgeInfo.addProperties(property);
- lbCartridgeInfo.addProperties(loadBalancedServiceTypeProperty);
-
- lbClusterId = subscribeToLb(lbCartridgeType, cartridgeType,
- lbAlias,
- lbCartridgeInfo.getDefaultAutoscalingPolicy(),
- deploymentPolicy,
- configurationContext, tenantUsername,
- tenantDomain,
- lbCartridgeInfo.getProperties());
- } else {
- String msg = "Please specify a LB cartridge type for the cartridge: "
- + cartridgeType + " as category: " +
- Constants.SERVICE_AWARE_LOAD_BALANCER;
- log.error(msg);
- throw new ADCException(msg);
- }
- }
- }
- }
-
- } catch (Exception ex) {
- // we don't need to throw the error here.
- log.error(ex.getMessage(), ex);
- }
- }
-
- lbRefProp.add(property);
- break;
- }
- }
- }
- }
-
- subscriptionData.setPrivateRepository(cartridgeInfoBean.isPrivateRepo());
- subscriptionData.setLbClusterId(lbClusterId);
- subscriptionData.setProperties(lbRefProp.toArray(new Property[0]));
- CartridgeSubscription cartridgeSubscription =
- cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(subscriptionData);
-
-
- if (dataCartridgeAlias != null && !dataCartridgeAlias.trim().isEmpty()) {
-
- /*dataCartridgeAlias = dataCartridgeAlias.trim();
-
- CartridgeSubscription connectingCartridgeSubscription = null;
- try {
- connectingCartridgeSubscription =
- cartridgeSubsciptionManager.getCartridgeSubscription(tenantDomain,
- dataCartridgeAlias);
-
- } catch (NotSubscribedException e) {
- log.error(e.getMessage(), e);
- }
- if (connectingCartridgeSubscription != null) {
- try {
- cartridgeSubsciptionManager.connectCartridges(tenantDomain,
- cartridgeSubscription,
- connectingCartridgeSubscription.getAlias());
-
- } catch (NotSubscribedException e) {
- log.error(e.getMessage(), e);
-
- } catch (AxisFault axisFault) {
- log.error(axisFault.getMessage(), axisFault);
- }
- } else {
- log.error("Failed to connect. No cartridge subscription found for tenant " +
- ApplicationManagementUtil.getTenantId(configurationContext) +
- " with alias " + alias);
- }*/
- }
-
- for (Property lbRefProperty : lbRefProp) {
- properties.addProperties(lbRefProperty);
- }
-
- SubscriptionInfo registerCartridgeSubscription = cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription, properties);
-
- return registerCartridgeSubscription;
+ //subscribe
+ return cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(subscriptionData);
}
@@@ -932,8 -1364,57 +1050,55 @@@
new org.apache.stratos.rest.endpoint.bean.topology.Cluster[clusters.size()];
arrCluster = clusters.toArray(arrCluster);
return arrCluster;
+
-
-
}
+ // return the cluster id for the lb. This is a temp fix.
- private static String subscribeToLb(String cartridgeType, String loadBalancedCartridgeType, String lbAlias,
++ /*private static String subscribeToLb(String cartridgeType, String loadBalancedCartridgeType, String lbAlias,
+ String defaultAutoscalingPolicy, String deploymentPolicy,
+ ConfigurationContext configurationContext, String userName, String tenantDomain, Property[] props) throws ADCException {
+
+ CartridgeSubscription cartridgeSubscription;
+
+ try {
+ if(log.isDebugEnabled()) {
+ log.debug("Subscribing to a load balancer [cartridge] "+cartridgeType+" [alias] "+lbAlias);
+ }
+
+ SubscriptionData subscriptionData = new SubscriptionData();
+ subscriptionData.setCartridgeType(cartridgeType);
+ subscriptionData.setCartridgeAlias(lbAlias.trim());
+ subscriptionData.setAutoscalingPolicyName(defaultAutoscalingPolicy);
+ subscriptionData.setDeploymentPolicyName(deploymentPolicy);
+ subscriptionData.setTenantDomain(tenantDomain);
+ subscriptionData.setTenantId(ApplicationManagementUtil.getTenantId(configurationContext));
+ subscriptionData.setTenantAdminUsername(userName);
+ subscriptionData.setRepositoryType("git");
+ //subscriptionData.setProperties(props);
+ subscriptionData.setPrivateRepository(false);
+
+ cartridgeSubscription =
+ cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(subscriptionData);
+
+ //set a payload parameter to indicate the load balanced cartridge type
+ cartridgeSubscription.getPayloadData().add("LOAD_BALANCED_SERVICE_TYPE", loadBalancedCartridgeType);
+
+ Properties lbProperties = new Properties();
+ lbProperties.setProperties(props);
+ cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription, lbProperties);
+
+ if(log.isDebugEnabled()) {
+ log.debug("Successfully subscribed to a load balancer [cartridge] "+cartridgeType+" [alias] "+lbAlias);
+ }
+ } catch (Exception e) {
+ String msg = "Error while subscribing to load balancer cartridge [type] "+cartridgeType+". Cause: "+e.getMessage();
+ log.error(msg, e);
+ throw new ADCException(msg, e);
+ }
+
+ return cartridgeSubscription.getClusterDomain();
- }
++ } */
+
static StratosAdminResponse unsubscribe(String alias, String tenantDomain) throws RestAPIException {
try {