modifications to deployCartridge in order to cater LB cartridge scenario

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

Branch: refs/heads/master
Commit: adc7ec72c8bbd392610bd3de9c3f4f6c8bacba68
Parents: eaf1774
Author: Nirmal Fernando <[email protected]>
Authored: Fri Dec 6 22:51:54 2013 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Tue Dec 10 19:16:12 2013 +0530

----------------------------------------------------------------------
 .../apache/stratos/rest/endpoint/Constants.java |  2 +-
 .../bean/util/converter/PojoConverter.java      | 10 +++++++-
 .../rest/endpoint/services/ServiceUtils.java    | 25 ++++++++++++++++++++
 3 files changed, 35 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/adc7ec72/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 3574e17..c3ea68f 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
@@ -24,5 +24,5 @@ package org.apache.stratos.rest.endpoint;
 public class Constants {
 
     public static final String SUPER_TENANT_SERVICE = "super.tenant.service";
-
+    public static final String IS_LOAD_BALANCER = "load.balancer";
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/adc7ec72/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 81ff0c5..21e5247 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
@@ -26,6 +26,7 @@ import 
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*;
 import 
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
 import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
 import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.IaasProviderBean;
+import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.LoadBalancerBean;
 import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.PortMappingBean;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean;
 
@@ -63,7 +64,7 @@ public class PojoConverter {
         }
         //LB
         if(cartridgeDefinitionBean.loadBalancer != null) {
-            //cartridgeConfig.set
+            
cartridgeConfig.setLbConfig(getLBConfig(cartridgeDefinitionBean.loadBalancer));
         }
         //Properties
         if(cartridgeDefinitionBean.property != null && 
!cartridgeDefinitionBean.property.isEmpty()) {
@@ -73,6 +74,13 @@ public class PojoConverter {
         return cartridgeConfig;
     }
 
+    private static LoadbalancerConfig getLBConfig(LoadBalancerBean 
loadBalancer) {
+        LoadbalancerConfig lbConfig = new LoadbalancerConfig();
+        lbConfig.setType(loadBalancer.type);
+        lbConfig.setProperties(getProperties(loadBalancer.property));
+        return lbConfig;
+    }
+
     private static PortMapping[] getPortMappingsAsArray(List<PortMappingBean> 
portMappingBeans) {
 
         //convert to an array

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/adc7ec72/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 6aa0ea9..3965c1b 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
@@ -37,11 +37,15 @@ import org.apache.stratos.adc.mgt.utils.PersistenceManager;
 import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
 import org.apache.stratos.cloud.controller.pojo.CartridgeConfig;
 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.autoscaler.partition.Partition;
 import 
org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
 import 
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy;
 import 
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
 import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
+import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.LoadBalancerBean;
 import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 import org.wso2.carbon.context.PrivilegedCarbonContext;
@@ -69,7 +73,28 @@ public class ServiceUtils {
             }
 
             try {
+                // call CC
                 
cloudControllerServiceClient.deployCartridgeDefinition(cartridgeConfig);
+                // is a LB Cartridge?
+                Properties properties = cartridgeConfig.getProperties();
+                if (properties != null && properties.getProperties() != null) {
+                    for (org.apache.stratos.cloud.controller.pojo.Property 
prop : 
+                        properties.getProperties()) {
+
+                        if (Constants.IS_LOAD_BALANCER.equals(prop.getName())) 
{
+                            if ("true".equals(prop.getValue())) {
+                                if (log.isDebugEnabled()) {
+                                    log.debug("This is a load balancer 
Cartridge definition. " +
+                                            "Type: " + 
cartridgeConfig.getType());
+                                }
+                                return;
+                            }
+                        }
+
+                    }
+                }
+                // if not an LB Cartridge
+                LoadbalancerConfig lbConfig = cartridgeConfig.getLbConfig();
 
             } catch (Exception e) {
                 throw new RestAPIException(e);

Reply via email to