Updated Branches: refs/heads/trunk 2ded3d1af -> 6fc9f12ef
AMBARI-3097. global config update should append configs that exist but not in the script template. Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/6fc9f12e Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/6fc9f12e Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/6fc9f12e Branch: refs/heads/trunk Commit: 6fc9f12ef03e087646afe593e618ed06753e5005 Parents: 2ded3d1 Author: Sumit Mohanty <[email protected]> Authored: Wed Sep 4 13:52:41 2013 -0700 Committer: Sumit Mohanty <[email protected]> Committed: Wed Sep 4 13:52:41 2013 -0700 ---------------------------------------------------------------------- .../src/main/python/UpgradeHelper_HDP2.py | 15 ++++++- .../src/test/python/TestUpgradeScript_HDP2.py | 44 ++++++++++++++++---- 2 files changed, 50 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/6fc9f12e/ambari-server/src/main/python/UpgradeHelper_HDP2.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/python/UpgradeHelper_HDP2.py b/ambari-server/src/main/python/UpgradeHelper_HDP2.py index 6e38ef1..ad4c014 100644 --- a/ambari-server/src/main/python/UpgradeHelper_HDP2.py +++ b/ambari-server/src/main/python/UpgradeHelper_HDP2.py @@ -532,19 +532,22 @@ def modify_configs(options): update_config(options, MAPRED_SITE, MAPRED_SITE_TAG) # Update global config, hdfs-site, core-site - update_config_using_existing(options, GLOBAL_TAG, GLOBAL) + update_config_using_existing(options, GLOBAL_TAG, GLOBAL, True) update_config_using_existing(options, HDFS_SITE_TAG, HDFS_SITE) update_config_using_existing(options, CORE_SITE_TAG, CORE_SITE) pass -def update_config_using_existing(options, type, properties_template): +def update_config_using_existing(options, type, properties_template, append_unprocessed=False): site_properties = get_config(options, type) + keys_processed = [] for key in properties_template.keys(): + keys_processed.append(key) if properties_template[key].find(REPLACE_WITH_TAG) == 0: name_to_lookup = key if len(properties_template[key]) > len(REPLACE_WITH_TAG): name_to_lookup = properties_template[key][len(REPLACE_WITH_TAG):] + keys_processed.append(name_to_lookup) value = "" if name_to_lookup in site_properties.keys(): value = site_properties[name_to_lookup] @@ -555,6 +558,14 @@ def update_config_using_existing(options, type, properties_template): pass pass pass + if append_unprocessed: + for key in site_properties.keys(): + if key not in keys_processed: + properties_template[key] = site_properties[key] + pass + pass + pass + pass update_config(options, properties_template, type) http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/6fc9f12e/ambari-server/src/test/python/TestUpgradeScript_HDP2.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/TestUpgradeScript_HDP2.py b/ambari-server/src/test/python/TestUpgradeScript_HDP2.py index 7f2ff56..5cabbca 100644 --- a/ambari-server/src/test/python/TestUpgradeScript_HDP2.py +++ b/ambari-server/src/test/python/TestUpgradeScript_HDP2.py @@ -24,8 +24,8 @@ import unittest import UpgradeHelper_HDP2 import StringIO -class TestUpgradeHDP2Script(TestCase): +class TestUpgradeHDP2Script(TestCase): def setUp(self): out = StringIO.StringIO() sys.stdout = out @@ -35,16 +35,46 @@ class TestUpgradeHDP2Script(TestCase): sys.stdout = sys.__stdout__ - @patch('optparse.Values') @patch.object(UpgradeHelper_HDP2, 'backup_single_config_type') - def test_backup_configs(self, backup_config_mock, optparse_mock): + def test_backup_configs(self, backup_config_mock): + UpgradeHelper_HDP2.backup_configs(None) + self.assertTrue(backup_config_mock.called) - opm = optparse_mock.return_value + @patch.object(UpgradeHelper_HDP2, 'update_config') + @patch.object(UpgradeHelper_HDP2, 'get_config') + @patch('optparse.Values') + def test_update_with_append(self, optparse_mock, get_config_mock, update_config_mock): + opm = optparse_mock.return_value + update_config_mock.return_value = None options = MagicMock() - args = ["backup-configs"] + args = ["save-configs"] opm.parse_args.return_value = (options, args) - UpgradeHelper_HDP2.backup_configs(None) - self.assertTrue(backup_config_mock.called) + get_config_mock.return_value = {"a1": "va1", "a2": "va2", "b1": "vb1", "b2": "vb2", "c1": "vc1"} + site_template = {"y1": "vy1", "a1": "REPLACE_WITH_", "a2": "REPLACE_WITH_", "nb1": "REPLACE_WITH_b1", + "nb2": "REPLACE_WITH_b2"} + expected_site = {"y1": "vy1", "a1": "va1", "a2": "va2", "nb1": "vb1", "nb2": "vb2", "c1": "vc1"} + UpgradeHelper_HDP2.update_config_using_existing(opm, "global", site_template, True) + get_config_mock.assert_called_once_with(opm, "global") + update_config_mock.assert_called_once_with(opm, expected_site, "global") + + + @patch.object(UpgradeHelper_HDP2, 'update_config') + @patch.object(UpgradeHelper_HDP2, 'get_config') + @patch('optparse.Values') + def test_update_without_append(self, optparse_mock, get_config_mock, update_config_mock): + opm = optparse_mock.return_value + update_config_mock.return_value = None + options = MagicMock() + args = ["save-configs"] + opm.parse_args.return_value = (options, args) + get_config_mock.return_value = {"a1": "va1", "a2": "va2", "b1": "vb1", "b2": "vb2", "c1": "vc1"} + site_template = {"y1": "vy1", "a1": "REPLACE_WITH_", "a2": "REPLACE_WITH_", "nb1": "REPLACE_WITH_b1", + "nb2": "REPLACE_WITH_b2"} + expected_site = {"y1": "vy1", "a1": "va1", "a2": "va2", "nb1": "vb1", "nb2": "vb2"} + UpgradeHelper_HDP2.update_config_using_existing(opm, "global", site_template) + get_config_mock.assert_called_once_with(opm, "global") + update_config_mock.assert_called_once_with(opm, expected_site, "global") + if __name__ == "__main__": unittest.main()
