You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/10/11 11:09:33 UTC

[08/50] [abbrv] git commit: Restructured modules to suit relative imports

Restructured modules to suit relative imports


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

Branch: refs/heads/master
Commit: ed08e2d3feac5aad4eae676a1311acf6a5181625
Parents: 1e8ad22
Author: Chamila de Alwis <ch...@wso2.com>
Authored: Tue Sep 23 14:03:46 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 14:38:28 2014 +0530

----------------------------------------------------------------------
 .../cartridge-agent/__init__.py                 |   1 -
 .../cartridge-agent/agent.py                    |  16 +-
 .../cartridge-agent/agent.sh                    |   8 -
 .../cartridge-agent/agent1.py                   |  15 -
 .../cartridge-agent/artifactmgt/__init__.py     |   1 -
 .../cartridge-agent/artifactmgt/git/__init__.py |   1 -
 .../artifactmgt/git/agentgithandler.py          | 147 ---------
 .../artifactmgt/git/gitrepository.py            |  12 -
 .../artifactmgt/repositoryinformation.py        |  13 -
 .../cartridge-agent/config/__init__.py          |   1 -
 .../config/cartridgeagentconfiguration.py       | 297 ------------------
 .../cartridge-agent/event/__init__.py           |   1 -
 .../cartridge-agent/event/instance/__init__.py  |   1 -
 .../event/instance/notifier/__init__.py         |   1 -
 .../event/instance/notifier/events.py           |  50 ----
 .../event/instance/status/__init__.py           |   1 -
 .../event/instance/status/events.py             |  25 --
 .../cartridge-agent/event/tenant/__init__.py    |   1 -
 .../cartridge-agent/event/tenant/events.py      |  98 ------
 .../cartridge-agent/exception/__init__.py       |   1 -
 .../exception/parameternotfoundexception.py     |   9 -
 .../cartridge-agent/extensionhandler.py         |  88 +++---
 .../cartridge-agent/extensions/__init__.py      |   1 -
 .../extensions/defaultextensionhandler.py       | 148 ---------
 .../cartridge-agent/modules/__init__.py         |   0
 .../cartridge-agent/modules/__init__.pyc        | Bin 0 -> 194 bytes
 .../modules/artifactmgt/__init__.py             |   1 +
 .../modules/artifactmgt/git/__init__.py         |   1 +
 .../modules/artifactmgt/git/agentgithandler.py  | 148 +++++++++
 .../modules/artifactmgt/git/gitrepository.py    |  12 +
 .../artifactmgt/repositoryinformation.py        |  13 +
 .../cartridge-agent/modules/config/__init__.py  |   1 +
 .../cartridge-agent/modules/config/__init__.pyc | Bin 0 -> 254 bytes
 .../config/cartridgeagentconfiguration.py       | 298 +++++++++++++++++++
 .../config/cartridgeagentconfiguration.pyc      | Bin 0 -> 17633 bytes
 .../cartridge-agent/modules/event/__init__.py   |   1 +
 .../modules/event/instance/__init__.py          |   1 +
 .../modules/event/instance/notifier/__init__.py |   1 +
 .../modules/event/instance/notifier/events.py   |  50 ++++
 .../modules/event/instance/status/__init__.py   |   1 +
 .../modules/event/instance/status/events.py     |  25 ++
 .../modules/event/tenant/__init__.py            |   1 +
 .../modules/event/tenant/events.py              |  98 ++++++
 .../modules/exception/__init__.py               |   1 +
 .../modules/exception/__init__.pyc              | Bin 0 -> 256 bytes
 .../exception/parameternotfoundexception.py     |   9 +
 .../exception/parameternotfoundexception.pyc    | Bin 0 -> 1133 bytes
 .../modules/extensions/__init__.py              |   1 +
 .../extensions/defaultextensionhandler.py       | 148 +++++++++
 .../modules/publisher/__init__.py               |   1 +
 .../publisher/cartridgeagentpublisher.py        |  90 ++++++
 .../modules/subscriber/__init__.py              |   1 +
 .../modules/subscriber/eventsubscriber.py       |  62 ++++
 .../cartridge-agent/modules/util/__init__.py    |   1 +
 .../cartridge-agent/modules/util/__init__.pyc   | Bin 0 -> 297 bytes
 .../modules/util/cartridgeagentconstants.py     |  88 ++++++
 .../modules/util/cartridgeagentconstants.pyc    | Bin 0 -> 3917 bytes
 .../modules/util/cartridgeagentutils.py         |  94 ++++++
 .../modules/util/cartridgeagentutils.pyc        | Bin 0 -> 3924 bytes
 .../modules/util/extensionutils.py              |  40 +++
 .../cartridge-agent/publisher/__init__.py       |   1 -
 .../publisher/cartridgeagentpublisher.py        |  88 ------
 .../cartridge-agent/readme.txt                  |   2 -
 .../cartridge-agent/script.sh                   |   0
 .../cartridge-agent/subscriber/__init__.py      |   1 -
 .../subscriber/eventsubscriber.py               |  62 ----
 .../cartridge-agent/util/__init__.py            |   1 -
 .../util/cartridgeagentconstants.py             |  88 ------
 .../cartridge-agent/util/cartridgeagentutils.py |  94 ------
 .../cartridge-agent/util/extensionutils.py      |  40 ---
 70 files changed, 1240 insertions(+), 1262 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/__init__.py b/tools/python-cartridge-agent/cartridge-agent/__init__.py
index 0de6991..e69de29 100644
--- a/tools/python-cartridge-agent/cartridge-agent/__init__.py
+++ b/tools/python-cartridge-agent/cartridge-agent/__init__.py
@@ -1 +0,0 @@
-__author__ = 'chamilad'

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/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
index 7108801..0dfecb2 100644
--- a/tools/python-cartridge-agent/cartridge-agent/agent.py
+++ b/tools/python-cartridge-agent/cartridge-agent/agent.py
@@ -3,14 +3,14 @@ import logging
 import threading
 import time
 
-from config.cartridgeagentconfiguration import CartridgeAgentConfiguration
-from util import *
-from exception.parameternotfoundexception import ParameterNotFoundException
-from subscriber.eventsubscriber import EventSubscriber
-from extensions.defaultextensionhandler import DefaultExtensionHandler
-from publisher import cartridgeagentpublisher
-from event.instance.notifier.events import *
-from event.tenant.events import *
+from modules.config.cartridgeagentconfiguration import CartridgeAgentConfiguration
+from modules.util import *
+from modules.exception.parameternotfoundexception import ParameterNotFoundException
+from modules.subscriber.eventsubscriber import EventSubscriber
+from modules.extensions.defaultextensionhandler import DefaultExtensionHandler
+from modules.publisher import cartridgeagentpublisher
+from modules.event.instance.notifier.events import *
+from modules.event.tenant.events import *
 
 
 class CartridgeAgent(threading.Thread):

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/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
deleted file mode 100644
index 15b4759..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/agent.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/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/ed08e2d3/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
deleted file mode 100644
index cf9dda1..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/agent1.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/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/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/artifactmgt/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/__init__.py b/tools/python-cartridge-agent/cartridge-agent/artifactmgt/__init__.py
deleted file mode 100644
index b1e49e4..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__=['repositoryinformation']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/__init__.py b/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/__init__.py
deleted file mode 100644
index 372e725..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__=['agentgithandler', 'gitrepository']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/agentgithandler.py b/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/agentgithandler.py
deleted file mode 100644
index 9c27f68..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/agentgithandler.py
+++ /dev/null
@@ -1,147 +0,0 @@
-from git import *
-import gitrepository
-import logging
-
-from ...config.cartridgeagentconfiguration import CartridgeAgentConfiguration
-from ...util import cartridgeagentutils
-
-
-class AgentGitHandler:
-    logging.basicConfig(level=logging.DEBUG)
-    log = logging.getLogger(__name__)
-
-    SUPER_TENANT_ID = -1234
-    SUPER_TENANT_REPO_PATH = "/repository/deployment/server/"
-    TENANT_REPO_PATH = "/repository/tenants/"
-
-    cartridge_agent_config = CartridgeAgentConfiguration()
-
-    __git_repositories = {}
-    # (tenant_id => gitrepository.GitRepository)
-
-    @staticmethod
-    def checkout(repo_info):
-        repo_context = AgentGitHandler.get_repo_context(repo_info.tenant_id)
-        if repo_context is not None:
-            #has been previously cloned, this is not the subscription run
-            cloned = True
-            #TODO: handle conflicts and errors using repo.git.pull(), status(), checkout() outputs
-            AgentGitHandler.log.debug("Existing git repository detected for tenant %r, no clone required" % repo_info.tenant_id)
-            AgentGitHandler.pull(repo_context)
-        else:
-            #subscribing run.. need to clone
-            cloned = False
-            repo_context = AgentGitHandler.create_git_repo_context(repo_info)
-            AgentGitHandler.clone(repo_context)
-
-        return {"cloned": cloned, "repo_context": repo_context}
-
-    @staticmethod
-    def pull(repo_context):
-        #create repo object
-        repo = Repo(repo_context.local_repo_path)
-        repo.remotes.origin.pull()
-
-        # TODO: handle conflict errors
-
-
-    @staticmethod
-    def clone(repo_context):
-        try:
-            repo = Repo.clone_from(repo_context.repo_url, repo_context.local_repo_path)
-            repo_context.cloned = True
-            AgentGitHandler.add_repo_context(repo_context)
-            AgentGitHandler.log.info("Git clone operation for tenant %r successful" % repo_context.tenant_id)
-        except GitCommandError as ex:
-            if "remote: Repository not found." in ex.message:
-                AgentGitHandler.log.exception("Accessing remote git repository failed for tenant %r" % repo_context.tenant_id)
-                #GitPython deletes the target folder if remote not found
-                cartridgeagentutils.create_dir(repo_context.local_repo_path)
-            else:
-                AgentGitHandler.log.exception("Git clone operation for tenant %r failed" % repo_context.tenant_id)
-
-    @staticmethod
-    def add_repo_context(repo_context):
-        AgentGitHandler.__git_repositories[repo_context.tenant_id] = repo_context
-
-    @staticmethod
-    def get_repo_context(tenant_id):
-        if tenant_id in AgentGitHandler.__git_repositories:
-            return AgentGitHandler.__git_repositories[tenant_id]
-
-        return None
-
-    @staticmethod
-    def remove_repo_context(tenant_id):
-        if tenant_id in AgentGitHandler.__git_repositories:
-            del AgentGitHandler.__git_repositories[tenant_id]
-
-    @staticmethod
-    def create_git_repo_context(repo_info):
-        repo_context = gitrepository.GitRepositoryContext()
-        repo_context.tenant_id = repo_info.tenant_id
-        repo_context.local_repo_path = AgentGitHandler.get_repo_path_for_tenant(
-            repo_info.tenant_id, repo_info.repo_path, repo_info.is_multitenant)
-        repo_context.repo_url = repo_info.repo_url
-        repo_context.repo_username = repo_info.repo_username
-        repo_context.repo_password = repo_info.repo_password
-
-        # TODO: push
-        # push not implemented
-        # if is_key_based_auth(repo_info.repo_url, tenant_id):
-        #     repo.key_based_auth = True
-        #     init_ssh_auth()
-        # else:
-        #     repo.key_based_auth = False
-
-        repo_context.cloned = False
-
-        return repo_context
-
-    # @staticmethod
-    # def is_key_based_auth(repo_url, tenant_id):
-
-
-    @staticmethod
-    def get_repo_path_for_tenant(tenant_id, git_local_repo_path, is_multitenant):
-        repo_path = ""
-
-        if is_multitenant:
-            if tenant_id == AgentGitHandler.SUPER_TENANT_ID:
-                #super tenant, /repository/deploy/server/
-                super_tenant_repo_path = AgentGitHandler.cartridge_agent_config.get_super_tenant_repo_path()
-                #"app_path"
-                repo_path += git_local_repo_path
-
-                if super_tenant_repo_path is not None  and super_tenant_repo_path != "":
-                    super_tenant_repo_path = super_tenant_repo_path if super_tenant_repo_path.startswith("/") else "/" + super_tenant_repo_path
-                    super_tenant_repo_path = super_tenant_repo_path if super_tenant_repo_path.endswith("/") else  super_tenant_repo_path + "/"
-                    #"app_path/repository/deploy/server/"
-                    repo_path += super_tenant_repo_path
-                else:
-                    #"app_path/repository/deploy/server/"
-                    repo_path += AgentGitHandler.SUPER_TENANT_REPO_PATH
-
-            else:
-                #normal tenant, /repository/tenants/tenant_id
-                tenant_repo_path = AgentGitHandler.cartridge_agent_config.get_tenant_repo_path()
-                #"app_path"
-                repo_path += git_local_repo_path
-
-                if tenant_repo_path is not None and tenant_repo_path != "":
-                    tenant_repo_path = tenant_repo_path if tenant_repo_path.startswith("/") else "/" + tenant_repo_path
-                    tenant_repo_path = tenant_repo_path if tenant_repo_path.endswith("/") else tenant_repo_path + "/"
-                    #"app_path/repository/tenants/244653444"
-                    repo_path += tenant_repo_path + tenant_id
-                else:
-                    #"app_path/repository/tenants/244653444"
-                    repo_path += AgentGitHandler.TENANT_REPO_PATH + tenant_id
-
-                #tenant_dir_path = git_local_repo_path + AgentGitHandler.TENANT_REPO_PATH + tenant_id
-                cartridgeagentutils.create_dir(repo_path)
-        else:
-            #not multi tenant, app_path
-            repo_path = git_local_repo_path
-
-        AgentGitHandler.log.debug("Repo path returned : %r" % repo_path)
-        return repo_path
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/gitrepository.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/gitrepository.py b/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/gitrepository.py
deleted file mode 100644
index 12ce591..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/git/gitrepository.py
+++ /dev/null
@@ -1,12 +0,0 @@
-class GitRepositoryContext:
-
-    def __init__(self):
-        self.repo_url = None
-        self.local_repo_path = None
-        self.cloned = False
-        self.repo = None
-        self.tenant_id = None
-        self.key_based_auth = False
-        self.repo_username = None
-        self.repo_password = None
-        #scheduled update service
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/artifactmgt/repositoryinformation.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/repositoryinformation.py b/tools/python-cartridge-agent/cartridge-agent/artifactmgt/repositoryinformation.py
deleted file mode 100644
index d30c319..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/artifactmgt/repositoryinformation.py
+++ /dev/null
@@ -1,13 +0,0 @@
-class RepositoryInformation:
-    """
-    Holds repository information to be used in artifact management
-    """
-
-    def __init__(self, repo_url, repo_username, repo_password, repo_path, tenant_id, is_multitenant, commit_enabled):
-        self.repo_url = repo_url
-        self.repo_username = repo_username
-        self.repo_password = repo_password
-        self.repo_path = repo_path
-        self.tenant_id = tenant_id
-        self.is_multitenant = is_multitenant
-        self.commit_enabled = commit_enabled
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/config/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/config/__init__.py b/tools/python-cartridge-agent/cartridge-agent/config/__init__.py
deleted file mode 100644
index 836c3ab..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/config/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__=['cartridgeagentconfiguration']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/config/cartridgeagentconfiguration.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/config/cartridgeagentconfiguration.py b/tools/python-cartridge-agent/cartridge-agent/config/cartridgeagentconfiguration.py
deleted file mode 100644
index a57c0ca..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/config/cartridgeagentconfiguration.py
+++ /dev/null
@@ -1,297 +0,0 @@
-import ConfigParser
-import logging
-
-from ..util import cartridgeagentconstants
-from ..exception.parameternotfoundexception import ParameterNotFoundException
-
-
-class CartridgeAgentConfiguration:
-    class __CartridgeAgentConfiguration:
-
-        def __init__(self):
-            # set log level
-            logging.basicConfig(level=logging.DEBUG)
-            self.log = logging.getLogger(__name__)
-
-            self.__read_conf_file()
-            self.__read_parameter_file()
-
-            try:
-                self.__service_group = self.payload_params[cartridgeagentconstants.SERVICE_GROUP] \
-                    if cartridgeagentconstants.SERVICE_GROUP in self.payload_params \
-                    else None
-
-                if cartridgeagentconstants.CLUSTERING in self.payload_params and \
-                                str(self.payload_params[cartridgeagentconstants.CLUSTERING]).strip().lower() == "true":
-                    self.__isClustered = True
-                else:
-                    self.__isClustered = False
-                # self.__isClustered = self.payload_params[
-                #     cartridgeagentconstants.CLUSTERING] if cartridgeagentconstants.CLUSTERING in self.payload_params else None
-
-                self.__service_name = self.read_property(cartridgeagentconstants.SERVICE_NAME)
-                self.__cluster_id = self.read_property(cartridgeagentconstants.CLUSTER_ID)
-                self.__network_partition_id = self.read_property(cartridgeagentconstants.NETWORK_PARTITION_ID)
-                self.__partitionId = self.read_property(cartridgeagentconstants.PARTITION_ID)
-                self.__memberId = self.read_property(cartridgeagentconstants.MEMBER_ID)
-                self.__cartridgeKey = self.read_property(cartridgeagentconstants.CARTRIDGE_KEY)
-                self.__appPath = self.read_property(cartridgeagentconstants.APP_PATH)
-                self.__repoUrl = self.read_property(cartridgeagentconstants.REPO_URL)
-                self.__ports = str(self.read_property(cartridgeagentconstants.PORTS)).split("|")
-
-                try:
-                    self.__logFilePaths = str(self.read_property(cartridgeagentconstants.CLUSTER_ID)).strip().split("|")
-                except ParameterNotFoundException as ex:
-                    self.log.debug("Cannot read log file path : %r" % ex.get_message())
-                    self.__logFilePaths = None
-
-                is_multi_str = self.read_property(cartridgeagentconstants.CLUSTER_ID)
-                self.__isMultitenant = True if str(is_multi_str).lower().strip() == "true" else False
-
-                try:
-                    self.__persistenceMappings = self.read_property("PERSISTENCE_MAPPING")
-                except ParameterNotFoundException as ex:
-                    self.log.debug("Cannot read persistence mapping : %r" % ex.get_message())
-                    self.__persistenceMappings = None
-
-                try:
-                    is_commit_str = self.read_property(cartridgeagentconstants.COMMIT_ENABLED)
-                    self.__isCommitsEnabled = True if str(is_commit_str).lower().strip() == "true" else False
-                except ParameterNotFoundException:
-                    try:
-                        is_commit_str = self.read_property(cartridgeagentconstants.AUTO_COMMIT)
-                        self.__isCommitsEnabled = True if str(is_commit_str).lower().strip() == "true" else False
-                    except ParameterNotFoundException:
-                        self.log.info("%r is not found and setting it to false" % cartridgeagentconstants.COMMIT_ENABLED)
-                        self.__isCommitsEnabled = False
-
-                auto_checkout_str = self.read_property(cartridgeagentconstants.AUTO_CHECKOUT)
-                self.__isCheckoutEnabled = True if str(auto_checkout_str).lower().strip() == "true" else False
-
-                self.__listenAddress = self.read_property(cartridgeagentconstants.LISTEN_ADDRESS)
-
-                try:
-                    int_repo_str = self.read_property(cartridgeagentconstants.PROVIDER)
-                    self.__isInternalRepo = True if str(int_repo_str).strip().lower() == cartridgeagentconstants.INTERNAL else False
-                except ParameterNotFoundException:
-                    self.log.info(" INTERNAL payload parameter is not found")
-                    self.__isInternalRepo = False
-
-                self.__tenantId = self.read_property(cartridgeagentconstants.TENANT_ID)
-                self.__lbClusterId = self.read_property(cartridgeagentconstants.LB_CLUSTER_ID)
-                self.__minCount = self.read_property(cartridgeagentconstants.MIN_INSTANCE_COUNT)
-                self.__lbPrivateIp = self.read_property(cartridgeagentconstants.LB_PRIVATE_IP)
-                self.__lbPublicIp = self.read_property(cartridgeagentconstants.LB_PUBLIC_IP)
-                self.__tenantRepositoryPath = self.read_property(cartridgeagentconstants.TENANT_REPO_PATH)
-                self.__superTenantRepositoryPath = self.read_property(cartridgeagentconstants.SUPER_TENANT_REPO_PATH)
-
-                try:
-                    self.__deployment = self.read_property(cartridgeagentconstants.DEPLOYMENT)
-                except ParameterNotFoundException:
-                    self.__deployment = None
-
-                # Setting worker-manager setup - manager service name
-                if self.__deployment is None:
-                    self.__managerServiceName = None
-
-                if str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_MANAGER.lower():
-                    self.__managerServiceName = self.__service_name
-
-                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_WORKER.lower():
-                    self.__deployment = self.read_property(cartridgeagentconstants.MANAGER_SERVICE_TYPE)
-
-                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_DEFAULT.lower():
-                    self.__deployment = None
-                else:
-                    self.__deployment = None
-
-                # Setting worker-manager setup - worker service name
-                if self.__deployment is None:
-                    self.__workerServiceName = None
-
-                if str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_WORKER.lower():
-                    self.__managerServiceName = self.__service_name
-
-                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_MANAGER.lower():
-                    self.__deployment = self.read_property(cartridgeagentconstants.WORKER_SERVICE_TYPE)
-
-                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_DEFAULT.lower():
-                    self.__deployment = None
-                else:
-                    self.__deployment = None
-
-                try:
-                    self.__isPrimary = self.read_property(cartridgeagentconstants.CLUSTERING_PRIMARY_KEY)
-                except ParameterNotFoundException:
-                    self.__isPrimary = None
-            except ParameterNotFoundException as ex:
-                raise RuntimeError(ex)
-
-            self.log.info("Cartridge agent configuration initialized")
-
-            self.log.debug("service-name: %r" % self.__service_name)
-            self.log.debug("cluster-id: %r" % self.__cluster_id)
-            self.log.debug("network-partition-id: %r" % self.__network_partition_id)
-            self.log.debug("partition-id: %r" % self.__partitionId)
-            self.log.debug("member-id: %r" % self.__memberId)
-            self.log.debug("cartridge-key: %r" % self.__cartridgeKey)
-            self.log.debug("app-path: %r" % self.__appPath)
-            self.log.debug("repo-url: %r" % self.__repoUrl)
-            self.log.debug("ports: %r" % str(self.__ports))
-            self.log.debug("lb-private-ip: %r" % self.__lbPrivateIp)
-            self.log.debug("lb-public-ip: %r" % self.__lbPublicIp)
-
-        def __read_conf_file(self):
-            """
-            Reads and stores the agent's configuration file
-            :return:
-            """
-
-            self.properties = ConfigParser.SafeConfigParser()
-            self.properties.read('agent.conf')
-
-        def __read_parameter_file(self):
-            """
-            Reads the payload file of the cartridge and stores the values in a dictionary
-            :return:
-            """
-
-            param_file = self.read_property(cartridgeagentconstants.PARAM_FILE_PATH)
-
-            try:
-                if param_file is not None:
-                    metadata_file = open(param_file)
-                    metadata_payload_content = metadata_file.read()
-                    self.payload_params = dict(param.split("=") for param in metadata_payload_content.split(","))
-                    metadata_file.close()
-                else:
-                    self.log.error("File not found: %r" % param_file)
-            except:
-                self.log.error("Could not read launch parameter file, hence trying to read from System properties.")
-
-        def read_property(self, property_key):
-
-            if self.properties.has_option("agent", property_key):
-                temp_str = self.properties.get("agent", property_key)
-                if temp_str != "" and temp_str is not None:
-                    return temp_str
-
-            if self.payload_params.has_key(property_key):
-                temp_str = self.payload_params[property_key]
-                if temp_str != "" and temp_str is not None:
-                    return temp_str
-
-            raise ParameterNotFoundException("Cannot find the value of required parameter: %r" % property_key)
-
-        def get_service_name(self):
-            return self.__service_name
-
-        def get_cluster_id(self):
-            return self.__cluster_id
-
-        def get_network_partition_id(self):
-            return self.__network_partition_id
-
-        def get_partition_id(self):
-            return self.__partitionId
-
-        def get_member_id(self):
-            return self.__memberId
-
-        def get_cartridge_key(self):
-            return self.__cartridgeKey
-
-        def get_app_path(self):
-            return self.__appPath
-
-        def get_repo_url(self):
-            return self.__repoUrl
-
-        def get_ports(self):
-            return self.__ports
-
-        def get_log_file_paths(self):
-            return self.__logFilePaths
-
-        def is_multitenant(self):
-            return self.__isMultitenant
-
-        def get_persistance_mappings(self):
-            return self.__persistenceMappings
-
-        def is_commits_enabled(self):
-            return self.__isCommitsEnabled
-
-        def get_listen_address(self):
-            return self.__listenAddress
-
-        def is_internal_repo(self):
-            return self.__isInternalRepo
-
-        def get_tenant_id(self):
-            return self.__tenantId
-
-        def get_lb_cluster_id(self):
-            return self.__lbClusterId
-
-        def get_service_group(self):
-            return self.__service_group
-
-        def is_clustered(self):
-            return self.__isClustered
-
-        def get_min_count(self):
-            return self.__minCount
-
-        def is_primary(self):
-            return self.__isPrimary
-
-        def get_lb_public_ip(self):
-            return self.__lbPublicIp
-
-        def set_lb_public_ip(self, ip):
-            self.__lbPublicIp = ip
-
-        def get_lb_private(self):
-            return self.__lbPrivateIp
-
-        def set_lb_privateip(self, ip):
-            self.__lbPrivateIp = ip
-
-        def get_deployment(self):
-            return self.__deployment
-
-        def set_deployment(self, dep):
-            self.__deployment = dep
-
-        def get_manager_service_name(self):
-            return self.__managerServiceName
-
-        def set_manager_service_name(self, mgr):
-            self.__managerServiceName = mgr
-
-        def get_worker_service_name(self):
-            return self.__workerServiceName
-
-        def set_worker_service_name(self, wrkr):
-            self.__workerServiceName = wrkr
-
-        def get_super_tenant_repo_path(self):
-            return self.__superTenantRepositoryPath
-
-        def get_tenant_repo_path(self):
-            return self.__tenantRepositoryPath
-
-        def is_checkout_enabled(self):
-            return self.__isCheckoutEnabled
-
-    instance = None
-
-    def __init__(self):
-        if not CartridgeAgentConfiguration.instance:
-            CartridgeAgentConfiguration.instance = CartridgeAgentConfiguration.__CartridgeAgentConfiguration()
-
-    def __getattr__(self, item):
-        return getattr(self.instance, item)
-
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/__init__.py b/tools/python-cartridge-agent/cartridge-agent/event/__init__.py
deleted file mode 100644
index 0de6991..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__author__ = 'chamilad'

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/instance/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/instance/__init__.py b/tools/python-cartridge-agent/cartridge-agent/event/instance/__init__.py
deleted file mode 100644
index 0de6991..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/instance/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__author__ = 'chamilad'

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/__init__.py b/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/__init__.py
deleted file mode 100644
index 3bcb310..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__ = ['events']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/events.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/events.py b/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/events.py
deleted file mode 100644
index 5ab3e6c..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/instance/notifier/events.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import json
-
-
-class ArtifactUpdatedEvent:
-    def __init__(self):
-        self.cluster_id = None
-        self.status = None
-        self.repo_username = None
-        self.repo_password = None
-        self.repo_url = None
-        self.tenant_id = None
-        self.commit_enabled = None
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        instance = ArtifactUpdatedEvent()
-
-        instance.cluster_id = json_obj["clusterId"] if "clusterId" in json_obj else None
-        instance.status = json_obj["status"] if "status" in json_obj else None
-        instance.repo_username = json_obj["repoUserName"] if "repoUserName" in json_obj else None
-        instance.repo_password = json_obj["repoPassword"] if "repoPassword" in json_obj else None
-        instance.tenant_id = json_obj["tenantId"] if "tenantId" in json_obj else None
-        instance.commit_enabled = json_obj["commitEnabled"] if "commitEnabled" in json_obj else None
-
-        return instance
-
-
-class InstanceCleanupClusterEvent:
-    def __init__(self, cluster_id):
-        self.cluster_id = cluster_id
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        c_id = json_obj["clusterId"] if "clusterId" in json_obj else None
-
-        return InstanceCleanupClusterEvent(c_id)
-
-
-class InstanceCleanupMemberEvent:
-    def __init__(self, member_id):
-        self.member_id = member_id
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        m_id = json_obj["memberId"] if "memberId" in json_obj else None
-
-        return InstanceCleanupMemberEvent(m_id)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/instance/status/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/instance/status/__init__.py b/tools/python-cartridge-agent/cartridge-agent/event/instance/status/__init__.py
deleted file mode 100644
index cd8b9d2..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/instance/status/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__=['events']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/instance/status/events.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/instance/status/events.py b/tools/python-cartridge-agent/cartridge-agent/event/instance/status/events.py
deleted file mode 100644
index 878667c..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/instance/status/events.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import json
-
-
-class InstanceActivatedEvent:
-    def __init__(self, service_name, cluster_id, network_partition_id, parition_id, member_id):
-        self.serviceName = service_name
-        self.clusterId = cluster_id
-        self.networkPartitionId = network_partition_id
-        self.partitionId = parition_id
-        self.memberId = member_id
-
-    def to_json(self):
-        return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
-
-
-class InstanceStartedEvent:
-    def __init__(self, service_name, cluster_id, network_partition_id, parition_id, member_id):
-        self.serviceName = service_name
-        self.clusterId = cluster_id
-        self.networkPartitionId = network_partition_id
-        self.partitionId = parition_id
-        self.memberId = member_id
-
-    def to_json(self):
-        return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/tenant/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/tenant/__init__.py b/tools/python-cartridge-agent/cartridge-agent/event/tenant/__init__.py
deleted file mode 100644
index cd8b9d2..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/tenant/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__=['events']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/event/tenant/events.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/event/tenant/events.py b/tools/python-cartridge-agent/cartridge-agent/event/tenant/events.py
deleted file mode 100644
index 7395f7e..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/event/tenant/events.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import json
-
-
-class SubscriptionDomainAddedEvent():
-
-    def __init__(self):
-        self.tenant_id = None
-        self.service_name = None
-        self.cluster_ids = None
-        self.domain_name = None
-        self.application_context = None
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        instance = SubscriptionDomainAddedEvent()
-
-        instance.cluster_ids = json_obj["clusterIds"] if "clusterIds" in json_obj else None
-        instance.tenant_id = json_obj["tenantId"] if "tenantId" in json_obj else None
-        instance.service_name = json_obj["serviceName"] if "serviceName" in json_obj else None
-        instance.domain_name = json_obj["domainName"] if "domainName" in json_obj else None
-        instance.application_context = json_obj["applicationContext"] if "applicationContext" in json_obj else None
-
-        return instance
-
-
-class SubscriptionDomainRemovedEvent:
-
-    def __init__(self, tenant_id, service_name, cluster_ids, domain_name):
-        self.tenant_id = tenant_id
-        self.service_name = service_name
-        self.cluster_ids = cluster_ids
-        self.domain_name = domain_name
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        instance = SubscriptionDomainRemovedEvent()
-
-        instance.cluster_ids = json_obj["clusterIds"] if "clusterIds" in json_obj else None
-        instance.tenant_id = json_obj["tenantId"] if "tenantId" in json_obj else None
-        instance.service_name = json_obj["serviceName"] if "serviceName" in json_obj else None
-        instance.domain_name = json_obj["domainName"] if "domainName" in json_obj else None
-
-        return instance
-
-
-class CompleteTenantEvent:
-
-    def __init__(self):
-        self.tenants = None
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        instance = CompleteTenantEvent()
-
-        instance.tenants = json_obj["tenants"] if "tenants" in json_obj else None
-
-        return instance
-
-
-class TenantSubscribedEvent:
-
-    def __init__(self):
-        self.tenant_id = None
-        self.service_name = None
-        self.cluster_ids = None
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        instance = TenantSubscribedEvent()
-
-        instance.tenant_id = json_obj["tenantId"] if "tenantId" in json_obj else None
-        instance.service_name = json_obj["serviceName"] if "serviceName" in json_obj else None
-        instance.cluster_ids = json_obj["clusterIds"] if "clusterIds" in json_obj else None
-
-        return instance
-
-
-class TenantUnsubscribedEvent:
-
-    def __init__(self):
-        self.tenant_id = None
-        self.service_name = None
-        self.cluster_ids = None
-
-    @staticmethod
-    def create_from_json(json_str):
-        json_obj = json.loads(json_str)
-        instance = TenantUnsubscribedEvent()
-
-        instance.tenant_id = json_obj["tenantId"] if "tenantId" in json_obj else None
-        instance.service_name = json_obj["serviceName"] if "serviceName" in json_obj else None
-        instance.cluster_ids = json_obj["clusterIds"] if "clusterIds" in json_obj else None
-
-        return instance
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/exception/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/exception/__init__.py b/tools/python-cartridge-agent/cartridge-agent/exception/__init__.py
deleted file mode 100644
index 7f59666..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/exception/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__ = ['parameternotfoundexception']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/exception/parameternotfoundexception.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/exception/parameternotfoundexception.py b/tools/python-cartridge-agent/cartridge-agent/exception/parameternotfoundexception.py
deleted file mode 100644
index a9a776e..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/exception/parameternotfoundexception.py
+++ /dev/null
@@ -1,9 +0,0 @@
-class ParameterNotFoundException(Exception):
-    __message = None
-
-    def __init__(self, message):
-        Exception.__init__(self, message)
-        self.__message = message
-
-    def get_message(self):
-        return self.__message

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/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
index 4a0d8f2..adf3dd6 100644
--- a/tools/python-cartridge-agent/cartridge-agent/extensionhandler.py
+++ b/tools/python-cartridge-agent/cartridge-agent/extensionhandler.py
@@ -1,44 +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
-
+# #!/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/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/extensions/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/extensions/__init__.py b/tools/python-cartridge-agent/cartridge-agent/extensions/__init__.py
deleted file mode 100644
index 33da048..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/extensions/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__=['defaultextensionhandler']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/extensions/defaultextensionhandler.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/extensions/defaultextensionhandler.py b/tools/python-cartridge-agent/cartridge-agent/extensions/defaultextensionhandler.py
deleted file mode 100644
index 766dde0..0000000
--- a/tools/python-cartridge-agent/cartridge-agent/extensions/defaultextensionhandler.py
+++ /dev/null
@@ -1,148 +0,0 @@
-import logging
-
-from ..artifactmgt.git.agentgithandler import AgentGitHandler
-from ..artifactmgt.repositoryinformation import RepositoryInformation
-from ..config.cartridgeagentconfiguration import CartridgeAgentConfiguration
-from ..util import extensionutils, cartridgeagentconstants, cartridgeagentutils
-from ..publisher import cartridgeagentpublisher
-
-
-class DefaultExtensionHandler:
-    log = None
-    cartridge_agent_config = None
-
-    def __init__(self):
-        logging.basicConfig(level=logging.DEBUG)
-        self.log = logging.getLogger(__name__)
-
-        self.cartridge_agent_config = CartridgeAgentConfiguration()
-
-        pass
-
-    def on_instance_started_event(self):
-        try:
-            self.log.debug("Processing instance started event...")
-            if self.cartridge_agent_config.is_multitenant():
-                artifact_source = "%r/repository/deployment/server/" % self.cartridge_agent_config.get_app_path()
-                artifact_dest = cartridgeagentconstants.SUPERTENANT_TEMP_PATH
-                extensionutils.execute_copy_artifact_extension(artifact_source, artifact_dest)
-
-            env_params = {}
-            extensionutils.execute_instance_started_extention(env_params)
-
-        except Exception:
-            self.log.exception("Error processing instance started event")
-
-    def on_instance_activated_event(self):
-        extensionutils.execute_instance_activated_extension()
-
-    def on_artifact_updated_event(self, event):
-        self.log.info("Artifact update event received: [tenant] %r [cluster] %r [status] %r" %
-                      (event.tenant_id, event.cluster_id, event.status))
-
-        cluster_id_event = str(event.cluster_id).strip()
-        cluster_id_payload = self.cartridge_agent_config.get_cluster_id()
-        repo_url = str(event.repo_url).strip()
-
-        if (repo_url != "") and (cluster_id_payload is not None) and (cluster_id_payload == cluster_id_event):
-            local_repo_path = self.cartridge_agent_config.get_app_path()
-
-            secret = self.cartridge_agent_config.get_cartridge_key()
-            repo_password = cartridgeagentutils.decrypt_password(event.repo_password, secret)
-
-            repo_username = event.repo_username
-            tenant_id = event.tenant_id
-            is_multitenant = self.cartridge_agent_config.is_multitenant()
-            commit_enabled = event.commit_enabled
-
-            self.log.info("Executing git checkout")
-
-            # create repo object
-            repo_info = RepositoryInformation(repo_url, repo_username, repo_password, local_repo_path, tenant_id,
-                                              is_multitenant, commit_enabled)
-
-            #checkout code
-            checkout_result = AgentGitHandler.checkout(repo_info)
-            #execute artifact updated extension
-            env_params = {"STRATOS_ARTIFACT_UPDATED_CLUSTER_ID": event.cluster_id,
-                          "STRATOS_ARTIFACT_UPDATED_TENANT_ID": event.tenant_id,
-                          "STRATOS_ARTIFACT_UPDATED_REPO_URL": event.repo_url,
-                          "STRATOS_ARTIFACT_UPDATED_REPO_PASSWORD": event.repo_password,
-                          "STRATOS_ARTIFACT_UPDATED_REPO_USERNAME": event.repo_username,
-                          "STRATOS_ARTIFACT_UPDATED_STATUS": event.status}
-
-            extensionutils.execute_artifacts_updated_extension(env_params)
-
-            #if !cloneExists publish instanceActivatedEvent
-            if not checkout_result["cloned"]:
-                #publish instanceActivated
-                cartridgeagentpublisher.publish_instance_activated_event()
-
-            #TODO: set artifact update task
-
-    def on_artifact_update_scheduler_event(self, tenantId):
-        pass
-
-    def on_instance_cleanup_cluster_event(self, instanceCleanupClusterEvent):
-        pass
-
-    def onInstanceCleanupMemberEvent(self, instanceCleanupMemberEvent):
-        pass
-
-    def onMemberActivatedEvent(self, memberActivatedEvent):
-        pass
-
-    def onCompleteTopologyEvent(self, completeTopologyEvent):
-        pass
-
-    def onCompleteTenantEvent(self, completeTenantEvent):
-        pass
-
-    def onMemberTerminatedEvent(self, memberTerminatedEvent):
-        pass
-
-    def onMemberSuspendedEvent(self, memberSuspendedEvent):
-        pass
-
-    def onMemberStartedEvent(self, memberStartedEvent):
-        pass
-
-    def start_server_extension(self):
-        raise NotImplementedError
-        # extensionutils.wait_for_complete_topology()
-        # self.log.info("[start server extension] complete topology event received")
-        #
-        # service_name_in_payload = self.cartridge_agent_config.get_service_name()
-        # cluster_id_in_payload = self.cartridge_agent_config.get_cluster_id()
-        # member_id_in_payload = self.cartridge_agent_config.get_member_id()
-        #
-        # try:
-        #     consistant = extensionutils.check_topology_consistency(service_name_in_payload, cluster_id_in_payload, member_id_in_payload)
-        #
-        #     if not consistant:
-        #         self.log.error("Topology is inconsistent...failed to execute start server event")
-        #         return
-        #
-        #
-        # except:
-        #     self.log.exception("Error processing start servers event")
-        # finally:
-        #     pass
-
-    def volume_mount_extension(self, persistence_mappings_payload):
-        extensionutils.execute_volume_mount_extension(persistence_mappings_payload)
-
-    def onSubscriptionDomainAddedEvent(self, subscriptionDomainAddedEvent):
-        pass
-
-    def onSubscriptionDomainRemovedEvent(self, subscriptionDomainRemovedEvent):
-        pass
-
-    def onCopyArtifactsExtension(self, src, des):
-        pass
-
-    def onTenantSubscribedEvent(self, tenantSubscribedEvent):
-        pass
-
-    def onTenantUnSubscribedEvent(self, tenantUnSubscribedEvent):
-        pass
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/__init__.py
new file mode 100644
index 0000000..e69de29

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

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/__init__.py
new file mode 100644
index 0000000..b1e49e4
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/__init__.py
@@ -0,0 +1 @@
+__all__=['repositoryinformation']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/__init__.py
new file mode 100644
index 0000000..372e725
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/__init__.py
@@ -0,0 +1 @@
+__all__=['agentgithandler', 'gitrepository']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/agentgithandler.py b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/agentgithandler.py
new file mode 100644
index 0000000..fff1ae8
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/agentgithandler.py
@@ -0,0 +1,148 @@
+import logging
+
+from git import *
+
+from gitrepository import GitRepositoryContext
+from ... config.cartridgeagentconfiguration import CartridgeAgentConfiguration
+from ... util import cartridgeagentutils
+
+
+class AgentGitHandler:
+    logging.basicConfig(level=logging.DEBUG)
+    log = logging.getLogger(__name__)
+
+    SUPER_TENANT_ID = -1234
+    SUPER_TENANT_REPO_PATH = "/repository/deployment/server/"
+    TENANT_REPO_PATH = "/repository/tenants/"
+
+    cartridge_agent_config = CartridgeAgentConfiguration()
+
+    __git_repositories = {}
+    # (tenant_id => gitrepository.GitRepository)
+
+    @staticmethod
+    def checkout(repo_info):
+        repo_context = AgentGitHandler.get_repo_context(repo_info.tenant_id)
+        if repo_context is not None:
+            #has been previously cloned, this is not the subscription run
+            cloned = True
+            #TODO: handle conflicts and errors using repo.git.pull(), status(), checkout() outputs
+            AgentGitHandler.log.debug("Existing git repository detected for tenant %r, no clone required" % repo_info.tenant_id)
+            AgentGitHandler.pull(repo_context)
+        else:
+            #subscribing run.. need to clone
+            cloned = False
+            repo_context = AgentGitHandler.create_git_repo_context(repo_info)
+            AgentGitHandler.clone(repo_context)
+
+        return {"cloned": cloned, "repo_context": repo_context}
+
+    @staticmethod
+    def pull(repo_context):
+        #create repo object
+        repo = Repo(repo_context.local_repo_path)
+        repo.remotes.origin.pull()
+
+        # TODO: handle conflict errors
+
+
+    @staticmethod
+    def clone(repo_context):
+        try:
+            repo = Repo.clone_from(repo_context.repo_url, repo_context.local_repo_path)
+            repo_context.cloned = True
+            AgentGitHandler.add_repo_context(repo_context)
+            AgentGitHandler.log.info("Git clone operation for tenant %r successful" % repo_context.tenant_id)
+        except GitCommandError as ex:
+            if "remote: Repository not found." in ex.message:
+                AgentGitHandler.log.exception("Accessing remote git repository failed for tenant %r" % repo_context.tenant_id)
+                #GitPython deletes the target folder if remote not found
+                cartridgeagentutils.create_dir(repo_context.local_repo_path)
+            else:
+                AgentGitHandler.log.exception("Git clone operation for tenant %r failed" % repo_context.tenant_id)
+
+    @staticmethod
+    def add_repo_context(repo_context):
+        AgentGitHandler.__git_repositories[repo_context.tenant_id] = repo_context
+
+    @staticmethod
+    def get_repo_context(tenant_id):
+        if tenant_id in AgentGitHandler.__git_repositories:
+            return AgentGitHandler.__git_repositories[tenant_id]
+
+        return None
+
+    @staticmethod
+    def remove_repo_context(tenant_id):
+        if tenant_id in AgentGitHandler.__git_repositories:
+            del AgentGitHandler.__git_repositories[tenant_id]
+
+    @staticmethod
+    def create_git_repo_context(repo_info):
+        repo_context = GitRepositoryContext()
+        repo_context.tenant_id = repo_info.tenant_id
+        repo_context.local_repo_path = AgentGitHandler.get_repo_path_for_tenant(
+            repo_info.tenant_id, repo_info.repo_path, repo_info.is_multitenant)
+        repo_context.repo_url = repo_info.repo_url
+        repo_context.repo_username = repo_info.repo_username
+        repo_context.repo_password = repo_info.repo_password
+
+        # TODO: push
+        # push not implemented
+        # if is_key_based_auth(repo_info.repo_url, tenant_id):
+        #     repo.key_based_auth = True
+        #     init_ssh_auth()
+        # else:
+        #     repo.key_based_auth = False
+
+        repo_context.cloned = False
+
+        return repo_context
+
+    # @staticmethod
+    # def is_key_based_auth(repo_url, tenant_id):
+
+
+    @staticmethod
+    def get_repo_path_for_tenant(tenant_id, git_local_repo_path, is_multitenant):
+        repo_path = ""
+
+        if is_multitenant:
+            if tenant_id == AgentGitHandler.SUPER_TENANT_ID:
+                #super tenant, /repository/deploy/server/
+                super_tenant_repo_path = AgentGitHandler.cartridge_agent_config.get_super_tenant_repo_path()
+                #"app_path"
+                repo_path += git_local_repo_path
+
+                if super_tenant_repo_path is not None  and super_tenant_repo_path != "":
+                    super_tenant_repo_path = super_tenant_repo_path if super_tenant_repo_path.startswith("/") else "/" + super_tenant_repo_path
+                    super_tenant_repo_path = super_tenant_repo_path if super_tenant_repo_path.endswith("/") else  super_tenant_repo_path + "/"
+                    #"app_path/repository/deploy/server/"
+                    repo_path += super_tenant_repo_path
+                else:
+                    #"app_path/repository/deploy/server/"
+                    repo_path += AgentGitHandler.SUPER_TENANT_REPO_PATH
+
+            else:
+                #normal tenant, /repository/tenants/tenant_id
+                tenant_repo_path = AgentGitHandler.cartridge_agent_config.get_tenant_repo_path()
+                #"app_path"
+                repo_path += git_local_repo_path
+
+                if tenant_repo_path is not None and tenant_repo_path != "":
+                    tenant_repo_path = tenant_repo_path if tenant_repo_path.startswith("/") else "/" + tenant_repo_path
+                    tenant_repo_path = tenant_repo_path if tenant_repo_path.endswith("/") else tenant_repo_path + "/"
+                    #"app_path/repository/tenants/244653444"
+                    repo_path += tenant_repo_path + tenant_id
+                else:
+                    #"app_path/repository/tenants/244653444"
+                    repo_path += AgentGitHandler.TENANT_REPO_PATH + tenant_id
+
+                #tenant_dir_path = git_local_repo_path + AgentGitHandler.TENANT_REPO_PATH + tenant_id
+                cartridgeagentutils.create_dir(repo_path)
+        else:
+            #not multi tenant, app_path
+            repo_path = git_local_repo_path
+
+        AgentGitHandler.log.debug("Repo path returned : %r" % repo_path)
+        return repo_path
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/gitrepository.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/gitrepository.py b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/gitrepository.py
new file mode 100644
index 0000000..12ce591
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/git/gitrepository.py
@@ -0,0 +1,12 @@
+class GitRepositoryContext:
+
+    def __init__(self):
+        self.repo_url = None
+        self.local_repo_path = None
+        self.cloned = False
+        self.repo = None
+        self.tenant_id = None
+        self.key_based_auth = False
+        self.repo_username = None
+        self.repo_password = None
+        #scheduled update service
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/repositoryinformation.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/repositoryinformation.py b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/repositoryinformation.py
new file mode 100644
index 0000000..d30c319
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/artifactmgt/repositoryinformation.py
@@ -0,0 +1,13 @@
+class RepositoryInformation:
+    """
+    Holds repository information to be used in artifact management
+    """
+
+    def __init__(self, repo_url, repo_username, repo_password, repo_path, tenant_id, is_multitenant, commit_enabled):
+        self.repo_url = repo_url
+        self.repo_username = repo_username
+        self.repo_password = repo_password
+        self.repo_path = repo_path
+        self.tenant_id = tenant_id
+        self.is_multitenant = is_multitenant
+        self.commit_enabled = commit_enabled
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.py
new file mode 100644
index 0000000..836c3ab
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.py
@@ -0,0 +1 @@
+__all__=['cartridgeagentconfiguration']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.pyc
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.pyc b/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.pyc
new file mode 100644
index 0000000..7ca42b4
Binary files /dev/null and b/tools/python-cartridge-agent/cartridge-agent/modules/config/__init__.pyc differ

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.py b/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.py
new file mode 100644
index 0000000..495d759
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.py
@@ -0,0 +1,298 @@
+import ConfigParser
+import logging
+
+from .. util import cartridgeagentconstants
+from .. exception.parameternotfoundexception import ParameterNotFoundException
+
+
+class CartridgeAgentConfiguration:
+    class __CartridgeAgentConfiguration:
+
+        def __init__(self):
+            # set log level
+            logging.basicConfig(level=logging.DEBUG)
+            self.log = logging.getLogger(__name__)
+
+            self.payload_params = {}
+            self.__read_conf_file()
+            self.__read_parameter_file()
+
+            try:
+                self.__service_group = self.payload_params[cartridgeagentconstants.SERVICE_GROUP] \
+                    if cartridgeagentconstants.SERVICE_GROUP in self.payload_params \
+                    else None
+
+                if cartridgeagentconstants.CLUSTERING in self.payload_params and \
+                                str(self.payload_params[cartridgeagentconstants.CLUSTERING]).strip().lower() == "true":
+                    self.__isClustered = True
+                else:
+                    self.__isClustered = False
+                # self.__isClustered = self.payload_params[
+                #     cartridgeagentconstants.CLUSTERING] if cartridgeagentconstants.CLUSTERING in self.payload_params else None
+
+                self.__service_name = self.read_property(cartridgeagentconstants.SERVICE_NAME)
+                self.__cluster_id = self.read_property(cartridgeagentconstants.CLUSTER_ID)
+                self.__network_partition_id = self.read_property(cartridgeagentconstants.NETWORK_PARTITION_ID)
+                self.__partitionId = self.read_property(cartridgeagentconstants.PARTITION_ID)
+                self.__memberId = self.read_property(cartridgeagentconstants.MEMBER_ID)
+                self.__cartridgeKey = self.read_property(cartridgeagentconstants.CARTRIDGE_KEY)
+                self.__appPath = self.read_property(cartridgeagentconstants.APP_PATH)
+                self.__repoUrl = self.read_property(cartridgeagentconstants.REPO_URL)
+                self.__ports = str(self.read_property(cartridgeagentconstants.PORTS)).split("|")
+
+                try:
+                    self.__logFilePaths = str(self.read_property(cartridgeagentconstants.CLUSTER_ID)).strip().split("|")
+                except ParameterNotFoundException as ex:
+                    self.log.debug("Cannot read log file path : %r" % ex.get_message())
+                    self.__logFilePaths = None
+
+                is_multi_str = self.read_property(cartridgeagentconstants.CLUSTER_ID)
+                self.__isMultitenant = True if str(is_multi_str).lower().strip() == "true" else False
+
+                try:
+                    self.__persistenceMappings = self.read_property("PERSISTENCE_MAPPING")
+                except ParameterNotFoundException as ex:
+                    self.log.debug("Cannot read persistence mapping : %r" % ex.get_message())
+                    self.__persistenceMappings = None
+
+                try:
+                    is_commit_str = self.read_property(cartridgeagentconstants.COMMIT_ENABLED)
+                    self.__isCommitsEnabled = True if str(is_commit_str).lower().strip() == "true" else False
+                except ParameterNotFoundException:
+                    try:
+                        is_commit_str = self.read_property(cartridgeagentconstants.AUTO_COMMIT)
+                        self.__isCommitsEnabled = True if str(is_commit_str).lower().strip() == "true" else False
+                    except ParameterNotFoundException:
+                        self.log.info("%r is not found and setting it to false" % cartridgeagentconstants.COMMIT_ENABLED)
+                        self.__isCommitsEnabled = False
+
+                auto_checkout_str = self.read_property(cartridgeagentconstants.AUTO_CHECKOUT)
+                self.__isCheckoutEnabled = True if str(auto_checkout_str).lower().strip() == "true" else False
+
+                self.__listenAddress = self.read_property(cartridgeagentconstants.LISTEN_ADDRESS)
+
+                try:
+                    int_repo_str = self.read_property(cartridgeagentconstants.PROVIDER)
+                    self.__isInternalRepo = True if str(int_repo_str).strip().lower() == cartridgeagentconstants.INTERNAL else False
+                except ParameterNotFoundException:
+                    self.log.info(" INTERNAL payload parameter is not found")
+                    self.__isInternalRepo = False
+
+                self.__tenantId = self.read_property(cartridgeagentconstants.TENANT_ID)
+                self.__lbClusterId = self.read_property(cartridgeagentconstants.LB_CLUSTER_ID)
+                self.__minCount = self.read_property(cartridgeagentconstants.MIN_INSTANCE_COUNT)
+                self.__lbPrivateIp = self.read_property(cartridgeagentconstants.LB_PRIVATE_IP)
+                self.__lbPublicIp = self.read_property(cartridgeagentconstants.LB_PUBLIC_IP)
+                self.__tenantRepositoryPath = self.read_property(cartridgeagentconstants.TENANT_REPO_PATH)
+                self.__superTenantRepositoryPath = self.read_property(cartridgeagentconstants.SUPER_TENANT_REPO_PATH)
+
+                try:
+                    self.__deployment = self.read_property(cartridgeagentconstants.DEPLOYMENT)
+                except ParameterNotFoundException:
+                    self.__deployment = None
+
+                # Setting worker-manager setup - manager service name
+                if self.__deployment is None:
+                    self.__managerServiceName = None
+
+                if str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_MANAGER.lower():
+                    self.__managerServiceName = self.__service_name
+
+                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_WORKER.lower():
+                    self.__deployment = self.read_property(cartridgeagentconstants.MANAGER_SERVICE_TYPE)
+
+                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_DEFAULT.lower():
+                    self.__deployment = None
+                else:
+                    self.__deployment = None
+
+                # Setting worker-manager setup - worker service name
+                if self.__deployment is None:
+                    self.__workerServiceName = None
+
+                if str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_WORKER.lower():
+                    self.__managerServiceName = self.__service_name
+
+                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_MANAGER.lower():
+                    self.__deployment = self.read_property(cartridgeagentconstants.WORKER_SERVICE_TYPE)
+
+                elif str(self.__deployment).lower() == cartridgeagentconstants.DEPLOYMENT_DEFAULT.lower():
+                    self.__deployment = None
+                else:
+                    self.__deployment = None
+
+                try:
+                    self.__isPrimary = self.read_property(cartridgeagentconstants.CLUSTERING_PRIMARY_KEY)
+                except ParameterNotFoundException:
+                    self.__isPrimary = None
+            except ParameterNotFoundException as ex:
+                raise RuntimeError(ex)
+
+            self.log.info("Cartridge agent configuration initialized")
+
+            self.log.debug("service-name: %r" % self.__service_name)
+            self.log.debug("cluster-id: %r" % self.__cluster_id)
+            self.log.debug("network-partition-id: %r" % self.__network_partition_id)
+            self.log.debug("partition-id: %r" % self.__partitionId)
+            self.log.debug("member-id: %r" % self.__memberId)
+            self.log.debug("cartridge-key: %r" % self.__cartridgeKey)
+            self.log.debug("app-path: %r" % self.__appPath)
+            self.log.debug("repo-url: %r" % self.__repoUrl)
+            self.log.debug("ports: %r" % str(self.__ports))
+            self.log.debug("lb-private-ip: %r" % self.__lbPrivateIp)
+            self.log.debug("lb-public-ip: %r" % self.__lbPublicIp)
+
+        def __read_conf_file(self):
+            """
+            Reads and stores the agent's configuration file
+            :return:
+            """
+
+            self.properties = ConfigParser.SafeConfigParser()
+            self.properties.read('agent.conf')
+
+        def __read_parameter_file(self):
+            """
+            Reads the payload file of the cartridge and stores the values in a dictionary
+            :return:
+            """
+
+            param_file = self.read_property(cartridgeagentconstants.PARAM_FILE_PATH)
+
+            try:
+                if param_file is not None:
+                    metadata_file = open(param_file)
+                    metadata_payload_content = metadata_file.read()
+                    self.payload_params = dict(param.split("=") for param in metadata_payload_content.split(","))
+                    metadata_file.close()
+                else:
+                    self.log.error("File not found: %r" % param_file)
+            except:
+                self.log.error("Could not read launch parameter file, hence trying to read from System properties.")
+
+        def read_property(self, property_key):
+
+            if self.properties.has_option("agent", property_key):
+                temp_str = self.properties.get("agent", property_key)
+                if temp_str != "" and temp_str is not None:
+                    return temp_str
+
+            if self.payload_params.has_key(property_key):
+                temp_str = self.payload_params[property_key]
+                if temp_str != "" and temp_str is not None:
+                    return temp_str
+
+            raise ParameterNotFoundException("Cannot find the value of required parameter: %r" % property_key)
+
+        def get_service_name(self):
+            return self.__service_name
+
+        def get_cluster_id(self):
+            return self.__cluster_id
+
+        def get_network_partition_id(self):
+            return self.__network_partition_id
+
+        def get_partition_id(self):
+            return self.__partitionId
+
+        def get_member_id(self):
+            return self.__memberId
+
+        def get_cartridge_key(self):
+            return self.__cartridgeKey
+
+        def get_app_path(self):
+            return self.__appPath
+
+        def get_repo_url(self):
+            return self.__repoUrl
+
+        def get_ports(self):
+            return self.__ports
+
+        def get_log_file_paths(self):
+            return self.__logFilePaths
+
+        def is_multitenant(self):
+            return self.__isMultitenant
+
+        def get_persistance_mappings(self):
+            return self.__persistenceMappings
+
+        def is_commits_enabled(self):
+            return self.__isCommitsEnabled
+
+        def get_listen_address(self):
+            return self.__listenAddress
+
+        def is_internal_repo(self):
+            return self.__isInternalRepo
+
+        def get_tenant_id(self):
+            return self.__tenantId
+
+        def get_lb_cluster_id(self):
+            return self.__lbClusterId
+
+        def get_service_group(self):
+            return self.__service_group
+
+        def is_clustered(self):
+            return self.__isClustered
+
+        def get_min_count(self):
+            return self.__minCount
+
+        def is_primary(self):
+            return self.__isPrimary
+
+        def get_lb_public_ip(self):
+            return self.__lbPublicIp
+
+        def set_lb_public_ip(self, ip):
+            self.__lbPublicIp = ip
+
+        def get_lb_private(self):
+            return self.__lbPrivateIp
+
+        def set_lb_privateip(self, ip):
+            self.__lbPrivateIp = ip
+
+        def get_deployment(self):
+            return self.__deployment
+
+        def set_deployment(self, dep):
+            self.__deployment = dep
+
+        def get_manager_service_name(self):
+            return self.__managerServiceName
+
+        def set_manager_service_name(self, mgr):
+            self.__managerServiceName = mgr
+
+        def get_worker_service_name(self):
+            return self.__workerServiceName
+
+        def set_worker_service_name(self, wrkr):
+            self.__workerServiceName = wrkr
+
+        def get_super_tenant_repo_path(self):
+            return self.__superTenantRepositoryPath
+
+        def get_tenant_repo_path(self):
+            return self.__tenantRepositoryPath
+
+        def is_checkout_enabled(self):
+            return self.__isCheckoutEnabled
+
+    instance = None
+
+    def __init__(self):
+        if not CartridgeAgentConfiguration.instance:
+            CartridgeAgentConfiguration.instance = CartridgeAgentConfiguration.__CartridgeAgentConfiguration()
+
+    def __getattr__(self, item):
+        return getattr(self.instance, item)
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.pyc
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.pyc b/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.pyc
new file mode 100644
index 0000000..180de3f
Binary files /dev/null and b/tools/python-cartridge-agent/cartridge-agent/modules/config/cartridgeagentconfiguration.pyc differ

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/__init__.py
new file mode 100644
index 0000000..0de6991
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/__init__.py
@@ -0,0 +1 @@
+__author__ = 'chamilad'

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/__init__.py
new file mode 100644
index 0000000..0de6991
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/__init__.py
@@ -0,0 +1 @@
+__author__ = 'chamilad'

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/__init__.py
new file mode 100644
index 0000000..3bcb310
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/__init__.py
@@ -0,0 +1 @@
+__all__ = ['events']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/events.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/events.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/events.py
new file mode 100644
index 0000000..5ab3e6c
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/notifier/events.py
@@ -0,0 +1,50 @@
+import json
+
+
+class ArtifactUpdatedEvent:
+    def __init__(self):
+        self.cluster_id = None
+        self.status = None
+        self.repo_username = None
+        self.repo_password = None
+        self.repo_url = None
+        self.tenant_id = None
+        self.commit_enabled = None
+
+    @staticmethod
+    def create_from_json(json_str):
+        json_obj = json.loads(json_str)
+        instance = ArtifactUpdatedEvent()
+
+        instance.cluster_id = json_obj["clusterId"] if "clusterId" in json_obj else None
+        instance.status = json_obj["status"] if "status" in json_obj else None
+        instance.repo_username = json_obj["repoUserName"] if "repoUserName" in json_obj else None
+        instance.repo_password = json_obj["repoPassword"] if "repoPassword" in json_obj else None
+        instance.tenant_id = json_obj["tenantId"] if "tenantId" in json_obj else None
+        instance.commit_enabled = json_obj["commitEnabled"] if "commitEnabled" in json_obj else None
+
+        return instance
+
+
+class InstanceCleanupClusterEvent:
+    def __init__(self, cluster_id):
+        self.cluster_id = cluster_id
+
+    @staticmethod
+    def create_from_json(json_str):
+        json_obj = json.loads(json_str)
+        c_id = json_obj["clusterId"] if "clusterId" in json_obj else None
+
+        return InstanceCleanupClusterEvent(c_id)
+
+
+class InstanceCleanupMemberEvent:
+    def __init__(self, member_id):
+        self.member_id = member_id
+
+    @staticmethod
+    def create_from_json(json_str):
+        json_obj = json.loads(json_str)
+        m_id = json_obj["memberId"] if "memberId" in json_obj else None
+
+        return InstanceCleanupMemberEvent(m_id)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/__init__.py
new file mode 100644
index 0000000..cd8b9d2
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/__init__.py
@@ -0,0 +1 @@
+__all__=['events']
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/events.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/events.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/events.py
new file mode 100644
index 0000000..878667c
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/instance/status/events.py
@@ -0,0 +1,25 @@
+import json
+
+
+class InstanceActivatedEvent:
+    def __init__(self, service_name, cluster_id, network_partition_id, parition_id, member_id):
+        self.serviceName = service_name
+        self.clusterId = cluster_id
+        self.networkPartitionId = network_partition_id
+        self.partitionId = parition_id
+        self.memberId = member_id
+
+    def to_json(self):
+        return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
+
+
+class InstanceStartedEvent:
+    def __init__(self, service_name, cluster_id, network_partition_id, parition_id, member_id):
+        self.serviceName = service_name
+        self.clusterId = cluster_id
+        self.networkPartitionId = network_partition_id
+        self.partitionId = parition_id
+        self.memberId = member_id
+
+    def to_json(self):
+        return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ed08e2d3/tools/python-cartridge-agent/cartridge-agent/modules/event/tenant/__init__.py
----------------------------------------------------------------------
diff --git a/tools/python-cartridge-agent/cartridge-agent/modules/event/tenant/__init__.py b/tools/python-cartridge-agent/cartridge-agent/modules/event/tenant/__init__.py
new file mode 100644
index 0000000..cd8b9d2
--- /dev/null
+++ b/tools/python-cartridge-agent/cartridge-agent/modules/event/tenant/__init__.py
@@ -0,0 +1 @@
+__all__=['events']
\ No newline at end of file