Repository: ambari
Updated Branches:
  refs/heads/branch-2.5 280bb6ecf -> 0ea79d3ee


AMBARI-18905 - Management pack purge option should support extensions


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

Branch: refs/heads/branch-2.5
Commit: 0ea79d3ee5caa23666d08efef4bde50620650f20
Parents: 280bb6e
Author: Tim Thorpe <ttho...@apache.org>
Authored: Wed Nov 16 13:40:01 2016 -0800
Committer: Tim Thorpe <ttho...@apache.org>
Committed: Wed Nov 16 13:40:01 2016 -0800

----------------------------------------------------------------------
 .../src/main/python/ambari_server/setupMpacks.py       |  8 +++++++-
 ambari-server/src/test/python/TestMpacks.py            | 13 ++++++++++++-
 2 files changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0ea79d3e/ambari-server/src/main/python/ambari_server/setupMpacks.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/setupMpacks.py 
b/ambari-server/src/main/python/ambari_server/setupMpacks.py
index 3b8a67a..773d946 100755
--- a/ambari-server/src/main/python/ambari_server/setupMpacks.py
+++ b/ambari-server/src/main/python/ambari_server/setupMpacks.py
@@ -51,6 +51,7 @@ logger = logging.getLogger(__name__)
 MPACKS_REPLAY_LOG_FILENAME = "mpacks_replay.log"
 MPACKS_CACHE_DIRNAME = "cache"
 STACK_DEFINITIONS_RESOURCE_NAME = "stack-definitions"
+EXTENSION_DEFINITIONS_RESOURCE_NAME = "extension-definitions"
 SERVICE_DEFINITIONS_RESOURCE_NAME = "service-definitions"
 MPACKS_RESOURCE_NAME = "mpacks"
 
@@ -70,6 +71,7 @@ STACK_ADDON_SERVICE_DEFINITIONS_ARTIFACT_NAME = 
"stack-addon-service-definitions
 RESOURCE_FRIENDLY_NAMES = {
   STACK_DEFINITIONS_RESOURCE_NAME : "stack definitions",
   SERVICE_DEFINITIONS_RESOURCE_NAME: "service definitions",
+  EXTENSION_DEFINITIONS_RESOURCE_NAME: "extension definitions",
   MPACKS_RESOURCE_NAME: "management packs"
 }
 
@@ -309,7 +311,7 @@ def validate_purge(options, purge_list, mpack_dir, 
mpack_metadata, replay_mode=F
       err = "The management pack you are attempting to install does not 
contain {0}. Since this management pack " \
             "does not contain a stack, the --purge option with 
--purge-list={1} would cause your existing Ambari " \
             "installation to be unusable. Due to that we cannot install this 
management pack.".format(
-          RESOURCE_FRIENDLY_NAMES[STACK_DEFINITIONS_ARTIFACT_NAME], purge_list)
+          RESOURCE_FRIENDLY_NAMES[STACK_DEFINITIONS_RESOURCE_NAME], purge_list)
       print_error_msg(err)
       raise FatalException(1, err)
     else:
@@ -352,6 +354,10 @@ def purge_stacks_and_mpacks(purge_list, replay_mode=False):
       if(os.path.isdir(path)):
         sudo.rmtree(path)
 
+  if EXTENSION_DEFINITIONS_RESOURCE_NAME in purge_list and 
os.path.exists(extension_location):
+    print_info_msg("Purging extension location: " + extension_location)
+    sudo.rmtree(extension_location)
+
   if SERVICE_DEFINITIONS_RESOURCE_NAME in purge_list and 
os.path.exists(service_definitions_location):
     print_info_msg("Purging service definitions location: " + 
service_definitions_location)
     sudo.rmtree(service_definitions_location)

http://git-wip-us.apache.org/repos/asf/ambari/blob/0ea79d3e/ambari-server/src/test/python/TestMpacks.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestMpacks.py 
b/ambari-server/src/test/python/TestMpacks.py
index d935b5a..7fb21ae 100644
--- a/ambari-server/src/test/python/TestMpacks.py
+++ b/ambari-server/src/test/python/TestMpacks.py
@@ -49,7 +49,8 @@ with patch.object(platform, "linux_distribution", 
return_value = MagicMock(retur
 
 from ambari_server.setupMpacks import install_mpack, upgrade_mpack, 
replay_mpack_logs, \
   purge_stacks_and_mpacks, validate_purge, read_mpack_metadata, \
-  STACK_DEFINITIONS_RESOURCE_NAME, SERVICE_DEFINITIONS_RESOURCE_NAME, 
MPACKS_RESOURCE_NAME
+  STACK_DEFINITIONS_RESOURCE_NAME, EXTENSION_DEFINITIONS_RESOURCE_NAME, \
+  SERVICE_DEFINITIONS_RESOURCE_NAME, MPACKS_RESOURCE_NAME
 
 with patch.object(os, "geteuid", new=MagicMock(return_value=0)):
   from resource_management.core import sudo
@@ -153,6 +154,7 @@ class TestMpacks(TestCase):
     options = self._create_empty_options_mock()
     get_ambari_version_mock.return_value = configs
     stacks_directory = configs[serverConfiguration.STACK_LOCATION_KEY]
+    extensions_directory = configs[serverConfiguration.EXTENSION_PATH_PROPERTY]
     common_services_directory = 
configs[serverConfiguration.COMMON_SERVICES_PATH_PROPERTY]
     mpacks_directory = 
configs[serverConfiguration.MPACKS_STAGING_PATH_PROPERTY]
     os_path_exists_mock.return_value = False
@@ -177,6 +179,15 @@ class TestMpacks(TestCase):
     ]
     os_path_exists_mock.assert_has_calls(os_path_exists_calls)
 
+    options.purge_list = ",".join([STACK_DEFINITIONS_RESOURCE_NAME, 
EXTENSION_DEFINITIONS_RESOURCE_NAME, MPACKS_RESOURCE_NAME])
+    purge_stacks_and_mpacks(options.purge_list.split(","))
+    os_path_exists_calls = [
+      call(stacks_directory),
+      call(extensions_directory),
+      call(mpacks_directory)
+    ]
+    os_path_exists_mock.assert_has_calls(os_path_exists_calls)
+
     options.purge_list = ",".join([STACK_DEFINITIONS_RESOURCE_NAME, 
SERVICE_DEFINITIONS_RESOURCE_NAME, MPACKS_RESOURCE_NAME])
     options.replay_mode = True
     purge_stacks_and_mpacks(options.purge_list.split(","))

Reply via email to