You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/09/17 12:15:27 UTC

stratos git commit: Fix rebase issue in PCA

Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x e757f11ef -> 01557c6f7


Fix rebase issue in PCA


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

Branch: refs/heads/stratos-4.1.x
Commit: 01557c6f770a0d5a44be3467609bc4d43e30a40c
Parents: e757f11
Author: Akila Perera <ra...@gmail.com>
Authored: Thu Sep 17 15:44:41 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Thu Sep 17 15:44:41 2015 +0530

----------------------------------------------------------------------
 .../modules/artifactmgt/git/agentgithandler.py  | 43 ++++++++++----------
 1 file changed, 22 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/01557c6f/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 d8da842..b8942a2 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
@@ -16,17 +16,17 @@
 # under the License.
 
 from threading import current_thread
-import os
 import subprocess
 import shutil
-import constants
 import time
+import os
 from git import *
 
+import constants
 from config import Config
-from ... util.log import LogFactory
-from ... util.asyncscheduledtask import AbstractAsyncScheduledTask, ScheduledExecutor
-from ... artifactmgt.repository import Repository
+from ...util.log import LogFactory
+from ...util.asyncscheduledtask import AbstractAsyncScheduledTask, ScheduledExecutor
+from ...artifactmgt.repository import Repository
 from exception import GitRepositorySynchronizationException
 
 
@@ -163,7 +163,6 @@ class AgentGitHandler:
     def pull(git_repo):
         # git reset to make sure no uncommitted changes are present before the pull, no conflicts will occur
         (output, errors) = AgentGitHandler.execute_git_command(["status"], git_repo.local_repo_path)
-        AgentGitHandler.log.info("Executed git status with output: %r" % output)
 
         # check if modified files are present
         modified = AgentGitHandler.has_modified_files(git_repo.local_repo_path)
@@ -176,7 +175,8 @@ class AgentGitHandler:
 
         try:
             repo = Repo(git_repo.local_repo_path)
-            output = repo.remotes.origin.pull(rebase=True)
+            (output, errors) = AgentGitHandler.execute_git_command(["pull", "--rebase", "origin", "master"],
+                                                                   git_repo.local_repo_path)
             AgentGitHandler.log.info("Git pull rebase executed in checkout job")
             if repo.is_dirty():
                 raise GitRepositorySynchronizationException("Git pull operation left the repository in dirty state")
@@ -300,17 +300,19 @@ class AgentGitHandler:
                     # both username and password are in the url, check and return as is
                     credential_split = at_split[0].split(":")
                     if credential_split[0] is repo_info.repo_username and \
-                            credential_split[1] is repo_info.repo_password:
+                                    credential_split[1] is repo_info.repo_password:
                         # credentialed url with provided credentials, return as is
                         return repo_info.repo_url
                     else:
                         # credentials wrong, need to replace
-                        return str(url_split[0] + "//" + repo_info.repo_username + ":" + repo_info.repo_password.strip() + "@" +
+                        return str(url_split[
+                                       0] + "//" + repo_info.repo_username + ":" + repo_info.repo_password.strip() + "@" +
                                    at_split[1])
                 else:
                     # only username is provided, need to include password
-                    return str(url_split[0] + "//" + repo_info.repo_username + ":" + repo_info.repo_password.strip() + "@" +
-                               at_split[1])
+                    return str(
+                        url_split[0] + "//" + repo_info.repo_username + ":" + repo_info.repo_password.strip() + "@" +
+                        at_split[1])
             else:
                 # no credentials in the url, need to include username and password
                 return str(url_split[0] + "//" + repo_info.repo_username + ":" + repo_info.repo_password.strip() + "@" +
@@ -375,9 +377,10 @@ class AgentGitHandler:
         # push to remote
         try:
             repo = Repo(git_repo.local_repo_path)
-            
+
             # pull and rebase before pushing to remote repo
-            output = repo.remotes.origin.pull(rebase=True)
+            (output, errors) = AgentGitHandler.execute_git_command(["pull", "--rebase", "origin", "master"],
+                                                                   git_repo.local_repo_path)
             AgentGitHandler.log.info("Git pull rebase executed before pushing to remote")
 
             push_info = repo.remotes.origin.push()
@@ -403,8 +406,6 @@ class AgentGitHandler:
     @staticmethod
     def has_modified_files(repo_path):
         (output, errors) = AgentGitHandler.execute_git_command(["status"], repo_path=repo_path)
-        AgentGitHandler.log.debug("Git status output: %s", str(output))
-
         if "nothing to commit" in output:
             return False
         else:
@@ -473,13 +474,12 @@ class AgentGitHandler:
         :exception: RuntimeError
         """
         os_env = os.environ.copy()
-
         command.insert(0, "/usr/bin/git")
+        AgentGitHandler.log.info("Executing Git command: %s" % command)
         p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=os_env, cwd=repo_path)
-        output, errors = p.communicate()
-        if len(errors) > 0:
-            raise RuntimeError("Git Command execution failed: %s" % errors)
-
+        (output, errors) = p.communicate()
+        AgentGitHandler.log.info("Git command [output] %s" % str(output))
+        AgentGitHandler.log.info("Git command [errors] %s" % str(errors))
         return output, errors
 
 
@@ -513,6 +513,7 @@ class ArtifactUpdateTask(AbstractAsyncScheduledTask):
             except GitRepositorySynchronizationException as e:
                 self.log.exception("Auto checkout task failed: %s" % e.get_message())
 
+
 class GitRepository:
     """
     Represents a git repository inside a particular instance
@@ -559,7 +560,7 @@ class GitUtils:
         except OSError as e:
             raise GitRepositorySynchronizationException("Directory creating failed in [%s]. " % e)
 
-        # return False
+            # return False
 
     @staticmethod
     def delete_folder_tree(path):