This is an automated email from the ASF dual-hosted git repository. jonathanhurley pushed a commit to branch branch-feature-AMBARI-14714 in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714 by this push: new c439764 [AMBARI-24364] - Mpack Instance Manager Not Listing Versions Correctly (#1922) c439764 is described below commit c4397643d842fc745ee2e99c9df8f6a6e880cc77 Author: sduan <sd...@hortonworks.com> AuthorDate: Thu Aug 2 15:21:58 2018 -0700 [AMBARI-24364] - Mpack Instance Manager Not Listing Versions Correctly (#1922) --- .../execution_command/execution_command.py | 13 ++- .../functions/get_not_managed_resources.py | 4 +- .../libraries/functions/mpack_manager_helper.py | 51 +++++------ .../libraries/functions/stack_features.py | 3 +- .../resource_management/libraries/script/script.py | 3 +- .../python/instance_manager/instance_manager.py | 101 +++++++++++++++++++-- .../instance_manager/test_instance_manager.py | 95 +++++++++++++------ 7 files changed, 201 insertions(+), 69 deletions(-) diff --git a/ambari-common/src/main/python/resource_management/libraries/execution_command/execution_command.py b/ambari-common/src/main/python/resource_management/libraries/execution_command/execution_command.py index c147615..17e2f77 100644 --- a/ambari-common/src/main/python/resource_management/libraries/execution_command/execution_command.py +++ b/ambari-common/src/main/python/resource_management/libraries/execution_command/execution_command.py @@ -96,7 +96,8 @@ class ExecutionCommand(object): Retrieve service name from command.json, eg. 'zk1' :return: service name """ - if '_CLIENTS' in self.get_module_name(): # FIXME temporary hack + module_name = self.get_module_name() + if module_name and '_CLIENTS' in module_name: # FIXME temporary hack return 'default' return self.__get_value("serviceName") # multi-service, but not multi-component per service @@ -279,14 +280,20 @@ class ExecutionCommand(object): Retrieve a list of user groups from command.json, i.e "group_list": "[\"hadoop\"]" :return: a list of groups """ - return self.__get_value("stackSettings/group_list") + group_list = self.__get_value("stackSettings/group_list") + if not group_list: + group_list = "[]" + return group_list def get_user_list(self): """ Retrieve a list of users from command.json, i.e "user_list": "[\"zookeeper\",\"ambari-qa\"]" :return: a list of users """ - return self.__get_value("stackSettings/user_list") + user_list = self.__get_value("stackSettings/user_list") + if not user_list: + user_list = "[]" + return user_list """ Agent related variable section diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py b/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py index 611e1d2..c5557c5 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/get_not_managed_resources.py @@ -34,7 +34,9 @@ def get_not_managed_resources(): except config values from cluster-env/managed_hdfs_resource_property_names """ config = Script.get_config() - not_managed_hdfs_path_list = json.loads(config['stackSettings']['not_managed_hdfs_path_list'])[:] + not_managed_hdfs_path_list = [] + if 'not_managed_hdfs_path_list' in config['stackSettings']: + not_managed_hdfs_path_list = json.loads(config['stackSettings']['not_managed_hdfs_path_list'])[:] if get_cluster_setting_value('managed_hdfs_resource_property_names') is not None: managed_hdfs_resource_property_names = get_cluster_setting_value('managed_hdfs_resource_property_names') managed_hdfs_resource_property_list = filter(None, [property.strip() for property in managed_hdfs_resource_property_names.split(',')]) diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/mpack_manager_helper.py b/ambari-common/src/main/python/resource_management/libraries/functions/mpack_manager_helper.py index dcce601..a27d62b 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/mpack_manager_helper.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/mpack_manager_helper.py @@ -20,7 +20,7 @@ Ambari Agent """ import os -from instance_manager import create_mpack, set_mpack_instance, get_conf_dir, get_log_dir, get_run_dir, list_instances +from instance_manager import create_mpack, set_mpack_instance, get_conf_dir, get_log_dir, get_run_dir, list_instances, walk_mpack_dict CONFIG_DIR_KEY_NAME = 'config_dir' LOG_DIR_KEY_NAME = 'log_dir' @@ -31,75 +31,72 @@ COMPONENT_INSTANCES_PLURAL_KEY_NAME = 'component-instances' MPACK_VERSION_KEY_NAME = 'mpack_version' MODULE_VERSION_KEY_NAME = 'module_version' - def get_component_conf_path(mpack_name, instance_name, module_name, components_instance_type, subgroup_name='default', component_instance_name='default'): """ - :returns the single string that contains the path to the configuration folder of given component instance + :returns a list contains the path to the configuration folder of given component instance, + this may include multiple mpack instances cases :raises ValueError if the parameters doesn't match the mpack or instances structure """ - conf_json = get_conf_dir(mpack_name, instance_name, subgroup_name, module_name, + return get_conf_dir(mpack_name, instance_name, subgroup_name, module_name, {components_instance_type: [component_instance_name]}) - return conf_json[COMPONENTS_PLURAL_KEY_NAME][components_instance_type.lower()][COMPONENT_INSTANCES_PLURAL_KEY_NAME][ - component_instance_name][CONFIG_DIR_KEY_NAME] def get_component_log_path(mpack_name, instance_name, module_name, components_instance_type, subgroup_name='default', component_instance_name='default'): """ - :returns the single string that contains the path to the log folder of given component instance + :returns a list contains the path to the log folder of given component instance, + this may include multiple mpack instances cases :raises ValueError if the parameters doesn't match the mpack or instances structure """ - log_json = get_log_dir(mpack_name, instance_name, subgroup_name, module_name, + return get_log_dir(mpack_name, instance_name, subgroup_name, module_name, {components_instance_type: [component_instance_name]}) - return log_json[COMPONENTS_PLURAL_KEY_NAME][components_instance_type.lower()][COMPONENT_INSTANCES_PLURAL_KEY_NAME][ - component_instance_name][LOG_DIR_KEY_NAME] def get_component_rundir_path(mpack_name, instance_name, module_name, components_instance_type, subgroup_name='default', component_instance_name='default'): """ - :returns the single string that contains the path to the rundir folder of given component instance + :returns a list contains the paths to the rundir folder of given component instance, + this may include multiple mpack instances cases :raises ValueError if the parameters doesn't match the mpack or instances structure """ - run_json = get_run_dir(mpack_name, instance_name, subgroup_name, module_name, + return get_run_dir(mpack_name, instance_name, subgroup_name, module_name, {components_instance_type: [component_instance_name]}) - return run_json[COMPONENTS_PLURAL_KEY_NAME][components_instance_type.lower()][COMPONENT_INSTANCES_PLURAL_KEY_NAME][ - component_instance_name][RUN_DIR_KEY_NAME] def get_component_target_path(mpack_name, instance_name, module_name, components_instance_type, subgroup_name='default', component_instance_name='default'): """ - :returns the single string that contains the path to the mpack component folder of given component instance + :returns a list contains the paths to the mpack component folder of given component instance, + this may include multiple mpack instances cases :raises ValueError if the parameters doesn't match the mpack or instances structure """ - + dirs = set() instances_json = list_instances(mpack_name, instance_name, subgroup_name, module_name, {components_instance_type: [component_instance_name]}) - - return instances_json[COMPONENTS_PLURAL_KEY_NAME][components_instance_type.lower()][ - COMPONENT_INSTANCES_PLURAL_KEY_NAME][component_instance_name][PATH_KEY_NAME] - + walk_mpack_dict(instances_json, PATH_KEY_NAME, dirs) + target_path_list = [dir for dir in dirs if + (mpack_name == None or mpack_name.lower() in dir) and (instance_name == None or instance_name.lower() in dir)] + return "" if len(target_path_list) == 0 else target_path_list[0] def get_versions(mpack_name, instance_name, module_name, components_instance_type, subgroup_name='default', component_instance_name='default'): """ - :returns a tuple representing the mpack version and the module version + :returns a tuple representing the mpack version and the module version, module_name should not be None :raises ValueError if the parameters doesn't match the mpack or instances structure """ instances_json = list_instances(mpack_name, instance_name, subgroup_name, module_name, {components_instance_type: [component_instance_name]}) - - mpack_version = instances_json[COMPONENTS_PLURAL_KEY_NAME][components_instance_type.lower()][ - COMPONENT_INSTANCES_PLURAL_KEY_NAME][component_instance_name][MPACK_VERSION_KEY_NAME] - - module_version = instances_json[COMPONENTS_PLURAL_KEY_NAME][components_instance_type.lower()][ - COMPONENT_INSTANCES_PLURAL_KEY_NAME][component_instance_name][MODULE_VERSION_KEY_NAME] + dirs = set() + walk_mpack_dict(instances_json, MPACK_VERSION_KEY_NAME, dirs) + mpack_version = next(iter(dirs)) + dirs.clear() + walk_mpack_dict(instances_json, MODULE_VERSION_KEY_NAME, dirs) + module_version = next(iter(dirs)) return mpack_version, module_version diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py b/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py index fe93ff3..d754cd9 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py @@ -108,7 +108,8 @@ def get_stack_feature_version(config): raise Fail("Unable to determine the correct version since stackSettings and commandParams were not present in the configuration dictionary") # should always be there - stack_version = config['stackSettings']['stack_version'] + # Actually not always, i.e if we restart zookeeper service and no stack_version is included in command.json + stack_version = default("/stackSettings/stack_version", None) # something like 2.4.0.0-1234; represents the version for the command # (or None if this is a cluster install and it hasn't been calculated yet) diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py index d1d249c..2211baf 100644 --- a/ambari-common/src/main/python/resource_management/libraries/script/script.py +++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py @@ -216,10 +216,11 @@ class Script(object): mpack_instance_name = execution_command.get_servicegroup_name() module_name = execution_command.get_module_name() component_type = execution_command.get_component_type() + component_name = execution_command.get_component_instance_name() try: mpack_version, component_version = mpack_manager_helper.get_versions(mpack_name, - mpack_instance_name, module_name, component_type ) + mpack_instance_name, module_name, component_type, "default", component_name ) mpack_version_dictionary = { "mpackVersion": mpack_version, diff --git a/mpack-instance-manager/src/main/python/instance_manager/instance_manager.py b/mpack-instance-manager/src/main/python/instance_manager/instance_manager.py index 5d6ca16..9aed9c8 100644 --- a/mpack-instance-manager/src/main/python/instance_manager/instance_manager.py +++ b/mpack-instance-manager/src/main/python/instance_manager/instance_manager.py @@ -17,7 +17,7 @@ limitations under the License. """ -__all__ = ["create_mpack", "set_mpack_instance", "get_conf_dir", "get_log_dir", "get_run_dir", "list_instances"] +__all__ = ["create_mpack", "set_mpack_instance", "get_conf_dir", "get_log_dir", "get_run_dir", "list_instances", "walk_mpack_dict"] import sys import os @@ -97,7 +97,8 @@ def get_conf_dir(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP """ Use case: retrieve conf directory paths for a given component instances based on the granularity specified ranging from: mpack, mpack-instance, subgroup-name, module-name and map of component instance - AND with a filtering on each level + AND with a filtering on each level. The return value is a list of conf_dir since we support + multiple mpacks and multiple mpack instances now. Granularity works only while names for all consecutive levels are specified. Note that subgroup has default value of 'default' @@ -108,9 +109,21 @@ def get_conf_dir(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP Components are provided as map with key as 'component type' and value as 'list of individual component instances names' OR empty map for all component instances present + + Note also that client component has different layout from server component, i.e: + zookeeper_client: /usr/hwx/instances/hdpcore/default/default/zookeeper_client/conf/ + zookeeper_server: /usr/hwx/instances/hdpcore/default/default/zookeeper/zookeeper_server/ZOOKEEPER/conf/ """ - return build_granular_json_with_filtering(mpack, mpack_instance, subgroup_name, module_name, components_map, - output_conf_dir=True) + dirs, is_client = get_conf_log_run_dir_helper(mpack, mpack_instance, subgroup_name, module_name, components_map, output_conf_dir = True, output_log_dir = False, output_run_dir = False) + path = "" + if not is_client: + pathlist = [dir for dir in dirs if + (mpack == None or mpack in dir) and (mpack_instance == None or mpack_instance in dir) and ( + module_name == None or module_name in dir)] + else: + pathlist = [dir for dir in dirs if + (mpack == None or mpack in dir) and (mpack_instance == None or mpack_instance in dir)] + return path if len(pathlist) == 0 else pathlist[0] def get_log_dir(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP_NAME, module_name=None, components_map=None): @@ -129,8 +142,17 @@ def get_log_dir(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP_ Components are provided as map with key as 'component type' and value as 'list of individual component instances names' OR empty map for all component instances present """ - return build_granular_json_with_filtering(mpack, mpack_instance, subgroup_name, module_name, components_map, - output_log_dir=True) + dirs, is_client = get_conf_log_run_dir_helper(mpack, mpack_instance, subgroup_name, module_name, components_map, output_conf_dir = False, output_log_dir = True, output_run_dir = False) + path = "" + if not is_client: + pathlist = [dir for dir in dirs if + (mpack == None or mpack in dir) and (mpack_instance == None or mpack_instance in dir) and ( + module_name == None or module_name in dir)] + else: + pathlist = [dir for dir in dirs if + (mpack == None or mpack in dir) and (mpack_instance == None or mpack_instance in dir)] + return path if len(pathlist) == 0 else pathlist[0] + def get_run_dir(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP_NAME, module_name=None, components_map=None): @@ -149,12 +171,73 @@ def get_run_dir(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP_ Components are provided as map with key as 'component type' and value as 'list of individual component instances names' OR empty map for all component instances present """ - return build_granular_json_with_filtering(mpack, mpack_instance, subgroup_name, module_name, components_map, - output_run_dir=True) + dirs, is_client = get_conf_log_run_dir_helper(mpack, mpack_instance, subgroup_name, module_name, components_map, output_conf_dir = False, output_log_dir = False, output_run_dir = True) + path = "" + if not is_client: + pathlist = [dir for dir in dirs if + (mpack == None or mpack in dir) and (mpack_instance == None or mpack_instance in dir) and ( + module_name == None or module_name in dir)] + else: + pathlist = [dir for dir in dirs if + (mpack == None or mpack in dir) and (mpack_instance == None or mpack_instance in dir)] + return path if len(pathlist) == 0 else pathlist[0] + + +def walk_mpack_dict(mpack_dict, filter, dirs): + """ + A utility funtion to traverse the nested dict to get a list of config/log/run dirs + :param mpack_dict: mpack json dict + :param dirs: Set to hold dir strings + :return: None + """ + for key in mpack_dict: + if key == filter: + dirs.add(mpack_dict[key]) + elif type(mpack_dict[key]) != dict: + pass + else: + walk_mpack_dict(mpack_dict[key], filter, dirs) + +def get_conf_log_run_dir_helper(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP_NAME, module_name=None, + components_map=None, output_conf_dir=False, output_log_dir=False, output_run_dir=False): + """ + A helper function to get dictionary to hold the path from mpack to config/log/run dirs + :param mpack: mpack name, can be None + :param mpack_instance: mpack_instance name, can be None + :param subgroup_name: subgroups name, default is "default" + :param module_name: module name, can be None + :param components_map: can be None + :param output_conf_dir: default is None + :param output_log_dir: default is None + :param output_run_dir: default is None + :return: list of dirs, can be empty if output_conf_dir/output_log_dir/output_run_dir are all False + """ + dirs = set() + rst_json = {} + filter = "" + if output_conf_dir: + rst_json = build_granular_json_with_filtering(mpack, mpack_instance, subgroup_name, module_name, components_map, + output_conf_dir=True) + filter = "config_dir" + elif output_log_dir: + rst_json = build_granular_json_with_filtering(mpack, mpack_instance, subgroup_name, module_name, components_map, + output_log_dir=True) + filter = "log_dir" + elif output_run_dir: + rst_json = build_granular_json_with_filtering(mpack, mpack_instance, subgroup_name, module_name, components_map, + output_run_dir=True) + filter = "run_dir" + walk_mpack_dict(rst_json, filter, dirs) + categories = set() + walk_mpack_dict(rst_json, "category", categories) + is_client = False + if categories and CLIENT_CATEGORY in categories: + is_client = True + return list(dirs), is_client def list_instances(mpack=None, mpack_instance=None, subgroup_name=DEFAULT_SUBGROUP_NAME, module_name=None, - components_map=None): + components_map=None, output_conf_dir=False, output_log_dir=False, output_run_dir=False): """ Use case: figure out the versions a given component instances based on the granularity specified ranging from: mpack, mpack-instance, subgroup-name, module-name and map of component instance diff --git a/mpack-instance-manager/src/test/python/instance_manager/test_instance_manager.py b/mpack-instance-manager/src/test/python/instance_manager/test_instance_manager.py index 1eaed9e..d9bbe3e 100644 --- a/mpack-instance-manager/src/test/python/instance_manager/test_instance_manager.py +++ b/mpack-instance-manager/src/test/python/instance_manager/test_instance_manager.py @@ -164,8 +164,10 @@ class TestInstanceManager(TestCase): create_mpack_with_defaults(module_name=SERVER_MODULE_NAME.upper(), components=None, components_map={SERVER_COMPONENT_NAME.upper(): ['server1']}) - conf_dir_json = instance_manager.get_conf_dir() - + conf_server_dir = instance_manager.get_conf_dir(components_map={"hdfs_server": ["server1"]}, module_name="hdfs") + conf_client_dir = instance_manager.get_conf_dir(components_map={"hdfs_client": [""]}, module_name="hdfs-clients") + """ + This is the conf_dir_json expected_json = { "mpacks": { "hdpcore": { @@ -211,15 +213,20 @@ class TestInstanceManager(TestCase): } } } - self.assertEqual(conf_dir_json, expected_json) + """ + expected_conf_server_dir = "/tmp/instance_manager_test/instances/hdpcore/Production/default/hdfs/hdfs_server/server1/conf" + expected_conf_client_dir = "/tmp/instance_manager_test/instances/hdpcore/Production/default/hdfs_client/conf" + self.assertEqual(conf_server_dir, expected_conf_server_dir) + self.assertEqual(conf_client_dir, expected_conf_client_dir) def test_get_log_dir_all(self): create_mpack_with_defaults(module_name=CLIENT_MODULE_NAME.upper()) create_mpack_with_defaults(module_name=SERVER_MODULE_NAME.upper(), components=None, components_map={SERVER_COMPONENT_NAME.upper(): ['server1']}) - log_dir_json = instance_manager.get_log_dir() - + log_server_dir = instance_manager.get_log_dir(components_map={"hdfs_server": ["server1"]}, module_name="hdfs") + log_client_dir = instance_manager.get_log_dir(components_map={"hdfs_client": [""]}, module_name="hdfs-clients") + """ expected_json = { "mpacks": { "hdpcore": { @@ -265,15 +272,21 @@ class TestInstanceManager(TestCase): } } } - self.assertEqual(log_dir_json, expected_json) + """ + expected_log_server_dir = "/tmp/instance_manager_test/instances/hdpcore/Production/default/hdfs/hdfs_server/server1/log" + expected_log_client_dir = "/tmp/instance_manager_test/instances/hdpcore/Production/default/hdfs_client/log" + self.assertEqual(log_server_dir, expected_log_server_dir) + self.assertEqual(log_client_dir, expected_log_client_dir) + def test_get_run_dir_all(self): create_mpack_with_defaults(module_name=CLIENT_MODULE_NAME.upper()) create_mpack_with_defaults(module_name=SERVER_MODULE_NAME.upper(), components=None, components_map={SERVER_COMPONENT_NAME.upper(): ['server1']}) - run_dir_json = instance_manager.get_run_dir() - + run_server_dir = instance_manager.get_run_dir(components_map={"hdfs_server": ["server1"]}, module_name="hdfs") + run_client_dir = instance_manager.get_run_dir(components_map={"hdfs_client": [""]}, module_name="hdfs-clients") + """ expected_json = { "mpacks": { "hdpcore": { @@ -319,14 +332,41 @@ class TestInstanceManager(TestCase): } } } - self.assertEqual(run_dir_json, expected_json) + """ + expected_run_server_dir = "/tmp/instance_manager_test/instances/hdpcore/Production/default/hdfs/hdfs_server/server1/run" + expected_run_client_dir = "/tmp/instance_manager_test/instances/hdpcore/Production/default/hdfs_client/run" + self.assertEqual(run_server_dir, expected_run_server_dir) + self.assertEqual(run_client_dir, expected_run_client_dir) + + def test_get_mpack_module_versions(self): + MPACK_VERSION_KEY_NAME = 'mpack_version' + MODULE_VERSION_KEY_NAME = 'module_version' + + create_mpack_with_defaults(module_name=CLIENT_MODULE_NAME.upper()) + create_mpack_with_defaults(module_name=SERVER_MODULE_NAME.upper(), components=None, + components_map={SERVER_COMPONENT_NAME.upper(): ['server1']}) + + instances_json = instance_manager.list_instances(module_name=CLIENT_MODULE_NAME) + dirs = set() + instance_manager.walk_mpack_dict(instances_json, MPACK_VERSION_KEY_NAME, dirs) + self.assertEqual(next(iter(dirs)), "1.0.0-b1") + dirs.clear() + instance_manager.walk_mpack_dict(instances_json, MODULE_VERSION_KEY_NAME, dirs) + self.assertEqual(next(iter(dirs)), "3.1.0.0-b1") + instances_json = instance_manager.list_instances(module_name=SERVER_MODULE_NAME) + dirs.clear() + instance_manager.walk_mpack_dict(instances_json, MPACK_VERSION_KEY_NAME, dirs) + self.assertEqual(next(iter(dirs)), "1.0.0-b1") + dirs.clear() + instance_manager.walk_mpack_dict(instances_json, MODULE_VERSION_KEY_NAME, dirs) + self.assertEqual(next(iter(dirs)), "3.1.0.0-b1") def test_list_instances_all(self): create_mpack_with_defaults(module_name=CLIENT_MODULE_NAME.upper()) create_mpack_with_defaults(module_name=SERVER_MODULE_NAME.upper(), components=None, components_map={SERVER_COMPONENT_NAME.upper(): ['server1']}) - conf_dir_json = instance_manager.list_instances() + instance_json = instance_manager.list_instances() expected_json = { "mpacks": { @@ -387,43 +427,44 @@ class TestInstanceManager(TestCase): } } } - self.assertDictEqual(conf_dir_json, expected_json) + + self.assertDictEqual(instance_json, expected_json) def test_granularity(self): create_mpack_with_defaults() create_mpack_with_defaults(module_name=CLIENT_MODULE_NAME) - full_conf_dir_json = instance_manager.get_conf_dir() - self.assertTrue('mpacks' in full_conf_dir_json) + conf_dir = instance_manager.get_conf_dir() + self.assertTrue('/hdfs_server/default/conf' in conf_dir) - mpack_conf_dir_json = instance_manager.get_conf_dir(mpack=MPACK_NAME) - self.assertTrue('mpack-instances' in mpack_conf_dir_json) + conf_dir = instance_manager.get_conf_dir(mpack=MPACK_NAME, module_name=SERVER_MODULE_NAME) + self.assertTrue('/hdfs_server/default/conf' in conf_dir) - instance_conf_dir_json = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, + instance_conf_dir = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, subgroup_name=None) - self.assertTrue('subgroups' in instance_conf_dir_json) + self.assertTrue('/hdfs_server/default/conf' in instance_conf_dir) - subgroup_conf_dir_json = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, + subgroup_conf_dir = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, subgroup_name=SUBGROUP_NAME) - self.assertTrue('modules' in subgroup_conf_dir_json) + self.assertTrue('/hdfs_server/default/conf' in subgroup_conf_dir) - module_conf_dir_json = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, + module_conf_dir = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, subgroup_name=SUBGROUP_NAME, module_name=SERVER_MODULE_NAME) - self.assertTrue('components' in module_conf_dir_json) + self.assertTrue('/hdfs_server/default/conf' in module_conf_dir) - module_conf_dir_json = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, + module_conf_dir = instance_manager.get_conf_dir(mpack=MPACK_NAME, mpack_instance=INSTANCE_NAME_1, subgroup_name=SUBGROUP_NAME, module_name=CLIENT_MODULE_NAME) - self.assertTrue('components' in module_conf_dir_json) + self.assertTrue('/hdfs_client/conf' in module_conf_dir) # The mpack level filter not specified - full_conf_dir_json = instance_manager.get_conf_dir(mpack_instance=INSTANCE_NAME_1, subgroup_name=SUBGROUP_NAME, + module_conf_dir = instance_manager.get_conf_dir(mpack_instance=INSTANCE_NAME_1, subgroup_name=SUBGROUP_NAME, module_name=SERVER_MODULE_NAME) - self.assertTrue('mpacks' in full_conf_dir_json) + self.assertTrue('/hdfs_server/default/conf' in module_conf_dir) # The instance level filter not specified - mpack_conf_dir_json = instance_manager.get_conf_dir(mpack=MPACK_NAME, subgroup_name=SUBGROUP_NAME, + module_conf_dir = instance_manager.get_conf_dir(mpack=MPACK_NAME, subgroup_name=SUBGROUP_NAME, module_name=SERVER_MODULE_NAME) - self.assertTrue('mpack-instances' in mpack_conf_dir_json) + self.assertTrue('/hdfs_server/default/conf' in module_conf_dir) def test_filtering(self): create_mpack_with_defaults(module_name=CLIENT_MODULE_NAME)