You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2013/12/10 15:54:08 UTC
[09/16] git commit: handle lb cluster creation at cartridge deployment
handle lb cluster creation at cartridge deployment
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/7808ff37
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/7808ff37
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/7808ff37
Branch: refs/heads/master
Commit: 7808ff37e843181abd789b9859ded28ebf830751
Parents: 2849f91
Author: Nirmal Fernando <ni...@apache.org>
Authored: Tue Dec 10 19:07:31 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Tue Dec 10 19:16:13 2013 +0530
----------------------------------------------------------------------
.../apache/stratos/rest/endpoint/Constants.java | 4 ++
.../definition/CartridgeDefinitionBean.java | 3 ++
.../cartridge/definition/LoadBalancerBean.java | 4 ++
.../bean/util/converter/PojoConverter.java | 2 +
.../rest/endpoint/services/ServiceUtils.java | 54 +++++++++++++++++---
.../rest/endpoint/services/StratosAdmin.java | 3 +-
6 files changed, 61 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7808ff37/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/Constants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/Constants.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/Constants.java
index c3ea68f..033560e 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/Constants.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/Constants.java
@@ -25,4 +25,8 @@ public class Constants {
public static final String SUPER_TENANT_SERVICE = "super.tenant.service";
public static final String IS_LOAD_BALANCER = "load.balancer";
+ public static final String SERVICE_AWARE_LOAD_BALANCER = "service.aware.load.balancer";
+ public static final String DEFAULT_LOAD_BALANCER = "default.load.balancer";
+ public static final String NO_LOAD_BALANCER = "no.load.balancer";
+ public static final String EXISTING_LOAD_BALANCERS = "existing.load.balancers";
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7808ff37/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java
index 318e347..7984b5f 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java
@@ -20,6 +20,7 @@
package org.apache.stratos.rest.endpoint.bean.cartridge.definition;
import javax.xml.bind.annotation.XmlRootElement;
+
import java.util.List;
@XmlRootElement(name = "cartridgeDefinitionBean")
@@ -48,6 +49,8 @@ public class CartridgeDefinitionBean {
public LoadBalancerBean loadBalancer;
public List<PropertyBean> property;
+
+ public String defaultAutoscalingPolicy;
public String toString () {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7808ff37/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/LoadBalancerBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/LoadBalancerBean.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/LoadBalancerBean.java
index c21c867..8fbddcc 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/LoadBalancerBean.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/LoadBalancerBean.java
@@ -26,6 +26,10 @@ import java.util.List;
public class LoadBalancerBean {
public String type;
+
+ public String deploymentPolicy;
+
+ public String autoscalingPolicy;
public List<PropertyBean> property;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7808ff37/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index 21e5247..3290981 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
@@ -46,6 +46,8 @@ public class PojoConverter {
cartridgeConfig.setMultiTenant(cartridgeDefinitionBean.multiTenant);
cartridgeConfig.setDisplayName(cartridgeDefinitionBean.displayName);
cartridgeConfig.setDescription(cartridgeDefinitionBean.description);
+ cartridgeConfig.setDefaultAutoscalingPolicy(cartridgeDefinitionBean.defaultAutoscalingPolicy);
+
//deployment information
if(cartridgeDefinitionBean.deployment != null) {
cartridgeConfig.setBaseDir(cartridgeDefinitionBean.deployment.baseDir);
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7808ff37/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git 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
index 68469ac..85da05e 100644
--- 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
@@ -40,6 +40,7 @@ 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.rest.endpoint.Constants;
+import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy;
@@ -54,6 +55,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Random;
import java.util.Set;
import java.util.regex.Pattern;
@@ -61,11 +63,14 @@ public class ServiceUtils {
private static Log log = LogFactory.getLog(StratosAdmin.class);
private static CartridgeSubscriptionManager cartridgeSubsciptionManager = new CartridgeSubscriptionManager();
- static void deployCartridge (CartridgeDefinitionBean cartridgeDefinitionBean) throws RestAPIException {
+ static void deployCartridge (CartridgeDefinitionBean cartridgeDefinitionBean, ConfigurationContext ctxt,
+ String userName, String tenantDomain) throws RestAPIException {
log.info("***** " + cartridgeDefinitionBean.toString() + " *****");
+ AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient();
+
if (cloudControllerServiceClient != null) {
CartridgeConfig cartridgeConfig = PojoConverter.populateCartridgeConfigPojo(cartridgeDefinitionBean);
@@ -111,6 +116,9 @@ public class ServiceUtils {
return;
}
+ // retrieve lb Cartridge info
+ CartridgeInfo cartridgeInfo = cloudControllerServiceClient.getCartridgeInfo(lbConfig.getType());
+
properties = lbConfig.getProperties();
for (org.apache.stratos.cloud.controller.pojo.Property prop :
@@ -136,8 +144,6 @@ public class ServiceUtils {
String[] clusterIds = clusterIdsVal.split(",");
for (String clusterId : clusterIds) {
- AutoscalerServiceClient autoscalerServiceClient =
- getAutoscalerServiceClient();
if (autoscalerServiceClient != null) {
try {
autoscalerServiceClient.checkLBExistence(clusterId);
@@ -147,6 +153,7 @@ public class ServiceUtils {
}
}
}
+ return;
} else if (Constants.DEFAULT_LOAD_BALANCER.equals(prop.getName())) {
if ("true".equals(prop.getValue())) {
@@ -154,8 +161,6 @@ public class ServiceUtils {
log.debug("This cartridge uses default load balancer. " +
"[Type] " + cartridgeType);
}
- AutoscalerServiceClient autoscalerServiceClient =
- getAutoscalerServiceClient();
if (autoscalerServiceClient != null) {
try {
// get the valid policies of this cartridge
@@ -168,7 +173,10 @@ public class ServiceUtils {
intersection(cartridgeDepPolicies, lbCartridgeDepPolicies);
for (DeploymentPolicy deploymentPolicy : validDepPolicies) {
- subscribe(cartridgeType, alias, policy, repoURL, privateRepo, repoUsername, repoPassword, dataCartridgeType, dataCartridgeAlias, configurationContext, userName, tenantDomain)
+ String alias = "lb"+new Random().nextInt();
+ subscribe(cartridgeType, alias, cartridgeInfo.getDefaultAutoscalingPolicy(),
+ deploymentPolicy.getId(), null, false, null, null, null, null,
+ ctxt, userName, tenantDomain);
}
} catch (Exception ex) {
@@ -177,7 +185,37 @@ public class ServiceUtils {
}
}
return;
- }
+ } else if (Constants.SERVICE_AWARE_LOAD_BALANCER.equals(prop.getName())) {
+ if ("true".equals(prop.getValue())) {
+ if (log.isDebugEnabled()) {
+ log.debug("This cartridge uses a service aware load balancer. " +
+ "[Type] " + cartridgeType);
+ }
+ if (autoscalerServiceClient != null) {
+ try {
+ // get the valid policies of this cartridge
+ DeploymentPolicy[] cartridgeDepPolicies =
+ autoscalerServiceClient.getDeploymentPolicies(cartridgeType);
+ DeploymentPolicy[] lbCartridgeDepPolicies =
+ autoscalerServiceClient.getDeploymentPolicies(lbConfig.getType());
+ // valid deployment policies for this cartridge
+ DeploymentPolicy[] validDepPolicies =
+ intersection(cartridgeDepPolicies, lbCartridgeDepPolicies);
+
+ for (DeploymentPolicy deploymentPolicy : validDepPolicies) {
+ String alias = "lb"+new Random().nextInt();
+ subscribe(cartridgeType, alias, cartridgeInfo.getDefaultAutoscalingPolicy(),
+ deploymentPolicy.getId(), null, false, null, null, null, null,
+ ctxt, userName, tenantDomain);
+ }
+
+ } catch (Exception ex) {
+ // we don't need to throw the error here.
+ log.error(ex.getMessage(), ex);
+ }
+ }
+ return;
+ }
}
}
@@ -205,7 +243,7 @@ public class ServiceUtils {
}
return commonPolicies.toArray(new DeploymentPolicy[0]);
}
-
+
static void undeployCartridge (String cartridgeType) throws RestAPIException {
CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient();
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7808ff37/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
index 54e4845..4c87cc7 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
@@ -77,7 +77,8 @@ public class StratosAdmin extends AbstractAdmin {
public void deployCartridgeDefinition (CartridgeDefinitionBean cartridgeDefinitionBean)
throws RestAPIException {
- ServiceUtils.deployCartridge(cartridgeDefinitionBean);
+ ServiceUtils.deployCartridge(cartridgeDefinitionBean, getConfigContext(), getUsername(),
+ getTenantDomain());
}
@DELETE