Repository: stratos
Updated Branches:
  refs/heads/docker-integration 76e425dca -> d1ebdc603


http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/products/stratos/modules/distribution/pom.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/pom.xml 
b/products/stratos/modules/distribution/pom.xml
index 34a600a..59a85d5 100755
--- a/products/stratos/modules/distribution/pom.xml
+++ b/products/stratos/modules/distribution/pom.xml
@@ -485,6 +485,11 @@
             <artifactId>org.apache.stratos.cep.extension</artifactId>
             <version>4.1.0-SNAPSHOT</version>
         </dependency>
+         <dependency>
+                       <groupId>org.eclipse.paho</groupId>
+                       <artifactId>mqtt-client</artifactId>
+                       <version>0.4.0</version>
+                </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/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 c2e82d3..cef5a88 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -576,7 +576,8 @@
                 <include>org.apache.activemq:activemq-client:jar</include>
                 
<include>org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar</include>
                 <include>org.fusesource.hawtbuf:hawtbuf:jar</include>
-                
<include>org.apache.stratos:org.apache.stratos.kubernetes.client:jar</include>
+                <include>org.eclipse.paho:mqtt-client:jar</include>
+               
<include>org.apache.stratos:org.apache.stratos.kubernetes.client:jar</include>
                <include>org.jboss.resteasy:resteasy-jaxrs:jar</include>
                <include>org.jboss.resteasy:resteasy-jaxb-provider:jar</include>
                
<include>org.jboss.resteasy:resteasy-jackson-provider:jar</include>

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/.gitmodules
----------------------------------------------------------------------
diff --git a/tools/.gitmodules b/tools/.gitmodules
new file mode 100644
index 0000000..53ebd0b
--- /dev/null
+++ b/tools/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "cartridge_agent"]
+       path = cartridge_agent
+       url = ./python-cartridge-agent/cartridge_agent

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/cartridge_agent
----------------------------------------------------------------------
diff --git a/tools/cartridge_agent b/tools/cartridge_agent
new file mode 160000
index 0000000..66e5047
--- /dev/null
+++ b/tools/cartridge_agent
@@ -0,0 +1 @@
+Subproject commit 66e50479db36f0c11e539ea3f8c3bc68ad5d9d6c

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/agent.properties
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/agent.properties 
b/tools/python-cartridge-agent/cartridge-agent/agent.properties
new file mode 100644
index 0000000..f9724fc
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/agent.properties
@@ -0,0 +1,47 @@
+[agent]
+mb.ip                                 =MB-IP
+mb.port                               =MB-PORT
+listen.address                        =localhost
+thrift.receiver.ip                    =CEP-IP
+thrift.receiver.port                  =CEP-PORT
+jndi.properties.template.file.path    
=${script_path}/../conf/templates/jndi.properties.template
+jndi.properties.dir                   =${script_path}/../conf
+log4j.configuration                   
=file://${script_path}/../conf/log4j.properties
+param.file.path                       =${script_path}/../payload/launch-params
+extensions.dir                        =${script_path}/../extensions
+cep.stats.publisher.enabled           =true
+lb.private.ip                         =
+lb.public.ip                          =
+javax.net.ssl.trustStore              =CERT-TRUSTSTORE
+javax.net.ssl.trustStorePassword      =TRUSTSTORE-PASSWORD
+enable.artifact.update                =true
+auto.commit                           =false
+auto.checkout                         =true
+artifact.update.interval              =15
+enable.data.publisher                 =ENABLE-DATA-PUBLISHER
+monitoring.server.ip                  =MONITORING-SERVER-IP
+monitoring.server.port                =MONITORING-SERVER-PORT
+monitoring.server.secure.port         =MONITORING-SERVER-SECURE-PORT
+monitoring.server.admin.username      =MONITORING-SERVER-ADMIN-USERNAME
+monitoring.server.admin.password      =MONITORING-SERVER-ADMIN-PASSWORD
+log.file.paths                        =LOG_FILE_PATHS
+APP_PATH                              =APP_PATH
+super.tenant.repository.path          =/repository/deployment/server/
+tenant.repository.path                =/repository/tenants/
+extension.instance.started            =instance-started.sh
+extension.start.servers               =start-servers.sh
+extension.instance.activated          =instance-activated.sh
+extension.artifacts.updated           =artifacts-updated.sh
+extension.clean                       =clean.sh
+extension.mount.volumes               =mount_volumes.sh
+extension.member.started              =member-started.sh
+extension.member.activated            =member-activated.sh
+extension.member.suspended            =member-suspended.sh
+extension.member.terminated           =member-terminated.sh
+extension.complete.topology           =complete-topology.sh
+extension.complete.tenant             =complete-tenant.sh
+extension.subscription.domain.added   =subscription-domain-added.sh
+extension.subscription.domain.removed =subscription-domain-removed.sh
+extension.artifacts.copy              =artifacts-copy.sh
+extension.tenant.subscribed           =tenant-subscribed.sh
+extension.tenant.unsubscribed         =tenant-unsubscribed.sh
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/agent.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/agent.py 
b/tools/python-cartridge-agent/cartridge-agent/agent.py
new file mode 100644
index 0000000..40b7e49
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/agent.py
@@ -0,0 +1,272 @@
+#!/usr/bin/env python
+import stomp
+import time
+import logging
+import sys
+import random
+import os
+import threading
+import socket
+import json
+import extensionhandler
+import util
+import subprocess
+import ConfigParser
+
+# Parse properties file
+properties = ConfigParser.SafeConfigParser()
+properties.read('agent.properties')
+
+#TODO: check from properties file
+util.validateRequiredSystemProperties()
+
+payloadPath=sys.argv[1]
+extensionsDir=sys.argv[2]
+extensionhandler.onArtifactUpdatedEvent(extensionsDir,'artifacts-updated.sh')
+
+fo = open(payloadPath, "r+")
+str = fo.read(1000);
+
+print "Read String is : ", str
+
+sd = dict(u.split("=") for u in str.split(","))
+
+print [i for i in sd.keys()]
+
+
+print "HOST_NAME   ", sd['HOST_NAME']
+
+hostname=sd['HOST_NAME']
+service_name=sd['SERVICE_NAME']
+multitenant=sd['MULTITENANT']
+tenant_id=sd['TENANT_ID']
+tenantrange=sd['TENANT_RANGE']
+cartridealies=sd['CARTRIDGE_ALIAS']
+cluster_id=sd['CLUSTER_ID']
+cartridge_key=sd['CARTRIDGE_KEY']
+deployement=sd['DEPLOYMENT']
+repourl=sd['REPO_URL']
+ports=sd['PORTS']
+puppetip=sd['PUPPET_IP']
+puppethostname=sd['PUPPET_HOSTNAME']
+puppetenv=sd['PUPPET_ENV']
+persistance_mapping = sd['PERSISTENCE_MAPPING'] if 'PERSISTENCE_MAPPING' in sd 
else None
+
+if 'COMMIT_ENABLED' in sd:
+    commitenabled=sd['COMMIT_ENABLED']
+
+if 'DB_HOST' in sd:
+    dbhost=sd['DB_HOST']
+
+if multitenant == "true":
+    app_path = sd['APP_PATH']
+else:
+    app_path = ""
+
+env_params = {}
+env_params['STRATOS_APP_PATH']= app_path
+env_params['STRATOS_PARAM_FILE_PATH']=properties.get("agent", 
"param.file.path")
+env_params['STRATOS_SERVICE_NAME']=service_name
+env_params['STRATOS_TENANT_ID']=tenant_id
+env_params['STRATOS_CARTRIDGE_KEY']=cartridge_key
+env_params['STRATOS_LB_CLUSTER_ID']=sd['LB_CLUSTER_ID']
+env_params['STRATOS_CLUSTER_ID']=cluster_id
+env_params['STRATOS_NETWORK_PARTITION_ID']=sd['NETWORK_PARTITION_ID']
+env_params['STRATOS_PARTITION_ID']=sd['PARTITION_ID']
+env_params['STRATOS_PERSISTENCE_MAPPINGS']=persistance_mapping
+env_params['STRATOS_REPO_URL']=sd['REPO_URL']
+# envParams['STRATOS_LB_IP']=
+# envParams['STRATOS_LB_PUBLIC_IP']=
+# envParams['']=
+# envParams['']=
+# envParams['']=
+# envParams['']=
+
+extensionhandler.onInstanceStartedEvent(extensionsDir, 
'instance-started.sh.erb', multitenant, 'artifacts-copy.sh.erb', app_path, 
env_params)
+
+
+def runningSuspendScript():
+    print "inside thread"
+    os.system('./script.sh')
+def MyThread2():
+    pass
+
+def listeningTopology():
+    class MyListener(stomp.ConnectionListener):
+        def on_error(self, headers, message):
+            print('received an error %s' % message)
+        def on_message(self, headers, message):
+           # print('received message\n %s'% message)
+            for k,v in headers.iteritems():
+                print('header: key %s , value %s' %(k,v))
+           
+                if k=='event-class-name':
+                    print('event class name found')
+                    if 
v=='org.apache.stratos.messaging.event.topology.CompleteTopologyEvent':
+                        print('CompleteTopologyEvent triggered')
+                        print('received message\n %s'% message)
+                    if 
v=='org.apache.stratos.messaging.event.topology.MemberTerminatedEvent':
+                        print('MemberTerminatedEvent triggered')
+                    if 
v=='org.apache.stratos.messaging.event.topology.ServiceCreatedEvent':
+                        print('MemberTerminatedEvent triggered')
+                    if 
v=='org.apache.stratos.messaging.event.topology.InstanceSpawnedEvent':
+                        print('MemberTerminatedEvent triggered')
+                        print('received message\n %s'% message)
+                    if 
v=='org.apache.stratos.messaging.event.topology.ClusterCreatedEvent':
+                        print('MemberTerminatedEvent triggered')
+                    if 
v=='org.apache.stratos.messaging.event.topology.InstanceSpawnedEvent':
+                        print('MemberTerminatedEvent triggered')
+                    else: 
+                        print('something else')
+           
+
+
+    dest='/topic/topology'
+    conn=stomp.Connection([('localhost',61613)])
+    print('set up Connection')
+    conn.set_listener('somename',MyListener())
+    print('Set up listener')
+
+    conn.start()
+    print('started connection')
+
+    conn.connect(wait=True)
+    print('connected')
+    conn.subscribe(destination=dest, ack='auto')
+    print('subscribed')
+
+
+def listeningInstanceNotifier():
+    class MyListener(stomp.ConnectionListener):
+        def on_error(self, headers, message):
+            print('received an error %s' % message)
+        def on_message(self, headers, message):
+            for k,v in headers.iteritems():
+                print('header: key %s , value %s' %(k,v))
+                if k=='event-class-name':
+                    print('event class name found')
+                    if 
v=='org.apache.stratos.messaging.listener.instance.notifier.ArtifactUpdateEvent':
+                        print('ArtifactUpdateEvent triggered')
+                        print('received message\n %s'% message)
+                    if 
v=='org.apache.stratos.messaging.listener.instance.notifier.InstanceCleanupMemberEvent':
+                        print('MemberTerminatedEvent triggered')
+                    if 
v=='org.apache.stratos.messaging.listener.instance.notifier.InstanceCleanupClusterEvent':
+                        print('MemberTerminatedEvent triggered')
+                    else: 
+                        print('something else')
+            print('received message\n %s'% message)
+
+
+    dest='/topic/instance-notifier'
+    conn=stomp.Connection([('localhost',61613)])
+    print('set up Connection')
+    conn.set_listener('somename',MyListener())
+    print('Set up listener')
+
+    conn.start()
+    print('started connection')
+
+    conn.connect(wait=True)
+    print('connected')
+    conn.subscribe(destination=dest, ack='auto')
+    print('subscribed')
+
+
+
+def publishInstanceStartedEvent():
+    class MyListener(stomp.ConnectionListener):
+        def on_error(self, headers, message):
+            print('received an error %s' % message)
+        def on_message(self, headers, message):
+            for k,v in headers.iteritems():
+                print('header: key %s , value %s' %(k,v))
+            print('received message\n %s'% message)
+
+
+    dest='/topic/instance-status'
+    conn=stomp.Connection([('localhost',61613)])
+    print('set up Connection')
+
+
+    conn.start()
+    print('started connection')
+
+    conn.connect(wait=True)
+    print('connected')
+    conn.subscribe(destination=dest, ack='auto')
+    print('subscribed')
+
+    
message=InstanceStartedEvent(service_name,cluster_id,'','',tenant_id).to_JSON()
+    conn.send(message=message, 
destination=dest,headers={'seltype':'mandi-age-to-man','type':'textMessage','MessageNumber':random.randint(0,65535),'event-class-name':'org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent'},ack='auto')
+    print('sent message')
+    print(message)
+    time.sleep(2)
+    print('slept')
+    conn.disconnect()
+    print('disconnected')
+
+
+def checkPortsActive():
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    result = sock.connect_ex(('127.0.0.1',80))
+    if result == 0:
+       print "Port is open"
+    else:
+       print "Port is not open"
+
+
+class InstanceStartedEvent:
+    serviceName=''
+    def __init__(self, 
serviceName,clusterId,networkPartitionId,partitionId,memberId):
+        self.serviceName = serviceName
+        self.clusterId = clusterId
+        self.networkPartitionId = networkPartitionId
+        self.partitionId = partitionId
+        self.memberId = memberId
+    def to_JSON(self):
+        return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, 
indent=4)
+
+def onInstanceStartedEvent():
+    print('on instance start up event')
+    event = InstanceStartedEvent(service_name,cluster_id,'','',tenant_id)
+    print(event.to_JSON())
+
+
+def onArtifactUpdatedEvent():
+    print('on srtifcats update event')
+
+
+t1 = threading.Thread(target=runningSuspendScript, args=[])
+
+t1.start()
+
+t2 = threading.Thread(target=listeningInstanceNotifier, args=[])
+
+t2.start()
+
+t3 = threading.Thread(target=listeningTopology, args=[])
+
+t3.start()
+
+
+
+onInstanceStartedEvent()
+
+checkPortsActive()
+
+publishInstanceStartedEvent()
+
+extensionhandler.startServerExtension()
+
+
+def git(*args):
+    return subprocess.check_call(['git'] + list(args))
+
+# examples
+git("status")
+git("clone", "git://git.xyz.com/platform/manifest.git", "-b", "jb_2.5")
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/agent.sh
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/agent.sh 
b/tools/python-cartridge-agent/cartridge-agent/agent.sh
new file mode 100644
index 0000000..15b4759
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/agent.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+param_path="/home/gayan/Resources/Stratos/payload/launch-params"
+extension_path="/home/gayan/Resources/Stratos/extentions"
+
+python agent.py $param_path $extension_path
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/agent1.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/agent1.py 
b/tools/python-cartridge-agent/cartridge-agent/agent1.py
new file mode 100644
index 0000000..cf9dda1
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/agent1.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+import stomp
+import time
+import logging
+import sys
+import random
+import os
+import threading
+import socket
+
+payloadPath="/home/gayan/Resources/Stratos/payload/launch-params";
+extensionsDir="/home/gayan/Resources/Stratos/extentions"
+mbip=""
+mbport=""
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/extensionhandler.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/extensionhandler.py 
b/tools/python-cartridge-agent/cartridge-agent/extensionhandler.py
new file mode 100644
index 0000000..b021d5f
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/extensionhandler.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+import stomp
+import time
+import logging
+import sys
+import random
+import os
+import threading
+import socket
+import json
+from subprocess import Popen,PIPE
+
+
+def onArtifactUpdatedEvent(extenstionpath,scriptname):
+    
Process=Popen([os.path.join(extenstionpath,scriptname),str('php')],shell=True,stdin=PIPE,stderr=PIPE)
+    print Process.communicate() #now you should see your output
+   # os.system()
+
+def onInstanceCleanupMemberEvent(extenstionpath,scriptname):
+    
Process=Popen([os.path.join(extenstionpath,scriptname),str('php')],shell=True,stdin=PIPE,stderr=PIPE)
+    print Process.communicate()
+
+def onInstanceCleanupClusterEvent(extenstionpath,scriptname):
+    
Process=Popen([os.path.join(extenstionpath,scriptname),str('php')],shell=True,stdin=PIPE,stderr=PIPE)
+    print Process.communicate()
+
+def startServerExtension():
+    print('=================================startServerExtension')
+
+def onInstanceStartedEvent(extensionpath, scriptname, multitenant, 
copyartifactscriptname, apppath, envparams):
+    print('=================================onInstanceStartedEvent')
+    #if ismultitenant
+    #   execute copy artifact extension
+
+    if multitenant == "true":
+        Process = Popen([os.path.join(extensionpath, copyartifactscriptname), 
apppath + "/repository/deployment/server/", "/tmp/-1234/"], shell=True, 
stdin=PIPE, stderr=PIPE)
+        print Process.communicate();
+
+    #addPayloadParams()
+    Process = Popen([os.path.join(extensionpath, scriptname), envparams], 
shell=True, stdin=PIPE, stderr=PIPE)
+    print Process.communicate();
+
+    #execute instance started extension with empty map
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/extensionhandler.pyc
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/extensionhandler.pyc 
b/tools/python-cartridge-agent/cartridge-agent/extensionhandler.pyc
new file mode 100644
index 0000000..0dc2e36
Binary files /dev/null and 
b/tools/python-cartridge-agent/cartridge-agent/extensionhandler.pyc differ

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/readme.txt
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/readme.txt 
b/tools/python-cartridge-agent/cartridge-agent/readme.txt
new file mode 100644
index 0000000..65c3e8c
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/readme.txt
@@ -0,0 +1,2 @@
+sudo apt-get install python-setuptools
+easy_install http://stomppy.googlecode.com/files/stomp.py-3.0.2a.tar.gz

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/script.sh
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/script.sh 
b/tools/python-cartridge-agent/cartridge-agent/script.sh
new file mode 100755
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/util.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/util.py 
b/tools/python-cartridge-agent/cartridge-agent/util.py
new file mode 100644
index 0000000..b52ff84
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/util.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import stomp
+import time
+import logging
+import sys
+import random
+import os
+import threading
+import socket
+import json
+import extensionhandler
+    
+
+def validateRequiredSystemProperties():
+    
+    if sys.argv[1] is None:
+        print('System property param path not found')
+        return
+    if sys.argv[2] is None:
+        print('System property extension dir path not found')
+        return
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/bc78b9dc/tools/python-cartridge-agent/cartridge-agent/util.pyc
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/util.pyc 
b/tools/python-cartridge-agent/cartridge-agent/util.pyc
new file mode 100644
index 0000000..42553c9
Binary files /dev/null and 
b/tools/python-cartridge-agent/cartridge-agent/util.pyc differ

Reply via email to