ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yus...@apache.org
Subject [08/14] ambari git commit: AMBARI-9248. Fix post-install hook for hdp-select (dlysnichenko)
Date Thu, 22 Jan 2015 22:16:48 GMT
AMBARI-9248. Fix post-install hook for hdp-select (dlysnichenko)


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

Branch: refs/heads/2.0-preview
Commit: 1154fe4be38d9e1bdf4b311b423a80de31035617
Parents: 84bfe43
Author: Lisnichenko Dmitro <dlysnichenko@hortonworks.com>
Authored: Wed Jan 21 23:45:39 2015 +0200
Committer: Yusaku Sako <yusaku@hortonworks.com>
Committed: Wed Jan 21 14:16:29 2015 -0800

----------------------------------------------------------------------
 .../src/main/python/ambari_agent/HostCleanup.py   | 13 ++++++++++++-
 .../test/python/ambari_agent/TestHostCleanup.py   | 18 +++++++++++++++++-
 .../scripts/shared_initialization.py              |  8 ++++++--
 3 files changed, 35 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1154fe4b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/HostCleanup.py b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
index 7aeb70a..398502e 100644
--- a/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
+++ b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
@@ -87,8 +87,10 @@ DIRNAME_PATTERNS = [
 REPOSITORY_BLACK_LIST = ["ambari.repo"]
 PACKAGES_BLACK_LIST = ["ambari-server", "ambari-agent"]
 
-
 class HostCleanup:
+
+  SELECT_ALL_PERFORMED_MARKER = "/var/lib/ambari-agent/data/hdp-select-set-all.performed"
+
   def resolve_ambari_config(self):
     try:
       config = AmbariConfig()
@@ -134,6 +136,8 @@ class HostCleanup:
       if packageList and not PACKAGE_SECTION in SKIP_LIST:
         logger.info("Deleting packages: " + str(packageList) + "\n")
         self.do_erase_packages(packageList)
+        # Removing packages means that we have to rerun hdp-select
+        self.do_remove_hdp_select_marker()
       if userList and not USER_SECTION in SKIP_LIST:
         logger.info("\n" + "Deleting users: " + str(userList))
         self.do_delete_users(userList)
@@ -260,6 +264,13 @@ class HostCleanup:
       self.do_erase_files_silent(remList)
 
 
+  def do_remove_hdp_select_marker(self):
+    """
+    Remove marker file for 'hdp-select set all' invocation
+    """
+    if os.path.isfile(self.SELECT_ALL_PERFORMED_MARKER):
+      os.unlink(self.SELECT_ALL_PERFORMED_MARKER)
+
 
   # Alternatives exist as a stack of symlinks under /var/lib/alternatives/$name
   # Script expects names of the alternatives as input

http://git-wip-us.apache.org/repos/asf/ambari/blob/1154fe4b/ambari-agent/src/test/python/ambari_agent/TestHostCleanup.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestHostCleanup.py b/ambari-agent/src/test/python/ambari_agent/TestHostCleanup.py
index 84b96cc..f43784c 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestHostCleanup.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestHostCleanup.py
@@ -368,7 +368,7 @@ class TestHostCleanup(TestCase):
 
   @patch.object(HostCleanup.HostCleanup, 'run_os_command')
   @patch.object(OSCheck, "get_os_type")
-  def test_do_earse_packages(self, get_os_type_method, run_os_command_method):
+  def test_do_erase_packages(self, get_os_type_method, run_os_command_method):
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -399,6 +399,22 @@ class TestHostCleanup(TestCase):
 
     sys.stdout = sys.__stdout__
 
+
+  @patch('os.path.isfile')
+  @patch('os.unlink')
+  def test_do_remove_hdp_select_marker(self, unlink_mock, isfile_mock):
+    out = StringIO.StringIO()
+    sys.stdout = out
+
+    isfile_mock.return_value = True
+
+    self.hostcleanup.do_remove_hdp_select_marker()
+
+    self.assertTrue(unlink_mock.called)
+
+    sys.stdout = sys.__stdout__
+
+
   @patch.object(HostCleanup.HostCleanup, 'get_files_in_dir')
   @patch.object(OSCheck, "get_os_type")
   def test_find_repo_files_for_repos(self, get_os_type_method,

http://git-wip-us.apache.org/repos/asf/ambari/blob/1154fe4b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/after-INSTALL/scripts/shared_initialization.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/after-INSTALL/scripts/shared_initialization.py
b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/after-INSTALL/scripts/shared_initialization.py
index f256688..3b7bc54 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/after-INSTALL/scripts/shared_initialization.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/after-INSTALL/scripts/shared_initialization.py
@@ -20,10 +20,14 @@ import os
 from resource_management import *
 
 def setup_hdp_install_directory():
+  # This is a name of marker file.
+  SELECT_ALL_PERFORMED_MARKER = "/var/lib/ambari-agent/data/hdp-select-set-all.performed"
   import params
   if params.hdp_stack_version != "" and compare_versions(params.stack_version_unformatted,
'2.2') >= 0:
-    Execute(format('sudo /usr/bin/hdp-select set all `ambari-python-wrap /usr/bin/hdp-select
versions | grep ^{stack_version_unformatted} | tail -1`'),
-            only_if=format('ls -d /usr/hdp/{stack_version_unformatted}*')
+    Execute(format('sudo touch {SELECT_ALL_PERFORMED_MARKER} ; ' +
+                   'sudo /usr/bin/hdp-select set all `ambari-python-wrap /usr/bin/hdp-select
versions | grep ^{stack_version_unformatted} | tail -1`'),
+            only_if=format('ls -d /usr/hdp/{stack_version_unformatted}*'),   # If any HDP
version is installed
+            not_if=format("test -f {SELECT_ALL_PERFORMED_MARKER}")           # Do that only
once (otherwise we break rolling upgrade logic)
     )
 
 def setup_config():


Mime
View raw message