You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/08/15 12:51:57 UTC

[50/51] [abbrv] Merge branch '400'

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
index 02ed6e6,884d5f6..395cd9a
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
@@@ -237,16 -238,18 +237,18 @@@ public class TenantAwareLoadBalanceEndp
              }
              String url = extractUrl(synCtx);
              int tenantId = scanUrlForTenantId(url);
-             if (tenantExists(tenantId)) {
++
+             if(tenantId == -1) {
+                // If there is no tenant involves in the URL, Find next member from host name
+                member = requestDelegator.findNextMemberFromHostName(targetHost);
+             } else if (tenantExists(tenantId)) {
                  // Tenant found, find member from hostname and tenant id
                  member = requestDelegator.findNextMemberFromTenantId(targetHost, tenantId);
              } else {
-                 // Tenant id not found in URL, find member from host name
-                 member = requestDelegator.findNextMemberFromHostName(targetHost);
+                 // Tenant id not found in the subscription for the URL which has tenant domain.
+                 throwSynapseException(synCtx, 403, String.format("You are unauthorized to access"));
              }
          } else {
-             // Find next member from host name
-             member = requestDelegator.findNextMemberFromHostName(targetHost);
 -
          }
  
          if (member == null)
@@@ -357,6 -360,6 +359,7 @@@
      }
  
      /**
++>>>>>>> 400
       * Find topology member from axis2 member using cluster id and member id defined in axis2 member properties.
       *
       * @param synCtx

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.load.balancer/src/test/java/org/apache/stratos/load/balancer/test/LoadBalancerConfigurationTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/cartridge_info.jag
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/cartridge_info.jag
index ad4d4c2,6f3ea86..653e31a
--- a/components/org.apache.stratos.manager.console/console/cartridge_info.jag
+++ b/components/org.apache.stratos.manager.console/console/cartridge_info.jag
@@@ -44,6 -52,7 +52,9 @@@ if(cartridgeInfo.Error != undefined)
          error.push(clusterInfo.Error);
      }
  }
++
+ var bamInfo ={bamip:process.getProperty('bam.ip'),bamport:process.getProperty('bam.port')};
++
  caramel.render({
      cartridgeInfo:cartridgeInfo,
      lbCluster:lbCluster,

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/controllers/cartridgeSubscribeSubmit.jag
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/controllers/router.jag
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/controllers/router.jag
index 46bee99,46bee99..f49b165
--- a/components/org.apache.stratos.manager.console/console/controllers/router.jag
+++ b/components/org.apache.stratos.manager.console/console/controllers/router.jag
@@@ -115,6 -115,6 +115,7 @@@
              };
              var permissionObject = acl.authorizationUtil.getPermissionObj(tenantDomain,roleArray);
              request.permissions = permissionObject;
++            print(includePath);
              include(includePath);
              return;
          }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/partials/configure_stratos_wizard.hbs
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/partials/configure_stratos_wizard.hbs
index 5f9ea27,8b04c22..f34775a
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/partials/configure_stratos_wizard.hbs
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/partials/configure_stratos_wizard.hbs
@@@ -303,24 -303,22 +303,21 @@@
                                              <i class="icons-help"></i>
                                              Example configuration:
                                              <pre>
-                                             {
-                                                 "id": "economyPolicy",
-                                                 "loadThresholds": {
-                                                   "requestsInFlight": {
- 						    "upperLimit": "80",
- 						    "lowerLimit": "20"
-                                                   },
-                                                   "memoryConsumption": {
- 						    "upperLimit": "80",
-                                                     "lowerLimit": "20"
-                                                   },
-                                                   "loadAverage": {
- 						    "upperLimit": "80",
-                                                     "lowerLimit": "20"
-                                                   }
-                                                 }
-                                               }
+                                                   {
+                                                    "id": "autoscale-policy-1",
+                                                    "loadThresholds": {
+                                                      "requestsInFlight": {
+                                                        "average": 50
+                                                      },
+                                                      "memoryConsumption": {
+                                                        "average": 70
+                                                      },
+                                                      "loadAverage": {
+                                                        "average": 100
+                                                      }
+                                                    }
+                                                  }
  
 -
                                              </pre>
                                          </div>
                                      {{/ifCond}}

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/partials/mycartridges.hbs
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/partials/mycartridges.hbs
index 2f4e25f,ee49e3b..fb93c9c
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/partials/mycartridges.hbs
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/partials/mycartridges.hbs
@@@ -42,10 -42,10 +42,10 @@@
                          </div>
                          <div class="col-lg-9">
                              {{#unless loadBalancer}}
-                             <div class="un-subscribe-container"><a class="un-subscribe un-subscribe-btn" data-alias="{{cartridgeAlias}}">Un-subscribe <i class=" icons-circle-close"></i></a></div>
-                             {{/unless}}
 +
-                             <a  href="{{url "/cartridge_info.jag?alias="}}{{cartridgeAlias}}&serviceGroup={{serviceGroup}}"><h3>{{serviceGroup}}</h3></a>
+                             <div class="un-subscribe-container"><a class="un-subscribe un-subscribe-btn" service-group="{{serviceGroup}}" data-alias="{{cartridgeAlias}}">Un-subscribe <i class=" icons-circle-close"></i></a></div>
+                             {{/unless}}
 -
+                             <a  href="{{url "/cartridge_info_sg.jag?"}}serviceGroup={{serviceGroup}}"><h3>{{serviceGroup}}</h3></a>
  
                              {{#each items}}
                              <div class="serviceGroup-child-wrapper">

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridge_info.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridge_info.js
index a4b3cb9,beee3a3..600c6fd
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridge_info.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridge_info.js

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridges.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridges.js
index 342639e,9555101..9da9776
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridges.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/cartridges.js

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/dashboard.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/dashboard.js
index 2fe10ce,4d6ca5e..2fe10ce
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/dashboard.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/dashboard.js

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/index.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/index.js
index cfc9c35,f833e53..47aaf53
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/index.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/index.js
@@@ -125,7 -125,8 +125,8 @@@ var render = function (theme, data, met
                              name: 'Subscribe to Cartridge',
                              class_name: 'btn-important'
                          },
 +                        has_help:false,
+                         bamInfo:data.bamInfo,
 -                        has_help: true,
                          help: 'Create cartridges like PHP, Python, Ruby etc.. Or create data cartridges with mySql, PostgreSQL. Directly install applications like Drupal, Wordpress etc..'
                      }
                  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/subscribe_cartridge.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/subscribe_cartridge.js
index 433baf0,a06af06..92ec3f3
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/subscribe_cartridge.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/subscribe_cartridge.js

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_management.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_management.js
index 0f8e511,8c8de86..7be977a
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_management.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_management.js
@@@ -83,7 -84,8 +84,12 @@@ var render = function (theme, data, met
                              name: 'Subscribe to Cartridge',
                              class_name: 'btn-important'
                          },
++<<<<<<< HEAD
 +                        has_help:false,
++=======
+                         bamInfo:data.bamInfo,
+                         has_help: true,
++>>>>>>> 400
                          help: 'Create cartridges like PHP, Python, Ruby etc.. Or create data cartridges with mySql, PostgreSQL. Directly install applications like Drupal, Wordpress etc..'
                      }
                  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_new.js
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_new.js
index 8e678f5,a7c9bc2..e2c0828
mode 100644,100755..100755
--- a/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_new.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme1/renderers/tenant_new.js
@@@ -45,7 -45,8 +45,9 @@@ var render = function (theme, data, met
                          class_name: create_btn_class,
                          class_icon: 'icons-arrow-left'
                      },
++
 +                    has_help:false,
+                     bamInfo:data.bamInfo,
 -                    has_help: true,
                      help: "Tenants you create has permission to view and subscribe to Cartridges. Tenants don't have permission to do Partition deployment, Policy deployment, LB Creation, and MT service deployment.",
                      tenant_mgt: true
                  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/TemporyClass.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/TemporyClass.java
index 0000000,0000000..aadec5e
new file mode 100644
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/TemporyClass.java
@@@ -1,0 -1,0 +1,7 @@@
++package org.apache.stratos.manager.composite.application;
++
++/**
++ * Created by udara on 7/23/14.
++ */
++public class TemporyClass {
++}

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java
index b73ccf6,6281ec3..1a9c76c
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java
@@@ -79,9 -79,14 +79,14 @@@ public abstract class Service extends C
          return clusterId;
      }
  
+     protected String generateHostName (String alias, String cartridgeDefinitionHostName) {
+ 
+         return cartridgeDefinitionHostName;
+     }
+ 
      public void deploy (Properties properties) throws ADCException, UnregisteredCartridgeException {
  
 -        register(getCartridgeInfo(), getCluster(), getPayloadData(), getAutoscalingPolicyName(), getDeploymentPolicyName(), properties);
 +        register(getCartridgeInfo(), getCluster(), getPayloadData(), getAutoscalingPolicyName(), getDeploymentPolicyName(), properties, null);
      }
  
      public void undeploy () throws ADCException, NotSubscribedException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/DefaultLBService.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/DefaultLBService.java
index 0000000,580186e..563d95c
mode 000000,100644..100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/DefaultLBService.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/DefaultLBService.java
@@@ -1,0 -1,110 +1,110 @@@
+ /*
+  * 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.manager.deploy.service.multitenant.lb;
+ 
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+ import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
+ import org.apache.stratos.cloud.controller.stub.pojo.ClusterContext;
+ import org.apache.stratos.cloud.controller.stub.pojo.Properties;
+ import org.apache.stratos.manager.client.AutoscalerServiceClient;
+ import org.apache.stratos.manager.client.CloudControllerServiceClient;
+ import org.apache.stratos.manager.dao.Cluster;
+ import org.apache.stratos.manager.exception.ADCException;
+ import org.apache.stratos.manager.exception.AlreadySubscribedException;
+ import org.apache.stratos.manager.exception.UnregisteredCartridgeException;
+ import org.apache.stratos.manager.payload.PayloadData;
+ import org.apache.stratos.manager.repository.Repository;
+ import org.apache.stratos.manager.subscriber.Subscriber;
+ 
+ import java.rmi.RemoteException;
+ import java.util.Map;
+ 
+ public class DefaultLBService extends LBService {
+ 
+     private static Log log = LogFactory.getLog(DefaultLBService.class);
+     private boolean defaultLBServiceExists = false;
+ 
+     public DefaultLBService (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId,
+                             CartridgeInfo cartridgeInfo, String tenantRange) {
+ 
+         super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange);
+     }
+ 
+     public PayloadData create(String alias, Cluster cluster, Subscriber subscriber, Repository repository, CartridgeInfo cartridgeInfo,
+                               String subscriptionKey, Map<String, String> customPayloadEntries)
+             throws ADCException, AlreadySubscribedException {
+ 
+         // call the relevant method to get the cluster id, using deployment policy
+         String clusterId = null;
+         try {
+             clusterId = AutoscalerServiceClient.getServiceClient().getDefaultLBClusterId(getDeploymentPolicyName());
+         } catch (Exception e) {
+             log.error("Error occurred in retrieving default LB cluster id" + e.getMessage());
+             throw new ADCException(e);
+         }
+ 
+         if (clusterId != null) {
+             //set the cluster id to Cluster object
+             cluster.setClusterDomain(clusterId);
+             if (log.isDebugEnabled()) {
+                 log.debug("Set existing default LB cluster id " + clusterId);
+             }
+             defaultLBServiceExists = true;
+ 
+             //get the hostname for this cluster and set it
+             ClusterContext clusterContext;
+             try {
+                 clusterContext = CloudControllerServiceClient.getServiceClient().getClusterContext(clusterId);
+ 
+             } catch (RemoteException e) {
+                 log.error("Error occurred in retrieving Cluster Context for default LB ", e);
+                 throw new ADCException(e);
+             }
+ 
+             if (clusterContext != null) {
+                 cluster.setHostName(clusterContext.getHostName());
+                 if (log.isDebugEnabled()) {
+                     log.debug("Set existing default LB hostname " + clusterContext.getHostName());
+                 }
+             }
+ 
+             return null;
+ 
+         } else {
+             // set cluster domain
+             cluster.setClusterDomain(generateClusterId(null, cartridgeInfo.getType()));
+             // set hostname
+             cluster.setHostName(generateHostName(null, cartridgeInfo.getHostName()));
+ 
+             return createPayload(cartridgeInfo, subscriptionKey, subscriber, cluster, repository, alias, customPayloadEntries);
+         }
+     }
+ 
+     public void register(CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, String deploymentPolicyName, Properties properties) throws ADCException, UnregisteredCartridgeException {
+ 
+         //log.info("Register service with payload data ["+payloadData+"] ");
+         if (!defaultLBServiceExists) {
 -            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties);
++            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties, null);
+         }else {
+             log.info("Default LB already exists for deployment policy: " + getDeploymentPolicyName());
+         }
+     }
+ }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/LBService.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/LBService.java
index 0000000,52c33d3..27f2a5c
mode 000000,100644..100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/LBService.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/LBService.java
@@@ -1,0 -1,69 +1,69 @@@
+ /*
+  * 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.manager.deploy.service.multitenant.lb;
+ 
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+ import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
+ import org.apache.stratos.cloud.controller.stub.pojo.Properties;
+ import org.apache.stratos.manager.deploy.service.Service;
+ import org.apache.stratos.manager.exception.ADCException;
+ import org.apache.stratos.manager.exception.AlreadySubscribedException;
+ import org.apache.stratos.manager.exception.UnregisteredCartridgeException;
+ import org.apache.stratos.manager.lb.category.LoadBalancerCategory;
+ 
+ public class LBService extends Service {
+ 
+     private static Log log = LogFactory.getLog(LBService.class);
+ 
+     private String loadBalancedServiceType;
+ 
+     public LBService(String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId,
+                      CartridgeInfo cartridgeInfo, String tenantRange) {
+ 
+         super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange);
+     }
+ 
+     public void create () throws ADCException {
+ 
+         try {
+             setPayloadData(create(null, getCluster(), null, null, getCartridgeInfo(), getSubscriptionKey(), null));
+ 
+         } catch (AlreadySubscribedException e) {
+             throw new ADCException(e);
+         }
+     }
+ 
+     @Override
+     public void deploy(Properties properties) throws ADCException, UnregisteredCartridgeException {
+ 
+         //register the service
+         register(getCartridgeInfo(), getCluster(), getPayloadData(), getAutoscalingPolicyName(), getDeploymentPolicyName(),
 -                properties);
++                properties, null);
+     }
+ 
+     public String getLoadBalancedServiceType() {
+         return loadBalancedServiceType;
+     }
+ 
+     public void setLoadBalancedServiceType(String loadBalancedServiceType) {
+         this.loadBalancedServiceType = loadBalancedServiceType;
+     }
+ }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/ServiceAwareLBService.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/ServiceAwareLBService.java
index 0000000,282cbf3..54427ad
mode 000000,100644..100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/ServiceAwareLBService.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/ServiceAwareLBService.java
@@@ -1,0 -1,137 +1,137 @@@
+ /*
+  * 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.manager.deploy.service.multitenant.lb;
+ 
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+ import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
+ import org.apache.stratos.cloud.controller.stub.pojo.ClusterContext;
+ import org.apache.stratos.cloud.controller.stub.pojo.Properties;
+ import org.apache.stratos.manager.client.AutoscalerServiceClient;
+ import org.apache.stratos.manager.client.CloudControllerServiceClient;
+ import org.apache.stratos.manager.dao.Cluster;
+ import org.apache.stratos.manager.exception.ADCException;
+ import org.apache.stratos.manager.exception.AlreadySubscribedException;
+ import org.apache.stratos.manager.exception.UnregisteredCartridgeException;
+ import org.apache.stratos.manager.payload.PayloadData;
+ import org.apache.stratos.manager.repository.Repository;
+ import org.apache.stratos.manager.subscriber.Subscriber;
+ import org.apache.stratos.manager.subscription.utils.CartridgeSubscriptionUtils;
+ import org.apache.stratos.manager.utils.CartridgeConstants;
+ 
+ import java.rmi.RemoteException;
+ import java.util.Map;
+ 
+ public class ServiceAwareLBService extends LBService {
+ 
+     public ServiceAwareLBService(String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId,
+                                  CartridgeInfo cartridgeInfo, String tenantRange) {
+ 
+         super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange);
+     }
+ 
+     private static Log log = LogFactory.getLog(ServiceAwareLBService.class);
+ 
+     private boolean serviceAwareLBExists;
+ 
+     public PayloadData create (String alias, Cluster cluster, Subscriber subscriber, Repository repository, CartridgeInfo cartridgeInfo,
+                                String subscriptionKey, Map<String, String> customPayloadEntries) throws ADCException, AlreadySubscribedException {
+ 
+         // call the relevant method to get the cluster id, using deployment policy and type
+         String clusterId = null;
+ 
+         try {
+             clusterId = AutoscalerServiceClient.getServiceClient().getServiceLBClusterId(getLoadBalancedServiceType(), getDeploymentPolicyName());
+ 
+         } catch (Exception e) {
+             log.error("Error occurred in retrieving Service LB cluster id" + e.getMessage());
+             throw new ADCException(e);
+         }
+ 
+         if (clusterId != null) {
+ 
+             //set the cluster id to Cluster object
+             cluster.setClusterDomain(clusterId);
+             if (log.isDebugEnabled()) {
+                 log.debug("Set existing Service LB cluster id " + clusterId);
+             }
+             serviceAwareLBExists = true;
+ 
+             //get the hostname for this cluster and set it
+             ClusterContext clusterContext;
+             try {
+                 clusterContext = CloudControllerServiceClient.getServiceClient().getClusterContext(clusterId);
+ 
+             } catch (RemoteException e) {
+                 log.error("Error occurred in retrieving Cluster Context for Service LB ", e);
+                 throw new ADCException(e);
+             }
+ 
+             if (clusterContext != null) {
+                 cluster.setHostName(clusterContext.getHostName());
+                 if (log.isDebugEnabled()) {
+                     log.debug("Set existing Service LB hostname " + clusterContext.getHostName());
+                 }
+             }
+ 
+             return null;
+ 
+         } else {
+ 
+             // set cluster domain
+             cluster.setClusterDomain(generateClusterId(getLoadBalancedServiceType(), cartridgeInfo.getType()));
+             // set hostname
+             cluster.setHostName(generateHostName(getLoadBalancedServiceType(), cartridgeInfo.getHostName()));
+ 
+             PayloadData serviceLevelLbPayloadData = createPayload(cartridgeInfo, subscriptionKey, subscriber, cluster,
+                     repository, alias, customPayloadEntries);
+ 
+             // add payload entry for load balanced service type
+             serviceLevelLbPayloadData.add(CartridgeConstants.LOAD_BALANCED_SERVICE_TYPE, getLoadBalancedServiceType());
+             return serviceLevelLbPayloadData;
+         }
+     }
+ 
+     protected String generateClusterId (String loadBalancedServiceType, String cartridgeType) {
+ 
+         String clusterId = cartridgeType + "." + loadBalancedServiceType + "." + getCartridgeInfo().getHostName() + ".domain";
+         // limit the cartridge alias to 30 characters in length
+         if (clusterId.length() > 30) {
+             clusterId = CartridgeSubscriptionUtils.limitLengthOfString(clusterId, 30);
+         }
+ 
+         return clusterId;
+     }
+ 
+     protected String generateHostName (String loadBalancedServiceType, String cartridgeDefinitionHostName) {
+ 
+         return getCartridgeInfo().getType() + "." + loadBalancedServiceType + "." + cartridgeDefinitionHostName;
+     }
+ 
+     public void register(CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, String deploymentPolicyName, Properties properties) throws ADCException, UnregisteredCartridgeException {
+ 
+         if (!serviceAwareLBExists) {
 -            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties);
++            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties, null);
+ 
+         }else {
+             log.info("Service Aware LB already exists for cartridge type: " + getLoadBalancedServiceType() + ", deployment policy: " + getDeploymentPolicyName());
+         }
+     }
+ }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
index e124883,8470cb5..75f6856
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/DefaultLoadBalancerCategory.java
@@@ -95,15 -93,15 +94,15 @@@ public class DefaultLoadBalancerCategor
          }
      }
  
 -    public void register(CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, String deploymentPolicyName, Properties properties) throws ADCException, UnregisteredCartridgeException {
 -    	//log.info("Register service with payload data ["+payloadData+"] ");
 +    public void register(CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, String deploymentPolicyName, Properties properties, Persistence persistence) throws ADCException, UnregisteredCartridgeException {
 +    	log.info("Register service with payload data ["+payloadData+"] ");
          if (!isDefaultLBExists()) {
 -        	//if(payloadData != null) {
 -        		//log.info("Payload: " + payloadData.getCompletePayloadData().toString());
 -        	//}
 -            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties);
 +        	if(payloadData != null) {
 +        		log.info("Payload: " + payloadData.getCompletePayloadData().toString());
 +        	}
 +            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties, persistence);
          }else {
-         	log.info(" Default LB exists... Not registering...");
+             log.info("Default LB already exists for deployment policy: " + getDeploymentPolicyName());
          }
      }
  

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/ServiceLevelLoadBalancerCategory.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/ServiceLevelLoadBalancerCategory.java
index e713d7d,131b4dc..b69ef6a
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/ServiceLevelLoadBalancerCategory.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/ServiceLevelLoadBalancerCategory.java
@@@ -107,11 -106,11 +107,11 @@@ public class ServiceLevelLoadBalancerCa
  
          if (!serviceLbExists) {
  
-             if(payloadData != null) {
-                 log.info("Payload: " + payloadData.getCompletePayloadData().toString());
-             }
+            // if(payloadData != null) {
+               //  log.info("Payload: " + payloadData.getCompletePayloadData().toString());
+            // }
  
 -            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties);
 +            super.register(cartridgeInfo, cluster, payloadData, autoscalePolicyName, deploymentPolicyName, properties, persistence);
          }else {
              log.info("Service LB already exists for cartridge type: " + getLoadBalancedServiceType() + ", deployment policy: " + getDeploymentPolicyName());
          }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index 784962b,ce04409..7fa330c
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@@ -23,10 -23,13 +23,11 @@@ import org.apache.commons.logging.Log
  import org.apache.commons.logging.LogFactory;
  import org.apache.openjpa.util.java$util$ArrayList$proxy;
  import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
 -import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
 -import org.apache.stratos.cloud.controller.stub.pojo.LoadbalancerConfig;
 +import org.apache.stratos.cloud.controller.stub.pojo.*;
  import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 -import org.apache.stratos.cloud.controller.stub.pojo.Property;
  import org.apache.stratos.manager.client.CloudControllerServiceClient;
  import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo;
+ import org.apache.stratos.manager.deploy.service.Service;
  import org.apache.stratos.manager.dto.SubscriptionInfo;
  import org.apache.stratos.manager.exception.*;
  import org.apache.stratos.manager.internal.DataHolder;
@@@ -388,8 -421,10 +428,9 @@@ public class CartridgeSubscriptionManag
          log.info("Successful Subscription: " + cartridgeSubscription.toString());
  
          // Publish tenant subscribed event to message broker
-         CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
-                 cartridgeSubscription.getCartridgeInfo().getType(), new HashSet<String>(cartridgeSubscription.getCluster().getId()));
+         Set<String> clusterIds = new HashSet<String>();
+         clusterIds.add(cartridgeSubscription.getCluster().getClusterDomain());
 -        CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
 -                cartridgeSubscription.getCartridgeInfo().getType(), clusterIds);
++        CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getCartridgeInfo().getType(), clusterIds);
  
          return ApplicationManagementUtil.
                  createSubscriptionResponse(cartridgeSubscriptionInfo, cartridgeSubscription.getRepository());
@@@ -422,14 -457,15 +463,16 @@@
                  " [domain-name] " + domainName + " [application-context] " +applicationContext);
  
          EventPublisher eventPublisher = EventPublisherPool.getPublisher(Constants.TENANT_TOPIC);
++
+         Set<String> clusterIds = new HashSet<String>();
+         clusterIds.add(cartridgeSubscription.getCluster().getClusterDomain());
          SubscriptionDomainAddedEvent event = new SubscriptionDomainAddedEvent(tenantId, cartridgeSubscription.getType(),
-                 new HashSet<String>(cartridgeSubscription.getCluster().getId()),
-                 domainName, applicationContext);
+                 clusterIds, domainName, applicationContext);
++
          eventPublisher.publish(event);
      }
  
--    public void removeSubscriptionDomain(int tenantId, String subscriptionAlias, String domainName)
-             throws ADCException, DomainSubscriptionDoesNotExist {
 -            throws ADCException {
++    public void removeSubscriptionDomain(int tenantId, String subscriptionAlias, String domainName) throws ADCException, DomainSubscriptionDoesNotExist {
  
          CartridgeSubscription cartridgeSubscription;
          try {
@@@ -450,9 -486,10 +493,11 @@@
                  " [domain-name] " + domainName);
  
          EventPublisher eventPublisher = EventPublisherPool.getPublisher(Constants.TENANT_TOPIC);
++
+         Set<String> clusterIds = new HashSet<String>();
+         clusterIds.add(cartridgeSubscription.getCluster().getClusterDomain());
          SubscriptionDomainRemovedEvent event = new SubscriptionDomainRemovedEvent(tenantId, cartridgeSubscription.getType(),
-                 new HashSet<String>(cartridgeSubscription.getCluster().getId()),
-                 domainName);
+                 clusterIds, domainName);
          eventPublisher.publish(event);
      }
  
@@@ -577,10 -617,11 +625,12 @@@
              }
  
              // Publish tenant un-subscribed event to message broker
++
+             Set<String> clusterIds = new HashSet<String>();
+             clusterIds.add(cartridgeSubscription.getCluster().getClusterDomain());
              CartridgeSubscriptionUtils.publishTenantUnSubscribedEvent(
                      cartridgeSubscription.getSubscriber().getTenantId(),
-                     cartridgeSubscription.getCartridgeInfo().getType(),
-                     new HashSet<String>(cartridgeSubscription.getCluster().getId()));
+                     cartridgeSubscription.getCartridgeInfo().getType(), clusterIds);
              
  			// publishing to the unsubscribed event details to bam
  			CartridgeSubscriptionDataPublisher.publish(cartridgeSubscription

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
index f92dac4,84610e6..c0bd321
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/LBCartridgeSubscription.java
@@@ -71,16 -84,16 +75,15 @@@ public class LBCartridgeSubscription ex
  
      
      @Override
 -    public CartridgeSubscriptionInfo registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException {
 +    public CartridgeSubscriptionInfo registerSubscription(Properties properties, Persistence persistence) throws ADCException, UnregisteredCartridgeException {
-     	if(!loadBalancerCategory.isLoadBalancedServiceMultiTenant()) {
-     		if(log.isDebugEnabled()) {
-     		 log.debug("Loadbalanced service is single tenant.");
-     		}
+     	//if(!loadBalancerCategory.isLoadBalancedServiceMultiTenant()) {
+     		//if(log.isDebugEnabled()) {
+     		 //log.debug("Loadbalanced service is single tenant.");
+     		//}
      		getLoadBalancerCategory().register (getCartridgeInfo(), getCluster(), getPayloadData(), getAutoscalingPolicyName(),
-     	                getDeploymentPolicyName(), properties, persistence);
-     	}
-        
 -    	                getDeploymentPolicyName(), properties);
++    	                getDeploymentPolicyName(), properties, null);
+     	//}
  
 -
          return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicyName(),
                  getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),
                  getRepository(), getCluster().getHostName(), getCluster().getClusterDomain(), getCluster().getClusterSubDomain(),

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java
index dd40481,ed14d87..56829e0
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java
@@@ -47,9 -47,8 +47,10 @@@ public class SubscriptionData 
      private boolean isCommitsEnabled;
      private String serviceGroup;
      private Set<String> domains;
 +    private Persistence persistence;
 +    private Properties properties;
+     private String serviceName;
 -    
 +
      public SubscriptionData() {
          this.domains = new HashSet<String>();
      }
@@@ -190,19 -197,12 +191,27 @@@
          return Collections.unmodifiableSet(domains);
      }
  
 +    public Persistence getPersistence() {
 +        return persistence;
 +    }
 +
 +     public void setPersistence(Persistence persistence) {
 +        this.persistence = persistence;
 +     }
 +
 +    public Properties getProperties() {
 +        return properties;
 +    }
 +
 +    public void setProperties(Properties properties) {
 +        this.properties = properties;
 +    }
+ 	public String getServiceName() {
+ 		return serviceName;
+ 	}
+ 
+ 	public void setServiceName(String serviceName) {
+ 		this.serviceName = serviceName;
+ 	}
 -    
++
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainAddedMessageProcessor.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainAddedMessageProcessor.java
index 8952b71,79d1e12..a185cd2
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainAddedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainAddedMessageProcessor.java
@@@ -47,7 -47,7 +47,8 @@@ public class SubscriptionDomainAddedMes
      public boolean process(String type, String message, Object object) {
          if (SubscriptionDomainAddedEvent.class.getName().equals(type)) {
              // Return if tenant manager has not initialized
-             if(!TenantManager.getInstance().isInitialized()) {
++
+             if (!TenantManager.getInstance().isInitialized()) {
                  return false;
              }
  
@@@ -57,8 -57,8 +58,9 @@@
              try {
                  TenantManager.acquireWriteLock();
                  Tenant tenant = TenantManager.getInstance().getTenant(event.getTenantId());
-                 if(tenant == null) {
-                     if(log.isWarnEnabled()) {
++
+                 if (tenant == null) {
+                     if (log.isWarnEnabled()) {
                          log.warn(String.format("Tenant not found: [tenant-id] %d", event.getTenantId()));
                      }
                      return false;
@@@ -71,25 -71,23 +73,26 @@@
                      return false;
                  }
                  subscription.addSubscriptionDomain(new SubscriptionDomain(event.getDomainName(), event.getApplicationContext()));
-                 if(log.isInfoEnabled()) {
++
+                 if (log.isInfoEnabled()) {
                      log.info(String.format("Domain added to tenant subscription: [tenant-id] %d [tenant-domain] %s " +
-                             "[service] %s [domain-name] %s [application-context] %s", tenant.getTenantId(),
-                             tenant.getTenantDomain(), event.getServiceName(), event.getDomainName(), event.getApplicationContext()));
+                                     "[service] %s [domain-name] %s [application-context] %s", tenant.getTenantId(),
+                             tenant.getTenantDomain(), event.getServiceName(), event.getDomainName(), event.getApplicationContext()
+                     ));
                  }
  
                  // Notify event listeners
                  notifyEventListeners(event);
                  return true;
 -            } finally {
 +            }
 +            finally {
                  TenantManager.releaseWriteLock();
              }
 -        } else {
 +        }
 +        else {
-             if(nextProcessor != null) {
+             if (nextProcessor != null) {
                  return nextProcessor.process(type, message, object);
-             }
-             else {
+             } else {
                  throw new RuntimeException(String.format("Failed to process tenant message using available message processors: [type] %s [body] %s", type, message));
              }
          }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainRemovedMessageProcessor.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainRemovedMessageProcessor.java
index 5c46655,ea413cd..88b3690
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainRemovedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/tenant/SubscriptionDomainRemovedMessageProcessor.java
@@@ -63,32 -63,30 +63,33 @@@ public class SubscriptionDomainRemovedM
                      return false;
                  }
                  Subscription subscription = tenant.getSubscription(event.getServiceName());
-                 if(subscription == null) {
-                     if(log.isWarnEnabled()) {
++
+                 if (subscription == null) {
+                     if (log.isWarnEnabled()) {
                          log.warn(String.format("Subscription not found: [tenant-id] %d", event.getTenantId()));
                      }
                      return false;
                  }
                  subscription.removeSubscriptionDomain(event.getDomainName());
 -                if (log.isInfoEnabled()) {
 +                if(log.isInfoEnabled()) {
                      log.info(String.format("Domain removed from tenant subscription: [tenant-id] %d [tenant-domain] %s " +
 -                                    "[service] %s [domain-name] %s", tenant.getTenantId(), tenant.getTenantDomain(),
 -                            event.getServiceName(), event.getDomainName()
 -                    ));
 +                            "[service] %s [domain-name] %s", tenant.getTenantId(), tenant.getTenantDomain(),
 +                            event.getServiceName(), event.getDomainName()));
++
                  }
  
                  // Notify event listeners
                  notifyEventListeners(event);
                  return true;
 -            } finally {
 +            }
 +            finally {
                  TenantManager.releaseWriteLock();
              }
 -        } else {
 +        }
 +        else {
-             if(nextProcessor != null) {
+             if (nextProcessor != null) {
                  return nextProcessor.process(type, message, object);
-             }
-             else {
+             } else {
                  throw new RuntimeException(String.format("Failed to process tenant message using available message processors: [type] %s [body] %s", type, message));
              }
          }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Constants.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/as.json
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/as.json
index 0000000,0000000..5aaae67
new file mode 100644
--- /dev/null
+++ b/components/org.apache.stratos.rest.endpoint/as.json
@@@ -1,0 -1,0 +1,26 @@@
++{
++    "id": "simpleAutoscalePolicy2",
++    "loadThresholds": {
++      "requestsInFlight": {
++        "average": "20",
++        "gradient": "0",
++        "secondDerivative": "0",
++        "scaleDownMarginOfGradient": "1.0",
++        "scaleDownMarginOfSecondDerivative": "0.2"
++      },
++      "memoryConsumption": {
++        "average": "1000",
++        "gradient": "0",
++        "secondDerivative": "0",
++        "scaleDownMarginOfGradient": "1.0",
++        "scaleDownMarginOfSecondDerivative": "0.2"
++      },
++      "loadAverage": {
++        "average": "1000",
++        "gradient": "0",
++        "secondDerivative": "0",
++        "scaleDownMarginOfGradient": "1.0",
++        "scaleDownMarginOfSecondDerivative": "0.2"
++      }
++    }
++}

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java
index 4a43499,1bce7fb..dbeb5c5
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java
@@@ -37,12 -35,15 +37,16 @@@ public class CartridgeInfoBean 
      String dataCartridgeType;
      String dataCartridgeAlias;
      boolean commitsEnabled;
 -
 -    private boolean persistanceRequired;
 -    private String size;
 -    private boolean removeOnTermination;
      private String serviceGroup;
++
 +    private PersistenceBean persistence;
 +
 +    private List<PropertyBean> property;
 +
+     private List<String> domains;
+ 
      public CartridgeInfoBean() {
+         this.domains = new ArrayList<String>();
      }
  
      public String getCartridgeType() {
@@@ -140,20 -165,9 +144,25 @@@
  	public void setServiceGroup(String serviceGroup) {
  		this.serviceGroup = serviceGroup;
  	}
 -    
 +
 +    public PersistenceBean getPersistence() {
 +        return persistence;
 +    }
 +
 +    public void setPersistence(PersistenceBean persistence) {
 +        this.persistence = persistence;
 +    }
 +
 +    public List<PropertyBean> getProperty() {
 +        return property;
 +    }
 +
 +    public void setProperty(List<PropertyBean> property) {
 +        this.property = property;
 +    }
++
+     public List<String> getDomains() { return domains; }
+ 
+     public void setDomains(List<String> domains) { this.domains = domains; }
+ 
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
index 34793b2,5302dab..d766ebd
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
@@@ -499,7 -490,7 +499,6 @@@ public class StratosTestAdmin 
          return MockContext.getInstance().getSubscriptionDomains(2, subscriptionAlias).toArray(new SubscriptionDomainBean[0]);
      }
  
--    @GET
      @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}")
      @Consumes("application/json")
      @AuthorizationAction("/permission/protected/manage/monitor/tenants")

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/MyType.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/MyType.java
index 0000000,0000000..0526faa
new file mode 100644
--- /dev/null
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/MyType.java
@@@ -1,0 -1,0 +1,16 @@@
++package org.apache.stratos.rest.endpoint.services;
++
++/**
++ * Created by udara on 7/7/14.
++ */
++public class MyType {
++    private int name;
++
++    public int getName() {
++        return name;
++    }
++
++    public void setName(int name) {
++        this.name = name;
++    }
++}

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 0a92371,7f468d7..9eff4d1
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@@ -561,12 -580,13 +562,13 @@@ public class ServiceUtils 
                      //cartridge.setStatus(CartridgeConstants.NOT_SUBSCRIBED);
                      cartridge.setCartridgeAlias("-");
                      cartridge.setPersistence(cartridgeInfo.getPersistence());
+                     cartridge.setServiceGroup(cartridgeInfo.getServiceGroup());
  
 -                    if(cartridgeInfo.getLbConfig() != null && cartridgeInfo.getProperties() != null) {
 -                        for(Property property: cartridgeInfo.getProperties()) {
 -                        if(property.getName().equals("load.balancer")) {
 -                            cartridge.setLoadBalancer(true);
 -                        }
 +                    if (cartridgeInfo.getProperties() != null) {
 +                        for (Property property : cartridgeInfo.getProperties()) {
 +                            if (property.getName().equals("load.balancer")) {
 +                                cartridge.setLoadBalancer(true);
 +                            }
                          }
                      }
                      //cartridge.setActiveInstances(0);
@@@ -704,8 -724,8 +706,8 @@@
          return availableMultitenantCartridges;
      }
  
-     static List<Cartridge> getSubscriptions(String cartridgeSearchString, ConfigurationContext configurationContext) throws RestAPIException {
 -	static List<Cartridge> getSubscriptions (String cartridgeSearchString, String serviceGroup, ConfigurationContext configurationContext) throws RestAPIException {
  
++	static List<Cartridge> getSubscriptions (String cartridgeSearchString, String serviceGroup, ConfigurationContext configurationContext) throws RestAPIException {
          List<Cartridge> cartridges = new ArrayList<Cartridge>();
  
          if (log.isDebugEnabled()) {
@@@ -727,27 -747,31 +729,31 @@@
                      }
                      Cartridge cartridge = getCartridgeFromSubscription(subscription);
                      if (cartridge == null) {
 -                		continue;
 -                	}
 +                        continue;
 +                    }
                      Cluster cluster = TopologyClusterInformationModel.getInstance().getCluster(ApplicationManagementUtil.getTenantId(configurationContext)
 -                            ,cartridge.getCartridgeType(), cartridge.getCartridgeAlias());
 +                            , cartridge.getCartridgeType(), cartridge.getCartridgeAlias());
                      String cartridgeStatus = "Inactive";
                      int activeMemberCount = 0;
 -					if (cluster != null) {
 -						Collection<Member> members = cluster.getMembers();
 -						for (Member member : members) {
 -							if (member.isActive()) {
 -								cartridgeStatus = "Active";
 -								activeMemberCount++;
 -							}
 -						}
 -					}
 +                    if (cluster != null) {
 +                        Collection<Member> members = cluster.getMembers();
 +                        for (Member member : members) {
 +                            if (member.isActive()) {
 +                                cartridgeStatus = "Active";
 +                                activeMemberCount++;
 +                            }
 +                        }
 +                    }
                      cartridge.setActiveInstances(activeMemberCount);
 -					cartridge.setStatus(cartridgeStatus);
 +                    cartridge.setStatus(cartridgeStatus);
  
                      // Ignoring the LB cartridges since they are not shown to the user.
 -                    if(cartridge.isLoadBalancer())
 +                    if (cartridge.isLoadBalancer())
                          continue;
+                     if(StringUtils.isNotEmpty(serviceGroup) && cartridge.getServiceGroup() != null &&
+                     		!cartridge.getServiceGroup().equals(serviceGroup)){
+                         continue;
+                     }
                      cartridges.add(cartridge);
                  }
              } else {
@@@ -880,17 -904,19 +886,18 @@@
                      }
                  }
              }
- 
-             return cartridge;
- 
-         } catch (Exception e) {
-             String msg = "Unable to extract the Cartridge from subscription. Cause: " + e.getMessage();
-             log.error(msg);
-             throw new RestAPIException(msg);
-         }
- 
-     }
- 
+             if(subscription.getCartridgeInfo().getServiceGroup() != null) {
+             	cartridge.setServiceGroup(subscription.getCartridgeInfo().getServiceGroup());
+             }
+ 			return cartridge;
+ 			
+ 		} catch (Exception e) {
+ 			String msg = "Unable to extract the Cartridge from subscription. Cause: "+e.getMessage();
+ 			log.error(msg);
+ 			throw new RestAPIException(msg);
+ 		}
+ 		
+ 	}
 -
      static Pattern getSearchStringPattern(String searchString) {
          if (log.isDebugEnabled()) {
              log.debug("Creating search pattern for " + searchString);
@@@ -1160,9 -1210,13 +1183,9 @@@
              log.error(msg, e);
              throw new RestAPIException(msg, e);
          }
 -        
 -        StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
 -        stratosAdminResponse.setMessage("Successfully sent the repository synchronization request for " + cartridgeSubscription.getAlias());
 -        return stratosAdminResponse;
      }
  
--    public static StratosAdminResponse addSubscriptionDomains(ConfigurationContext configurationContext, String cartridgeType,
++    public static void addSubscriptionDomains(ConfigurationContext configurationContext, String cartridgeType,
                                                               String subscriptionAlias, 
                                                               SubscriptionDomainRequest request) 
                                                              		 throws RestAPIException {
@@@ -1186,10 -1239,10 +1209,6 @@@
              log.error(e.getMessage(), e);
              throw new RestAPIException(e.getMessage(), e);
          }
--
--        StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
--        stratosAdminResponse.setMessage("Successfully added domains to cartridge subscription");
--        return stratosAdminResponse;
      }
  
      public static boolean isSubscriptionDomainExists(ConfigurationContext configurationContext, String cartridgeType,
@@@ -1254,6 -1307,10 +1273,7 @@@
              log.error(e.getMessage(), e);
              throw new RestAPIException(e.getMessage(), e);
          }
+ 
 -        StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
 -        stratosAdminResponse.setMessage("Successfully removed domains from cartridge subscription");
 -        return stratosAdminResponse;
      }
  
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
index f4e0621,63d713f..fa5057d
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
@@@ -27,9 -27,8 +27,10 @@@ import org.apache.stratos.common.util.C
  import org.apache.stratos.common.util.CommonUtil;
  import org.apache.stratos.manager.dto.Cartridge;
  import org.apache.stratos.manager.dto.SubscriptionInfo;
 +import org.apache.stratos.manager.exception.DomainMappingExistsException;
 +import org.apache.stratos.manager.exception.ServiceDoesNotExistException;
  import org.apache.stratos.manager.subscription.CartridgeSubscription;
+ import org.apache.stratos.manager.subscription.SubscriptionDomain;
  import org.apache.stratos.rest.endpoint.ServiceHolder;
  import org.apache.stratos.rest.endpoint.Utils;
  import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction;
@@@ -324,12 -313,21 +327,25 @@@ public class StratosAdmin extends Abstr
      @Produces("application/json")
      @Consumes("application/json")
      @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 -    public Cartridge[] getSubscribedCartridges() throws RestAPIException {
 -        List<Cartridge> cartridgeList = ServiceUtils.getSubscriptions(null, null, getConfigContext());
 +    public Response getSubscribedCartridges() throws RestAPIException {
-         List<Cartridge> cartridgeList = ServiceUtils.getSubscriptions(null, getConfigContext());
++        List<Cartridge> cartridgeList = ServiceUtils.getSubscriptions(null,null, getConfigContext());
+         // Following is very important when working with axis2
 -        return cartridgeList.isEmpty() ? new Cartridge[0] : cartridgeList.toArray(new Cartridge[cartridgeList.size()]);
++        ResponseBuilder rb = Response.ok();
++        rb.entity(cartridgeList.isEmpty() ? new Cartridge[0] : cartridgeList.toArray(new Cartridge[cartridgeList.size()]));
++        return rb.build();
+     }
+ 
+     @GET
+     @Path("/cartridge/list/subscribed/group/{serviceGroup}")
+     @Produces("application/json")
+     @Consumes("application/json")
+     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 -    public Cartridge[] getSubscribedCartridgesForServiceGroup(@PathParam("serviceGroup") String serviceGroup) throws RestAPIException {
++    public Response getSubscribedCartridgesForServiceGroup(@PathParam("serviceGroup") String serviceGroup) throws RestAPIException {
+         List<Cartridge> cartridgeList = ServiceUtils.getSubscriptions(null, serviceGroup, getConfigContext());
          // Following is very important when working with axis2
 -        return cartridgeList.isEmpty() ? new Cartridge[0] : cartridgeList.toArray(new Cartridge[cartridgeList.size()]);
 +        ResponseBuilder rb = Response.ok();
 +        rb.entity(cartridgeList.isEmpty() ? new Cartridge[0] : cartridgeList.toArray(new Cartridge[cartridgeList.size()]));
 +        return rb.build();
      }
      
      @GET
@@@ -404,12 -397,19 +420,23 @@@
      @Produces("application/json")
      @Consumes("application/json")
      @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 -    public Cluster[] getClusters(@PathParam("cartridgeType") String cartridgeType) throws RestAPIException {
 -        return ServiceUtils.getClustersForCartridgeType(cartridgeType);
 +    public Response getClusters(@PathParam("cartridgeType") String cartridgeType) throws RestAPIException {
 +
 +        ResponseBuilder rb = Response.ok();
 +        rb.entity(ServiceUtils.getClustersForTenantAndCartridgeType(getConfigContext(), cartridgeType));
 +        return rb.build();
      }
+     
+     @GET
+     @Path("/cluster/service/{cartridgeType}/")
+     @Produces("application/json")
+     @Consumes("application/json")
+     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 -    public Cluster[] getServiceClusters(@PathParam("cartridgeType") String cartridgeType) throws RestAPIException {
 -
 -        return ServiceUtils.getClustersForTenantAndCartridgeType(getConfigContext(), cartridgeType);
++    public Response getServiceClusters(@PathParam("cartridgeType") String cartridgeType) throws RestAPIException {
++        ResponseBuilder rb = Response.ok();
++        rb.entity(ServiceUtils.getClustersForTenantAndCartridgeType(getConfigContext(), cartridgeType));
++        return rb.build();
+     }
  
      @GET
      @Path("/cluster/{cartridgeType}/{subscriptionAlias}")
@@@ -1057,19 -1049,19 +1084,19 @@@
      @Consumes("application/json")
      @AuthorizationAction("/permission/protected/manage/monitor/tenants")
      public Response addSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
-                                            @PathParam("subscriptionAlias") String subscriptionAlias,
-                                            SubscriptionDomainRequest request) throws RestAPIException {
 +
-         StratosAdminResponse stratosAdminResponse = ServiceUtils.addSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias, request);
-         return Response.ok().entity(stratosAdminResponse).build();
+                                                        @PathParam("subscriptionAlias") String subscriptionAlias,
+                                                        SubscriptionDomainRequest request) throws RestAPIException {
 -
 -        StratosAdminResponse stratosAdminResponse = ServiceUtils.addSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias, request);
 -        return Response.ok().entity(stratosAdminResponse).build();
++        ServiceUtils.addSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias, request);
++        return Response.noContent().build();
      }
  
      @GET
      @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains")
      @Consumes("application/json")
      @AuthorizationAction("/permission/protected/manage/monitor/tenants")
--    public Response getSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
-                                            @PathParam("subscriptionAlias") String subscriptionAlias) throws RestAPIException {
 -                                                           @PathParam("subscriptionAlias") String subscriptionAlias) throws RestAPIException {
++    public Response getSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,@PathParam("subscriptionAlias") String subscriptionAlias) throws RestAPIException {
++
          SubscriptionDomainBean[] subscriptionDomainBean = ServiceUtils.getSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias).toArray(new SubscriptionDomainBean[0]);
  
          if(subscriptionDomainBean.length == 0){
@@@ -1083,8 -1075,8 +1110,8 @@@
      @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}")
      @Consumes("application/json")
      @AuthorizationAction("/permission/protected/manage/monitor/tenants")
--    public Response getSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
-                                           @PathParam("subscriptionAlias") String subscriptionAlias, @PathParam("domainName") String domainName) throws RestAPIException {
 -                                                        @PathParam("subscriptionAlias") String subscriptionAlias, @PathParam("domainName") String domainName) throws RestAPIException {
++    public Response getSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType, @PathParam("subscriptionAlias") String subscriptionAlias, @PathParam("domainName") String domainName) throws RestAPIException {
++
          SubscriptionDomainBean subscriptionDomainBean = ServiceUtils.getSubscriptionDomain(getConfigContext(), cartridgeType, subscriptionAlias, domainName);
          if(subscriptionDomainBean.domainName == null){
              return Response.status(Response.Status.NOT_FOUND).build();
@@@ -1119,11 -1106,17 +1146,11 @@@
          }
          Cartridge subscription = ServiceUtils.getSubscription(subscriptionAlias, getConfigContext());
          String lbClusterId = subscription.getLbClusterId();
-         if(log.isDebugEnabled()) {
+         if (log.isDebugEnabled()) {
              log.debug(String.format("Load balancer cluster-id found: %s", lbClusterId));
          }
-         if(StringUtils.isNotBlank(lbClusterId)) {
+         if (StringUtils.isNotBlank(lbClusterId)) {
 -            Cluster lbCluster = getCluster(lbClusterId);
 -            if (lbCluster != null) {
 -                if (log.isDebugEnabled()) {
 -                    log.debug(String.format("Load balancer cluster found: %s", lbCluster.toString()));
 -                }
 -                Response.ok().entity(lbCluster).build();
 -            }
 +            Response.fromResponse(getCluster(lbClusterId));
          }
          return Response.status(Response.Status.NOT_FOUND).build();
      }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
index 2eae5ed,f8b8750..7c9e7fd
--- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
+++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml
@@@ -33,10 -31,11 +33,15 @@@
          </jaxrs:serviceBeans>
  
          <jaxrs:providers>
 +            <ref bean="throwableExceptionHandler"/>
 +            <ref bean="genericExceptionHandler"/>
 +            <ref bean="badRequestExceptionHandler"/>
 +            <ref bean="jsonProvider"/>
+ 			<ref bean="throwableExceptionHandler"/>
+             <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
+                 <property name="dropRootElement" value="true"/>
+                 <property name="supportUnwrapped" value="true"/>
+             </bean>>
              <ref bean="exceptionHandler"/>
          </jaxrs:providers>
      </jaxrs:server>

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/dependencies/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/extensions/load-balancer/haproxy-extension/README.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/extensions/load-balancer/haproxy-extension/src/main/license/LICENSE
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-added.sh
----------------------------------------------------------------------
diff --cc products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-added.sh
index 0ae36f5,f78a5db..9deefab
--- a/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-added.sh
+++ b/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-added.sh
@@@ -25,4 -25,13 +25,15 @@@
  #
  
  log=/var/log/apache-stratos/cartridge-agent-extensions.log
- echo "Subscription domain added: [tenant-id] $1 [tenant-domain] $2 [domain-name] $3 [application-context] $4" | tee -a $log
++
++echo "Subscription domain added: [tenant-id] $1 [tenant-domain] $2 [domain-name] $3 [application-context] $4" | tee -a $log
+ OUTPUT=`date`": Subscription Domain Added Event"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_SERVICE_NAME: ${STRATOS_SUBSCRIPTION_SERVICE_NAME},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_DOMAIN_NAME: ${STRATOS_SUBSCRIPTION_DOMAIN_NAME},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_TENANT_ID: ${STRATOS_SUBSCRIPTION_TENANT_ID},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_TENANT_DOMAIN: $STRATOS_SUBSCRIPTION_TENANT_DOMAIN},"
+ OUTPUT="$OUTPUT APP_PATH: ${APP_PATH},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_APPLICATION_CONTEXT: ${STRATOS_SUBSCRIPTION_APPLICATION_CONTEXT}"
+ echo $OUTPUT | tee -a $log
+ 
+ curl -k -v -X POST -H "Content-Type:application/soap+xml;charset=UTF-8;action=urn:addWebAppToHost" -d "<?xml version=\"1.0\" encoding=\"UTF-8\"?><s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"><s:Body><p:addWebAppToHost xmlns:p=\"http://mapper.url.carbon.wso2.org\"><xs:hostName xmlns:xs=\"http://mapper.url.carbon.wso2.org\">$STRATOS_SUBSCRIPTION_DOMAIN_NAME</xs:hostName><xs:uri xmlns:xs=\"http://mapper.url.carbon.wso2.org\">/t/$STRATOS_SUBSCRIPTION_TENANT_DOMAIN/webapps/$STRATOS_SUBSCRIPTION_APPLICATION_CONTEXT/</xs:uri><xs:appType xmlns:xs=\"http://mapper.url.carbon.wso2.org\">webapp</xs:appType></p:addWebAppToHost></s:Body></s:Envelope>" https://localhost:9443/services/UrlMapperAdminService -u admin:admin

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-removed.sh
----------------------------------------------------------------------
diff --cc products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-removed.sh
index 76480bc,b007044..f74a725
--- a/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-removed.sh
+++ b/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-removed.sh
@@@ -25,4 -25,12 +25,13 @@@
  #
  
  log=/var/log/apache-stratos/cartridge-agent-extensions.log
- echo "Subscription domain added: [tenant-id] $1 [tenant-domain] $2 [domain-name] $3" | tee -a $log
+ OUTPUT=`date`": Subscription Domain Removed Event"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_SERVICE_NAME: ${STRATOS_SUBSCRIPTION_SERVICE_NAME},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_DOMAIN_NAME: ${STRATOS_SUBSCRIPTION_DOMAIN_NAME},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_TENANT_ID: ${STRATOS_SUBSCRIPTION_TENANT_ID},"
+ OUTPUT="$OUTPUT APP_PATH: ${APP_PATH},"
+ OUTPUT="$OUTPUT STRATOS_SUBSCRIPTION_TENANT_DOMAIN: $STRATOS_SUBSCRIPTION_TENANT_DOMAIN}"
+ echo $OUTPUT | tee -a $log
+ 
+ curl -k -v -X POST -H "Content-Type:application/soap+xml;charset=UTF-8;action=urn:deleteHost" -d "<?xml version=\"1.0\" encoding=\"UTF-8\"?><s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"><s:Body><p:deleteHost xmlns:p=\"http://mapper.url.carbon.wso2.org\"><xs:hostName xmlns:xs=\"http://mapper.url.carbon.wso2.org\">$STRATOS_SUBSCRIPTION_DOMAIN_NAME</xs:hostName></p:deleteHost></s:Body></s:Envelope>" https://localhost:9443/services/UrlMapperAdminService -u admin:admin
++

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/products/stratos-cli/distribution/README.txt
----------------------------------------------------------------------
diff --cc products/stratos-cli/distribution/README.txt
index 0000000,6829586..3e28a6f
mode 000000,100755..100755
--- a/products/stratos-cli/distribution/README.txt
+++ b/products/stratos-cli/distribution/README.txt
@@@ -1,0 -1,72 +1,71 @@@
+ ================================================================================
+                         Apache Stratos CLI
+ ================================================================================
+ 
+ Welcome to the Apache Stratos CLI.
+ 
+ The command line interface (CLI) is a powerful tool that clients can use
+ to communicate with Stratos services. The CLI distribution only includes one
+ jar file containing all dependent java libraries.
+ 
+ The tenant can use the CLI tool on two separate modes if needed, which 
+ are namely single command line mode and interactive mode. 
+ 
+ If the user executes with a command as an argument, the CLI tool 
+ will execute that command and exit with a status code. 
+ 
+ However, if there is no command as an argument, the CLI tool will 
+ enter into an interactive mode.
+ 
+ A user will be able to carryout all the following functions via the
+ CLI, with the exception of registering tenants and viewing logs.
+ 
+ The CLI tool also supports command history and auto-completing features 
+ in the interactive mode.
+ 
+ Help
+ ==================================
+ usage: stratos [-debug] [-h] [-p <password>] [-trace] [-u <username>]
+  -debug                     Enable debug logging
+  -h,--help                  Display this help
+  -p,--password <password>   Password
+  -trace                     Enable trace logging
+  -u,--username <username>   Username
+ 
+ 
+ Available Commands:
+ create-tenant             	Add new tenant
+ list-autoscale-policies   	List available autoscale policies
+ subscribe-cartridge       	Subscribe to a cartridge
+ exit                      	Exit from Stratos Client Tool
+ list-available-cartridges 	List available cartridges
+ help                      	Help for commands
+ list-available-partitions 	List available partitions
+ deploy-cartridge          	Add new cartridge deployment
+ unsubscribe-cartridge     	Unsubscribe from a subscribed cartridge
+ list-subscribe-cartridges 	List subscribed cartridges with details
+ deploy-partition          	Add new partition deployment
+ deploy-autoscaling-policy 	Add new autoscaling policy deployment
+ deploy-deployment-policy  	Add new deployment policy
+ 
+ 
+ Support
+ ==================================
+ 
+ Any problem with this release can be reported to Apache Stratos mailing list
+ or in the JIRA issue tracker. If you are sending an email to the mailing
+ list make sure to add the [Apache Stratos] prefix to the subject.
+ 
+ Mailing list subscription:
+     dev-subscribe@stratos.apache.org
+ 
+ 
+ Issue Tracker
+ ==================================
+ 
+ Jira:
+     https://issues.apache.org/jira/browse/stratos
+ 
+ 
+ Thank you for using Apache Stratos!
 -The Stratos Team
 -
++The Stratos Team

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/products/stratos/modules/distribution/src/main/conf/scaling.drl
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/service-stubs/org.apache.stratos.autoscaler.service.stub/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/d43e6be8/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml
----------------------------------------------------------------------
diff --cc service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml
index 8340d6d,b3fadd7..12e68bb
--- a/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml
+++ b/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml
@@@ -30,7 -30,7 +30,6 @@@
      <packaging>bundle</packaging>
      <name>Apache Stratos - Cloud Controller Service Stub</name>
      <url>http://apache.org</url>
--
      <build>
          <plugins>