http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml
 
b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml
index fbb8b10..cd10030 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml
@@ -31,6 +31,8 @@
         </jaxrs:serviceBeans>
 
         <jaxrs:providers>
+            <ref bean="throwableExceptionHandler"/>
+                       <ref bean="genericExceptionHandler"/>
             <ref bean="jsonProvider"/>
             <ref bean="exceptionHandler"/>
             <ref bean="basicAuthenticationFilter"/>
@@ -46,6 +48,8 @@
         <property name="securedObject" ref="stratosRestEndpointBean"/>
     </bean>
     <bean id="exceptionHandler" 
class="org.apache.stratos.rest.endpoint.handlers.CustomExceptionMapper"/>
+    <bean id="genericExceptionHandler" 
class="org.apache.stratos.rest.endpoint.handlers.GenericExceptionMapper"/>
+    <bean id="throwableExceptionHandler" 
class="org.apache.stratos.rest.endpoint.handlers.CustomThrowableExceptionMapper"/>
     <!--The below config enables OAuth based authentication/authorization for 
REST API-->
     <bean id="OAuthFilter" 
class="org.apache.stratos.rest.endpoint.handlers.OAuthHandler">
         <property name="password" value="admin"/>

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml 
b/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
index 3662489..3171262 100644
--- a/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
+++ b/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
@@ -51,7 +51,16 @@
                 <include>instance-started.sh</include>
                 <include>start-servers.sh</include>
                 <include>clean.sh</include>
-                <include>mount_volumes.sh</include>
+                <include>mount-volumes.sh</include>
+               <include>member-activated.sh</include>
+                <include>member-started.sh</include>
+                <include>member-terminated.sh</include>
+                <include>member-suspended.sh</include>
+                <include>complete-topology.sh</include>
+                <include>complete-tenant.sh</include>
+                <include>subscription-domain-added.sh</include>
+                <include>subscription-domain-removed.sh</include>
+                <include>artifacts-copy.sh</include>
             </includes>
         </fileSet>
         <fileSet>

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh 
b/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
index db86d7d..0c24f39 100644
--- a/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
+++ b/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
@@ -31,20 +31,43 @@ properties="-Dmb.ip=MB-IP
             -Dthrift.receiver.port=CEP-PORT
             
-Djndi.properties.template.file.path=${script_path}/../conf/templates/jndi.properties.template
             -Djndi.properties.dir=${script_path}/../conf
-            
-Dlog4j.properties.file.path=${script_path}/../conf/log4j.properties
+            
-Dlog4j.configuration=file://${script_path}/../conf/log4j.properties
             -Dparam.file.path=${script_path}/../payload/launch-params
             -Dextensions.dir=${script_path}/../extensions
             -Dcep.stats.publisher.enabled=true
+            -Dlb.private.ip=
+            -Dlb.public.ip=
             -Djavax.net.ssl.trustStore=CERT-TRUSTSTORE
             -Djavax.net.ssl.trustStorePassword=TRUSTSTORE-PASSWORD
            -Denable.artifact.update=true
-           -Dartifact.update.interval=10
-           -Denable.data.publisher=ENABLE-DATA-PUBLISHER
+            -Dauto.commit=false
+            -Dauto.checkout=true
+            -Dartifact.update.interval=15
+            -Denable.data.publisher=ENABLE-DATA-PUBLISHER
             -Dmonitoring.server.ip=MONITORING-SERVER-IP
            -Dmonitoring.server.port=MONITORING-SERVER-PORT
            -Dmonitoring.server.secure.port=MONITORING-SERVER-SECURE-PORT
            -Dmonitoring.server.admin.username=MONITORING-SERVER-ADMIN-USERNAME
-           -Dmonitoring.server.admin.password=MONITORING-SERVER-ADMIN-PASSWORD"
+           -Dmonitoring.server.admin.password=MONITORING-SERVER-ADMIN-PASSWORD
+           -Dlog.file.paths=LOG_FILE_PATHS
+           -DAPP_PATH=APP_PATH
+            -Dsuper.tenant.repository.path=/repository/deployment/server/
+            -Dtenant.repository.path=/repository/tenants/
+           -Dextension.instance.started=instance-started.sh
+            -Dextension.start.servers=start-servers.sh
+            -Dextension.instance.activated=instance-activated.sh
+            -Dextension.artifacts.updated=artifacts-updated.sh
+            -Dextension.clean=clean.sh
+            -Dextension.mount.volumes=mount_volumes.sh
+            -Dextension.member.started=member-started.sh
+            -Dextension.member.activated=member-activated.sh
+            -Dextension.member.suspended=member-suspended.sh
+            -Dextension.member.terminated=member-terminated.sh
+            -Dextension.complete.topology=complete-topology.sh
+            -Dextension.complete.tenant=complete-tenant.sh
+            -Dextension.subscription.domain.added=subscription-domain-added.sh
+            
-Dextension.subscription.domain.removed=subscription-domain-removed.sh
+            -Dextension.artifacts.copy=artifacts-copy.sh"
 
 # Uncomment below line to enable remote debugging
 #debug="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/conf/log4j.properties
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/conf/log4j.properties 
b/products/cartridge-agent/modules/distribution/src/main/conf/log4j.properties
index 890a4db..178aa9f 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/conf/log4j.properties
+++ 
b/products/cartridge-agent/modules/distribution/src/main/conf/log4j.properties
@@ -35,5 +35,7 @@ 
log4j.appender.CONSOLE_APPENDER.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE_APPENDER.layout.ConversionPattern=[%d{ISO8601}] %5p - 
[%c{1}] %m%n
 
 log4j.logger.org.apache.stratos.cartridge.agent=INFO
+log4j.logger.org.apache.stratos.cartridge.agent.statistics.publisher=ERROR
 log4j.logger.org.apache.stratos.messaging=INFO
-log4j.logger.org.wso2.andes.client=ERROR
\ No newline at end of file
+log4j.logger.org.wso2.andes.client=ERROR
+log4j.logger.org.apache.activemq.jndi.ActiveMQInitialContextFactory=ERROR
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
 
b/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
index c6b062a..b5fed16 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
+++ 
b/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
@@ -20,6 +20,6 @@
 # Please use loadbalancer.conf for updating mb-ip, mb-port and 
templates/jndi.properties.template
 # file for updating other configurations.
 #
-connectionfactoryName=topicConnectionfactory
-connectionfactory.topicConnectionfactory=amqp://admin:admin@carbon/carbon?brokerlist='tcp://$mb_ip:$mb_port'
-java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory
+connectionfactoryName=TopicConnectionFactory
+java.naming.provider.url=tcp://$mb_ip:$mb_port
+java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
new file mode 100644
index 0000000..5cad830
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed once the update artifacts
+# event is received and they are copied to the given path.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+cp -rf $1* $2
+echo "Artifacts Copied" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-updated.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-updated.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-updated.sh
index 7f112b1..15d5591 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-updated.sh
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-updated.sh
@@ -25,4 +25,4 @@
 #
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
-echo "Artifacts updated" | tee -a $log
\ No newline at end of file
+echo `date`": Artifacts Updated Event" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/clean.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/clean.sh 
b/products/cartridge-agent/modules/distribution/src/main/extensions/clean.sh
index 3b87d36..c62ad35 100644
--- a/products/cartridge-agent/modules/distribution/src/main/extensions/clean.sh
+++ b/products/cartridge-agent/modules/distribution/src/main/extensions/clean.sh
@@ -25,4 +25,4 @@
 #
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
-echo "Cleaning the cartridge" | tee -a $log
\ No newline at end of file
+echo `date`": Cleaning the cartridge" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/complete-tenant.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/complete-tenant.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/complete-tenant.sh
new file mode 100644
index 0000000..2586474
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/complete-tenant.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when complete tenant
+# event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+echo `date`": Complete Tenant Event: " | tee -a $log
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Tenant List: ${STRATOS_TENANT_LIST_JSON}" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/complete-topology.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/complete-topology.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/complete-topology.sh
new file mode 100644
index 0000000..ea2e941
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/complete-topology.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when complete topology 
+# event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+echo `date`": Complete Topology Event: " | tee -a $log
+echo "LB IP: ${STRATOS_LB_IP}" | tee -a $log
+echo "LB PUBLIC IP: $STRATOS_LB_PUBLIC_IP}" | tee -a $log
+echo "STRATOS_PARAM_FILE_PATH: ${STRATOS_PARAM_FILE_PATH}"
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Complete Topology: ${STRATOS_TOPOLOGY_JSON}" | tee -a $log
+echo "Members in LB: ${STRATOS_MEMBERS_IN_LB_JSON}" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/instance-activated.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/instance-activated.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/instance-activated.sh
index c892ca7..f5d60e8 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/extensions/instance-activated.sh
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/instance-activated.sh
@@ -25,4 +25,4 @@
 #
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
-echo "Instance activated" | tee -a $log
\ No newline at end of file
+echo `date`": Instance activated" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/instance-started.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/instance-started.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/instance-started.sh
index b6c9105..7b5aa6a 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/extensions/instance-started.sh
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/instance-started.sh
@@ -24,4 +24,4 @@
 #
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
-echo "Instance started" | tee -a $log
\ No newline at end of file
+echo `date`": Instance Started Event: " | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/member-activated.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/member-activated.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-activated.sh
new file mode 100644
index 0000000..3bf0b10
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-activated.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when member activated
+# event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+OUTPUT=`date`": Member Activated Event: "
+OUTPUT="$OUTPUT MEMBER_ID: ${STRATOS_MEMBER_ID}, "
+OUTPUT="$OUTPUT MEMBER_IP: ${STRATOS_MEMBER_IP}, "
+OUTPUT="$OUTPUT CLUSTER_ID: ${STRATOS_CLUSTER_ID}, "
+OUTPUT="$OUTPUT LB_CLUSTER_ID: ${STRATOS_LB_CLUSTER_ID}, "
+OUTPUT="$OUTPUT NETWORK_PARTITION_ID: ${STRATOS_NETWORK_PARTITION_ID}, "
+OUTPUT="$OUTPUT SERVICE_NAME: ${STRATOS_SERVICE_NAME}, "
+OUTPUT="$OUTPUT PORTS: ${STRATOS_PORTS},"
+OUTPUT="$OUTPUT STRATOS_LB_IP: ${STRATOS_LB_IP},"
+OUTPUT="$OUTPUT STRATOS_LB_PUBLIC_IP: ${STRATOS_LB_PUBLIC_IP},"
+OUTPUT="$OUTPUT APP_PATH: ${APP_PATH},"
+OUTPUT="$OUTPUT STRATOS_PARAM_FILE_PATH: ${STRATOS_PARAM_FILE_PATH}"
+echo $OUTPUT | tee -a $log
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Topology: ${STRATOS_TOPOLOGY_JSON}" | tee -a $log
+echo "---------------" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/member-started.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/member-started.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-started.sh
new file mode 100644
index 0000000..29f45c3
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-started.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when member suspended
+# event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+OUTPUT=`date`": Member Started Event: "
+OUTPUT="$OUTPUT MEMBER_ID: ${STRATOS_MEMBER_ID}, "
+OUTPUT="$OUTPUT MEMBER_IP: ${STRATOS_MEMBER_IP}, "
+OUTPUT="$OUTPUT CLUSTER_ID: ${STRATOS_CLUSTER_ID}, "
+OUTPUT="$OUTPUT LB_CLUSTER_ID: ${STRATOS_LB_CLUSTER_ID}, "
+OUTPUT="$OUTPUT NETWORK_PARTITION_ID: ${STRATOS_NETWORK_PARTITION_ID}, "
+OUTPUT="$OUTPUT SERVICE_NAME: ${STRATOS_SERVICE_NAME}, "
+OUTPUT="$OUTPUT PORTS: ${STRATOS_PORTS},"
+OUTPUT="$OUTPUT STRATOS_LB_IP: ${STRATOS_LB_IP},"
+OUTPUT="$OUTPUT STRATOS_LB_PUBLIC_IP: ${STRATOS_LB_PUBLIC_IP},"
+OUTPUT="$OUTPUT APP_PATH: ${APP_PATH},"
+OUTPUT="$OUTPUT STRATOS_PARAM_FILE_PATH: ${STRATOS_PARAM_FILE_PATH}"
+echo $OUTPUT | tee -a $log
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Topology: ${STRATOS_TOPOLOGY_JSON}" | tee -a $log
+echo "---------------" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/member-suspended.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/member-suspended.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-suspended.sh
new file mode 100644
index 0000000..866aa0d
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-suspended.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when member suspended
+# event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+OUTPUT=`date`": Member Suspended Event: "
+OUTPUT="$OUTPUT MEMBER_ID: ${STRATOS_MEMBER_ID}, "
+OUTPUT="$OUTPUT MEMBER_IP: ${STRATOS_MEMBER_IP}, "
+OUTPUT="$OUTPUT CLUSTER_ID: ${STRATOS_CLUSTER_ID}, "
+OUTPUT="$OUTPUT LB_CLUSTER_ID: ${STRATOS_LB_CLUSTER_ID}, "
+OUTPUT="$OUTPUT NETWORK_PARTITION_ID: ${STRATOS_NETWORK_PARTITION_ID}, "
+OUTPUT="$OUTPUT SERVICE_NAME: ${STRATOS_SERVICE_NAME}, "
+OUTPUT="$OUTPUT PORTS: ${STRATOS_PORTS},"
+OUTPUT="$OUTPUT STRATOS_LB_IP: ${STRATOS_LB_IP},"
+OUTPUT="$OUTPUT STRATOS_LB_PUBLIC_IP: ${STRATOS_LB_PUBLIC_IP},"
+OUTPUT="$OUTPUT APP_PATH: ${APP_PATH},"
+OUTPUT="$OUTPUT STRATOS_PARAM_FILE_PATH: ${STRATOS_PARAM_FILE_PATH}"
+echo $OUTPUT | tee -a $log
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Topology: ${STRATOS_TOPOLOGY_JSON}" | tee -a $log
+echo "---------------" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/member-terminated.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/member-terminated.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-terminated.sh
new file mode 100644
index 0000000..89cedf6
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/member-terminated.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when member terminated
+# event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+OUTPUT=`date`": Member Terminated Event: "
+OUTPUT="$OUTPUT MEMBER_ID: ${STRATOS_MEMBER_ID}, "
+OUTPUT="$OUTPUT MEMBER_IP: ${STRATOS_MEMBER_IP}, "
+OUTPUT="$OUTPUT CLUSTER_ID: ${STRATOS_CLUSTER_ID}, "
+OUTPUT="$OUTPUT LB_CLUSTER_ID: ${STRATOS_LB_CLUSTER_ID}, "
+OUTPUT="$OUTPUT NETWORK_PARTITION_ID: ${STRATOS_NETWORK_PARTITION_ID}, "
+OUTPUT="$OUTPUT SERVICE_NAME: ${STRATOS_SERVICE_NAME}, "
+OUTPUT="$OUTPUT PORTS: ${STRATOS_PORTS},"
+OUTPUT="$OUTPUT STRATOS_LB_IP: ${STRATOS_LB_IP},"
+OUTPUT="$OUTPUT STRATOS_LB_PUBLIC_IP: ${STRATOS_LB_PUBLIC_IP},"
+OUTPUT="$OUTPUT APP_PATH: ${APP_PATH},"
+OUTPUT="$OUTPUT STRATOS_PARAM_FILE_PATH: ${STRATOS_PARAM_FILE_PATH}"
+echo $OUTPUT | tee -a $log
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Topology: ${STRATOS_TOPOLOGY_JSON}" | tee -a $log
+echo "---------------" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/mount-volumes.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/mount-volumes.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/mount-volumes.sh
new file mode 100755
index 0000000..2e649bd
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/mount-volumes.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed to mount volumes
+# to the instance.
+# --------------------------------------------------------------
+#
+
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+echo -e "Starting mounting volumes" 2>&1 | tee -a $log
+
+# $1  is passed from Cartridge Agent code.
+echo -e "launh param file location $1" | tee -a $log
+#source /opt/apache-stratos-cartridge-agent/launch.params
+PERSISTENCE_MAPPING=$1
+echo -e "Persistance mappings : $PERSISTENCE_MAPPING" 2>&1 | tee -a $log
+
+mount_volume(){
+
+        device=$1;
+        mount_point=$2;
+        echo "device $device"
+        echo "point  $mount_point"
+        # check if the volume has a file system
+        output=`sudo file -s $device`;
+        echo $output | tee -a $log
+
+        # this is the pattern of the output of file -s if the volume does not 
have a file system
+        # refer to 
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html
+        pattern="$device: data"
+
+        if [[ $output ==  $pattern ]]
+        then
+                echo -e "Volume is not formatted. So formating the device 
$device \n" | tee -a $log
+                sudo mkfs -t ext4 $device
+        fi
+
+        echo "Mounting  the device $device to the mount point $mount_point \n" 
| tee -a $log
+        device_mounted=$(mount | grep "$device")
+
+        if [ ! -d "$mount_point" ]
+        then
+              echo "creating the  mount point directory $mount_point since it 
does not exist." | tee -a $log
+              sudo mkdir $mount_point
+        fi
+
+        #mounting the device if it is not already mounted
+        if [ ! "$device_mounted" = "" ]
+        then
+              echo -e "Device $device is already mounted." | tee -a $log
+        else
+              sudo mount $device $mount_point
+        fi
+
+}
+
+IFS='|' read -ra ADDR <<< "${PERSISTENCE_MAPPING}"
+echo "${ADDR[@]}" | tee -a $log
+
+for i in "${!ADDR[@]}"; do
+        # expected PERSISTANCE_MAPPING format is 
device1|mountPoint1|device2|mountpoint2...
+        # so that even indexes are devices and odd indexes are mount points..
+        if (( $i  % 2 == 0 ))
+        then
+           mount_volume ${ADDR[$i]} ${ADDR[$i + 1]}
+        fi
+done
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/start-servers.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/start-servers.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/start-servers.sh
index 1bb3f84..d70a193 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/extensions/start-servers.sh
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/start-servers.sh
@@ -24,4 +24,16 @@
 #
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
-echo "Starting servers" | tee -a $log
\ No newline at end of file
+if [[ -z $STRATOS_CLUSTERING ]]; then
+   echo `date`": Starting servers..." | tee -a $log
+else
+   echo `date`": Starting servers in clustering mode..." | tee -a $log
+fi
+
+echo "LB IP: ${STRATOS_LB_IP}" | tee -a $log
+echo "LB PUBLIC IP: $STRATOS_LB_PUBLIC_IP}" | tee -a $log
+echo "STRATOS_PARAM_FILE_PATH: ${STRATOS_PARAM_FILE_PATH}"
+echo "Member List: ${STRATOS_MEMBER_LIST_JSON}" | tee -a $log
+echo "Complete Topology: ${STRATOS_TOPOLOGY_JSON}" | tee -a $log
+echo "Members in LB: ${STRATOS_MEMBERS_IN_LB_JSON}" | tee -a $log
+echo "APP_PATH: ${APP_PATH}" | tee -a $log
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-added.sh
----------------------------------------------------------------------
diff --git 
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
new file mode 100644
index 0000000..f78a5db
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-added.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when subscription domain
+# added event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.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/7b35e29e/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-removed.sh
----------------------------------------------------------------------
diff --git 
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
new file mode 100644
index 0000000..b007044
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/subscription-domain-removed.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------
+# This extension script will be executed when subscription domain
+# removed event is received.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.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/7b35e29e/products/stratos/conf/tenant-mgt.xml
----------------------------------------------------------------------
diff --git a/products/stratos/conf/tenant-mgt.xml 
b/products/stratos/conf/tenant-mgt.xml
new file mode 100644
index 0000000..ddfe83a
--- /dev/null
+++ b/products/stratos/conf/tenant-mgt.xml
@@ -0,0 +1,42 @@
+<!--
+ ~ 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.
+ -->
+<TenantManagers>
+    <TenantManager class="org.wso2.carbon.user.core.tenant.JDBCTenantManager">
+        <Property 
name="MultiTenantRealmConfigBuilder">org.wso2.carbon.user.core.config.multitenancy.SimpleRealmConfigBuilder</Property>
+    </TenantManager>
+</TenantManagers>
+
+<!--If the product is using LDAP user store in MT mode, use following tenant 
manager.-->
+<!--TenantManager 
class="org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager">
+    <Property name="RootPartition">dc=wso2,dc=com</Property>
+    <Property name="OrganizationalObjectClass">organizationalUnit</Property>
+    <Property name="OrganizationalAttribute">ou</Property>
+    <Property 
name="OrganizationalSubContextObjectClass">organizationalUnit</Property>
+    <Property name="OrganizationalSubContextAttribute">ou</Property>
+</TenantManager-->
+<!--Following tenant manager is used by Identity Server (IS) as its default 
tenant manager.
+    IS will do token replacement when building the product. Therefore do not 
change the syntax.-->
+<!--TenantManager class="org.wso2.carbon.user.core.tenant.JDBCTenantManager">
+    <Property name="RootPartition">dc=wso2,dc=org</Property>
+    <Property name="OrganizationalObjectClass">organizationalUnit</Property>
+    <Property name="OrganizationalAttribute">ou</Property>
+    <Property 
name="OrganizationalSubContextObjectClass">organizationalUnit</Property>
+    <Property name="OrganizationalSubContextAttribute">ou</Property>
+</TenantManager-->
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/assembly/bin.xml 
b/products/stratos/modules/distribution/src/assembly/bin.xml
index 6e1d991..b5c4798 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -39,17 +39,18 @@
                 <exclude>**/LICENSE.txt</exclude>
                 <exclude>**/NOTICE</exclude>
                 <exclude>**/release-notes.html</exclude>
-               <exclude>**/launch.ini</exclude>
+                       <exclude>**/launch.ini</exclude>
                 <exclude>**/carbon.xml</exclude>
                 <exclude>**/README*</exclude>
                 <exclude>**/log4j.properties</exclude>
                 <exclude>**/repository/components/**</exclude>
-               <exclude>**/lib/endorsed/**</exclude>
+                       <exclude>**/lib/endorsed/**</exclude>
                 <exclude>**/dbscripts/mysql.sql</exclude>
                 
<exclude>**/repository/conf/security/cipher-tool.properties</exclude>
                 
<exclude>**/repository/conf/security/cipher-text.properties</exclude>
-               <exclude>**/repository/conf/axis2/axis2.xml</exclude>
-               <exclude>**/repository/conf/registry.xml</exclude>
+                       <exclude>**/repository/conf/axis2/axis2.xml</exclude>
+                       <exclude>**/repository/conf/registry.xml</exclude>
+
                <exclude>**/repository/conf/log4j.properties</exclude>
                <exclude>**/repository/conf/data-bridge/**</exclude>
             </excludes>
@@ -153,6 +154,7 @@
                 <exclude>**/datasources.properties</exclude>
                 <exclude>.svn</exclude>
                 <exclude>**/temp-artifacts/**</exclude>
+                <exclude>tenant-mgt.xml</exclude>
                 <exclude>email-bill-generated.xml</exclude>
                 <exclude>email-billing-notifications.xml</exclude>
                 <exclude>email-new-tenant-activation.xml</exclude>
@@ -168,6 +170,7 @@
                <exclude>tenant-reg-agent.xml</exclude>
                 <exclude>features-dashboard.xml</exclude>
                 <exclude>**/data-bridge/**</exclude>
+
             </excludes>
         </fileSet>
         <fileSet>
@@ -835,6 +838,12 @@
            <destName>jaas.conf</destName>
             <filtered>true</filtered>
         </file>
+        <file>
+            <source>../../conf/tenant-mgt.xml</source>
+            
<outputDirectory>${pom.artifactId}-${pom.version}/repository/conf</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>644</fileMode>
+        </file>
         <!--Application authenticators -->
         <file>
             <source>../../conf/application-authenticators.xml</source>

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/autoscaler.xml 
b/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
index 18c44a2..c0c4eb9 100644
--- a/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
+++ b/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
@@ -41,5 +41,7 @@
                <!-->member expiry timeout (time waited till activation) in 
ms<-->
                <expiryTimeout>900000</expiryTimeout>
            </member>
+           <!-- monitor task interval -->
+           <monitorInterval>90000</monitorInterval>
        </autoscaler>
 </configuration>

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/stratos/modules/distribution/src/main/conf/mincheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/mincheck.drl 
b/products/stratos/modules/distribution/src/main/conf/mincheck.drl
index b1c0f7c..ceeab48 100755
--- a/products/stratos/modules/distribution/src/main/conf/mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/mincheck.drl
@@ -48,6 +48,8 @@ global org.apache.stratos.messaging.domain.topology.Topology 
$topology;
 global java.util.Map partitionCtxts;
 global java.lang.String clusterId;
 global java.lang.String lbRef;
+global java.lang.Boolean isPrimary;
+global Integer primaryMemberCount;
 
 rule "Minimum Rule"
 dialect "mvel"
@@ -56,11 +58,14 @@ dialect "mvel"
            eval(log.debug("Running minimum rule: [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId()))
               eval(log.debug("[min-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Non terminated member count: " + $ctxt.getNonTerminatedMemberCount()))
               eval(log.debug("[min-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Minimum member count: " + $ctxt.getMinimumMemberCount()))
-              eval($ctxt.getNonTerminatedMemberCount() < 
$ctxt.getMinimumMemberCount())
-
+              eval ( (isPrimary && (primaryMemberCount < 
$ctxt.getMinimumMemberCount() )) || ( !isPrimary && 
($ctxt.getNonTerminatedMemberCount() < $ctxt.getMinimumMemberCount() )) )
        then
-              $delegator.delegateSpawn($ctxt, clusterId, lbRef);
-              
+           if (isPrimary){
+              log.debug("[min-check] true  [primary] true   [primary member 
count] " + primaryMemberCount);
+           } else{
+              log.debug("[min-check] true  [primary] false");
+           }
+              $delegator.delegateSpawn($ctxt, clusterId, lbRef, isPrimary);
 end
 
 rule "Terminate Obsoleted Instances"

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/stratos/modules/distribution/src/main/conf/scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/scaling.drl 
b/products/stratos/modules/distribution/src/main/conf/scaling.drl
index c192cd2..b3f6466 100644
--- a/products/stratos/modules/distribution/src/main/conf/scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/scaling.drl
@@ -53,6 +53,8 @@ global java.lang.String lbRef;
 global java.lang.Boolean rifReset;
 global java.lang.Boolean mcReset;
 global java.lang.Boolean laReset;
+global java.lang.Boolean isPrimary;
+global java.util.List primaryMembers;
 
 rule "Scaling Rule"
 dialect "mvel"
@@ -109,7 +111,7 @@ dialect "mvel"
             if(partition != null){
                 log.info("[scale-up] Partition available, hence trying to 
spawn an instance to scale up!" );
                 log.debug("[scale-up] " + " [partition] " + partition.getId() 
+ " [cluster] " + clusterId );
-                
$delegator.delegateSpawn($networkPartitionContext.getPartitionCtxt(partition.getId()),
 clusterId, lbRef);
+                
$delegator.delegateSpawn($networkPartitionContext.getPartitionCtxt(partition.getId()),
 clusterId, lbRef, isPrimary);
             }
         } else if(scaleDown){
 
@@ -126,8 +128,15 @@ dialect "mvel"
                     log.debug("[scale-down] " + " [partition] " + 
partition.getId() + " [cluster] " + clusterId);
                     partitionContext = 
$networkPartitionContext.getPartitionCtxt(partition.getId());
 
-                    for(MemberStatsContext memberStatsContext: 
partitionContext.getMemberStatsContexts().values()){
 
+                                       // In partition context member stat 
context, all the primary members need to be
+                                       // avoided being selected as the member 
to terminated
+                                       
+
+                    for(MemberStatsContext memberStatsContext: 
partitionContext.getMemberStatsContexts().values()){
+                                       
+                                               if( 
!primaryMembers.contains(memberStatsContext.getMemberId()) ) {
+                                               
                         LoadAverage loadAverage = 
memberStatsContext.getLoadAverage();
                         log.debug("[scale-down] " + " [cluster] "
                             + clusterId + " [member] " + 
memberStatsContext.getMemberId() + " Load average: " + loadAverage);
@@ -156,6 +165,10 @@ dialect "mvel"
                             selectedMemberStatsContext = memberStatsContext;
                             lowestOverallLoad = overallLoad;
                         }
+                        
+                                                                               
+                                         }
+                                               
                     }
                     if(selectedMemberStatsContext != null) {
                         log.info("[scale-down] Trying to terminating an 
instace to scale down!" );

http://git-wip-us.apache.org/repos/asf/stratos/blob/7b35e29e/products/stratos/modules/distribution/src/main/conf/siddhi/siddhi.extension
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/siddhi/siddhi.extension 
b/products/stratos/modules/distribution/src/main/conf/siddhi/siddhi.extension
index 6bb9aca..470d66c 100644
--- 
a/products/stratos/modules/distribution/src/main/conf/siddhi/siddhi.extension
+++ 
b/products/stratos/modules/distribution/src/main/conf/siddhi/siddhi.extension
@@ -1,3 +1,4 @@
 org.apache.stratos.cep.extension.GradientFinderWindowProcessor
 org.apache.stratos.cep.extension.SecondDerivativeFinderWindowProcessor
 org.apache.stratos.cep.extension.FaultHandlingWindowProcessor
+org.apache.stratos.cep.extension.ConcatWindowProcessor

Reply via email to