This is an automated email from the ASF dual-hosted git repository. adoroszlai 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 52d58cd AMBARI-22649. settings library should convert true/false to boolean 52d58cd is described below commit 52d58cd3f1e63e9c7701e1235b1a49f1e9485769 Author: Doroszlai, Attila <adorosz...@apache.org> AuthorDate: Tue Feb 20 19:25:07 2018 +0100 AMBARI-22649. settings library should convert true/false to boolean --- .../libraries/functions/settings.py | 19 ++++++++++++--- ambari-server/src/test/python/TestSettings.py | 28 +++++++++++++++------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/settings.py b/ambari-common/src/main/python/resource_management/libraries/functions/settings.py index 42be6d6..577e5ba 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/settings.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/settings.py @@ -55,7 +55,7 @@ def get_setting_type_entries(setting_type, setting_names=None): return None if setting_names is None: # Return all settings - return settings + setting_names = settings.keys() if not isinstance(setting_names, (set, frozenset, tuple, list)): Logger.error("'setting_names' type expected to be either a : set, frozenset, tuple, or list. " @@ -66,7 +66,7 @@ def get_setting_type_entries(setting_type, setting_names=None): Logger.error("Passed-in settings set is EMPTY") return None else: - result = dict((setting, settings[setting]) for setting in setting_names if setting in settings) + result = dict((setting, convert_value(settings[setting])) for setting in setting_names if setting in settings) if not result: Logger.error("Passed-in setting(s) in set not present.") return {} @@ -100,7 +100,7 @@ def get_setting_value(setting_type, setting_name): Logger.info("Couldn't retrieve '"+setting_type+"'.") return None - return settings.get(setting_name) + return convert_value(settings.get(setting_name)) def is_setting_type_supported(setting_type): @@ -110,3 +110,16 @@ def is_setting_type_supported(setting_type): :return: True or False """ return setting_type in (STACK_SETTINGS_TYPE, CLUSTER_SETTINGS_TYPE) + + +def convert_value(value): + """ + Converts some values for easier consumption. + Currently only strings corresponding to true/false are converted to actual boolean values. + """ + + if value == "true": + return True + if value == "false": + return False + return value diff --git a/ambari-server/src/test/python/TestSettings.py b/ambari-server/src/test/python/TestSettings.py index e117747..f8761f7 100644 --- a/ambari-server/src/test/python/TestSettings.py +++ b/ambari-server/src/test/python/TestSettings.py @@ -51,26 +51,35 @@ class TestSettings(TestCase): Script.config = TestSettings._get_simple_command() # For stackSettings - self.assertEquals(Script.config['stackSettings'], settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE, None)) - self.assertEquals(Script.config['stackSettings'], settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE)) + stackSettings = dict((k, settings.convert_value(v)) for k, v in Script.config['stackSettings'].items()) + self.assertEquals(stackSettings, settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE, None)) + self.assertEquals(stackSettings, settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE)) # For clusterSettings - self.assertEquals(Script.config['clusterSettings'], settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE, None)) - self.assertEquals(Script.config['clusterSettings'], settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE)) + clusterSettings = dict((k, settings.convert_value(v)) for k, v in Script.config['clusterSettings'].items()) + self.assertEquals(clusterSettings, settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE, None)) + self.assertEquals(clusterSettings, settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE)) + + + def test_boolean_values_are_converted(self): + Script.config = TestSettings._get_simple_command() + + self.assertEquals(settings.get_setting_value(settings.CLUSTER_SETTINGS_TYPE, 'manage_dirs_on_root'), True) + self.assertEquals(settings.get_setting_value(settings.CLUSTER_SETTINGS_TYPE, 'recovery_enabled'), False) def test_full_subset_of_entries_for_supported_type(self): Script.config = TestSettings._get_simple_command() # For stackSettings - stackSettings = Script.config['stackSettings'] + stackSettings = dict((k, settings.convert_value(v)) for k, v in Script.config['stackSettings'].items()) self.assertEquals(stackSettings, settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE, set(stackSettings.keys()))) self.assertEquals(stackSettings, settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE, frozenset(stackSettings.keys()))) self.assertEquals(stackSettings, settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE, tuple(stackSettings.keys()))) self.assertEquals(stackSettings, settings.get_setting_type_entries(settings.STACK_SETTINGS_TYPE, list(stackSettings.keys()))) # For clusterSettings - clusterSettings = Script.config['clusterSettings'] + clusterSettings = dict((k, settings.convert_value(v)) for k, v in Script.config['clusterSettings'].items()) self.assertEquals(clusterSettings, settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE, set(clusterSettings.keys()))) self.assertEquals(clusterSettings, settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE, frozenset(clusterSettings.keys()))) self.assertEquals(clusterSettings, settings.get_setting_type_entries(settings.CLUSTER_SETTINGS_TYPE, tuple(clusterSettings.keys()))) @@ -155,7 +164,7 @@ class TestSettings(TestCase): # For clusterSettings self.assertTrue(settings.get_setting_value(settings.CLUSTER_SETTINGS_TYPE, 'non_existing_key') is None) - def test_value_of_supported_setting_type_empy_string_name(self): + def test_value_of_supported_setting_type_empty_string_name(self): Script.config = TestSettings._get_simple_command() # For stackSettings @@ -179,12 +188,12 @@ class TestSettings(TestCase): # For stackSettings stack_settings = Script.config['stackSettings'] for k in stack_settings.keys(): - self.assertEquals(stack_settings[k], settings.get_setting_value(settings.STACK_SETTINGS_TYPE, k)) + self.assertEquals(settings.convert_value(stack_settings[k]), settings.get_setting_value(settings.STACK_SETTINGS_TYPE, k)) # For clusterSettings cluster_settings = Script.config['clusterSettings'] for k in cluster_settings.keys(): - self.assertEquals(cluster_settings[k], settings.get_setting_value(settings.CLUSTER_SETTINGS_TYPE, k)) + self.assertEquals(settings.convert_value(cluster_settings[k]), settings.get_setting_value(settings.CLUSTER_SETTINGS_TYPE, k)) @staticmethod @@ -199,6 +208,7 @@ class TestSettings(TestCase): }, "clusterSettings": { "recovery_enabled": "false", + "manage_dirs_on_root": "true", "smokeuser": "ambari-qa", "recovery_type": "AUTO_START", "user_group": "hadoop", -- To stop receiving notification emails like this one, please contact adorosz...@apache.org.