Update the INSTALL.md file and samples

Conflicts:
        
samples/applications/nested/single-level-nested-group-app/artifacts/application.json
        
samples/applications/simple/single-cartridge-app/artifacts/application.json
        samples/cartridges/openstack/php.json
        samples/cartridges/openstack/tomcat.json


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

Branch: refs/heads/master
Commit: 956a6688a67bc85e00c1e2444561a69e2b65aada
Parents: c0455c9
Author: Gayan Gunarathne <[email protected]>
Authored: Fri May 22 14:41:55 2015 +0530
Committer: Gayan Gunarathne <[email protected]>
Committed: Mon Jul 27 14:49:34 2015 +0530

----------------------------------------------------------------------
 .../apache/stratos/cartridge/agent/Main.java    |  29 +++++
 .../stratos/common/util/CommandUtils.java       |  30 +++++
 .../extensions/bash/CreateLVSDummyInterface.sh  |   0
 .../src/test/resources/payload/launch-params    |   2 +-
 .../src/test/resources/payload/launch-params2   |   2 +-
 .../load-balancer/lvs-extension/INSTALL.md      |  23 ++--
 .../org/apache/stratos/lvs/extension/LVS.java   |   8 +-
 .../lvs/extension/LVSStatisticsReader.java      | 130 +++++++------------
 .../org/apache/stratos/lvs/extension/Main.java  |   2 +-
 .../src/test/resources/JMSOutputAdaptor.xml     |   2 +-
 .../artifacts/application.json                  |  43 +++---
 .../artifacts/application.json                  |   9 +-
 .../single-group-app/artifacts/application.json |   6 +-
 samples/cartridges/mock/php.json                |   2 +-
 samples/cartridges/mock/tomcat.json             |   5 +
 samples/cartridges/openstack/php.json           |  11 +-
 samples/cartridges/openstack/tomcat.json        |  28 ++++
 17 files changed, 199 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
index c4b7d17..1600c3d 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/Main.java
@@ -23,9 +23,11 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration;
+import org.apache.stratos.common.util.CommandUtils;
 import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
 import org.apache.stratos.messaging.util.MessagingUtil;
 
+import java.io.IOException;
 import java.lang.reflect.Constructor;
 
 /**
@@ -37,6 +39,33 @@ public class Main {
     private static CartridgeAgent cartridgeAgent = null;
 
     public static void main(String[] args) {
+
+           String output;
+           String[] array;
+           int totalWeight = 0, weight;
+
+
+                           String[] command = { "/bin/sh", "-c","sudo ipvsadm 
-l --stats | grep TCP"};
+                           try {
+                                   output = 
CommandUtils.executeCommand(command);
+                                   if ((output != null) && (output.length() > 
0)) {
+                                           array = output.split("\n");
+                                           for (int i = 0; i < array.length; 
i++) {
+                                                  
weight=Integer.parseInt(array[i].substring(38,42).toString().trim());
+                                                  totalWeight += weight;
+                                                  }
+                                   }
+                           } catch (IOException e) {
+                                   if (log.isErrorEnabled()) {
+                                           log.error(e);
+                                   }
+                           }
+                           if (log.isInfoEnabled()) {
+                                   log.info(String.format("Cluster weight 
found: [cluster] %s [weight] %d","",
+                                                          totalWeight));
+
+                       }
+
         try {
             // Add shutdown hook
             final Thread mainThread = Thread.currentThread();

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
index d581057..4168afe 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommandUtils.java
@@ -65,6 +65,36 @@ public class CommandUtils {
         return output.toString();
     }
 
+       public static String executeCommand(String[] command) throws 
IOException {
+               String line;
+               Runtime r = Runtime.getRuntime();
+               if (log.isDebugEnabled()) {
+                       log.debug("command = " + command);
+               }
+               Process p = r.exec(command);
+
+               StringBuilder output = new StringBuilder();
+               BufferedReader in = new BufferedReader(new 
InputStreamReader(p.getInputStream()));
+               while ((line = in.readLine()) != null) {
+                       if (log.isDebugEnabled()) {
+                               log.debug("output = " + line);
+                       }
+                       output.append(line).append(NEW_LINE);
+               }
+               StringBuilder errors = new StringBuilder();
+               BufferedReader error = new BufferedReader(new 
InputStreamReader(p.getErrorStream()));
+               while ((line = error.readLine()) != null) {
+                       if (log.isDebugEnabled()) {
+                               log.debug("error = " + line);
+                       }
+                       errors.append(line).append(NEW_LINE);
+               }
+               if (errors.length() > 0) {
+                       throw new RuntimeException("Command execution failed: " 
+ NEW_LINE + errors.toString());
+               }
+
+               return output.toString();
+       }
     public static String executeCommand(String command, Map<String, String> 
envParameters) throws IOException {
         String line;
         ProcessBuilder pb = new ProcessBuilder(command);

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
 
b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
 
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
index 00ce19c..a2df82b 100644
--- 
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
+++ 
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params
@@ -1 +1 @@
-APPLICATION_ID=single_group_v1,APPLICATION_PATH=/tmp/tomcat/webapps,BASH=/bin/bash,BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath,BASH_ALIASES=(),BASH_ARGC=(),BASH_ARGV=(),BASH_CMDS=(),BASH_LINENO=([0]="0"),BASH_SOURCE=([0]="/usr/local/bin/populate-user-data.sh"),BASH_VERSINFO=([0]="4"
 [1]="3" [2]="30" [3]="1" [4]="release" 
[5]="x86_64-pc-linux-gnu"),BASH_VERSION='4.3.30(1)-release',CARTRIDGE_ALIAS=mytomcat,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,CATALINA_HOME=/opt/tomcat,CEP_IP=54.179.197.243,CEP_PORT=7711,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single_group_v1-1,DEPENDENCY_CLUSTER_IDS=myphp.php.domain,DEPLOYMENT=default,DIRSTACK=(),EUID=0,GROUPS=(),GROUP_NAME=null,HOME=/root,HOSTNAME=mytomcat-tomcat-domain3bd3cd47-b95d-475a-aa11-3e3ddc089d49,HOSTTYPE=x86_64,HOST_NAME=mytomcat.tomcat.stratos.org,IFS='
        
,',INSTANCE_ID=null,INTERNAL=false,JAVA_HOME=/opt/jdk1.7.0_67,KUBERNETES_CLUSTER_ID=kubernetes-cluster-1,KUB
 
ERNETES_PORT=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP_ADDR=10.100.0.2,KUBERNETES_PORT_443_TCP_PORT=443,KUBERNETES_PORT_443_TCP_PROTO=tcp,KUBERNETES_RO_PORT=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP_ADDR=10.100.0.1,KUBERNETES_RO_PORT_80_TCP_PORT=80,KUBERNETES_RO_PORT_80_TCP_PROTO=tcp,KUBERNETES_RO_SERVICE_HOST=10.100.0.1,KUBERNETES_RO_SERVICE_PORT=80,KUBERNETES_SERVICE_HOST=10.100.0.2,KUBERNETES_SERVICE_PORT=443,LB_CLUSTER_ID=null,LOG_LEVEL=DEBUG,MACHTYPE=x86_64-pc-linux-gnu,MB_IP=54.179.197.243,MB_PORT=1883,MEMBER_ID=php.member-1,MIN_COUNT=1,MULTITENANT=false,MYPHP_PHP_DOMAIN_1_PORT=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.171.218,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYPHP_PHP_DOMAIN_1_SERVICE_HOST=10.100.171.218,MYPHP_PHP_DOMAIN_1_SERVICE_PORT=4500,
 
MYTOMCAT_TOMCAT_DOMAIN_1_PORT=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_HOST=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_PORT=4500,NETWORK_PARTITION_ID=network-partition-1,OPTERR=1,OPTIND=1,OSTYPE=linux-gnu,PARTITION_ID=partition-1,PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,PIPESTATUS=([0]="0"),PORTS=8080,POSIXLY_CORRECT=y,PPID=14,PRIMARY=false,PROVIDER=apache,PS4='+
 
',PUPPET_DNS_AVAILABLE=null,PUPPET_ENV=false,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_IP=127.0.0.1,PWD=/opt,REPO_URL=https://github.com/imesh/stratos-tomcat-applications.git,SERVICE_NAME=php,SHELL=/bin/bash,SHELLOPTS=braceexpand:hashall:interactive-comments:posix,SHLVL=2,TENANT_ID=-1234,TENANT_RANGE='*',TERM=dumb,TOKEN=eyJhbGciOiJSUzI1NiJ9.eyJleHAiOi04NzI
 
0ODEyNDEsInN1YiI6ImFkbWluIiwiYXpwIjoid3I5SllVaDNtTXd6bVhHVllqWmVIWnhCV2xFYSIsImFwcElkIjoic2luZ2xlX2dyb3VwX3YxIiwiYXVkIjpbIndyOUpZVWgzbU13em1YR1ZZalplSFp4QldsRWEiXSwiaXNzIjoiaHR0cHM6XC9cL2xvY2FsaG9zdDo5NDQzXC9vYXV0aDJlbmRwb2ludHNcL3Rva2VuIiwiaWF0IjotODcyNDgwMjQwfQ.OSa1gIXUT9amhk1YEU02Yc3JtUYqanzrXh5K1YyvRXcpSiY2Ccn2BfJO0hILF5UooRcGBihzfX3979NRcvGwcUDUvOUJ0eaGPmxFZYbu0nr3xD8lhAO3fa1QYsKAvMnMdwyu2uSgSp6R6EUdVleiwlabUoDsuEcKGkIAn_VQvG0,UID=0,_=posix
\ No newline at end of file
+APPLICATION_ID=single_group_v1,APPLICATION_PATH=/tmp/tomcat/webapps,BASH=/bin/bash,BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath,BASH_ALIASES=(),BASH_ARGC=(),BASH_ARGV=(),BASH_CMDS=(),BASH_LINENO=([0]="0"),BASH_SOURCE=([0]="/usr/local/bin/populate-user-data.sh"),BASH_VERSINFO=([0]="4"
 [1]="3" [2]="30" [3]="1" [4]="release" 
[5]="x86_64-pc-linux-gnu"),BASH_VERSION='4.3.30(1)-release',CARTRIDGE_ALIAS=mytomcat,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,CATALINA_HOME=/opt/tomcat,CEP_IP=54.179.197.243,CEP_PORT=7711,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single_group_v1-1,DEPENDENCY_CLUSTER_IDS=myphp.php.domain,DEPLOYMENT=default,DIRSTACK=(),EUID=0,GROUPS=(),GROUP_NAME=null,HOME=/root,HOSTNAME=mytomcat-tomcat-domain3bd3cd47-b95d-475a-aa11-3e3ddc089d49,HOSTTYPE=x86_64,HOST_NAME=mytomcat.tomcat.stratos.org,IFS='
        
,',INSTANCE_ID=null,INTERNAL=false,JAVA_HOME=/opt/jdk1.7.0_67,KUBERNETES_CLUSTER_ID=kubernetes-cluster-1,KUB
 
ERNETES_PORT=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP=tcp://10.100.0.2:443,KUBERNETES_PORT_443_TCP_ADDR=10.100.0.2,KUBERNETES_PORT_443_TCP_PORT=443,KUBERNETES_PORT_443_TCP_PROTO=tcp,KUBERNETES_RO_PORT=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP=tcp://10.100.0.1:80,KUBERNETES_RO_PORT_80_TCP_ADDR=10.100.0.1,KUBERNETES_RO_PORT_80_TCP_PORT=80,KUBERNETES_RO_PORT_80_TCP_PROTO=tcp,KUBERNETES_RO_SERVICE_HOST=10.100.0.1,KUBERNETES_RO_SERVICE_PORT=80,KUBERNETES_SERVICE_HOST=10.100.0.2,KUBERNETES_SERVICE_PORT=443,LB_CLUSTER_ID=null,LOG_LEVEL=DEBUG,MACHTYPE=x86_64-pc-linux-gnu,MB_IP=54.179.197.243,MB_PORT=1883,MEMBER_ID=php.member-1,MIN_COUNT=1,MULTITENANT=false,MYPHP_PHP_DOMAIN_1_PORT=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP=tcp://10.100.171.218:4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.171.218,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYPHP_PHP_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYPHP_PHP_DOMAIN_1_SERVICE_HOST=10.100.171.218,MYPHP_PHP_DOMAIN_1_SERVICE_PORT=4500,
 
MYTOMCAT_TOMCAT_DOMAIN_1_PORT=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP=tcp://10.100.16.250:4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_ADDR=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PORT=4500,MYTOMCAT_TOMCAT_DOMAIN_1_PORT_4500_TCP_PROTO=tcp,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_HOST=10.100.16.250,MYTOMCAT_TOMCAT_DOMAIN_1_SERVICE_PORT=4500,NETWORK_PARTITION_ID=network-partition-1,OPTERR=1,OPTIND=1,OSTYPE=linux-gnu,PARTITION_ID=partition-1,PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,PIPESTATUS=([0]="0"),PORTS=8080,POSIXLY_CORRECT=y,PPID=14,PRIMARY=false,PROVIDER=apache,PS4='+
 
',PUPPET_DNS_AVAILABLE=null,PUPPET_ENV=false,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_IP=127.0.0.1,PWD=/opt,REPO_URL=https://github.com/imesh/stratos-tomcat-applications.git,SERVICE_NAME=php,SHELL=/bin/bash,SHELLOPTS=braceexpand:hashall:interactive-comments:posix,SHLVL=2,TENANT_ID=-1234,TENANT_RANGE='*',TERM=dumb,TOKEN=eyJhbGciOiJSUzI1NiJ9.eyJleHAiOi04NzI
 
0ODEyNDEsInN1YiI6ImFkbWluIiwiYXpwIjoid3I5SllVaDNtTXd6bVhHVllqWmVIWnhCV2xFYSIsImFwcElkIjoic2luZ2xlX2dyb3VwX3YxIiwiYXVkIjpbIndyOUpZVWgzbU13em1YR1ZZalplSFp4QldsRWEiXSwiaXNzIjoiaHR0cHM6XC9cL2xvY2FsaG9zdDo5NDQzXC9vYXV0aDJlbmRwb2ludHNcL3Rva2VuIiwiaWF0IjotODcyNDgwMjQwfQ.OSa1gIXUT9amhk1YEU02Yc3JtUYqanzrXh5K1YyvRXcpSiY2Ccn2BfJO0hILF5UooRcGBihzfX3979NRcvGwcUDUvOUJ0eaGPmxFZYbu0nr3xD8lhAO3fa1QYsKAvMnMdwyu2uSgSp6R6EUdVleiwlabUoDsuEcKGkIAn_VQvG0,UID=0,_=posix,LVS_VIRTUAL_IP=192.168.0.40
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
 
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
index 9e67ebd..5c31d1f 100644
--- 
a/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
+++ 
b/components/org.apache.stratos.python.cartridge.agent/src/test/resources/payload/launch-params2
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-APPLICATION_ID=application1,SERVICE_NAME=php,HOST_NAME=php.php.stratos.org,MULTITENANT=false,TENANT_ID=-1234,TENANT_RANGE=*,CARTRIDGE_ALIAS=php,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single-cartridge-app-1,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,DEPLOYMENT=default,REPO_URL=https://github.com/imesh/stratos-php-applications.git,PORTS=9080,PUPPET_IP=127.0.0.1,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_ENV=false,MEMBER_ID=php.member-1,LB_CLUSTER_ID=null,NETWORK_PARTITION_ID=network-p1,PARTITION_ID=p1,APPLICATION_PATH=/tmp/stratos-pca-test-app-path/,MIN_COUNT=1,INTERNAL=false,CLUSTERING_PRIMARY_KEY=A,LOG_FILE_PATHS=/tmp/temp.log,PERSISTENCE_MAPPING=null,MP_IP=192.168.1.4,MB_PORT=1883
\ No newline at end of file
+APPLICATION_ID=application1,SERVICE_NAME=php,HOST_NAME=php.php.stratos.org,MULTITENANT=false,TENANT_ID=-1234,TENANT_RANGE=*,CARTRIDGE_ALIAS=php,CLUSTER_ID=php.php.domain,CLUSTER_INSTANCE_ID=single-cartridge-app-1,CARTRIDGE_KEY=PUjpXCLujDhYr5A6,DEPLOYMENT=default,REPO_URL=https://github.com/imesh/stratos-php-applications.git,PORTS=9080,PUPPET_IP=127.0.0.1,PUPPET_HOSTNAME=puppet.apache.stratos.org,PUPPET_ENV=false,MEMBER_ID=php.member-1,LB_CLUSTER_ID=null,NETWORK_PARTITION_ID=network-p1,PARTITION_ID=p1,APPLICATION_PATH=/tmp/stratos-pca-test-app-path/,MIN_COUNT=1,INTERNAL=false,CLUSTERING_PRIMARY_KEY=A,LOG_FILE_PATHS=/tmp/temp.log,PERSISTENCE_MAPPING=null,MP_IP=192.168.1.4,MB_PORT=1883,LVS_VIRTUAL_IP=192.168.0.40
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/INSTALL.md
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/lvs-extension/INSTALL.md 
b/extensions/load-balancer/lvs-extension/INSTALL.md
index 3e0aa5a..2b3f491 100644
--- a/extensions/load-balancer/lvs-extension/INSTALL.md
+++ b/extensions/load-balancer/lvs-extension/INSTALL.md
@@ -1,19 +1,18 @@
 # Installing Apache Stratos Nginx Extension
 
-Apache Stratos Nginx Extension could be used for integrating Nginx load 
balancer with Apache Stratos. Please follow
+Apache Stratos LVS Extension could be used for integrating LVS load balancer 
with Apache Stratos. Please follow
 below steps to proceed with the installation:
 
-1. Download and extract Nginx binary distribution to a desired location: 
<nginx-home>.
+1. Install keepalived and ipvsadm
+   apt-get install keepalived ipvsadm
 
-2. Extract org.apache.stratos.nginx.extension-<version>.zip to a desired 
location: <nginx-extension-home>.
-
-3. Open <nginx-extension-home>/bin/nginx-extension.sh file in a text editor 
and update following system properties:
+2. Open <lvs-extension-home>/bin/lvs-extension.sh file in a text editor and 
update following system properties:
    ```
    # Define nginx host private ip address:
-   -Dnginx.private.ip=127.0.0.1
+   -Dlvs.private.ip=127.0.0.1
 
    # Define the nginx executable file path:
-   -Dexecutable.file.path=<nginx-home>/nginx
+   -Dexecutable.file.path=<lvs-home>/nginx
 
    # Enable/disable cep statistics publisher:
    -Dcep.stats.publisher.enabled=false
@@ -22,12 +21,18 @@ below steps to proceed with the installation:
    -Dthrift.receiver.ip=127.0.0.1
    -Dthrift.receiver.port=7615
    -Dnetwork.partition.id=network-partition-1
+
+   # LVS server Virtual IP set for services
+   
-Dlvs.service.virtualip.set=tomcat2|192.168.56.40,tomcat1|192.168.56.41,tomcat|192.168.56.40
+   # Server state (MASTER|BACKUP)
+   -Dserver.state=MASTER
+
    ```
 
-4. Open <nginx-extension-home>/conf/jndi.properties file in a text editor and 
update message broker information:
+4. Open <lvs-extension-home>/conf/jndi.properties file in a text editor and 
update message broker information:
    ```
    java.naming.provider.url=tcp://localhost:61616
    ```
 
-5. Run <nginx-extension-home>/bin/nginx-extension.sh as the root user.
+5. Run <lvs-extension-home>/bin/lvs-extension.sh as the root user.
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java
 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java
index 3dce7e7..257a60e 100644
--- 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java
+++ 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVS.java
@@ -64,7 +64,7 @@ public class LVS implements LoadBalancer {
      */
     public boolean configure(Topology topology) throws 
LoadBalancerExtensionException {
         try {
-            log.info("Generating nginx configuration...");
+            log.info("Generating lvs configuration...");
             LVSConfigWriter writer = new LVSConfigWriter(templatePath, 
templateName, confFilePath, statsSocketFilePath,
                                                          
virtualIPsForServices,serverState);
             if(writer.write(topology)) {
@@ -72,13 +72,13 @@ public class LVS implements LoadBalancer {
             }
             return false;
         } catch (Exception e) {
-            log.error("Could not generate nginx configuration");
+            log.error("Could not generate lvs configuration");
             throw new LoadBalancerExtensionException(e);
         }
     }
 
     /**
-     * Start nginx instance
+     * Start lvs instance
      * @throws LoadBalancerExtensionException
      */
     public void start() throws LoadBalancerExtensionException {
@@ -123,7 +123,7 @@ public class LVS implements LoadBalancer {
     }
 
     /**
-     * Stop nginx instance
+     * Stop lvs instance
      * @throws LoadBalancerExtensionException
      */
     public void stop() throws LoadBalancerExtensionException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
index b3b1fa4..f707090 100644
--- 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
+++ 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSStatisticsReader.java
@@ -21,106 +21,64 @@ package org.apache.stratos.lvs.extension;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.conn.HttpHostConnectException;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.stratos.common.util.CommandUtils;
 import org.apache.stratos.load.balancer.common.domain.Cluster;
-import org.apache.stratos.load.balancer.common.domain.Port;
-import org.apache.stratos.load.balancer.common.domain.Service;
 import 
org.apache.stratos.load.balancer.common.statistics.LoadBalancerStatisticsReader;
 import org.apache.stratos.load.balancer.common.topology.TopologyProvider;
 
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.io.IOException;
 
 /**
  * LVS statistics reader.
  */
 public class LVSStatisticsReader implements LoadBalancerStatisticsReader {
 
-    private static final Log log = 
LogFactory.getLog(LVSStatisticsReader.class);
+       private static final Log log = 
LogFactory.getLog(LVSStatisticsReader.class);
+       private static final String IPVSADM_STATS_COMMAND = "sudo ipvsadm -l 
--stats | grep TCP";
 
-    private TopologyProvider topologyProvider;
+       private TopologyProvider topologyProvider;
 
-    public LVSStatisticsReader(TopologyProvider topologyProvider) {
-        this.topologyProvider = topologyProvider;
-    }
+       public LVSStatisticsReader(TopologyProvider topologyProvider) {
+               this.topologyProvider = topologyProvider;
+       }
 
-    @Override
-    public int getInFlightRequestCount(String clusterId) {
-        Cluster cluster = topologyProvider.getClusterByClusterId(clusterId);
-        if(cluster != null) {
-            String serviceName = cluster.getServiceName();
-            Service service = 
topologyProvider.getTopology().getService(serviceName);
-            if(service != null) {
-                int inFlightRequestCount = 0;
-                for(Port port : service.getPorts()) {
-                    inFlightRequestCount += findWritingCount(port.getProxy());
-                }
-                if(log.isDebugEnabled()) {
-                    log.debug(String.format("In-flight request count: 
[cluster-id] %s [value] %d",
-                            clusterId, inFlightRequestCount));
-                }
-                return inFlightRequestCount;
-            }
-        }
-        return 0;
-    }
+       @Override
+       public int getInFlightRequestCount(String clusterId) {
+               String output;
+               String[] array;
+               int totalWeight = 0, weight;
 
-    /**
-     * Make a http request to http://127.0.0.1:<proxy-port>/nginx_status and 
find writing count.
-     * @param proxyPort
-     * @return
-     */
-    private int findWritingCount(int proxyPort) {
-        try {
-            URL url = new URL("http", "127.0.0.1", proxyPort, "/nginx_status");
-            DefaultHttpClient httpClient = new DefaultHttpClient();
-            HttpUriRequest request = new HttpGet(url.toURI());
-            HttpResponse response = httpClient.execute(request);
-            if (response.getStatusLine().getStatusCode() != 200) {
-                throw new RuntimeException("http://127.0.0.1:"; + proxyPort + 
"/nginx_status was not found");
-            }
-            BufferedReader reader = new BufferedReader(new InputStreamReader(
-                    (response.getEntity().getContent())));
-            String output, result = "";
-            while ((output = reader.readLine()) != null) {
-                result += output;
-            }
-            Pattern pattern = Pattern.compile("(Writing: )([0-1]*)");
-            Matcher matcher = pattern.matcher(result);
-            if (matcher.find()) {
-                // Deduct one to remove the above request
-                int writingCount = Integer.parseInt(matcher.group(2)) - 1;
-                if(log.isDebugEnabled()) {
-                    log.debug(String.format("Writing count: [proxy] %d [value] 
%d", proxyPort, writingCount));
-                }
-                return writingCount;
-            }
-            throw new RuntimeException("Writing block was not found in 
nginx_status response");
-        } catch (HttpHostConnectException ignore) {
-            if(ignore.getMessage().contains("Connection refused")) {
-                log.warn("Could not find in-flight request count, connection 
refused: " +
-                        "http://127.0.0.1:"; + proxyPort + "/nginx_status");
-            }
-        } catch (Exception e) {
-            log.error("Could not find in-flight request count: 
http://127.0.0.1:"; + proxyPort + "/nginx_status", e);
-        }
-        return 0;
-    }
+               // Command to get the statistics : sudo ipvsadm -l --stats | 
grep TCP
+               String[] command = { "/bin/sh", "-c", IPVSADM_STATS_COMMAND };
+               try {
+                       output = CommandUtils.executeCommand(command);
+                       if ((output != null) && (output.length() > 0)) {
+                               array = output.split("\n");
+                               for (int i = 0; i < array.length; i++) {
+                                       weight = 
Integer.parseInt(array[i].substring(38, 42).toString().trim());
+                                       totalWeight += weight;
+                               }
+                       }
+               } catch (IOException e) {
+                       if (log.isErrorEnabled()) {
+                               log.error(e);
+                       }
+               }
+               if (log.isInfoEnabled()) {
+                       log.info(String.format("Cluster weight found: [cluster] 
%s [weight] %d", clusterId,
+                                              totalWeight));
 
-    @Override
-    public int getServedRequestCount(String clusterId) {
-        return 0;
-    }
+               }
+               return totalWeight;
+       }
 
-    @Override
-    public int getActiveInstancesCount(Cluster cluster) {
-        return 0;
-    }
+       @Override
+       public int getServedRequestCount(String clusterId) {
+               return 0;
+       }
+
+       @Override
+       public int getActiveInstancesCount(Cluster cluster) {
+               return 0;
+       }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
index 2df201d..52463e0 100644
--- 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
+++ 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/Main.java
@@ -77,7 +77,7 @@ public class Main {
                                log.error(e);
                        }
                        if (extension != null) {
-                log.info("Shutting nginx instance...");
+                log.info("Shutting lvs instance...");
                                extension.stop();
                        }
                }

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml 
b/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
index a6a2cff..59c3653 100755
--- 
a/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
+++ 
b/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
@@ -23,7 +23,7 @@
 <outputEventAdaptor name="JMSOutputAdaptor" statistics="disable"
   trace="enable" type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager";>
   <!--property 
name="java.naming.provider.url">CEP_HOME/repository/conf/jndi.properties</property-->
-  <property name="java.naming.provider.url">tcp://localhost:61617</property>
+  <property name="java.naming.provider.url">tcp://localhost:61616</property>
   <property 
name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property>
   <property 
name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</property>
   <property name="transport.jms.DestinationType">topic</property>

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
----------------------------------------------------------------------
diff --git 
a/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
 
b/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
index 70a9d82..6e9f14a 100644
--- 
a/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
+++ 
b/samples/applications/nested/single-level-nested-group-app/artifacts/application.json
@@ -8,7 +8,7 @@
                 "alias": "my-group6",
                 "groupMinInstances": 1,
                 "groupMaxInstances": 1,
-                "deploymentPolicy": "deployment-policy-2",
+                "deploymentPolicy":"deployment-policy-2",
                 "groups": [
                     {
                         "name": "group7",
@@ -23,12 +23,13 @@
                                 "subscribableInfo": {
                                     "alias": "my-tomcat1-group7",
                                     "autoscalingPolicy": 
"autoscaling-policy-1",
-                                    "artifactRepository": {
-                                        "privateRepo": false,
-                                        "repoUrl": 
"https://github.com/imesh/stratos-tomcat1-applications.git";,
-                                        "repoUsername": "",
-                                        "repoPassword": ""
-                                    }
+                                    "artifactRepository":{
+                                        "privateRepo":false,
+                                        
"repoUrl":"https://github.com/imesh/stratos-tomcat1-applications.git";,
+                                        "repoUsername":"",
+                                        "repoPassword":""
+                                    },
+                                    "lvsVirtualIP":"192.168.56.40"
                                 }
                             }
                         ]
@@ -42,12 +43,13 @@
                         "subscribableInfo": {
                             "alias": "my-tomcat2-group6",
                             "autoscalingPolicy": "autoscaling-policy-1",
-                            "artifactRepository": {
-                                "privateRepo": false,
-                                "repoUrl": 
"https://github.com/imesh/stratos-tomcat2-applications.git";,
-                                "repoUsername": "",
-                                "repoPassword": ""
-                            }
+                            "artifactRepository":{
+                                "privateRepo":false,
+                                
"repoUrl":"https://github.com/imesh/stratos-tomcat2-applications.git";,
+                                "repoUsername":"",
+                                "repoPassword":""
+                            },
+                            "lvsVirtualIP":"192.168.56.41"
                         }
                     }
                 ]
@@ -61,12 +63,13 @@
                 "subscribableInfo": {
                     "alias": "my-tomcat",
                     "autoscalingPolicy": "autoscaling-policy-1",
-                    "deploymentPolicy": "deployment-policy-2",
-                    "artifactRepository": {
-                        "privateRepo": false,
-                        "repoUrl": 
"https://github.com/imesh/stratos-tomcat-applications.git";,
-                        "repoUsername": "",
-                        "repoPassword": ""
+                    "deploymentPolicy":"deployment-policy-2",
+                    "lvsVirtualIP":"192.168.56.42",
+                    "artifactRepository":{
+                        "privateRepo":false,
+                        
"repoUrl":"https://github.com/imesh/stratos-tomcat-applications.git";,
+                        "repoUsername":"",
+                        "repoPassword":""
                     }
                 }
             }
@@ -74,7 +77,7 @@
         "dependencies": {
             "startupOrders": [
                 {
-                    "aliases": [
+                    "aliases" : [
                         "group.my-group6",
                         "cartridge.my-tomcat"
                     ]

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/applications/simple/single-cartridge-app/artifacts/application.json
----------------------------------------------------------------------
diff --git 
a/samples/applications/simple/single-cartridge-app/artifacts/application.json 
b/samples/applications/simple/single-cartridge-app/artifacts/application.json
index 4043e4f..68fb4a4 100644
--- 
a/samples/applications/simple/single-cartridge-app/artifacts/application.json
+++ 
b/samples/applications/simple/single-cartridge-app/artifacts/application.json
@@ -6,18 +6,19 @@
         "cartridges": [
             {
                 "type": "php",
-                "cartridgeMin": 1,
-                "cartridgeMax": 5,
+               "cartridgeMin": 2,
+                "cartridgeMax": 10,
                 "subscribableInfo": {
                     "alias": "my-php",
                     "autoscalingPolicy": "autoscaling-policy-1",
                     "deploymentPolicy": "deployment-policy-1",
                     "artifactRepository": {
                         "privateRepo": false,
-                        "repoUrl": 
"https://github.com/lakwarus/single-cartridge.git";,
+                        "repoUrl": 
"https://github.com/imesh/stratos-php-applications.git";,
                         "repoUsername": "",
                         "repoPassword": ""
-                    }
+                    },
+                    "lvsVirtualIP":"192.168.30.30"
                 }
             }
         ]

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/applications/simple/single-group-app/artifacts/application.json
----------------------------------------------------------------------
diff --git 
a/samples/applications/simple/single-group-app/artifacts/application.json 
b/samples/applications/simple/single-group-app/artifacts/application.json
index c16a3f3..b51bad9 100644
--- a/samples/applications/simple/single-group-app/artifacts/application.json
+++ b/samples/applications/simple/single-group-app/artifacts/application.json
@@ -27,8 +27,9 @@
                     },
                     {
                         "type": "php",
-                        "cartridgeMin": 1,
-                        "cartridgeMax": 2,
+                        "cartridgeMin": 2,
+                        "cartridgeMax": 4,
+                        "lvsVirtualIP": "192.168.56.60",
                         "subscribableInfo": {
                             "alias": "my-php",
                             "autoscalingPolicy": "autoscaling-policy-1",
@@ -48,6 +49,7 @@
                 "type": "tomcat",
                 "cartridgeMin": 2,
                 "cartridgeMax": 4,
+                "lvsVirtualIP": "192.168.56.50",
                 "subscribableInfo": {
                     "alias": "my-tomcat",
                     "autoscalingPolicy": "autoscaling-policy-1",

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/mock/php.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/mock/php.json b/samples/cartridges/mock/php.json
index 393986a..5d53e3a 100755
--- a/samples/cartridges/mock/php.json
+++ b/samples/cartridges/mock/php.json
@@ -11,7 +11,7 @@
         {
             "name": "http-80",
             "protocol": "http",
-            "port": "80",
+            "port": "8080",
             "proxyPort": "8280"
         },
         {

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/mock/tomcat.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/mock/tomcat.json 
b/samples/cartridges/mock/tomcat.json
index 661f96b..395687d 100755
--- a/samples/cartridges/mock/tomcat.json
+++ b/samples/cartridges/mock/tomcat.json
@@ -13,6 +13,11 @@
             "protocol": "http",
             "port": "22",
             "proxyPort": "8280"
+        },
+        {
+            "protocol": "http",
+            "port": "8080",
+            "proxyPort": "80"
         }
     ],
     "deployment": {

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/openstack/php.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/openstack/php.json 
b/samples/cartridges/openstack/php.json
index 66d682f..bc07515 100755
--- a/samples/cartridges/openstack/php.json
+++ b/samples/cartridges/openstack/php.json
@@ -11,7 +11,7 @@
         {
             "name": "http-80",
             "protocol": "http",
-            "port": "80",
+            "port": "8080",
             "proxyPort": "8280"
         }
     ],
@@ -23,17 +23,22 @@
             "imageId": "RegionOne/b4ca55e3-58ab-4937-82ce-817ebd10240e",
             "networkInterfaces": [
                 {
+<<<<<<< HEAD
                     "networkUuid": "b55f009a-1cc6-4b17-924f-4ae0ee18db5e"
+=======
+                    "name": "network-routable",
+                    "networkUuid": "512e1f54-1e85-4dac-b2e6-f0b30fc552cf"
+>>>>>>> f5bb41e... Update the INSTALL.md file and samples
                 }
             ],
             "property": [
                 {
                     "name": "instanceType",
-                    "value": "RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594"
+                    "value": "RegionOne/15c3065c-462c-4977-9143-094d63d1c2c7"
                 },
                 {
                     "name": "keyPair",
-                    "value": "vishanth-key"
+                    "value": "gayan-os"
                 },
                 {
                     "name": "securityGroups",

http://git-wip-us.apache.org/repos/asf/stratos/blob/956a6688/samples/cartridges/openstack/tomcat.json
----------------------------------------------------------------------
diff --git a/samples/cartridges/openstack/tomcat.json 
b/samples/cartridges/openstack/tomcat.json
index f02ec8c..94928d5 100755
--- a/samples/cartridges/openstack/tomcat.json
+++ b/samples/cartridges/openstack/tomcat.json
@@ -13,6 +13,11 @@
             "protocol": "http",
             "port": "22",
             "proxyPort": "8280"
+        },
+        {
+            "protocol": "http",
+            "port": "8080",
+            "proxyPort": "80"
         }
     ],
     "deployment": {
@@ -20,6 +25,7 @@
     "iaasProvider": [
         {
             "type": "openstack",
+<<<<<<< HEAD
             "imageId": "RegionOne/4c812285-d761-4208-b4b3-d453eace5aff",
             "networkInterfaces": [
                 {
@@ -39,6 +45,28 @@
                     "name": "securityGroups",
                     "value": "default"
                 }
+=======
+            "imageId": "RegionOne/4c812285-d761-4208-b4b3-d453eace5aff",      
+           "networkInterfaces":[
+                   {
+                      "name":"network-non-routable",
+                      "networkUuid":"b55f009a-1cc6-4b17-924f-4ae0ee18db5e"
+                   }
+                ],
+            "property": [
+           {
+               "name":"instanceType",
+               "value":"RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594"
+            },
+            {
+               "name":"keyPair",
+               "value":"gayan-os"
+            },
+            {
+               "name":"securityGroups",
+               "value":"default"
+            }
+>>>>>>> f5bb41e... Update the INSTALL.md file and samples
             ]
         }
     ]

Reply via email to