You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2015/05/18 06:24:50 UTC

[1/2] stratos git commit: fixing health statistics handling with cluster instance as partition in CEP

Repository: stratos
Updated Branches:
  refs/heads/master c3cbea15a -> cc0dbff6e


fixing health statistics handling with cluster instance as partition in CEP


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

Branch: refs/heads/master
Commit: 0bd0538b51b3abcad5f70172cc684a430d6157fa
Parents: c3cbea1
Author: reka <rt...@gmail.com>
Authored: Fri May 15 15:58:07 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon May 18 09:53:35 2015 +0530

----------------------------------------------------------------------
 extensions/cep/artifacts/executionplans/AverageHeathRequest.xml    | 2 +-
 .../cep/artifacts/executionplans/GradientOfHealthRequest.xml       | 2 +-
 .../artifacts/executionplans/SecondDerivativeOfHealthRequest.xml   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0bd0538b/extensions/cep/artifacts/executionplans/AverageHeathRequest.xml
----------------------------------------------------------------------
diff --git a/extensions/cep/artifacts/executionplans/AverageHeathRequest.xml b/extensions/cep/artifacts/executionplans/AverageHeathRequest.xml
index 0326f05..b60a0bf 100644
--- a/extensions/cep/artifacts/executionplans/AverageHeathRequest.xml
+++ b/extensions/cep/artifacts/executionplans/AverageHeathRequest.xml
@@ -35,7 +35,7 @@
 		select cluster_id, cluster_instance_id, network_partition_id, member_id, partition_id insert into fault_message;
 	from health_avg_processsor
   		select cluster_id, cluster_instance_id, network_partition_id, member_id, partition_id, health_description, value,
-		stratos:concat(cluster_id, '-' , network_partition_id) as health_grad_cluster_network 
+		stratos:concat(cluster_id, '-' , cluster_instance_id) as health_grad_cluster_network
   		insert into health_avg_concatinator;
   	define partition health_avg_cluster_partition by   health_avg_concatinator.health_grad_cluster_network;
   	define partition member_health_avg_cluster_partition by  health_avg_processsor.member_id;

http://git-wip-us.apache.org/repos/asf/stratos/blob/0bd0538b/extensions/cep/artifacts/executionplans/GradientOfHealthRequest.xml
----------------------------------------------------------------------
diff --git a/extensions/cep/artifacts/executionplans/GradientOfHealthRequest.xml b/extensions/cep/artifacts/executionplans/GradientOfHealthRequest.xml
index df6004c..fcbc24e 100644
--- a/extensions/cep/artifacts/executionplans/GradientOfHealthRequest.xml
+++ b/extensions/cep/artifacts/executionplans/GradientOfHealthRequest.xml
@@ -37,7 +37,7 @@
   		insert into fault_message;
   	from health_grad_processsor
   		select cluster_id, cluster_instance_id, network_partition_id, member_id, partition_id, health_description, value,
-		stratos:concat(cluster_id, '-' , network_partition_id) as health_grad_cluster_network 
+		stratos:concat(cluster_id, '-' , cluster_instance_id) as health_grad_cluster_network
   		insert into health_grad_concatinator;
   	define partition health_grad_cluster_partition by  health_grad_concatinator.health_grad_cluster_network;
  	define partition member_health_grad_cluster_partition by health_grad_processsor.member_id;

http://git-wip-us.apache.org/repos/asf/stratos/blob/0bd0538b/extensions/cep/artifacts/executionplans/SecondDerivativeOfHealthRequest.xml
----------------------------------------------------------------------
diff --git a/extensions/cep/artifacts/executionplans/SecondDerivativeOfHealthRequest.xml b/extensions/cep/artifacts/executionplans/SecondDerivativeOfHealthRequest.xml
index b40b21e..0fa4a0a 100644
--- a/extensions/cep/artifacts/executionplans/SecondDerivativeOfHealthRequest.xml
+++ b/extensions/cep/artifacts/executionplans/SecondDerivativeOfHealthRequest.xml
@@ -33,7 +33,7 @@
   <queryExpressions><![CDATA[ 
 	 from health_second_der_request
 		select member_id, cluster_id, cluster_instance_id, network_partition_id, health_description, value,
-		stratos:concat(cluster_id, '-' ,network_partition_id) as health_second_der_cluster_network
+		stratos:concat(cluster_id, '-' ,cluster_instance_id) as health_second_der_cluster_network
 		insert into health_second_der_concat;
 	define partition health_second_der_cluster_partition  by health_second_der_concat.health_second_der_cluster_network;
 	from health_second_der_concat [health_description == 'memory_consumption'] 


[2/2] stratos git commit: adding retriving cartridge support for API and fixing cartridge addition issue

Posted by re...@apache.org.
adding retriving cartridge support for API and fixing cartridge addition issue


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

Branch: refs/heads/master
Commit: cc0dbff6e13b180e60dac951512bebacaada7cba
Parents: 0bd0538
Author: reka <rt...@gmail.com>
Authored: Fri May 15 23:24:05 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon May 18 09:54:43 2015 +0530

----------------------------------------------------------------------
 .../autoscaler/rule/RuleTasksDelegator.java     |  32 ++-
 .../impl/CloudControllerServiceImpl.java        |  18 +-
 .../controller/util/CloudControllerUtil.java    |  54 +----
 .../cartridge/CartridgeGroupReferenceBean.java  |   9 -
 .../NetworkPartitionReferenceBean.java          |   9 -
 .../forms/default/configure/cartridges.json     |   6 +
 .../forms/schema/configure/cartridges.json      |  70 +++++-
 .../rest/endpoint/api/StratosApiV41Utils.java   |  69 +-----
 .../util/converter/ObjectConverter.java         | 214 +++++++++++++++++++
 9 files changed, 315 insertions(+), 166 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 2626097..e4cf83b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -185,7 +185,7 @@ public class RuleTasksDelegator {
             // Calculate accumulation of minimum counts of all the partition of current network partition
             int minimumCountOfNetworkPartition;
             ClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
-            ClusterContext clusterContext = (ClusterContext) clusterMonitor.getClusterContext();
+            ClusterContext clusterContext = clusterMonitor.getClusterContext();
             ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext =
                     clusterContext.getNetworkPartitionCtxt(nwPartitionId);
             ClusterInstanceContext clusterInstanceContext =
@@ -229,13 +229,10 @@ public class RuleTasksDelegator {
             log.debug("Scaling dependent notification is going to the [parentInstance] " + instanceId);
         }
         //Notify parent for checking scaling dependencies
-        ClusterMonitor abstractClusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
+        ClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
         float fMinimumInstanceCount = minimumInstanceCount;
         float factor = requiredInstanceCount / fMinimumInstanceCount;
-        if (abstractClusterMonitor instanceof ClusterMonitor) {
-            ClusterMonitor clusterMonitor = (ClusterMonitor) abstractClusterMonitor;
-            clusterMonitor.sendClusterScalingEvent(networkPartitionId, instanceId, factor);
-        }
+        clusterMonitor.sendClusterScalingEvent(networkPartitionId, instanceId, factor);
     }
 
     public void delegateScalingOverMaxNotification(String clusterId, String networkPartitionId, String instanceId) {
@@ -243,12 +240,8 @@ public class RuleTasksDelegator {
             log.debug("Scaling max out notification is going to the [parentInstance] " + instanceId);
         }
         //Notify parent for checking scaling dependencies
-        ClusterMonitor abstractClusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
-        if (abstractClusterMonitor instanceof ClusterMonitor) {
-
-            ClusterMonitor clusterMonitor = (ClusterMonitor) abstractClusterMonitor;
-            clusterMonitor.sendScalingOverMaxEvent(networkPartitionId, instanceId);
-        }
+        ClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
+        clusterMonitor.sendScalingOverMaxEvent(networkPartitionId, instanceId);
     }
 
     public void delegateScalingDownBeyondMinNotification(String clusterId, String networkPartitionId, String instanceId) {
@@ -256,12 +249,8 @@ public class RuleTasksDelegator {
             log.debug("Scaling down lower min notification is going to the [parentInstance] " + instanceId);
         }
         //Notify parent for checking scaling dependencies
-        ClusterMonitor abstractClusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
-        if (abstractClusterMonitor instanceof ClusterMonitor) {
-
-            ClusterMonitor clusterMonitor = (ClusterMonitor) abstractClusterMonitor;
-            clusterMonitor.sendScalingDownBeyondMinEvent(networkPartitionId, instanceId);
-        }
+        ClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
+        clusterMonitor.sendScalingDownBeyondMinEvent(networkPartitionId, instanceId);
     }
 
     public void delegateTerminate(ClusterLevelPartitionContext clusterMonitorPartitionContext, String memberId) {
@@ -349,7 +338,9 @@ public class RuleTasksDelegator {
                         memberGredientLoadAverage, memberSecondDerivativeLoadAverage, 1);
 
                 if (log.isDebugEnabled()) {
-                    log.debug(String.format("[member-id] %s [predicted load average] %s ", memberStatsContext.getMemberId()
+                    log.debug(String.format("[cluster-instance-id] %s [member-id] %s " +
+                            "[predicted load average] %s "
+                            , clusterInstanceContext.getId(), memberStatsContext.getMemberId()
                             , memberPredictedLoadAverage));
                 }
                 loadAveragePredicted += memberPredictedLoadAverage;
@@ -379,7 +370,8 @@ public class RuleTasksDelegator {
                         memberMemoryConsumptionGredient, memberMemoryConsumptionSecondDerivative, 1);
 
                 if (log.isDebugEnabled()) {
-                    log.debug(String.format("[member-id] %s [predicted memory consumption] %s ", memberStatsContext.getMemberId()
+                    log.debug(String.format("[member-id] %s [predicted memory consumption] %s ",
+                            memberStatsContext.getMemberId()
                             , memberPredictedMemoryConsumption));
                 }
                 memoryConsumptionPredicted += memberPredictedMemoryConsumption;

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index 8df0919..6846177 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -80,16 +80,15 @@ public class CloudControllerServiceImpl implements CloudControllerService {
             log.debug("Cartridge definition: " + cartridgeConfig.toString());
         }
 
-        Cartridge cartridge = null;
         try {
-            cartridge = CloudControllerUtil.toCartridge(cartridgeConfig);
+            CloudControllerUtil.extractIaaSProvidersFromCartridge(cartridgeConfig);
         } catch (Exception e) {
             String message = "Invalid cartridge definition: [cartridge-type] " + cartridgeConfig.getType();
             log.error(message, e);
             throw new InvalidCartridgeDefinitionException(message, e);
         }
 
-        String cartridgeType = cartridge.getType();
+        String cartridgeType = cartridgeConfig.getType();
         if (cloudControllerContext.getCartridge(cartridgeType) != null) {
             String message = "Cartridge already exists: [cartridge-type] " + cartridgeType;
             log.error(message);
@@ -97,11 +96,11 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         }
 
         // Add cartridge to the cloud controller context and persist
-        CloudControllerContext.getInstance().addCartridge(cartridge);
+        CloudControllerContext.getInstance().addCartridge(cartridgeConfig);
         CloudControllerContext.getInstance().persist();
 
         List<Cartridge> cartridgeList = new ArrayList<Cartridge>();
-        cartridgeList.add(cartridge);
+        cartridgeList.add(cartridgeConfig);
 
         TopologyBuilder.handleServiceCreated(cartridgeList);
 
@@ -125,29 +124,28 @@ public class CloudControllerServiceImpl implements CloudControllerService {
             log.debug("Cartridge definition: " + cartridgeConfig.toString());
         }
 
-        Cartridge cartridge = null;
         try {
-            cartridge = CloudControllerUtil.toCartridge(cartridgeConfig);
+            CloudControllerUtil.extractIaaSProvidersFromCartridge(cartridgeConfig);
         } catch (Exception e) {
             String msg = "Invalid cartridge definition: [cartridge-type] " + cartridgeConfig.getType();
             log.error(msg, e);
             throw new InvalidCartridgeDefinitionException(msg, e);
         }
 
-        String cartridgeType = cartridge.getType();
+        String cartridgeType = cartridgeConfig.getType();
         if (cloudControllerContext.getCartridge(cartridgeType) != null) {
             Cartridge cartridgeToBeRemoved = cloudControllerContext.getCartridge(cartridgeType);
             try {
                 removeCartridgeFromCC(cartridgeToBeRemoved.getType());
             } catch (InvalidCartridgeTypeException ignore) {
             }
-            copyIaasProviders(cartridge, cartridgeToBeRemoved);
+            copyIaasProviders(cartridgeConfig, cartridgeToBeRemoved);
         } else {
             throw new CartridgeDefinitionNotExistsException("This cartridge definition not exists");
         }
 
         // Add cartridge to the cloud controller context and persist
-        CloudControllerContext.getInstance().addCartridge(cartridge);
+        CloudControllerContext.getInstance().addCartridge(cartridgeConfig);
         CloudControllerContext.getInstance().persist();
         // transaction ends
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index d1c21eb..212ebeb 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -70,51 +70,9 @@ public class CloudControllerUtil {
         }
     }
 
-    public static Cartridge toCartridge(Cartridge config) {
+    public static void extractIaaSProvidersFromCartridge(Cartridge config) {
         if (config == null) {
-            return null;
-        }
-        Cartridge cartridge = new Cartridge();
-
-        // populate cartridge
-        cartridge.setType(config.getType());
-        cartridge.setDisplayName(config.getDisplayName());
-        cartridge.setDescription(config.getDescription());
-        cartridge.setHostName(config.getHostName());
-        String[] deploymentDirs = config.getDeploymentDirs();
-        cartridge.setDeploymentDirs(deploymentDirs);
-        cartridge.setProvider(config.getProvider());
-        cartridge.setCategory(config.getCategory());
-        cartridge.setVersion(config.getVersion());
-        cartridge.setBaseDir(config.getBaseDir());
-
-        if (config.getPortMappings() != null) {
-            cartridge.setPortMappings(config.getPortMappings());
-        }
-
-        if (config.getPersistence() != null) {
-            cartridge.setPersistence(config.getPersistence());
-        }
-        cartridge.setMultiTenant(config.isMultiTenant());
-        cartridge.setTenantPartitions(config.getTenantPartitions());
-        cartridge.setLoadBalancingIPType(getLoadBalancingIPTypeStringFromEnum(LoadBalancingIPType.Private));
-        if (StringUtils.isNotBlank(config.getLoadBalancingIPType())) {
-            if (config.getLoadBalancingIPType().equals("public")) {
-                cartridge.setLoadBalancingIPType(getLoadBalancingIPTypeStringFromEnum(LoadBalancingIPType.Public));
-            }
-        }
-
-        if (config.getMetadataKeys() == null) {
-            cartridge.setMetadataKeys(new String[0]);
-        } else {
-            cartridge.setMetadataKeys(config.getMetadataKeys());
-        }
-
-        org.apache.stratos.common.Properties props = config.getProperties();
-        if (props != null) {
-            for (Property prop : props.getProperties()) {
-                cartridge.addProperty(prop.getName(), String.valueOf(prop.getValue()));
-            }
+            return;
         }
 
         List<IaasProvider> iaases = CloudControllerConfig.getInstance().getIaasProviders();
@@ -186,16 +144,10 @@ public class CloudControllerUtil {
                         iaasProvider.setNetworkInterfaces(networkInterfaces.getNetworkInterfaces());
                     }
 
-                    CloudControllerContext.getInstance().addIaasProvider(cartridge.getType(), iaasProvider);
+                    CloudControllerContext.getInstance().addIaasProvider(config.getType(), iaasProvider);
                 }
             }
         }
-
-        if (config.getExportingProperties() != null) {
-            cartridge.setExportingProperties(config.getExportingProperties());
-        }
-
-        return cartridge;
     }
 
     public static void sleep(long time) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java
index 6918b11..128fc05 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/cartridge/CartridgeGroupReferenceBean.java
@@ -32,7 +32,6 @@ public class CartridgeGroupReferenceBean implements Serializable {
     private String alias;
     private int groupMinInstances;
     private int groupMaxInstances;
-    private boolean isGroupScalingEnabled;
     private String deploymentPolicy;
     private List<CartridgeReferenceBean> cartridges;
     private List<CartridgeGroupReferenceBean> groups;
@@ -69,14 +68,6 @@ public class CartridgeGroupReferenceBean implements Serializable {
         this.groupMaxInstances = groupMaxInstances;
     }
 
-    public boolean isGroupScalingEnabled() {
-        return isGroupScalingEnabled;
-    }
-
-    public void setGroupScalingEnabled(boolean isGroupScalingEnabled) {
-        this.isGroupScalingEnabled = isGroupScalingEnabled;
-    }
-
     public List<CartridgeReferenceBean> getCartridges() {
         return cartridges;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionReferenceBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionReferenceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionReferenceBean.java
index ae04853..52b9e68 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionReferenceBean.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionReferenceBean.java
@@ -31,7 +31,6 @@ public class NetworkPartitionReferenceBean {
     private String provider;
     private List<PartitionReferenceBean> partitions;
     private String partitionAlgo;
-    private List<PropertyBean> properties;
 
     public String getId() {
         return id;
@@ -64,12 +63,4 @@ public class NetworkPartitionReferenceBean {
     public void setPartitionAlgo(String partitionAlgo) {
         this.partitionAlgo = partitionAlgo;
     }
-
-    public List<PropertyBean> getProperties() {
-        return properties;
-    }
-
-    public void setProperties(List<PropertyBean> properties) {
-        this.properties = properties;
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/cartridges.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/cartridges.json b/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/cartridges.json
index d79fc1d..cefb303 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/cartridges.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/cartridges.json
@@ -7,6 +7,7 @@
     "description":"PHP Cartridge",
     "version":"7",
     "multiTenant":"false",
+    "tenantPartitions": "[1-100]",
     "loadBalancingIPType": "private",
     "portMapping":[
         {
@@ -55,5 +56,10 @@
             }
 
         ]
+    },
+    "property": [
+    ],
+    "deployment": {
     }
+
 } 

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
index d55c8d8..5c01565 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
@@ -14,13 +14,13 @@
             "type": "string",
             "id": "root/type",
             "title": "Type",
-            "description": "You need to enter chartridge type without space",
+            "description": "You need to enter cartridge type without space",
             "name": "Type",
             "minLength":2,
             "default": "php",
             "propertyOrder": 1,
             "maxItems": 1,
-            "pattern": "^[a-zA-Z0-9-_]+$",
+            "pattern": "^[a-zA-Z0-9-_]+$"
         },
         "category": {
             "type": "string",
@@ -100,6 +100,16 @@
             "maxItems": 1,
             "enum": ["private","public"]
         },
+        "tenantPartitions": {
+            "type": "string",
+            "id": "root/tenantPartitions",
+            "title": "Tenant Partitions",
+            "name": "Tenant Partitions",
+            "minLength":2,
+            "default": "[1-10][11-100]",
+            "propertyOrder": 1,
+            "maxItems": 1
+        },
         "portMapping": {
             "type": "array",
             "id": "root/portMapping",
@@ -418,8 +428,6 @@
                     },
                 }
             }
-
-
         },
         "persistence": {
             "type": "object",
@@ -485,5 +493,59 @@
                 }
             }
         },
+        "deployment": {
+            "type": "object",
+            "id": "root/deployment",
+            "title": "Deployment",
+            "name": "Deployment",
+            "required": ["baseDir", "dir"],
+            "options": {
+                "collapsed": true
+            },
+            "properties": {
+                "baseDir": {
+                    "type": "string",
+                    "id": "root/deployment/baseDir",
+                    "title": "Base Directory",
+                    "name": "Base Directory"
+                },
+                "dir": {
+                    "id": "root/deployment/dir",
+                    "type": "array",
+                    "title": "Directories ",
+                    "name": "Directories",
+                    "format": "tabs",
+                    "items": {
+                        "id": "root/deployment/dir",
+                        "type": "string",
+                        "title": "Directories ",
+                        "name": "Directories"
+                    }
+                }
+            }
+        },
+        "property": {
+            "id": "root/property",
+            "type": "array",
+            "title":"Property",
+            "format":"tabs",
+            "items": {
+                "id": "root/property/0",
+                "type": "object",
+                "title":"Property",
+                "properties": {
+                    "name": {
+                        "id": "root/property/0/name",
+                        "title":"Name",
+                        "type": "string"
+                    },
+                    "value": {
+                        "id": "root/property/0/value",
+                        "title":"Value",
+                        "type": "string"
+                    }
+                }
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/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 71af68e..705aec5 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
@@ -368,7 +368,8 @@ public class StratosApiV41Utils {
                         continue;
                     }
 
-                    CartridgeBean cartridge = convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
+                    CartridgeBean cartridge = ObjectConverter.
+                            convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
                     cartridges.add(cartridge);
                 }
             } else {
@@ -443,7 +444,8 @@ public class StratosApiV41Utils {
                         continue;
                     }
 
-                    CartridgeBean cartridge = convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
+                    CartridgeBean cartridge = ObjectConverter.
+                            convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
                     cartridges.add(cartridge);
 
 
@@ -481,7 +483,7 @@ public class StratosApiV41Utils {
             if (cartridgeInfo == null) {
                 return null;
             }
-            return convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
+            return ObjectConverter.convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
         } catch (RemoteException e) {
             String message = e.getMessage();
             log.error(message);
@@ -506,7 +508,7 @@ public class StratosApiV41Utils {
             if (cartridgeInfo == null) {
                 return null;
             }
-            return convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
+            return ObjectConverter.convertCartridgeToCartridgeDefinitionBean(cartridgeInfo);
         } catch (CloudControllerServiceCartridgeNotFoundExceptionException e) {
             return null;
         } catch (RemoteException e) {
@@ -518,65 +520,6 @@ public class StratosApiV41Utils {
     }
 
     /**
-     * Converts Cartridge to CartridgeDefinitionBean
-     *
-     * @param cartridgeInfo cartridge Info
-     * @return CartridgeBean
-     */
-    private static CartridgeBean convertCartridgeToCartridgeDefinitionBean(Cartridge cartridgeInfo) {
-        CartridgeBean cartridge = new CartridgeBean();
-        cartridge.setType(cartridgeInfo.getType());
-        cartridge.setProvider(cartridgeInfo.getProvider());
-        cartridge.setCategory(cartridgeInfo.getCategory());
-        cartridge.setHost(cartridgeInfo.getHostName());
-        cartridge.setDisplayName(cartridgeInfo.getDisplayName());
-        cartridge.setDescription(cartridgeInfo.getDescription());
-        cartridge.setVersion(cartridgeInfo.getVersion());
-        cartridge.setMultiTenant(cartridgeInfo.getMultiTenant());
-        cartridge.setPersistence(convertPersistenceToPersistenceBean(cartridgeInfo.getPersistence()));
-        cartridge.setLoadBalancingIPType(cartridgeInfo.getLoadBalancingIPType());
-        cartridge.setMetadataKeys(cartridgeInfo.getMetadataKeys());
-        return cartridge;
-    }
-
-    /**
-     * Convert Persistence To PersistenceBean
-     *
-     * @param persistence persistence
-     * @return PersistenceBean
-     */
-    private static PersistenceBean convertPersistenceToPersistenceBean(Persistence persistence) {
-        if (persistence == null) {
-            return null;
-        }
-
-        PersistenceBean persistenceBean = new PersistenceBean();
-        persistenceBean.setRequired(persistence.isPersistenceRequiredSpecified());
-        persistenceBean.setVolume(convertVolumesToVolumeBeans(persistence.getVolumes()));
-        return persistenceBean;
-    }
-
-    /**
-     * Convert Volumes To VolumeBeans
-     *
-     * @param volumes Volumes
-     * @return VolumeBeans
-     */
-    private static List<VolumeBean> convertVolumesToVolumeBeans(Volume[] volumes) {
-        List<VolumeBean> list = new ArrayList<VolumeBean>();
-        for (Volume volume : volumes) {
-            VolumeBean volumeBean = new VolumeBean();
-            volumeBean.setId(volume.getId());
-            volumeBean.setDevice(volume.getDevice());
-            volumeBean.setSize(String.valueOf(volume.getSize()));
-            volumeBean.setSnapshotId(volume.getSnapshotId());
-            list.add(volumeBean);
-        }
-        return list;
-    }
-
-
-    /**
      * Convert SearchString to Pattern
      *
      * @param searchString SearchString

http://git-wip-us.apache.org/repos/asf/stratos/blob/cc0dbff6/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
index c82cd8e..6f54d94 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
@@ -134,6 +134,64 @@ public class ObjectConverter {
         return portMappingArray;
     }
 
+    private static List<PortMappingBean> convertPortMappingsToStubPortMappingBeans(
+            PortMapping[] portMappingps) {
+
+        if (portMappingps == null || portMappingps[0] == null ) {
+            return null;
+        }
+        List<PortMappingBean> portMappingBeans = new ArrayList<PortMappingBean>();
+
+        for (PortMapping portMapping : portMappingps) {
+            PortMappingBean portMappingBean = new PortMappingBean();
+            portMappingBean.setProtocol(portMapping.getProtocol());
+            portMappingBean.setPort(portMapping.getPort());
+            portMappingBean.setProxyPort(portMapping.getProxyPort());
+            portMappingBeans.add(portMappingBean);
+        }
+        return portMappingBeans;
+    }
+
+    /**
+     * Convert Persistence To PersistenceBean
+     *
+     * @param iaasConfigs iaasConfigs
+     * @return PersistenceBean
+     */
+    private static List<IaasProviderBean> convertIaaSProviderToIaaSProviderBean(IaasConfig[] iaasConfigs) {
+        if (iaasConfigs == null || iaasConfigs[0] == null) {
+            return null;
+        }
+
+        List<IaasProviderBean> iaasProviderBeans = new ArrayList<IaasProviderBean>();
+        for(IaasConfig iaasConfig : iaasConfigs) {
+            IaasProviderBean iaasProviderBean = new IaasProviderBean();
+            iaasProviderBean.setType(iaasConfig.getType());
+            iaasProviderBean.setImageId(iaasConfig.getImageId());
+            iaasProviderBean.setName(iaasConfig.getName());
+            iaasProviderBean.setClassName(iaasConfig.getClassName());
+            iaasProviderBean.setCredential(iaasConfig.getCredential());
+            iaasProviderBean.setIdentity(iaasConfig.getIdentity());
+            iaasProviderBean.setProvider(iaasConfig.getProvider());
+
+            if (iaasConfig.getProperties() != null) {
+                //set the Properties instance to IaasConfig instance
+                iaasProviderBean.setProperty(convertCCStubPropertiesToPropertyBeanList(
+                        iaasConfig.getProperties()));
+            }
+
+            if (iaasConfig.getNetworkInterfaces() != null) {
+                iaasProviderBean.setNetworkInterfaces(ObjectConverter.
+                        convertNetworkInterfacesToNetworkInterfaceBeans(
+                                iaasConfig.getNetworkInterfaces()));
+            }
+
+            iaasProviderBeans.add(iaasProviderBean);
+        }
+
+        return iaasProviderBeans;
+    }
+
     private static IaasConfig[] convertIaasProviderBeansToStubIaasConfig(List<IaasProviderBean> iaasProviderBeans) {
 
         if (iaasProviderBeans == null) {
@@ -258,6 +316,33 @@ public class ObjectConverter {
         return networkInterfaces;
     }
 
+    private static List<NetworkInterfaceBean> convertNetworkInterfacesToNetworkInterfaceBeans(
+            NetworkInterfaces networkInterfaces) {
+
+        if (networkInterfaces == null || networkInterfaces.getNetworkInterfaces() == null ||
+                networkInterfaces.getNetworkInterfaces()[0] == null) {
+            return null;
+        }
+
+        List<NetworkInterfaceBean> networkInterfaceBeans = new ArrayList<NetworkInterfaceBean>();
+
+        for(NetworkInterface networkInterface : networkInterfaces.getNetworkInterfaces()) {
+            NetworkInterfaceBean networkInterfaceBean = new NetworkInterfaceBean();
+            networkInterfaceBean.setNetworkUuid(networkInterface.getNetworkUuid());
+            networkInterfaceBean.setFixedIp(networkInterface.getFixedIp());
+            networkInterfaceBean.setPortUuid(networkInterface.getPortUuid());
+            if (networkInterface.getFloatingNetworks() != null &&
+                    networkInterface.getFloatingNetworks().getFloatingNetworks() != null &&
+                    networkInterface.getFloatingNetworks().getFloatingNetworks()[0] != null) {
+                networkInterfaceBean.setFloatingNetworks(
+                        ObjectConverter.convertFloatingNetworksToFloatingNetworkBeans(
+                                networkInterface.getFloatingNetworks()));
+            }
+            networkInterfaceBeans.add(networkInterfaceBean);
+        }
+        return networkInterfaceBeans;
+    }
+
     private static FloatingNetworks convertFloatingNetworkBeansToFloatingNetworks(
             List<FloatingNetworkBean> floatingNetworkBeans) {
 
@@ -281,6 +366,20 @@ public class ObjectConverter {
         return floatingNetworks;
     }
 
+    private static List<FloatingNetworkBean>  convertFloatingNetworksToFloatingNetworkBeans(
+            FloatingNetworks floatingNetworks) {
+        List<FloatingNetworkBean> floatingNetworkBeans = new ArrayList<FloatingNetworkBean>();
+
+        for (FloatingNetwork floatingNetwork : floatingNetworks.getFloatingNetworks()) {
+            FloatingNetworkBean floatingNetworkBean = new FloatingNetworkBean();
+            floatingNetworkBean.setName(floatingNetwork.getName());
+            floatingNetworkBean.setNetworkUuid(floatingNetwork.getNetworkUuid());
+            floatingNetworkBean.setFloatingIP(floatingNetwork.getFloatingIP());
+            floatingNetworkBeans.add(floatingNetworkBean);
+        }
+        return floatingNetworkBeans;
+    }
+
     private static org.apache.stratos.cloud.controller.stub.domain.Partition convertPartitionToStubPartition
             (PartitionBean partition) {
 
@@ -1231,6 +1330,25 @@ public class ObjectConverter {
         return propertyBeanList;
     }
 
+    private static List<org.apache.stratos.common.beans.PropertyBean>
+    convertCCStubPropertiesToPropertyBeanList(org.apache.stratos.cloud.controller.stub.Properties properties) {
+
+        List<org.apache.stratos.common.beans.PropertyBean> propertyBeanList =
+                new ArrayList<org.apache.stratos.common.beans.PropertyBean>();
+        if ((properties != null) && (properties.getProperties() != null)) {
+            for (org.apache.stratos.cloud.controller.stub.Property property : properties.getProperties()) {
+                if ((property != null)) {
+                    org.apache.stratos.common.beans.PropertyBean propertyBean =
+                            new org.apache.stratos.common.beans.PropertyBean();
+                    propertyBean.setName(property.getName());
+                    propertyBean.setValue(String.valueOf(property.getValue()));
+                    propertyBeanList.add(propertyBean);
+                }
+            }
+        }
+        return propertyBeanList;
+    }
+
     private static CartridgeContext[] convertCartridgeReferenceBeansToStubCartridgeContexts(
             List<CartridgeReferenceBean> cartridges) {
 
@@ -1401,6 +1519,102 @@ public class ObjectConverter {
         return groupContexts;
     }
 
+    /**
+     * Convert Persistence To PersistenceBean
+     *
+     * @param baseDir base directory
+     * @param directories directories
+     * @return DeploymentBean
+     */
+    private static DeploymentBean convertDeploymentToDeploymentBean(String[] directories,
+                                                                    String baseDir) {
+        if (baseDir == null || directories == null || directories[0] == null) {
+            return null;
+        }
+
+        DeploymentBean deploymentBean = new DeploymentBean();
+        deploymentBean.setBaseDir(baseDir);
+        deploymentBean.setDir(Arrays.asList(baseDir));
+        return deploymentBean;
+    }
+
+    /**
+     * Convert Persistence To PersistenceBean
+     *
+     * @param persistence persistence
+     * @return PersistenceBean
+     */
+    private static PersistenceBean convertPersistenceToPersistenceBean(Persistence persistence) {
+        if (persistence == null) {
+            return null;
+        }
+
+        PersistenceBean persistenceBean = new PersistenceBean();
+        persistenceBean.setRequired(persistence.isPersistenceRequiredSpecified());
+        persistenceBean.setVolume(convertVolumesToVolumeBeans(persistence.getVolumes()));
+        return persistenceBean;
+    }
+
+    /**
+     * Convert Volumes To VolumeBeans
+     *
+     * @param volumes Volumes
+     * @return VolumeBeans
+     */
+    private static List<VolumeBean> convertVolumesToVolumeBeans(Volume[] volumes) {
+        List<VolumeBean> list = new ArrayList<VolumeBean>();
+        for (Volume volume : volumes) {
+            VolumeBean volumeBean = new VolumeBean();
+            volumeBean.setId(volume.getId());
+            volumeBean.setDevice(volume.getDevice());
+            volumeBean.setSize(String.valueOf(volume.getSize()));
+            volumeBean.setSnapshotId(volume.getSnapshotId());
+            list.add(volumeBean);
+        }
+        return list;
+    }
+
+    /**
+     * Converts Cartridge to CartridgeDefinitionBean
+     *
+     * @param cartridgeInfo cartridge Info
+     * @return CartridgeBean
+     */
+    public static CartridgeBean convertCartridgeToCartridgeDefinitionBean(Cartridge cartridgeInfo) {
+        CartridgeBean cartridge = new CartridgeBean();
+        cartridge.setType(cartridgeInfo.getType());
+        cartridge.setProvider(cartridgeInfo.getProvider());
+        cartridge.setCategory(cartridgeInfo.getCategory());
+        cartridge.setHost(cartridgeInfo.getHostName());
+        cartridge.setDisplayName(cartridgeInfo.getDisplayName());
+        cartridge.setDescription(cartridgeInfo.getDescription());
+        cartridge.setVersion(cartridgeInfo.getVersion());
+        cartridge.setMultiTenant(cartridgeInfo.getMultiTenant());
+        cartridge.setDescription(cartridgeInfo.getDescription());
+        cartridge.setLoadBalancingIPType(cartridgeInfo.getLoadBalancingIPType());
+        cartridge.setMetadataKeys(cartridgeInfo.getMetadataKeys());
+        cartridge.setTenantPartitions(cartridgeInfo.getTenantPartitions());
+
+        //convert persistence
+        cartridge.setPersistence(convertPersistenceToPersistenceBean(cartridgeInfo.getPersistence()));
+
+        //convert deployment
+        cartridge.setDeployment(convertDeploymentToDeploymentBean(cartridgeInfo.getDeploymentDirs(),
+                cartridgeInfo.getBaseDir()));
+
+        //convert IaaSProvider
+        cartridge.setIaasProvider(convertIaaSProviderToIaaSProviderBean(
+                cartridgeInfo.getIaasConfigs()));
+
+        //Convert Port-mappings
+        cartridge.setPortMapping(convertPortMappingsToStubPortMappingBeans(
+                cartridgeInfo.getPortMappings()));
+
+        //convert properties
+        cartridge.setProperty(convertCCStubPropertiesToPropertyBeans(cartridgeInfo.getProperties()));
+
+        return cartridge;
+    }
 
     public static ApplicationInfoBean convertApplicationToApplicationBean(Application application) {