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 2013/12/14 22:48:14 UTC

[3/5] git commit: subscription and payload models to provide support for service deploying

subscription and payload models to provide support for service deploying


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

Branch: refs/heads/master
Commit: efdaabd78fa112fea6b926a8eae47fb6281a4b0e
Parents: 68dcc68
Author: Isuru <is...@wso2.com>
Authored: Sun Dec 15 02:37:34 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Sun Dec 15 02:37:34 2013 +0530

----------------------------------------------------------------------
 .../manager/CartridgeSubscriptionManager.java   | 186 +++-----
 .../ApplicationCartridgePayloadData.java        |  27 ++
 .../adc/mgt/payload/BasicPayloadData.java       | 191 ++++++++
 .../stratos/adc/mgt/payload/CarbonPayload.java  |  86 ++--
 .../mgt/payload/DataCartridgePayloadData.java   |  27 ++
 .../stratos/adc/mgt/payload/DataPayload.java    |  80 ++--
 .../payload/FramewrokCartridgePayloadData.java  |  27 ++
 .../LoadBalancerCartridgePayloadData.java       |  27 ++
 .../adc/mgt/payload/NonCarbonPayload.java       | 250 +++++------
 .../apache/stratos/adc/mgt/payload/Payload.java | 448 +++++++++----------
 .../stratos/adc/mgt/payload/PayloadArg.java     | 388 ++++++++--------
 .../stratos/adc/mgt/payload/PayloadData.java    |  61 +++
 .../stratos/adc/mgt/payload/PayloadFactory.java |  27 +-
 .../ApplicationCartridgeSubscription.java       |  52 +--
 .../mgt/subscription/CartridgeSubscription.java | 151 +++----
 .../subscription/CartridgeSubscription_old.java |   4 +-
 .../subscription/DataCartridgeSubscription.java |  60 +--
 .../DataCartridgeSubscription_old.java          |   6 +-
 .../FrameworkCartridgeSubscription.java         |  55 +--
 .../subscription/LBCartridgeSubscription.java   |   8 +-
 .../SingleTenantCartridgeSubscription.java      |   6 +-
 .../factory/CartridgeSubscriptionFactory.java   |  10 +-
 .../ServiceDeploymentMultiTenantBehaviour.java  | 230 +++++-----
 .../SubscriptionMultiTenantBehaviour.java       |  54 +--
 .../SubscriptionSingleTenantBehaviour.java      |  47 +-
 .../tenancy/SubscriptionTenancyBehaviour.java   |  25 +-
 .../utils/CartridgeInstanceUtils.java           | 240 ----------
 .../utils/CartridgeSubscriptionUtils.java       |  69 +++
 .../adc/mgt/test/CartridgeSubscriptionTest.java |  22 +-
 .../stratos/adc/mgt/test/PayloadTest.java       | 392 ++++++++--------
 .../rest/endpoint/services/ServiceUtils.java    |   8 +-
 31 files changed, 1587 insertions(+), 1677 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
index 7f1d50e..4fde725 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
@@ -29,14 +29,17 @@ import org.apache.stratos.adc.mgt.connector.CartridgeSubscriptionConnectorFactor
 import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
 import org.apache.stratos.adc.mgt.dto.SubscriptionInfo;
 import org.apache.stratos.adc.mgt.exception.*;
-import org.apache.stratos.adc.mgt.payload.Payload;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
+import org.apache.stratos.adc.mgt.payload.BasicPayloadData;
+import org.apache.stratos.adc.mgt.payload.PayloadData;
 import org.apache.stratos.adc.mgt.payload.PayloadFactory;
 import org.apache.stratos.adc.mgt.repository.Repository;
 import org.apache.stratos.adc.mgt.subscriber.Subscriber;
 import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
-import org.apache.stratos.adc.mgt.subscription.FrameworkCartridgeSubscription;
 import org.apache.stratos.adc.mgt.subscription.factory.CartridgeSubscriptionFactory;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionMultiTenantBehaviour;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionSingleTenantBehaviour;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
+import org.apache.stratos.adc.mgt.subscription.utils.CartridgeSubscriptionUtils;
 import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
 import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 import org.apache.stratos.adc.mgt.utils.PersistenceManager;
@@ -120,25 +123,10 @@ public class CartridgeSubscriptionManager {
         // validate cartridge alias
         ApplicationManagementUtil.validateCartridgeAlias(cartridgeAlias, cartridgeType);
 
-        // TODO - remove, now autoscaling policy is at autoscaler. Just need to pass the name
-        /*
-         * Policy autoScalingPolicy;
-         * if(autoscalingPolicyName != null && !autoscalingPolicyName.isEmpty()) {
-         * autoScalingPolicy = PolicyHolder.getInstance().getPolicy(autoscalingPolicyName);
-         * } else {
-         * autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
-         * }
-         * 
-         * if(autoScalingPolicy == null) {
-         * throw new PolicyException("Could not load the auto scaling policy.");
-         * }
-         */
-
         CartridgeInfo cartridgeInfo;
         try {
             cartridgeInfo =
-                            CloudControllerServiceClient.getServiceClient()
-                                                        .getCartridgeInfo(cartridgeType);
+                            CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
             if (props != null) {
                 cartridgeInfo.setProperties(props);
             }
@@ -156,11 +144,19 @@ public class CartridgeSubscriptionManager {
             throw new ADCException(message, e);
         }
 
-        Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain);
+        //Decide tenancy behaviour
+        SubscriptionTenancyBehaviour tenancyBehaviour;
+        if(cartridgeInfo.getMultiTenant()) {
+            tenancyBehaviour = new SubscriptionMultiTenantBehaviour();
+        } else {
+            tenancyBehaviour = new SubscriptionSingleTenantBehaviour();
+        }
 
-        CartridgeSubscription cartridgeSubscription =
-                                                      CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
+        //Create the CartridgeSubscription instance
+        CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.
+                getCartridgeSubscriptionInstance(cartridgeInfo, tenancyBehaviour);
 
+        //Create repository
         Repository repository =
                                 cartridgeSubscription.manageRepository(repositoryURL,
                                                                        repositoryUsername,
@@ -169,6 +165,10 @@ public class CartridgeSubscriptionManager {
                                                                        cartridgeAlias,
                                                                        cartridgeInfo, tenantDomain);
 
+        //Create subscriber
+        Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain);
+
+        //create subscription
         cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoscalingPolicyName,
                                                  deploymentPolicyName, repository);
         cartridgeSubscription.setSubscriptionKey(generateSubscriptionKey()); // TODO ---- fix
@@ -179,51 +179,37 @@ public class CartridgeSubscriptionManager {
                  cartridgeType + ", Repo URL: " + repositoryURL + ", Policy: " +
                  autoscalingPolicyName);
 
-        Payload payload =
-                          PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(),
-                                                            cartridgeType, "/tmp/" + tenantDomain +
-                                                                           "-" + cartridgeAlias +
-                                                                           ".zip");
-        PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
-
-        if (payloadArg != null) {
-            // populate the payload
-            payload.populatePayload(payloadArg);
-            cartridgeSubscription.setPayload(payload);
-        }
+        //Create the payload
+        BasicPayloadData basicPayloadData = CartridgeSubscriptionUtils.getBasicPayloadData(cartridgeSubscription);
+        PayloadData payloadData = PayloadFactory.getPayloadDataInstance(cartridgeInfo.getProvider(),
+                cartridgeInfo.getType(), basicPayloadData);
 
-        // get the payload parameters defined in the cartridge definition file for this cartridge
-        // type
+        // get the payload parameters defined in the cartridge definition file for this cartridge type
         if (cartridgeInfo.getProperties() != null && cartridgeInfo.getProperties().length != 0) {
 
-            StringBuilder customPayloadParamsBuilder = new StringBuilder();
             for (Property property : cartridgeInfo.getProperties()) {
-                // check if a property is related to the payload. Currently this is done by checking
-                // if the
-                // property name starts with 'payload_parameter.' suffix. If so the payload param
-                // name will
+                // check if a property is related to the payload. Currently this is done by checking if the
+                // property name starts with 'payload_parameter.' suffix. If so the payload param name will
                 // be taken as the substring from the index of '.' to the end of the property name.
                 if (property.getName()
                             .startsWith(CartridgeConstants.CUSTOM_PAYLOAD_PARAM_NAME_PREFIX)) {
                     String payloadParamName = property.getName();
-                    customPayloadParamsBuilder.append(",");
-                    customPayloadParamsBuilder.append(payloadParamName.substring(payloadParamName.indexOf(".") + 1));
-                    customPayloadParamsBuilder.append("=");
-                    customPayloadParamsBuilder.append(property.getValue());
+                    payloadData.add(payloadParamName.substring(payloadParamName.indexOf(".") + 1), property.getValue());
                 }
             }
-            // if valid payload related parameters are found in the cartridge definition file, add
-            // them to the payload
-            String customPayloadParamString = customPayloadParamsBuilder.toString();
-            if (!customPayloadParamString.isEmpty()) {
-                payload.populatePayload(customPayloadParamString);
-                cartridgeSubscription.setPayload(payload);
+        }
+
+        //check if there are any custom payload entries defined
+        if (cartridgeSubscription.getCustomPayloadEntries() != null) {
+            //add them to the payload
+            Map<String, String> customPayloadEntries = cartridgeSubscription.getCustomPayloadEntries();
+            Set<Map.Entry<String,String>> entrySet = customPayloadEntries.entrySet();
+            for (Map.Entry<String, String> entry : entrySet) {
+                payloadData.add(entry.getKey(), entry.getValue());
             }
         }
 
-        // CartridgeInstanceCache.getCartridgeInstanceCache().
-        // addCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, cartridgeAlias),
-        // cartridgeSubscription);
+        cartridgeSubscription.setPayloadData(payloadData);
 
         return cartridgeSubscription;
     }
@@ -283,25 +269,17 @@ public class CartridgeSubscriptionManager {
         }
 
         //add connection relates parameters to the payload
-        if(cartridgeSubscription.getPayload() != null) {
-            cartridgeSubscription.getPayload().populatePayload(connectionParamsBuilder.toString());
+        if(cartridgeSubscription.getPayloadData() != null) {
+            //cartridgeSubscription.getPayloadData().populatePayload(connectionParamsBuilder.toString());
         } else {
             //no existing payload
-            Payload payload = PayloadFactory.getPayloadInstance(cartridgeSubscription.getCartridgeInfo().getProvider(),
+            /*Payload payload = PayloadFactory.getPayloadDataInstance(cartridgeSubscription.getCartridgeInfo().getProvider(),
                     cartridgeSubscription.getType(), "/tmp/" + tenantDomain + "-" + cartridgeSubscription.getAlias() +
                     ".zip");
             payload.populatePayload(connectionParamsBuilder.toString());
-            cartridgeSubscription.setPayload(payload);
+            cartridgeSubscription.setPayloadData(payload);*/
         }
 
-        /*
-        payloadArg.setUserDefinedPayload(connectionParamsBuilder.toString());
-        Payload payload = PayloadFactory.getPayloadInstance(cartridgeSubscription.getCartridgeInfo().getProvider(),
-                cartridgeSubscription.getType(),
-                "/tmp/" + tenantDomain + "-" + cartridgeSubscription.getAlias() + ".zip");
-        payload.populatePayload(payloadArg);
-        payload.createPayload();
-        */
     }
 
     /**
@@ -316,14 +294,6 @@ public class CartridgeSubscriptionManager {
     public SubscriptionInfo registerCartridgeSubscription(CartridgeSubscription cartridgeSubscription)
             throws ADCException, UnregisteredCartridgeException {
 
-        /*CartridgeSubscriptionInfo cartridgeSubscription = CartridgeInstanceCache.getCartridgeInstanceCache().
-                getCartridgeSubscription(new CartridgeInstanceCacheKey(tenantId, alias));
-
-        if(cartridgeSubscription == null) {
-            throw new ADCException("Unable to find cartridge with alias " + alias + ", for tenant Id " + tenantId +
-                    " in cache");
-        }*/
-
         CartridgeSubscriptionInfo cartridgeSubscriptionInfo = cartridgeSubscription.registerSubscription(null);
 
         int subscriptionId;
@@ -370,26 +340,6 @@ public class CartridgeSubscriptionManager {
         }
     }
 
-    /*public List<CartridgeSubscriptionInfo> getCartridgeInstances (int tenantId) throws ADCException, NotSubscribedException {
-
-        List<CartridgeSubscriptionInfo> cartridgeSubscriptions = getCartridgeSubscriptions(tenantId);
-        List<CartridgeSubscriptionInfo> cartridgeInstances = new ArrayList<CartridgeSubscriptionInfo>();
-        CartridgeInfo cartridgeInfo;
-
-        for(CartridgeSubscriptionInfo cartridgeSubscription : cartridgeSubscriptions) {
-            try {
-                cartridgeInfo = CloudControllerServiceClient.getServiceClient().
-                        getCartridgeInfo(cartridgeSubscription.getCartridge());
-                cartridgeInstances.add(populateCartridgeSubscriptionInformation(cartridgeInfo, cartridgeSubscription));
-
-            } catch (Exception e) {
-                throw new ADCException(e.getMessage(), e);
-            }
-        }
-
-        return cartridgeInstances;
-    }*/
-
     /**
      * Creates and returns a CartridgeSubscription object
      *
@@ -415,27 +365,9 @@ public class CartridgeSubscriptionManager {
 
         return populateCartridgeSubscriptionInformation(cartridgeInfo, cartridgeSubscriptionInfo);
     }
-    
-    
-    /****
-     *  TODO - complete method...
-     * 
-     * 
-     * @param cartridgeType
-     * @param cartridgeAlias
-     * @param autoscalingPolicyName
-     * @param deploymentPolicyName
-     * @param tenantDomain
-     * @param tenantId
-     * @param tenantAdminUsername
-     * @param repositoryType
-     * @param repositoryURL
-     * @param isPrivateRepository
-     * @param repositoryUsername
-     * @param repositoryPassword
-     */
-    
-    public CartridgeSubscription deployMultitenantService(String cartridgeType, String cartridgeAlias,
+
+    //TODO: remove
+    /*public CartridgeSubscription deployMultitenantService(String cartridgeType, String cartridgeAlias,
             String autoscalingPolicyName, String deploymentPolicyName,
             String tenantDomain, int tenantId,
             String tenantAdminUsername,
@@ -485,7 +417,7 @@ public class CartridgeSubscriptionManager {
         
         // TODO -- payload would need some additional params - like Puppet master IP .. etc
         
-        Payload payload = PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(), cartridgeType,
+        Payload payload = PayloadFactory.getPayloadDataInstance(cartridgeInfo.getProvider(), cartridgeType,
                 "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
         PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
 
@@ -497,7 +429,7 @@ public class CartridgeSubscriptionManager {
             payloadArg.setTenantRange(tenantRange);
             //payloadArg.setDeployment("default");   
             payloadArg.setServiceDomain(cartridgeAlias+"."+cartridgeInfo.getHostName()+".domain"); // This is cluster id
-            cartridgeSubscription.setPayload(payload);
+            cartridgeSubscription.setPayloadData(payload);
         }
 
         //get the payload parameters defined in the cartridge definition file for this cartridge type
@@ -521,13 +453,13 @@ public class CartridgeSubscriptionManager {
             String customPayloadParamString = customPayloadParamsBuilder.toString();
             if(!customPayloadParamString.isEmpty()) {
                 payload.populatePayload(customPayloadParamString);
-                cartridgeSubscription.setPayload(payload);
+                cartridgeSubscription.setPayloadData(payload);
             }
         }
         
         return cartridgeSubscription;
     	
-    }
+    }*/
 
     private CartridgeSubscriptionInfo getCartridgeSubscriptionInfo(String tenantDomain, String alias)
             throws ADCException, NotSubscribedException {
@@ -577,7 +509,15 @@ public class CartridgeSubscriptionManager {
                                                                            CartridgeSubscriptionInfo cartridgeSubscriptionInfo)
             throws ADCException {
 
-        CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
+        SubscriptionTenancyBehaviour tenancyBehaviour;
+        if(cartridgeInfo.getMultiTenant()) {
+            tenancyBehaviour = new SubscriptionMultiTenantBehaviour();
+        } else {
+            tenancyBehaviour = new SubscriptionSingleTenantBehaviour();
+        }
+
+        CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.
+                getCartridgeSubscriptionInstance(cartridgeInfo, tenancyBehaviour);
 
         cartridgeSubscription.setSubscriptionId(cartridgeSubscriptionInfo.getSubscriptionId());
         cartridgeSubscription.setAlias(cartridgeSubscriptionInfo.getAlias());
@@ -586,12 +526,6 @@ public class CartridgeSubscriptionManager {
         cartridgeSubscription.setClusterSubDomain(cartridgeSubscriptionInfo.getClusterSubdomain());
         cartridgeSubscription.setMgtClusterDomain(cartridgeSubscriptionInfo.getMgtClusterDomain());
         cartridgeSubscription.setMgtClusterSubDomain(cartridgeSubscriptionInfo.getMgtClusterSubDomain());
-        /*Policy autoScalingPolicy;
-        if(cartridgeSubscriptionInfo.getPolicy() != null && !cartridgeSubscriptionInfo.getPolicy().isEmpty()) {
-            autoScalingPolicy = PolicyHolder.getInstance().getPolicy(cartridgeSubscriptionInfo.getPolicy());
-        } else {
-            autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
-        }*/
         cartridgeSubscription.setAutoscalingPolicyName(cartridgeSubscriptionInfo.getPolicy());
         Subscriber subscriber = new Subscriber(CarbonContext.getThreadLocalCarbonContext().getUsername(),
                 cartridgeSubscriptionInfo.getTenantId(), cartridgeSubscriptionInfo.getTenantDomain());

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/ApplicationCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/ApplicationCartridgePayloadData.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/ApplicationCartridgePayloadData.java
new file mode 100644
index 0000000..88c8449
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/ApplicationCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.payload;
+
+public class ApplicationCartridgePayloadData extends PayloadData {
+
+    public ApplicationCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/BasicPayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/BasicPayloadData.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/BasicPayloadData.java
new file mode 100644
index 0000000..7f26c5e
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/BasicPayloadData.java
@@ -0,0 +1,191 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.payload;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+
+import java.io.Serializable;
+
+/**
+ * Contains basic payload data fields
+ */
+public class BasicPayloadData implements Serializable {
+
+    private static Log log = LogFactory.getLog(BasicPayloadData.class);
+
+    private String serviceName;
+    private String clusterId;
+    private String hostName;
+    private int tenantId;
+    private String tenantRange;
+    private String subscriptionAlias;
+    private String deployment;
+    private String puppetIp;
+    private String subscriptionKey;
+    private String applicationPath;
+    private String gitRepositoryUrl;
+    private String portMappings;
+    private String multitenant;
+
+    protected StringBuilder payloadBuilder;
+
+    public BasicPayloadData() {
+        payloadBuilder = new StringBuilder();
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getClusterId() {
+        return clusterId;
+    }
+
+    public void setClusterId(String clusterId) {
+        this.clusterId = clusterId;
+    }
+
+    public String getHostName() {
+        return hostName;
+    }
+
+    public void setHostName(String hostName) {
+        this.hostName = hostName;
+    }
+
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getTenantRange() {
+        return tenantRange;
+    }
+
+    public void setTenantRange(String tenantRange) {
+        this.tenantRange = tenantRange;
+    }
+
+    public String getSubscriptionAlias() {
+        return subscriptionAlias;
+    }
+
+    public void setSubscriptionAlias(String subscriptionAlias) {
+        this.subscriptionAlias = subscriptionAlias;
+    }
+
+    public String getDeployment() {
+        return deployment;
+    }
+
+    public void setDeployment(String deployment) {
+        this.deployment = deployment;
+    }
+
+    public String getPuppetIp() {
+        return puppetIp;
+    }
+
+    public void setPuppetIp(String puppetIp) {
+        this.puppetIp = puppetIp;
+    }
+
+    public String getSubscriptionKey() {
+        return subscriptionKey;
+    }
+
+    public void setSubscriptionKey(String subscriptionKey) {
+        this.subscriptionKey = subscriptionKey;
+    }
+
+    public StringBuilder getPayloadData () {
+
+        payloadBuilder.append("SERVICE_NAME=" + getServiceName());
+        payloadBuilder.append(",");
+        payloadBuilder.append("HOST_NAME=" + getHostName());
+        payloadBuilder.append(",");
+        payloadBuilder.append("MULTITENANT=" + getMultitenant());
+        payloadBuilder.append(",");
+        payloadBuilder.append("TENANT_ID=" + getTenantId());
+        payloadBuilder.append(",");
+        payloadBuilder.append("TENANT_RANGE=" + getTenantRange());
+        payloadBuilder.append(",");
+        payloadBuilder.append("CARTRIDGE_ALIAS=" + getSubscriptionAlias());
+        payloadBuilder.append(",");
+        payloadBuilder.append("CLUSTER_ID=" + getClusterId());
+        payloadBuilder.append(",");
+        payloadBuilder.append("CARTRIDGE_KEY=" + getSubscriptionKey());
+        payloadBuilder.append(",");
+        payloadBuilder.append("DEPLOYMENT=" + getDeployment());
+        payloadBuilder.append(",");
+        payloadBuilder.append("APP_PATH=" + getApplicationPath());
+        payloadBuilder.append(",");
+        payloadBuilder.append("GIT_REPO=" + getGitRepositoryUrl());
+        payloadBuilder.append(",");
+        payloadBuilder.append("PORTS=" + getPortMappings());
+
+        //Payload Data exposed as system variables
+        payloadBuilder.append(",");
+        payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
+
+        return payloadBuilder;
+    }
+
+    public String getApplicationPath() {
+        return applicationPath;
+    }
+
+    public void setApplicationPath(String applicationPath) {
+        this.applicationPath = applicationPath;
+    }
+
+    public String getGitRepositoryUrl() {
+        return gitRepositoryUrl;
+    }
+
+    public void setGitRepositoryUrl(String gitRepositoryUrl) {
+        this.gitRepositoryUrl = gitRepositoryUrl;
+    }
+
+    public String getPortMappings() {
+        return portMappings;
+    }
+
+    public void setPortMappings(String portMappings) {
+        this.portMappings = portMappings;
+    }
+
+    public String getMultitenant() {
+        return multitenant;
+    }
+
+    public void setMultitenant(String multitenant) {
+        this.multitenant = multitenant;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/CarbonPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/CarbonPayload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/CarbonPayload.java
index 3244e8e..a5e5ef4 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/CarbonPayload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/CarbonPayload.java
@@ -1,43 +1,43 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.adc.mgt.payload;
-
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
-
-public class CarbonPayload extends Payload {
-
-    public CarbonPayload(String payloadFilePath) {
-        super(payloadFilePath);
-    }
-
-    public void populatePayload(PayloadArg payloadArg) {
-
-        super.populatePayload(payloadArg);
-        payloadBuilder.append(",");
-
-        //carbon specific
-        //payloadBuilder.append("DEPLOYMENT=" + payloadArg.getDeployment());
-        //payloadBuilder.append(",");
-        //payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
-        //payloadBuilder.append(",");
-        payloadBuilder.append("MULTITENANT=" + payloadArg.getCartridgeInfo().getMultiTenant());
-
-    }
-}
+///*
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements.  See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership.  The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License.  You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied.  See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// */
+//
+//package org.apache.stratos.adc.mgt.payload;
+//
+//import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+//
+//public class CarbonPayload extends Payload {
+//
+//    public CarbonPayload(String payloadFilePath) {
+//        super(payloadFilePath);
+//    }
+//
+//    public void populatePayload(PayloadArg payloadArg) {
+//
+//        super.populatePayload(payloadArg);
+//        payloadBuilder.append(",");
+//
+//        //carbon specific
+//        //payloadBuilder.append("DEPLOYMENT=" + payloadArg.getDeployment());
+//        //payloadBuilder.append(",");
+//        //payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
+//        //payloadBuilder.append(",");
+//        payloadBuilder.append("MULTITENANT=" + payloadArg.getCartridgeInfo().getMultiTenant());
+//
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataCartridgePayloadData.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataCartridgePayloadData.java
new file mode 100644
index 0000000..ee66375
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.payload;
+
+public class DataCartridgePayloadData extends PayloadData {
+
+    public DataCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataPayload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataPayload.java
index f4c8701..76b5087 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataPayload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/DataPayload.java
@@ -1,40 +1,40 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.adc.mgt.payload;
-
-public class DataPayload extends NonCarbonPayload {
-
-    public DataPayload(String payloadFilePath) {
-        super(payloadFilePath);
-    }
-
-    public void populatePayload(PayloadArg payloadArg) {
-
-        super.populatePayload(payloadArg);
-        payloadBuilder.append(",");
-
-        //data specific
-        payloadBuilder.append("MYSQL_USER=" + payloadArg.getDataCartridgeAdminUser());
-        payloadBuilder.append(",");
-        payloadBuilder.append("MYSQL_HOST=" + payloadArg.getDataCartridgeHost());
-        payloadBuilder.append(",");
-        payloadBuilder.append("MYSQL_PASSWORD=" + payloadArg.getDataCartridgeAdminPassword());
-    }
-}
+///*
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements.  See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership.  The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License.  You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied.  See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// */
+//
+//package org.apache.stratos.adc.mgt.payload;
+//
+//public class DataPayload extends NonCarbonPayload {
+//
+//    public DataPayload(String payloadFilePath) {
+//        super(payloadFilePath);
+//    }
+//
+//    public void populatePayload(PayloadArg payloadArg) {
+//
+//        super.populatePayload(payloadArg);
+//        payloadBuilder.append(",");
+//
+//        //data specific
+//        payloadBuilder.append("MYSQL_USER=" + payloadArg.getDataCartridgeAdminUser());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("MYSQL_HOST=" + payloadArg.getDataCartridgeHost());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("MYSQL_PASSWORD=" + payloadArg.getDataCartridgeAdminPassword());
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/FramewrokCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/FramewrokCartridgePayloadData.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/FramewrokCartridgePayloadData.java
new file mode 100644
index 0000000..54a302f
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/FramewrokCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.payload;
+
+public class FramewrokCartridgePayloadData extends PayloadData {
+
+    public FramewrokCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/LoadBalancerCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/LoadBalancerCartridgePayloadData.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/LoadBalancerCartridgePayloadData.java
new file mode 100644
index 0000000..f544675
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/LoadBalancerCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.payload;
+
+public class LoadBalancerCartridgePayloadData extends PayloadData {
+
+    public LoadBalancerCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
index 951ca66..977a000 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
@@ -1,125 +1,125 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.adc.mgt.payload;
-
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
-import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
-
-public class NonCarbonPayload extends Payload {
-
-    public NonCarbonPayload(String payloadFilePath) {
-        super(payloadFilePath);
-    }
-
-    public void populatePayload(PayloadArg payloadArg) {
-
-        super.populatePayload(payloadArg);
-        payloadBuilder.append(",");
-
-        //general
-        payloadBuilder.append("REPO_INFO_EPR=" + System.getProperty(CartridgeConstants.REPO_INFO_EPR));
-        payloadBuilder.append(",");
-        payloadBuilder.append("CARTRIDGE_AGENT_EPR=" + System.getProperty(CartridgeConstants.CARTRIDGE_AGENT_EPR));
-        payloadBuilder.append(",");
-        payloadBuilder.append("APP_PATH=" + payloadArg.getCartridgeInfo().getBaseDir());
-
-        //port mapping specific
-        if(payloadArg.getCartridgeInfo() != null) {
-            payloadBuilder.append(",");
-            payloadBuilder.append(createPortMappingPayloadString(payloadArg.getCartridgeInfo()));
-        }
-
-        //git repository specific
-        payloadBuilder.append(",");
-        payloadBuilder.append("GIT_REPO=" + getRepositoryUrlParam(payloadArg));
-
-        //BAM specific
-        payloadBuilder.append(",");
-        payloadBuilder.append("BAM_IP=" + System.getProperty(CartridgeConstants.BAM_IP));
-        payloadBuilder.append(",");
-        payloadBuilder.append("BAM_PORT=" + System.getProperty(CartridgeConstants.BAM_PORT));
-
-        //TODO: remove
-        //Autoscale policy specific
-        /*if(payloadArg.getPolicy() != null) {
-            payloadBuilder.append(getAutoscalingParams(payloadArg.getPolicy()));
-        }*/
-                
-    }
-
-    private String createPortMappingPayloadString(CartridgeInfo cartridgeInfo) {
-        // port mappings
-        StringBuilder portMapBuilder = new StringBuilder();
-        org.apache.stratos.cloud.controller.pojo.PortMapping[] portMappings = cartridgeInfo.getPortMappings();
-        for (org.apache.stratos.cloud.controller.pojo.PortMapping portMapping : portMappings) {
-            String port = portMapping.getPort();
-            portMapBuilder.append(port).append("|");
-        }
-
-        // remove last "|" character
-        String portMappingString = portMapBuilder.toString().replaceAll("\\|$", "");
-	        /*String portMappingPayloadString = null;
-	        if (portMappingString.charAt(portMappingString.length() - 1) == '|') {
-	            portMappingPayloadString = portMappingString.substring(0, portMappingString.length() - 1);
-	        } else {
-	            portMappingPayloadString = portMappingString;
-	        }*/
-
-        return "PORTS=" + portMappingString;
-    }
-
-    private String getRepositoryUrlParam (PayloadArg arg) {
-
-        String gitRepoURL = null;
-        if (arg.getRepoURL() != null) {
-            gitRepoURL = arg.getRepoURL();
-        } else {
-            gitRepoURL = "git@" + System.getProperty(CartridgeConstants.GIT_HOST_IP) + ":" + arg.getTenantDomain()
-                    + System.getProperty("file.separator") + arg.getCartridgeAlias() + ".git";
-        }
-        return gitRepoURL;
-    }
-
-    //TODO: remove
-    /*private String getAutoscalingParams (Policy policy) {
-
-        DecimalFormat df = new DecimalFormat("##.##");
-        df.setParseBigDecimal(true);
-
-        StringBuilder autoscalingPayloadBuilder = new StringBuilder();
-
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("MIN=" + policy.getMinAppInstances());
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("MAX=" + policy.getMaxAppInstances());
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("ALARMING_LOWER_RATE=" + policy.getAlarmingLowerRate());
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("ALARMING_UPPER_RATE=" + policy.getAlarmingUpperRate());
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("MAX_REQUESTS_PER_SEC=" + policy.getMaxRequestsPerSecond());
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("ROUNDS_TO_AVERAGE=" + policy.getRoundsToAverage());
-        autoscalingPayloadBuilder.append(",");
-        autoscalingPayloadBuilder.append("SCALE_DOWN_FACTOR=" + policy.getScaleDownFactor());
-
-        return autoscalingPayloadBuilder.toString();
-    }*/
-}
+///*
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements.  See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership.  The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License.  You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied.  See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// */
+//
+//package org.apache.stratos.adc.mgt.payload;
+//
+//import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+//import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+//
+//public class NonCarbonPayload extends Payload {
+//
+//    public NonCarbonPayload(String payloadFilePath) {
+//        super(payloadFilePath);
+//    }
+//
+//    public void populatePayload(PayloadArg payloadArg) {
+//
+//        super.populatePayload(payloadArg);
+//        payloadBuilder.append(",");
+//
+//        //general
+//        payloadBuilder.append("REPO_INFO_EPR=" + System.getProperty(CartridgeConstants.REPO_INFO_EPR));
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("CARTRIDGE_AGENT_EPR=" + System.getProperty(CartridgeConstants.CARTRIDGE_AGENT_EPR));
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("APP_PATH=" + payloadArg.getCartridgeInfo().getBaseDir());
+//
+//        //port mapping specific
+//        if(payloadArg.getCartridgeInfo() != null) {
+//            payloadBuilder.append(",");
+//            payloadBuilder.append(createPortMappingPayloadString(payloadArg.getCartridgeInfo()));
+//        }
+//
+//        //git repository specific
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("GIT_REPO=" + getRepositoryUrlParam(payloadArg));
+//
+//        //BAM specific
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("BAM_IP=" + System.getProperty(CartridgeConstants.BAM_IP));
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("BAM_PORT=" + System.getProperty(CartridgeConstants.BAM_PORT));
+//
+//        //TODO: remove
+//        //Autoscale policy specific
+//        /*if(payloadArg.getPolicy() != null) {
+//            payloadBuilder.append(getAutoscalingParams(payloadArg.getPolicy()));
+//        }*/
+//
+//    }
+//
+//    private String createPortMappingPayloadString(CartridgeInfo cartridgeInfo) {
+//        // port mappings
+//        StringBuilder portMapBuilder = new StringBuilder();
+//        org.apache.stratos.cloud.controller.pojo.PortMapping[] portMappings = cartridgeInfo.getPortMappings();
+//        for (org.apache.stratos.cloud.controller.pojo.PortMapping portMapping : portMappings) {
+//            String port = portMapping.getPort();
+//            portMapBuilder.append(port).append("|");
+//        }
+//
+//        // remove last "|" character
+//        String portMappingString = portMapBuilder.toString().replaceAll("\\|$", "");
+//	        /*String portMappingPayloadString = null;
+//	        if (portMappingString.charAt(portMappingString.length() - 1) == '|') {
+//	            portMappingPayloadString = portMappingString.substring(0, portMappingString.length() - 1);
+//	        } else {
+//	            portMappingPayloadString = portMappingString;
+//	        }*/
+//
+//        return "PORTS=" + portMappingString;
+//    }
+//
+//    private String getRepositoryUrlParam (PayloadArg arg) {
+//
+//        String gitRepoURL = null;
+//        if (arg.getRepoURL() != null) {
+//            gitRepoURL = arg.getRepoURL();
+//        } else {
+//            gitRepoURL = "git@" + System.getProperty(CartridgeConstants.GIT_HOST_IP) + ":" + arg.getTenantDomain()
+//                    + System.getProperty("file.separator") + arg.getCartridgeAlias() + ".git";
+//        }
+//        return gitRepoURL;
+//    }
+//
+//    //TODO: remove
+//    /*private String getAutoscalingParams (Policy policy) {
+//
+//        DecimalFormat df = new DecimalFormat("##.##");
+//        df.setParseBigDecimal(true);
+//
+//        StringBuilder autoscalingPayloadBuilder = new StringBuilder();
+//
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("MIN=" + policy.getMinAppInstances());
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("MAX=" + policy.getMaxAppInstances());
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("ALARMING_LOWER_RATE=" + policy.getAlarmingLowerRate());
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("ALARMING_UPPER_RATE=" + policy.getAlarmingUpperRate());
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("MAX_REQUESTS_PER_SEC=" + policy.getMaxRequestsPerSecond());
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("ROUNDS_TO_AVERAGE=" + policy.getRoundsToAverage());
+//        autoscalingPayloadBuilder.append(",");
+//        autoscalingPayloadBuilder.append("SCALE_DOWN_FACTOR=" + policy.getScaleDownFactor());
+//
+//        return autoscalingPayloadBuilder.toString();
+//    }*/
+//}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
index 4956e6b..10427f5 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
@@ -1,224 +1,224 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.adc.mgt.payload;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.adc.mgt.exception.ADCException;
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
-
-import java.io.*;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-public abstract class Payload implements Serializable {
-
-    private static Log log = LogFactory.getLog(Payload.class);
-
-    protected StringBuilder payloadBuilder;
-    protected String payloadFilePath;
-    protected PayloadArg payloadArg;
-
-    /**
-     * Constructor
-     *
-     * @param payloadFilePath Full path at which the payload file is created
-     */
-    public Payload(String payloadFilePath) {
-        this.payloadFilePath = payloadFilePath;
-        payloadBuilder = new StringBuilder();
-    }
-
-    /**
-     * Pupulates the Payload subscription with relevant parameters and values given in PayloadArg subscription
-     *
-     * @param payloadArg PayloadArg subscription with relevant values
-     */
-    public void populatePayload(PayloadArg payloadArg) {
-
-        this.payloadArg = payloadArg;
-        payloadBuilder.append("HOST_NAME=" + payloadArg.getHostName());
-        payloadBuilder.append(",");
-        payloadBuilder.append("TENANT_ID=" + payloadArg.getTenantId());
-        payloadBuilder.append(",");
-        payloadBuilder.append("TENANT_RANGE=" + payloadArg.getTenantRange());
-        payloadBuilder.append(",");
-        payloadBuilder.append("TENANT_CONTEXT=" + payloadArg.getTenantDomain()); // No need to send those now
-        payloadBuilder.append(",");
-        payloadBuilder.append("CARTRIDGE_ALIAS=" + payloadArg.getCartridgeAlias());
-        payloadBuilder.append(",");
-        payloadBuilder.append("MB_IP=" + System.getProperty(CartridgeConstants.MB_IP));  // No need to send those now, will get from Puppet
-        payloadBuilder.append(",");
-        payloadBuilder.append("MB_PORT=" + System.getProperty(CartridgeConstants.MB_PORT)); // No need to send those now, will get from Puppet
-        payloadBuilder.append(",");
-        payloadBuilder.append("CEP_IP=" + System.getProperty(CartridgeConstants.CEP_IP)); // No need to send those now, will get from Puppet
-        payloadBuilder.append(",");
-        payloadBuilder.append("CEP_PORT=" + System.getProperty(CartridgeConstants.CEP_PORT)); // No need to send those now, will get from Puppet
-        payloadBuilder.append(",");
-        payloadBuilder.append("CLUSTER_ID=" + payloadArg.getServiceDomain());
-        payloadBuilder.append(",");
-        payloadBuilder.append("CARTRIDGE_KEY=" + payloadArg.getSubscriptionKey());
-        payloadBuilder.append(",");
-        payloadBuilder.append("DEPLOYMENT=" + "default"); // hard coded to default
-        payloadBuilder.append(",");
-        payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));       
-        
-        
-        if(payloadArg.getCartridgeInfo() != null) {
-            payloadBuilder.append(",");
-            payloadBuilder.append("SERVICE_NAME=" + payloadArg.getCartridgeInfo().getType());
-        }
-
-        //add the user defined payload String (if any)
-        //this should be of the format <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
-        if (payloadArg.getUserDefinedPayload() != null && !payloadArg.getUserDefinedPayload().trim().isEmpty()) {
-
-            if(!payloadBuilder.toString().endsWith(",")) {
-                payloadBuilder.append(",");
-            }
-            payloadBuilder.append(payloadArg.getUserDefinedPayload());
-        }
-    }
-
-    /**
-     * Add the user defined payload String (if any). This should be of the format
-     * <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
-     *
-     * @param payloadString String object with payload information
-     */
-    public void populatePayload (String payloadString) {
-
-        if(payloadBuilder.toString().isEmpty()) {
-            if(payloadString.startsWith(",")) {
-                payloadBuilder.append(payloadString.substring(1));
-            }
-            else {
-                payloadBuilder.append(payloadString);
-            }
-        } else {
-            if(!payloadBuilder.toString().endsWith(",") && !payloadString.startsWith(",")) {
-                payloadBuilder.append(",");
-                payloadBuilder.append(payloadString);
-            }
-            else if (payloadBuilder.toString().endsWith(",") && payloadString.startsWith(",")) {
-                payloadBuilder.append(payloadString.substring(1));
-            }
-            else {
-                payloadBuilder.append(payloadString);
-            }
-        }
-    }
-
-    /**
-     * Create the actual payload in the file system
-     *
-     * @return DataHandler subscription with payload
-     * @throws ADCException in case of an error
-     */
-    public StringBuilder createPayload () throws ADCException {
-
-        if(payloadBuilder.length() == 0) {
-            log.warn("Payload string length is zero. Create payload failed");
-            return null;
-        }
-
-        File payloadFile = new File(getPayloadFilePath());
-        if(payloadFile.exists()) {
-            payloadFile.delete();
-        }
-
-        log.info("** Payload ** " + payloadBuilder.toString());
-
-        return payloadBuilder;
-    }
-
-    /**
-     * Adds content to a zip file
-     *
-     * @param dir Name of directory
-     * @param fileName Name of file to add
-     * @param zos ZipOutputStream subscription to write
-     * @throws ADCException in an error
-     */
-    private void addToZipFile(String dir, String fileName, ZipOutputStream zos) throws ADCException {
-
-        log.info("Writing '" + fileName + "' to zip file");
-
-        File file = new File(dir + File.separator + fileName);
-        FileInputStream fis;
-        try {
-            fis = new FileInputStream(file);
-
-        } catch (FileNotFoundException e) {
-            log.error(e.getMessage());
-            throw new ADCException(e.getMessage(), e);
-        }
-
-        ZipEntry zipEntry = new ZipEntry(fileName);
-        try {
-            zos.putNextEntry(zipEntry);
-
-        } catch (IOException e) {
-            log.error(e.getMessage());
-            throw new ADCException(e.getMessage(), e);
-        }
-
-        byte[] bytes = new byte[1024];
-        int length;
-
-            try {
-                while ((length = fis.read(bytes)) >= 0) {
-                    zos.write(bytes, 0, length);
-                }
-            } catch (IOException e) {
-                log.error(e.getMessage());
-                throw new ADCException(e.getMessage(), e);
-            }
-
-        try {
-            zos.closeEntry();
-            fis.close();
-
-        } catch (IOException e) {
-            log.error(e.getMessage());
-            throw new ADCException(e.getMessage(), e);
-        }
-    }
-
-    public String getPayloadFilePath() {
-        return payloadFilePath;
-    }
-
-    public void setPayloadFilePath(String payloadFilePath) {
-        this.payloadFilePath = payloadFilePath;
-    }
-
-    public boolean delete () {
-        return new File(payloadFilePath).delete();
-    }
-
-    public PayloadArg getPayloadArg() {
-        return payloadArg;
-    }
-
-    public void setPayloadArg(PayloadArg payloadArg) {
-        this.payloadArg = payloadArg;
-    }
-}
+///*
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements.  See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership.  The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License.  You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied.  See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// */
+//
+//package org.apache.stratos.adc.mgt.payload;
+//
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.apache.stratos.adc.mgt.exception.ADCException;
+//import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+//
+//import java.io.*;
+//import java.util.zip.ZipEntry;
+//import java.util.zip.ZipOutputStream;
+//
+//public abstract class Payload implements Serializable {
+//
+//    private static Log log = LogFactory.getLog(Payload.class);
+//
+//    protected StringBuilder payloadBuilder;
+//    protected String payloadFilePath;
+//    protected PayloadArg payloadArg;
+//
+//    /**
+//     * Constructor
+//     *
+//     * @param payloadFilePath Full path at which the payload file is created
+//     */
+//    public Payload(String payloadFilePath) {
+//        this.payloadFilePath = payloadFilePath;
+//        payloadBuilder = new StringBuilder();
+//    }
+//
+//    /**
+//     * Pupulates the Payload subscription with relevant parameters and values given in PayloadArg subscription
+//     *
+//     * @param payloadArg PayloadArg subscription with relevant values
+//     */
+//    public void populatePayload(PayloadArg payloadArg) {
+//
+//        this.payloadArg = payloadArg;
+//        payloadBuilder.append("HOST_NAME=" + payloadArg.getHostName());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("TENANT_ID=" + payloadArg.getTenantId());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("TENANT_RANGE=" + payloadArg.getTenantRange());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("TENANT_CONTEXT=" + payloadArg.getTenantDomain()); // No need to send those now
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("CARTRIDGE_ALIAS=" + payloadArg.getCartridgeAlias());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("MB_IP=" + System.getProperty(CartridgeConstants.MB_IP));  // No need to send those now, will get from Puppet
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("MB_PORT=" + System.getProperty(CartridgeConstants.MB_PORT)); // No need to send those now, will get from Puppet
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("CEP_IP=" + System.getProperty(CartridgeConstants.CEP_IP)); // No need to send those now, will get from Puppet
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("CEP_PORT=" + System.getProperty(CartridgeConstants.CEP_PORT)); // No need to send those now, will get from Puppet
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("CLUSTER_ID=" + payloadArg.getServiceDomain());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("CARTRIDGE_KEY=" + payloadArg.getSubscriptionKey());
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("DEPLOYMENT=" + "default"); // hard coded to default
+//        payloadBuilder.append(",");
+//        payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
+//
+//
+//        if(payloadArg.getCartridgeInfo() != null) {
+//            payloadBuilder.append(",");
+//            payloadBuilder.append("SERVICE_NAME=" + payloadArg.getCartridgeInfo().getType());
+//        }
+//
+//        //add the user defined payload String (if any)
+//        //this should be of the format <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
+//        if (payloadArg.getUserDefinedPayload() != null && !payloadArg.getUserDefinedPayload().trim().isEmpty()) {
+//
+//            if(!payloadBuilder.toString().endsWith(",")) {
+//                payloadBuilder.append(",");
+//            }
+//            payloadBuilder.append(payloadArg.getUserDefinedPayload());
+//        }
+//    }
+//
+//    /**
+//     * Add the user defined payload String (if any). This should be of the format
+//     * <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
+//     *
+//     * @param payloadString String object with payload information
+//     */
+//    public void populatePayload (String payloadString) {
+//
+//        if(payloadBuilder.toString().isEmpty()) {
+//            if(payloadString.startsWith(",")) {
+//                payloadBuilder.append(payloadString.substring(1));
+//            }
+//            else {
+//                payloadBuilder.append(payloadString);
+//            }
+//        } else {
+//            if(!payloadBuilder.toString().endsWith(",") && !payloadString.startsWith(",")) {
+//                payloadBuilder.append(",");
+//                payloadBuilder.append(payloadString);
+//            }
+//            else if (payloadBuilder.toString().endsWith(",") && payloadString.startsWith(",")) {
+//                payloadBuilder.append(payloadString.substring(1));
+//            }
+//            else {
+//                payloadBuilder.append(payloadString);
+//            }
+//        }
+//    }
+//
+//    /**
+//     * Create the actual payload in the file system
+//     *
+//     * @return DataHandler subscription with payload
+//     * @throws ADCException in case of an error
+//     */
+//    public StringBuilder createPayload () throws ADCException {
+//
+//        if(payloadBuilder.length() == 0) {
+//            log.warn("Payload string length is zero. Create payload failed");
+//            return null;
+//        }
+//
+//        File payloadFile = new File(getPayloadFilePath());
+//        if(payloadFile.exists()) {
+//            payloadFile.delete();
+//        }
+//
+//        log.info("** Payload ** " + payloadBuilder.toString());
+//
+//        return payloadBuilder;
+//    }
+//
+//    /**
+//     * Adds content to a zip file
+//     *
+//     * @param dir Name of directory
+//     * @param fileName Name of file to add
+//     * @param zos ZipOutputStream subscription to write
+//     * @throws ADCException in an error
+//     */
+//    private void addToZipFile(String dir, String fileName, ZipOutputStream zos) throws ADCException {
+//
+//        log.info("Writing '" + fileName + "' to zip file");
+//
+//        File file = new File(dir + File.separator + fileName);
+//        FileInputStream fis;
+//        try {
+//            fis = new FileInputStream(file);
+//
+//        } catch (FileNotFoundException e) {
+//            log.error(e.getMessage());
+//            throw new ADCException(e.getMessage(), e);
+//        }
+//
+//        ZipEntry zipEntry = new ZipEntry(fileName);
+//        try {
+//            zos.putNextEntry(zipEntry);
+//
+//        } catch (IOException e) {
+//            log.error(e.getMessage());
+//            throw new ADCException(e.getMessage(), e);
+//        }
+//
+//        byte[] bytes = new byte[1024];
+//        int length;
+//
+//            try {
+//                while ((length = fis.read(bytes)) >= 0) {
+//                    zos.write(bytes, 0, length);
+//                }
+//            } catch (IOException e) {
+//                log.error(e.getMessage());
+//                throw new ADCException(e.getMessage(), e);
+//            }
+//
+//        try {
+//            zos.closeEntry();
+//            fis.close();
+//
+//        } catch (IOException e) {
+//            log.error(e.getMessage());
+//            throw new ADCException(e.getMessage(), e);
+//        }
+//    }
+//
+//    public String getPayloadFilePath() {
+//        return payloadFilePath;
+//    }
+//
+//    public void setPayloadFilePath(String payloadFilePath) {
+//        this.payloadFilePath = payloadFilePath;
+//    }
+//
+//    public boolean delete () {
+//        return new File(payloadFilePath).delete();
+//    }
+//
+//    public PayloadArg getPayloadArg() {
+//        return payloadArg;
+//    }
+//
+//    public void setPayloadArg(PayloadArg payloadArg) {
+//        this.payloadArg = payloadArg;
+//    }
+//}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadArg.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadArg.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadArg.java
index 5729ee7..ba4aa83 100755
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadArg.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadArg.java
@@ -1,194 +1,194 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
-
- *  http://www.apache.org/licenses/LICENSE-2.0
-
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.stratos.adc.mgt.payload;
-
-import org.apache.stratos.adc.mgt.dto.Policy;
-import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
-
-public class PayloadArg {
-
-    //basic
-    private String hostName;
-    private String tenantRange;
-    private int tenantId;
-    private String serviceName;
-    private String cartridgeAlias;
-    private String tenantDomain;
-    private CartridgeInfo cartridgeInfo;
-    private Policy policy;
-    private String repoURL;
-    private boolean multitenant;
-
-    //other
-	private String userDefinedPayload;
-    private String serviceDomain;
-    private String serviceSubDomain;
-    private String mgtServiceDomain;
-    private String mgtServiceSubDomain;
-    private String deployment;
-    private String subscriptionKey;
-
-    //data cartridge specific
-    private String dataCartridgeHost;
-    private String dataCartridgeAdminUser;
-    private String dataCartridgeAdminPassword;
-
-
-	public CartridgeInfo getCartridgeInfo() {
-		return cartridgeInfo;
-	}
-	public void setCartridgeInfo(CartridgeInfo cartridgeInfo) {
-		this.cartridgeInfo = cartridgeInfo;
-	}
-	public Policy getPolicy() {
-		return policy;
-	}
-	public void setPolicy(Policy policy) {
-		this.policy = policy;
-	}
-	public String getRepoURL() {
-		return repoURL;
-	}
-	public void setRepoURL(String repoURL) {
-		this.repoURL = repoURL;
-	}
-	public String getDataCartridgeAdminPassword() {
-		return dataCartridgeAdminPassword;
-	}
-	public void setDataCartridgeAdminPassword(String dataCartridgeAdminPassword) {
-		this.dataCartridgeAdminPassword = dataCartridgeAdminPassword;
-	}
-	public String getDataCartridgeHost() {
-		return dataCartridgeHost;
-	}
-	public void setDataCartridgeHost(String dataCartridgeHost) {
-		this.dataCartridgeHost = dataCartridgeHost;
-	}
-	public int getTenantId() {
-		return tenantId;
-	}
-	public void setTenantId(int tenantId) {
-		this.tenantId = tenantId;
-	}
-	public String getTenantDomain() {
-		return tenantDomain;
-	}
-	public void setTenantDomain(String tenantDomain) {
-		this.tenantDomain = tenantDomain;
-	}
-	public String getUserDefinedPayload() {
-		return userDefinedPayload;
-	}
-	public void setUserDefinedPayload(String userDefinedPayload) {
-		this.userDefinedPayload = userDefinedPayload;
-	}
-	public boolean isMultitenant() {
-		return multitenant;
-	}
-	public void setMultitenant(boolean multitenant) {
-		this.multitenant = multitenant;
-	}
-	public String getCartridgeAlias() {
-		return cartridgeAlias;
-	}
-	public void setCartridgeAlias(String cartridgeAlias) {
-		this.cartridgeAlias = cartridgeAlias;
-	}
-
-    public String getTenantRange() {
-        return tenantRange;
-    }
-
-    public void setTenantRange(String tenantRange) {
-        this.tenantRange = tenantRange;
-    }
-
-    public String getHostName() {
-        return hostName;
-    }
-
-    public void setHostName(String hostName) {
-        this.hostName = hostName;
-    }
-
-    public String getServiceDomain() {
-        return serviceDomain;
-    }
-
-    public void setServiceDomain(String serviceDomain) {
-        this.serviceDomain = serviceDomain;
-    }
-
-    public String getServiceSubDomain() {
-        return serviceSubDomain;
-    }
-
-    public void setServiceSubDomain(String serviceSubDomain) {
-        this.serviceSubDomain = serviceSubDomain;
-    }
-
-    public String getMgtServiceDomain() {
-        return mgtServiceDomain;
-    }
-
-    public void setMgtServiceDomain(String mgtServiceDomain) {
-        this.mgtServiceDomain = mgtServiceDomain;
-    }
-
-    public String getMgtServiceSubDomain() {
-        return mgtServiceSubDomain;
-    }
-
-    public void setMgtServiceSubDomain(String mgtServiceSubDomain) {
-        this.mgtServiceSubDomain = mgtServiceSubDomain;
-    }
-
-    public String getDataCartridgeAdminUser() {
-        return dataCartridgeAdminUser;
-    }
-
-    public void setDataCartridgeAdminUser(String dataCartridgeAdminUser) {
-        this.dataCartridgeAdminUser = dataCartridgeAdminUser;
-    }
-
-    public String getDeployment() {
-        return deployment;
-    }
-
-    public void setDeployment(String deployment) {
-        this.deployment = deployment;
-    }
-
-    public String getServiceName() {
-        return serviceName;
-    }
-
-    public void setServiceName(String serviceName) {
-        this.serviceName = serviceName;
-    }
-	public String getSubscriptionKey() {
-		return subscriptionKey;
-	}
-	public void setSubscriptionKey(String subscriptionKey) {
-		this.subscriptionKey = subscriptionKey;
-	}
-    
-    
-}
+///**
+// *  Licensed to the Apache Software Foundation (ASF) under one
+// *  or more contributor license agreements.  See the NOTICE file
+// *  distributed with this work for additional information
+// *  regarding copyright ownership.  The ASF licenses this file
+// *  to you under the Apache License, Version 2.0 (the
+// *  "License"); you may not use this file except in compliance
+// *  with the License.  You may obtain a copy of the License at
+//
+// *  http://www.apache.org/licenses/LICENSE-2.0
+//
+// *  Unless required by applicable law or agreed to in writing,
+// *  software distributed under the License is distributed on an
+// *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// *  KIND, either express or implied.  See the License for the
+// *  specific language governing permissions and limitations
+// *  under the License.
+// */
+//
+//package org.apache.stratos.adc.mgt.payload;
+//
+//import org.apache.stratos.adc.mgt.dto.Policy;
+//import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+//
+//public class PayloadArg {
+//
+//    //basic
+//    private String hostName;
+//    private String tenantRange;
+//    private int tenantId;
+//    private String serviceName;
+//    private String cartridgeAlias;
+//    private String tenantDomain;
+//    private CartridgeInfo cartridgeInfo;
+//    private Policy policy;
+//    private String repoURL;
+//    private boolean multitenant;
+//
+//    //other
+//	private String userDefinedPayload;
+//    private String serviceDomain;
+//    private String serviceSubDomain;
+//    private String mgtServiceDomain;
+//    private String mgtServiceSubDomain;
+//    private String deployment;
+//    private String subscriptionKey;
+//
+//    //data cartridge specific
+//    private String dataCartridgeHost;
+//    private String dataCartridgeAdminUser;
+//    private String dataCartridgeAdminPassword;
+//
+//
+//	public CartridgeInfo getCartridgeInfo() {
+//		return cartridgeInfo;
+//	}
+//	public void setCartridgeInfo(CartridgeInfo cartridgeInfo) {
+//		this.cartridgeInfo = cartridgeInfo;
+//	}
+//	public Policy getPolicy() {
+//		return policy;
+//	}
+//	public void setPolicy(Policy policy) {
+//		this.policy = policy;
+//	}
+//	public String getRepoURL() {
+//		return repoURL;
+//	}
+//	public void setRepoURL(String repoURL) {
+//		this.repoURL = repoURL;
+//	}
+//	public String getDataCartridgeAdminPassword() {
+//		return dataCartridgeAdminPassword;
+//	}
+//	public void setDataCartridgeAdminPassword(String dataCartridgeAdminPassword) {
+//		this.dataCartridgeAdminPassword = dataCartridgeAdminPassword;
+//	}
+//	public String getDataCartridgeHost() {
+//		return dataCartridgeHost;
+//	}
+//	public void setDataCartridgeHost(String dataCartridgeHost) {
+//		this.dataCartridgeHost = dataCartridgeHost;
+//	}
+//	public int getTenantId() {
+//		return tenantId;
+//	}
+//	public void setTenantId(int tenantId) {
+//		this.tenantId = tenantId;
+//	}
+//	public String getTenantDomain() {
+//		return tenantDomain;
+//	}
+//	public void setTenantDomain(String tenantDomain) {
+//		this.tenantDomain = tenantDomain;
+//	}
+//	public String getUserDefinedPayload() {
+//		return userDefinedPayload;
+//	}
+//	public void setUserDefinedPayload(String userDefinedPayload) {
+//		this.userDefinedPayload = userDefinedPayload;
+//	}
+//	public boolean isMultitenant() {
+//		return multitenant;
+//	}
+//	public void setMultitenant(boolean multitenant) {
+//		this.multitenant = multitenant;
+//	}
+//	public String getCartridgeAlias() {
+//		return cartridgeAlias;
+//	}
+//	public void setCartridgeAlias(String cartridgeAlias) {
+//		this.cartridgeAlias = cartridgeAlias;
+//	}
+//
+//    public String getTenantRange() {
+//        return tenantRange;
+//    }
+//
+//    public void setTenantRange(String tenantRange) {
+//        this.tenantRange = tenantRange;
+//    }
+//
+//    public String getHostName() {
+//        return hostName;
+//    }
+//
+//    public void setHostName(String hostName) {
+//        this.hostName = hostName;
+//    }
+//
+//    public String getServiceDomain() {
+//        return serviceDomain;
+//    }
+//
+//    public void setServiceDomain(String serviceDomain) {
+//        this.serviceDomain = serviceDomain;
+//    }
+//
+//    public String getServiceSubDomain() {
+//        return serviceSubDomain;
+//    }
+//
+//    public void setServiceSubDomain(String serviceSubDomain) {
+//        this.serviceSubDomain = serviceSubDomain;
+//    }
+//
+//    public String getMgtServiceDomain() {
+//        return mgtServiceDomain;
+//    }
+//
+//    public void setMgtServiceDomain(String mgtServiceDomain) {
+//        this.mgtServiceDomain = mgtServiceDomain;
+//    }
+//
+//    public String getMgtServiceSubDomain() {
+//        return mgtServiceSubDomain;
+//    }
+//
+//    public void setMgtServiceSubDomain(String mgtServiceSubDomain) {
+//        this.mgtServiceSubDomain = mgtServiceSubDomain;
+//    }
+//
+//    public String getDataCartridgeAdminUser() {
+//        return dataCartridgeAdminUser;
+//    }
+//
+//    public void setDataCartridgeAdminUser(String dataCartridgeAdminUser) {
+//        this.dataCartridgeAdminUser = dataCartridgeAdminUser;
+//    }
+//
+//    public String getDeployment() {
+//        return deployment;
+//    }
+//
+//    public void setDeployment(String deployment) {
+//        this.deployment = deployment;
+//    }
+//
+//    public String getServiceName() {
+//        return serviceName;
+//    }
+//
+//    public void setServiceName(String serviceName) {
+//        this.serviceName = serviceName;
+//    }
+//	public String getSubscriptionKey() {
+//		return subscriptionKey;
+//	}
+//	public void setSubscriptionKey(String subscriptionKey) {
+//		this.subscriptionKey = subscriptionKey;
+//	}
+//
+//
+//}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadData.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadData.java
new file mode 100644
index 0000000..b07f6fe
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadData.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.payload;
+
+import java.io.Serializable;
+
+public abstract class PayloadData implements Serializable {
+
+    protected StringBuilder additionalPayloadDataBuilder;
+    //private Map<String, String> payloadDataMap;
+    private BasicPayloadData basicPayloadData;
+
+    public PayloadData(BasicPayloadData basicPayloadData) {
+        this.setBasicPayloadData(basicPayloadData);
+        additionalPayloadDataBuilder = new StringBuilder();
+        //payloadDataMap = new HashMap<String, String>();
+    }
+
+    public void add (String payloadDataName, String payloadDataValue) {
+
+        if(additionalPayloadDataBuilder.length() > 0) {
+            additionalPayloadDataBuilder.append(",");
+        }
+
+        //payloadDataMap.put(payloadDataName, payloadDataValue);
+        additionalPayloadDataBuilder.append(payloadDataName + "=" + payloadDataValue);
+    }
+
+    /*public String getPayloadDataValue (String payloadDataName) {
+        return payloadDataMap.get(payloadDataName);
+    }*/
+
+    public StringBuilder getCompletePayloadData () {
+        return additionalPayloadDataBuilder.append(",").append(getBasicPayloadData().getPayloadData());
+    }
+
+    public BasicPayloadData getBasicPayloadData() {
+        return basicPayloadData;
+    }
+
+    public void setBasicPayloadData(BasicPayloadData basicPayloadData) {
+        this.basicPayloadData = basicPayloadData;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
index e78ecee..9370fe8 100755
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
@@ -22,43 +22,34 @@ package org.apache.stratos.adc.mgt.payload;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.adc.mgt.exception.ADCException;
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 
 public class PayloadFactory {
 
 	private static Log log = LogFactory.getLog(PayloadFactory.class);
 
     /**
-     * Creates and returns a Payload subscription
+     * Creates and returns a PayloadData instance
      *
      * @param cartridgeProvider Cartridge provider
      * @param cartridgeType Cartridge type
-     * @param payloadFilePath Location to create the payload
+     * @param basicPayloadData BasicPayloadData instance
      * @return Payload subscription
      * @throws ADCException if no matching criteria is found to create a payload
      */
-	public static Payload getPayloadInstance (String cartridgeProvider, String cartridgeType, String payloadFilePath)
+	public static PayloadData getPayloadDataInstance(String cartridgeProvider, String cartridgeType,
+                                                     BasicPayloadData basicPayloadData)
             throws ADCException {
 
-        Payload payload = null;
+        PayloadData payloadData = null;
 
-        if(cartridgeProvider.equals(CartridgeConstants.PROVIDER_NAME_WSO2)) {
-            payload = new CarbonPayload(payloadFilePath);
+        //TODO: fix after adding the property Category to Cartridge Definition
+        payloadData = new FramewrokCartridgePayloadData(basicPayloadData);
 
-        } else {
-            if(cartridgeProvider.equals(CartridgeConstants.DATA_CARTRIDGE_PROVIDER)) {
-                payload = new DataPayload(payloadFilePath);
-            }
-            else {
-                payload = new NonCarbonPayload(payloadFilePath);
-            }
-        }
-
-        if(payload == null) {
+        if(payloadData == null) {
             throw new ADCException("Unable to find matching payload for cartridge type " + cartridgeType +
                     ", provider " + cartridgeProvider);
         }
 
-        return payload;
+        return payloadData;
     }
 }