You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2015/12/22 05:31:19 UTC

[1/8] stratos git commit: initial changes for signup deletion

Repository: stratos
Updated Branches:
  refs/heads/master a760c0694 -> 418ed02e8


initial changes for signup deletion


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

Branch: refs/heads/master
Commit: 46ccf803b946d612be2ea569bcc0e5bea8547cbb
Parents: 75ee959
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Fri Nov 27 10:13:24 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:35:23 2015 +0530

----------------------------------------------------------------------
 .../modules/artifactmgt/git/agentgithandler.py  | 19 +++++++++++++++++
 .../plugins/DefaultArtifactCheckout.py          | 22 ++++++++++++++++++++
 2 files changed, 41 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/46ccf803/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
index 15d3733..690285c 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
@@ -28,6 +28,7 @@ import time
 from config import Config
 from exception import GitRepositorySynchronizationException
 from git import *
+import errno
 
 from ...util.asyncscheduledtask import AbstractAsyncScheduledTask, ScheduledExecutor
 from ...util.log import LogFactory
@@ -314,12 +315,30 @@ class AgentGitHandler:
             AgentGitHandler.log.exception(
                 "Could not remove repository folder for tenant:%s  %s" % (git_repo.tenant_id, e))
 
+        # restore default artifacts
+        AgentGitHandler.restore_default_artifacts("/tmp/default_artifacts", git_repo.local_repo_path)
+
         AgentGitHandler.clear_repo(tenant_id)
         AgentGitHandler.log.info("Git repository deleted for tenant %s" % git_repo.tenant_id)
 
         return True
 
     @staticmethod
+    def restore_default_artifacts (default_artifact_backup_location, local_repo_path):
+        try:
+            if os.path.isdir(default_artifact_backup_location):
+                # first remove all the artifacts in the local_repo_path
+                if os.listdir(local_repo_path):
+                    # non-empty
+                    filelist = [f for f in os.listdir(local_repo_path)]
+                    for f in filelist:
+                        GitUtils.delete_folder_tree(local_repo_path + '/' + f)
+            AgentGitHandler.log.info('Restoring default artifacts from ' + default_artifact_backup_location + ' to ' + local_repo_path)
+            shutil.copytree(default_artifact_backup_location, local_repo_path)
+        except OSError as e:
+            AgentGitHandler.log.error('Contents of ' + default_artifact_backup_location + ' not restored. Error: %s' % e)
+
+    @staticmethod
     def execute_git_command(command, repo_path):
         """
         Executes the given command string with given environment parameters

http://git-wip-us.apache.org/repos/asf/stratos/blob/46ccf803/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index 27cf99c..1dbf645 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -21,6 +21,9 @@ from modules.artifactmgt.git.agentgithandler import AgentGitHandler
 from config import Config
 import constants
 from exception import *
+import shutil
+import errno
+import os
 
 
 class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
@@ -90,6 +93,10 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
                           git_repo.repo_url, git_repo.local_repo_path)
             self.log.info("Executing git clone: [tenant-id] %s [repo-url] %s, [repo path] %s",
                           git_repo.tenant_id, git_repo.repo_url, git_repo.local_repo_path)
+
+            # copy default artifacts (if any) to a /tmp/default_artifacts
+            self.backupDefaultArtifacts(git_repo.local_repo_path, "/tmp/default_artifacts")
+
             try:
                 git_repo = AgentGitHandler.clone(git_repo)
                 AgentGitHandler.add_repo(git_repo)
@@ -101,3 +108,18 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
                 self.log.info("Retrying git clone operation...")
                 AgentGitHandler.retry_clone(git_repo)
                 AgentGitHandler.add_repo(git_repo)
+
+    def backupDefaultArtifacts(src, dest):
+        try:
+            if not os.path.isdir(src):
+                self.log.info ('Direcotry ' + src + ' does not exist')
+                return
+            if os.path.isdir(dest):
+                self.log.info('Directory ' + dest + ' already exists, will delete')
+                shutil.rmtree(dest)
+            self.log.info('Copying default artifacts from ' + src + ' to ' + dest)
+            shutil.copytree(src, dest)
+        except OSError as e:
+            self.log.error('Directory not copied. Error: %s' % e)
+
+


[6/8] stratos git commit: adding a log for default artifact backup = false

Posted by is...@apache.org.
adding a log for default artifact backup = false


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

Branch: refs/heads/master
Commit: 969293f6f4cd9e1e2ce93d8ee1bfbd95fc0bc7d5
Parents: fd28829
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Wed Dec 9 18:17:36 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:38:52 2015 +0530

----------------------------------------------------------------------
 .../cartridge.agent/plugins/DefaultArtifactCheckout.py             | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/969293f6/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index a2cd5c6..f9883aa 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -97,6 +97,8 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
 
             if not Config.backup_initial_artifacts is None and Config.backup_initial_artifacts:
                 self.check_and_backup_initial_artifacts(git_repo.local_repo_path)
+            else:
+                self.log.info("Default artifact backup disabled")
 
             try:
                 git_repo = AgentGitHandler.clone(git_repo)


[4/8] stratos git commit: adding comments

Posted by is...@apache.org.
adding comments


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

Branch: refs/heads/master
Commit: dd6499463c6e1576a2a6f2c3a7e9865595efbe3a
Parents: 9a6f8dc
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Dec 1 17:07:23 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:36:29 2015 +0530

----------------------------------------------------------------------
 .../modules/artifactmgt/git/agentgithandler.py  | 21 ++++++++++----------
 .../plugins/DefaultArtifactCheckout.py          |  7 +++++++
 2 files changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/dd649946/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
index 39543b9..14b76f3 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
@@ -214,15 +214,9 @@ class AgentGitHandler:
     @staticmethod
     def clear_repo(tenant_id):
         tenant_id = str(tenant_id)
-        AgentGitHandler.log.info ('########################## in clear_repo method...' + tenant_id)
         if tenant_id in AgentGitHandler.__git_repositories:
             del AgentGitHandler.__git_repositories[tenant_id]
-            AgentGitHandler.log.info('########################## cached repo object deleted for tenant ' +
-                  tenant_id)
-        if tenant_id in AgentGitHandler.__git_repositories:
-            AgentGitHandler.log.info('########################## cached repo object still exists for tenant ' + tenant_id)
-        else:
-            AgentGitHandler.log.info('########################## no cached obj found for ' + tenant_id)
+            AgentGitHandler.log.debug('Cached repo object deleted for tenant ' + tenant_id)
 
     @staticmethod
     def create_git_repo(repo_info):
@@ -338,13 +332,18 @@ class AgentGitHandler:
         return True
 
     @staticmethod
-    def restore_default_artifacts(default_dir):
+    def restore_default_artifacts(initial_artifact_dir):
+        """
+        Restores the initial artifacts from the previously taken backup, if the backup exists
+
+        :param initial_artifact_dir: path to local artifact directory
+        """
         try:
-            Utils.move_directory(Utils.strip_trailing_slash(default_dir) + constants.BACKUP_DIR_SUFFIX, default_dir)
-            AgentGitHandler.log.info('Restored contents from backup location ' +Utils.strip_trailing_slash(default_dir)
+            Utils.move_directory(Utils.strip_trailing_slash(initial_artifact_dir) + constants.BACKUP_DIR_SUFFIX, initial_artifact_dir)
+            AgentGitHandler.log.info('Restored contents from backup location ' + Utils.strip_trailing_slash(initial_artifact_dir)
                                      + constants.BACKUP_DIR_SUFFIX)
         except OSError as e:
-            AgentGitHandler.log.error('Contents of ' + default_dir + ' not restored. Error: %s' % e)
+            AgentGitHandler.log.error('Contents of ' + initial_artifact_dir + ' not restored. Error: %s' % e)
 
     @staticmethod
     def execute_git_command(command, repo_path):

http://git-wip-us.apache.org/repos/asf/stratos/blob/dd649946/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index 413090e..1b7baa0 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -110,6 +110,13 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
                 AgentGitHandler.add_repo(git_repo)
 
     def check_and_backup_initial_artifacts(self, initial_artifact_dir):
+        """
+        verifies if there are any default artifacts by checking the 'initial_artifact_dir' and
+        whether its empty, and takes a backup to a directory  initial_artifact_dir_backup in the
+        same location
+
+        :param initial_artifact_dir: path to local artifact directory
+        """
         # copy default artifacts (if any) to a a temp location
         # if directory name is dir, the backup directory name would be dir_backup
         if self.initial_artifacts_exists(initial_artifact_dir):


[3/8] stratos git commit: fixing http://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree, improving ScheduledExecutor and using str(tenant_id) in getting cached git repo objects

Posted by is...@apache.org.
fixing http://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree, improving ScheduledExecutor and using str(tenant_id) in getting cached git repo objects


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

Branch: refs/heads/master
Commit: 9a6f8dc5728755328dd822480f65652da44e90da
Parents: a0a1684
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Dec 1 16:26:41 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:35:46 2015 +0530

----------------------------------------------------------------------
 .../modules/artifactmgt/git/agentgithandler.py    | 12 ++++++++++++
 .../modules/util/asyncscheduledtask.py            |  5 +++--
 .../modules/util/cartridgeagentutils.py           |  9 ++++++++-
 .../plugins/DefaultArtifactCheckout.py            | 18 +++++++++++-------
 4 files changed, 34 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/9a6f8dc5/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
index dfa8089..39543b9 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
@@ -21,6 +21,7 @@ import tempfile
 import urllib
 import os
 from distutils.dir_util import copy_tree
+import distutils.dir_util
 from threading import current_thread
 
 import constants
@@ -155,6 +156,9 @@ class AgentGitHandler:
                 "Cloning artifacts from URL: %s to temp location: %s" % (git_repo.repo_url, temp_repo_path))
             Repo.clone_from(git_repo.auth_url, temp_repo_path)
 
+            # clear the paths to get rid of the following bug in distutils:
+            # http://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree
+            distutils.dir_util._path_created = {}
             # move the cloned dir to application path
             copy_tree(temp_repo_path, git_repo.local_repo_path)
             AgentGitHandler.log.info("Git clone operation for tenant %s successful" % git_repo.tenant_id)
@@ -209,8 +213,16 @@ class AgentGitHandler:
 
     @staticmethod
     def clear_repo(tenant_id):
+        tenant_id = str(tenant_id)
+        AgentGitHandler.log.info ('########################## in clear_repo method...' + tenant_id)
         if tenant_id in AgentGitHandler.__git_repositories:
             del AgentGitHandler.__git_repositories[tenant_id]
+            AgentGitHandler.log.info('########################## cached repo object deleted for tenant ' +
+                  tenant_id)
+        if tenant_id in AgentGitHandler.__git_repositories:
+            AgentGitHandler.log.info('########################## cached repo object still exists for tenant ' + tenant_id)
+        else:
+            AgentGitHandler.log.info('########################## no cached obj found for ' + tenant_id)
 
     @staticmethod
     def create_git_repo(repo_info):

http://git-wip-us.apache.org/repos/asf/stratos/blob/9a6f8dc5/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
index f727414..5b54598 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
@@ -61,8 +61,9 @@ class ScheduledExecutor(Thread):
         """
         while not self.terminated:
             time.sleep(self.delay)
-            task_thread = Thread(target=self.task.execute_task)
-            task_thread.start()
+            if not self.terminated:
+                task_thread = Thread(target=self.task.execute_task)
+                task_thread.start()
 
     def terminate(self):
         """

http://git-wip-us.apache.org/repos/asf/stratos/blob/9a6f8dc5/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
index 532dc5f..7b2d0ed 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
@@ -143,8 +143,8 @@ def check_port_active(ip_address, port):
         log.debug("Port %s is not active" % port)
         return False
 
-class Utils (object):
 
+class Utils(object):
     @staticmethod
     def directory_exists(dir):
         """
@@ -197,6 +197,13 @@ class Utils (object):
         except OSError as e:
             log.error('Directory not moved. Error: %s' % e)
 
+    @staticmethod
+    def print_dictionary(dic):
+        for x in dic:
+            print (x)
+            for y in dic[x]:
+                print (y, ':', dic[x][y])
+
 class IncrementalCeilingListIterator(object):
     """
     Iterates through a given list and returns elements. At the end of the list if terminate_at_end is set to false,

http://git-wip-us.apache.org/repos/asf/stratos/blob/9a6f8dc5/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index 0a45d91..413090e 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -83,6 +83,7 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
                 git_repo.cloned = False
                 self.log.debug("Executing git clone: [tenant-id] %s [repo-url] %s",
                                git_repo.tenant_id, git_repo.repo_url)
+
                 git_repo = AgentGitHandler.clone(git_repo)
                 AgentGitHandler.add_repo(git_repo)
                 self.log.debug("Git clone executed: [tenant-id] %s [repo-url] %s",
@@ -94,13 +95,7 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
             self.log.info("Executing git clone: [tenant-id] %s [repo-url] %s, [repo path] %s",
                           git_repo.tenant_id, git_repo.repo_url, git_repo.local_repo_path)
 
-            # copy default artifacts (if any) to a a temp location
-            # if directory name is dir, the backup directory name would be dir_backup
-            if self.initial_artifacts_exists(git_repo.local_repo_path):
-                self.log.info("Default artifacts exist at " + git_repo.local_repo_path)
-                self.backup_initial_artifacts(git_repo.local_repo_path)
-            else:
-                self.log.info("No default artifacts exist at " + git_repo.local_repo_path)
+            self.check_and_backup_initial_artifacts(git_repo.local_repo_path)
 
             try:
                 git_repo = AgentGitHandler.clone(git_repo)
@@ -114,6 +109,15 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
                 AgentGitHandler.retry_clone(git_repo)
                 AgentGitHandler.add_repo(git_repo)
 
+    def check_and_backup_initial_artifacts(self, initial_artifact_dir):
+        # copy default artifacts (if any) to a a temp location
+        # if directory name is dir, the backup directory name would be dir_backup
+        if self.initial_artifacts_exists(initial_artifact_dir):
+            self.log.info("Default artifacts exist at " + initial_artifact_dir)
+            self.backup_initial_artifacts(initial_artifact_dir)
+        else:
+            self.log.info("No default artifacts exist at " + initial_artifact_dir)
+
     def initial_artifacts_exists(self, dir):
         try:
             return os.path.exists(dir) and os.listdir(dir)


[2/8] stratos git commit: initial changes for restoring initial artifacts after signup removal

Posted by is...@apache.org.
initial changes for restoring initial artifacts after signup removal


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

Branch: refs/heads/master
Commit: a0a1684b3e12f05643b41ff15a3c56f5aa6c36f5
Parents: 46ccf80
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Dec 1 11:07:56 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:35:37 2015 +0530

----------------------------------------------------------------------
 .../cartridge.agent/constants.py                |  2 +
 .../modules/artifactmgt/git/agentgithandler.py  | 22 ++++----
 .../modules/util/cartridgeagentutils.py         | 55 ++++++++++++++++++++
 .../plugins/DefaultArtifactCheckout.py          | 34 +++++++-----
 4 files changed, 86 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a0a1684b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
index cd2ce36..4672579 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
@@ -140,3 +140,5 @@ MONITORING_RECEIVER_PORT = "monitoring.server.port"
 MONITORING_RECEIVER_SECURE_PORT = "monitoring.server.secure.port"
 MONITORING_SERVER_ADMIN_USERNAME = "monitoring.server.admin.username"
 MONITORING_SERVER_ADMIN_PASSWORD = "monitoring.server.admin.password"
+
+BACKUP_DIR_SUFFIX = "_backup"

http://git-wip-us.apache.org/repos/asf/stratos/blob/a0a1684b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
index 690285c..dfa8089 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
@@ -28,10 +28,10 @@ import time
 from config import Config
 from exception import GitRepositorySynchronizationException
 from git import *
-import errno
 
 from ...util.asyncscheduledtask import AbstractAsyncScheduledTask, ScheduledExecutor
 from ...util.log import LogFactory
+from ...util.cartridgeagentutils import Utils
 
 
 class AgentGitHandler:
@@ -316,7 +316,9 @@ class AgentGitHandler:
                 "Could not remove repository folder for tenant:%s  %s" % (git_repo.tenant_id, e))
 
         # restore default artifacts
-        AgentGitHandler.restore_default_artifacts("/tmp/default_artifacts", git_repo.local_repo_path)
+        if Utils.directory_exists(Utils.strip_trailing_slash(git_repo.local_repo_path) +
+                                          constants.BACKUP_DIR_SUFFIX):
+            AgentGitHandler.restore_default_artifacts(git_repo.local_repo_path)
 
         AgentGitHandler.clear_repo(tenant_id)
         AgentGitHandler.log.info("Git repository deleted for tenant %s" % git_repo.tenant_id)
@@ -324,19 +326,13 @@ class AgentGitHandler:
         return True
 
     @staticmethod
-    def restore_default_artifacts (default_artifact_backup_location, local_repo_path):
+    def restore_default_artifacts(default_dir):
         try:
-            if os.path.isdir(default_artifact_backup_location):
-                # first remove all the artifacts in the local_repo_path
-                if os.listdir(local_repo_path):
-                    # non-empty
-                    filelist = [f for f in os.listdir(local_repo_path)]
-                    for f in filelist:
-                        GitUtils.delete_folder_tree(local_repo_path + '/' + f)
-            AgentGitHandler.log.info('Restoring default artifacts from ' + default_artifact_backup_location + ' to ' + local_repo_path)
-            shutil.copytree(default_artifact_backup_location, local_repo_path)
+            Utils.move_directory(Utils.strip_trailing_slash(default_dir) + constants.BACKUP_DIR_SUFFIX, default_dir)
+            AgentGitHandler.log.info('Restored contents from backup location ' +Utils.strip_trailing_slash(default_dir)
+                                     + constants.BACKUP_DIR_SUFFIX)
         except OSError as e:
-            AgentGitHandler.log.error('Contents of ' + default_artifact_backup_location + ' not restored. Error: %s' % e)
+            AgentGitHandler.log.error('Contents of ' + default_dir + ' not restored. Error: %s' % e)
 
     @staticmethod
     def execute_git_command(command, repo_path):

http://git-wip-us.apache.org/repos/asf/stratos/blob/a0a1684b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
index e5ad877..532dc5f 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/cartridgeagentutils.py
@@ -21,6 +21,8 @@ import time
 import socket
 import string
 import hashlib
+import shutil
+import os
 
 from log import LogFactory
 
@@ -141,6 +143,59 @@ def check_port_active(ip_address, port):
         log.debug("Port %s is not active" % port)
         return False
 
+class Utils (object):
+
+    @staticmethod
+    def directory_exists(dir):
+        """
+        Checks if the given directory exists
+        :param dir: directory to check
+        :return: True if the directory dir exists, else False
+        :rtype: bool
+        """
+        try:
+            return os.path.isdir(dir)
+        except OSError as e:
+            log.error("Unable to check directory existance [%s]" % e)
+            return False
+
+    @staticmethod
+    def copy_directory(src, destination):
+        """
+        Copies if the directory 'src' to 'destination'
+        :param src: location of directory to copy
+        :param destination: new directory location
+        """
+        try:
+            shutil.copytree(src, destination)
+            log.debug("Directory [%s] copied to [%s]" % (src, destination))
+        except OSError as e:
+            log.error('Directory not copied. Error: %s' % e)
+
+    @staticmethod
+    def strip_trailing_slash(string):
+        """
+        If the string has a trailing '/', removes it
+        :param string: string to check
+        :return: string without a trailing '/'
+        :rtype: string
+        """
+        if string.endswith('/'):
+            return string[:-1]
+        return string
+
+    @staticmethod
+    def move_directory(src, destination):
+        """
+        Moves if the directory 'src' to 'destination'
+        :param src: location of directory to move
+        :param destination: new directory location
+        """
+        try:
+            shutil.move(src, destination)
+            log.debug("Directory [%s] moved to [%s]" % (src, destination))
+        except OSError as e:
+            log.error('Directory not moved. Error: %s' % e)
 
 class IncrementalCeilingListIterator(object):
     """

http://git-wip-us.apache.org/repos/asf/stratos/blob/a0a1684b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index 1dbf645..0a45d91 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -17,12 +17,12 @@
 
 from plugins.contracts import IArtifactCheckoutPlugin
 from modules.util.log import LogFactory
+from modules.util.cartridgeagentutils import Utils
 from modules.artifactmgt.git.agentgithandler import AgentGitHandler
 from config import Config
 import constants
 from exception import *
 import shutil
-import errno
 import os
 
 
@@ -94,8 +94,13 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
             self.log.info("Executing git clone: [tenant-id] %s [repo-url] %s, [repo path] %s",
                           git_repo.tenant_id, git_repo.repo_url, git_repo.local_repo_path)
 
-            # copy default artifacts (if any) to a /tmp/default_artifacts
-            self.backupDefaultArtifacts(git_repo.local_repo_path, "/tmp/default_artifacts")
+            # copy default artifacts (if any) to a a temp location
+            # if directory name is dir, the backup directory name would be dir_backup
+            if self.initial_artifacts_exists(git_repo.local_repo_path):
+                self.log.info("Default artifacts exist at " + git_repo.local_repo_path)
+                self.backup_initial_artifacts(git_repo.local_repo_path)
+            else:
+                self.log.info("No default artifacts exist at " + git_repo.local_repo_path)
 
             try:
                 git_repo = AgentGitHandler.clone(git_repo)
@@ -109,17 +114,18 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
                 AgentGitHandler.retry_clone(git_repo)
                 AgentGitHandler.add_repo(git_repo)
 
-    def backupDefaultArtifacts(src, dest):
+    def initial_artifacts_exists(self, dir):
         try:
-            if not os.path.isdir(src):
-                self.log.info ('Direcotry ' + src + ' does not exist')
-                return
-            if os.path.isdir(dest):
-                self.log.info('Directory ' + dest + ' already exists, will delete')
-                shutil.rmtree(dest)
-            self.log.info('Copying default artifacts from ' + src + ' to ' + dest)
-            shutil.copytree(src, dest)
+            return os.path.exists(dir) and os.listdir(dir)
         except OSError as e:
-            self.log.error('Directory not copied. Error: %s' % e)
-
+            self.log.error('Unable to check if directory exists | non-empty, error: %s' % e)
+            return False
 
+    def backup_initial_artifacts(self, src):
+        self.log.info('Initial artifacts exists, taking backup to ' + Utils.strip_trailing_slash(src)
+                      + constants.BACKUP_DIR_SUFFIX +
+                      ' directory')
+        try:
+            shutil.copytree(src, Utils.strip_trailing_slash(src) + constants.BACKUP_DIR_SUFFIX)
+        except OSError as e:
+            self.log.error('Directory not copied. Error: %s' % e)


[7/8] stratos git commit: changing logic of enabling initial artifact update

Posted by is...@apache.org.
changing logic of enabling initial artifact update


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

Branch: refs/heads/master
Commit: d296b2d559994c1801c1d2c4b0d036cd96c8f8e2
Parents: 969293f
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Wed Dec 9 22:35:53 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:39:15 2015 +0530

----------------------------------------------------------------------
 .../src/main/python/cartridge.agent/cartridge.agent/agent.conf     | 2 +-
 .../cartridge.agent/plugins/DefaultArtifactCheckout.py             | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d296b2d5/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
index 6875d25..06e3a40 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
@@ -45,4 +45,4 @@ APPLICATION_PATH                      =APPLICATION-PATH
 metadata.service.url                  =METADATA-SERVICE-URL
 super.tenant.repository.path          =/repository/deployment/server/
 tenant.repository.path                =/repository/tenants/
-enable.initial.artifact.backup        =ENABLE_INITIAL_ARTIFACT_UPDATE
+enable.initial.artifact.backup        =ENABLE_INITIAL_ARTIFACT_BACKUP

http://git-wip-us.apache.org/repos/asf/stratos/blob/d296b2d5/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index f9883aa..1645030 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -95,7 +95,7 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
             self.log.info("Executing git clone: [tenant-id] %s [repo-url] %s, [repo path] %s",
                           git_repo.tenant_id, git_repo.repo_url, git_repo.local_repo_path)
 
-            if not Config.backup_initial_artifacts is None and Config.backup_initial_artifacts:
+            if Config.backup_initial_artifacts:
                 self.check_and_backup_initial_artifacts(git_repo.local_repo_path)
             else:
                 self.log.info("Default artifact backup disabled")


[5/8] stratos git commit: configuration for enabling initial artifact backup

Posted by is...@apache.org.
configuration for enabling initial artifact backup


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

Branch: refs/heads/master
Commit: fd288296ea7de1d801fa842f963bf9e29b65b770
Parents: dd64994
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Wed Dec 9 18:11:13 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Dec 21 22:38:32 2015 +0530

----------------------------------------------------------------------
 .../src/main/python/cartridge.agent/cartridge.agent/agent.conf    | 1 +
 .../src/main/python/cartridge.agent/cartridge.agent/config.py     | 3 +++
 .../src/main/python/cartridge.agent/cartridge.agent/constants.py  | 1 +
 .../cartridge.agent/plugins/DefaultArtifactCheckout.py            | 3 ++-
 4 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/fd288296/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
index a8c8a19..6875d25 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
@@ -45,3 +45,4 @@ APPLICATION_PATH                      =APPLICATION-PATH
 metadata.service.url                  =METADATA-SERVICE-URL
 super.tenant.repository.path          =/repository/deployment/server/
 tenant.repository.path                =/repository/tenants/
+enable.initial.artifact.backup        =ENABLE_INITIAL_ARTIFACT_UPDATE

http://git-wip-us.apache.org/repos/asf/stratos/blob/fd288296/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
index 8d2915e..292e164 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
@@ -114,6 +114,8 @@ class Config:
     """ :type : str  """
     super_tenant_repository_path = None
     """ :type : str  """
+    backup_initial_artifacts = False
+    """ :type : bool  """
     deployment = None
     """ :type : str  """
     manager_service_name = None
@@ -360,6 +362,7 @@ class Config:
             Config.lb_public_ip = Config.read_property(constants.LB_PUBLIC_IP, False)
             Config.tenant_repository_path = Config.read_property(constants.TENANT_REPO_PATH, False)
             Config.super_tenant_repository_path = Config.read_property(constants.SUPER_TENANT_REPO_PATH, False)
+            Config.backup_initial_artifacts = Config.read_property(constants.ENABLE_INITIAL_ARTIFACT_BACKUP, False)
 
             Config.is_primary = Config.read_property(constants.CLUSTERING_PRIMARY_KEY, False)
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/fd288296/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
index 4672579..93879d1 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
@@ -77,6 +77,7 @@ SUPERTENANT_TEMP_PATH = "/tmp/-1234/"
 
 SUPER_TENANT_REPO_PATH = "super.tenant.repository.path"
 TENANT_REPO_PATH = "tenant.repository.path"
+ENABLE_INITIAL_ARTIFACT_BACKUP = "enable.initial.artifact.backup"
 
 # topic names to subscribe
 INSTANCE_NOTIFIER_TOPIC = "instance/#"

http://git-wip-us.apache.org/repos/asf/stratos/blob/fd288296/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
index 1b7baa0..a2cd5c6 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/plugins/DefaultArtifactCheckout.py
@@ -95,7 +95,8 @@ class DefaultArtifactCheckout(IArtifactCheckoutPlugin):
             self.log.info("Executing git clone: [tenant-id] %s [repo-url] %s, [repo path] %s",
                           git_repo.tenant_id, git_repo.repo_url, git_repo.local_repo_path)
 
-            self.check_and_backup_initial_artifacts(git_repo.local_repo_path)
+            if not Config.backup_initial_artifacts is None and Config.backup_initial_artifacts:
+                self.check_and_backup_initial_artifacts(git_repo.local_repo_path)
 
             try:
                 git_repo = AgentGitHandler.clone(git_repo)


[8/8] stratos git commit: fixing conflicts in asyncschedulertask.py

Posted by is...@apache.org.
fixing conflicts in asyncschedulertask.py


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

Branch: refs/heads/master
Commit: 418ed02e85b530a3ee296643b8c5947ae1a5d1cc
Parents: d296b2d a760c06
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Dec 22 10:00:53 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Tue Dec 22 10:00:53 2015 +0530

----------------------------------------------------------------------
 .../cartridge/agent/util/ExtensionUtils.java    |   4 +-
 .../messaging/domain/topology/Topology.java     |  19 +-
 ...licationClustersCreatedMessageProcessor.java |   3 +-
 ...licationClustersRemovedMessageProcessor.java |   3 +-
 .../ClusterCreatedMessageProcessor.java         |   3 +-
 .../ClusterInstanceActivatedProcessor.java      |   3 +-
 .../ClusterInstanceCreatedMessageProcessor.java |   3 +-
 .../ClusterInstanceInactivateProcessor.java     |   3 +-
 .../ClusterInstanceTerminatedProcessor.java     |   3 +-
 .../ClusterInstanceTerminatingProcessor.java    |   3 +-
 .../ClusterRemovedMessageProcessor.java         |   3 +-
 .../topology/ClusterResetMessageProcessor.java  |   3 +-
 .../CompleteTopologyMessageProcessor.java       |   5 +-
 .../MemberActivatedMessageProcessor.java        |   3 +-
 .../topology/MemberCreatedMessageProcessor.java |   3 +-
 .../MemberInitializedMessageProcessor.java      |   3 +-
 .../MemberMaintenanceModeProcessor.java         |   3 +-
 .../MemberReadyToShutdownMessageProcessor.java  |   3 +-
 .../topology/MemberStartedMessageProcessor.java |   3 +-
 .../MemberSuspendedMessageProcessor.java        |   3 +-
 .../MemberTerminatedMessageProcessor.java       |   3 +-
 .../ServiceCreatedMessageProcessor.java         |   3 +-
 .../ServiceRemovedMessageProcessor.java         |   3 +-
 .../receiver/topology/TopologyManager.java      |  10 +
 .../README.md                                   |  53 +-
 .../pom.xml                                     |  38 --
 .../cartridge.agent/cartridge.agent/agent.conf  |   2 +
 .../cartridge.agent/cartridge.agent/agent.py    |  46 +-
 .../cartridge.agent/cartridge.agent/config.py   |  37 +-
 .../cartridge.agent/constants.py                |   2 +
 .../cartridge.agent/cartridge.agent/entity.py   |   2 +
 .../extensions/bash/CreateLVSDummyInterface.sh  |   6 +-
 .../cartridge.agent/healthstats.py              |   4 +
 .../cartridge.agent/logpublisher.py             |  14 +-
 .../modules/artifactmgt/git/agentgithandler.py  |   5 +
 .../modules/event/eventhandler.py               |  42 +-
 .../modules/util/asyncscheduledtask.py          |  10 +
 .../cartridge.agent/publisher.py                |   5 +-
 .../cartridge.agent/subscriber.py               |  77 +--
 .../cartridge.agent/terminator.txt              |   0
 .../python/cartridge.agent/tests/__init__.py    |  16 -
 .../tests/conf/complete_topology_event.json     |   1 -
 .../tests/conf/git/auth_repo.json               |  10 -
 .../tests/conf/git/auth_repo2.json              |  10 -
 .../tests/conf/git/simple_repo.json             |  10 -
 .../python/cartridge.agent/tests/test_events.py | 125 -----
 .../python/cartridge.agent/tests/test_git.py    |  79 ---
 .../python/cartridge.agent/tests/test_util.py   | 127 -----
 .../test/PythonCartridgeAgentTest.java          | 529 -------------------
 .../extension/FaultHandlingWindowProcessor.java |   2 +-
 .../extension/FaultHandlingWindowProcessor.java |   2 +-
 .../integration/tests/ADCExtensionTestCase.java |   2 +-
 .../agent/integration/tests/ADCTestCase.java    |   3 +-
 .../tests/ADCValidationTestCase.java            |   2 +-
 .../AgentConfBackwardCompatibilityTestCase.java | 140 +++++
 .../tests/AgentTerminationTestCase.java         | 186 +++++++
 .../tests/MessageBrokerHATestCase.java          |   1 +
 .../tests/PythonAgentIntegrationTest.java       |   3 +-
 .../agent.conf                                  |  48 ++
 .../logging.ini                                 |  52 ++
 .../payload/launch-params                       |   1 +
 .../AgentTerminationTestCase/agent.conf         |  46 ++
 .../AgentTerminationTestCase/logging.ini        |  52 ++
 .../payload/launch-params                       |   1 +
 .../test-conf/integration-test.properties       |   2 +-
 .../src/test/resources/test-suite-ha.xml        |  38 ++
 .../integration/common/TopologyHandler.java     |   6 +-
 67 files changed, 851 insertions(+), 1084 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/418ed02e/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/418ed02e/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/418ed02e/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/418ed02e/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/artifactmgt/git/agentgithandler.py
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/418ed02e/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
index 5b54598,9e3106b..ccf3d4a
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/asyncscheduledtask.py
@@@ -61,9 -68,11 +68,12 @@@ class ScheduledExecutor(Thread)
          """
          while not self.terminated:
              time.sleep(self.delay)
 -            task_thread = Thread(target=self.task.execute_task)
 -            task_thread.setName("WorkerThreadForTask%s" % self.task.__class__.__name__)
 -            task_thread.setDaemon(True)
 -            log.debug("Starting a worker thread for the Scheduled Executor for task %s" % self.task.__class__.__name__)
 -            task_thread.start()
 +            if not self.terminated:
 +                task_thread = Thread(target=self.task.execute_task)
++                task_thread.setName("WorkerThreadForTask%s" % self.task.__class__.__name__)
++                task_thread.setDaemon(True)
++                log.debug("Starting a worker thread for the Scheduled Executor for task %s" % self.task.__class__.__name__)
 +                task_thread.start()
  
      def terminate(self):
          """