コード例 #1
0
ファイル: test_common_env_util.py プロジェクト: zzjeric/heat
    def test_merge_envs_with_param_default_merge_strategy(self):
        files = {
            'env_1': json.dumps(self.env_1),
            'env_2': json.dumps(self.env_2)
        }
        environment_files = ['env_1', 'env_2']

        # Test
        env_util.merge_environments(environment_files, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {
            'parameters': {
                'json_value1': {
                    u'3': [u'str3', u'str4']
                },
                'json_value2': {
                    u'4': [u'test3', u'test4']
                },
                'del_lst_value1': '5,6',
                'del_lst_value2': '7,8',
                'lst_value1': [5, 6],
                'str_value1': u'string3',
                'str_value2': u'string4'
            },
            'resource_registry': {
                'test::R1': "OS::Heat::RandomString",
                'test::R2': "OS::Heat::None"
            },
            'parameter_defaults': {
                'lst_value2': [7, 8]
            }
        }
        self.assertEqual(expected, self.params)
コード例 #2
0
    def test_merge_envs_with_param_specific_merge_strategy(self):
        merge_strategies = {
            "default": "overwrite",
            "lst_value1": "merge",
            "lst_value2": "merge",
            "json_value1": "deep_merge",
        }

        self.env_2["parameter_merge_strategies"] = merge_strategies

        files = {"env_1": json.dumps(self.env_1), "env_2": json.dumps(self.env_2)}
        environment_files = ["env_1", "env_2"]

        # Test
        env_util.merge_environments(environment_files, files, self.params, self.param_schemata)

        # Verify
        expected = {
            "parameters": {
                "json_value1": {u"3": [u"str3", u"str4"], u"1": [u"str1", u"str2"]},  # added
                "json_value2": {u"4": [u"test3", u"test4"]},
                "del_lst_value1": "5,6",
                "del_lst_value2": "7,8",
                "lst_value1": [1, 2, 5, 6],  # added
                "str_value1": u"string3",
                "str_value2": u"string4",
            },
            "resource_registry": {"test::R1": "OS::Heat::RandomString", "test::R2": "OS::Heat::None"},
            "parameter_defaults": {"lst_value2": [3, 4, 7, 8]},
        }
        self.assertEqual(expected, self.params)
コード例 #3
0
ファイル: test_common_env_util.py プロジェクト: aaratn/heat
    def test_merge_envs_with_param_specific_merge_strategy(self):
        merge_strategies = {
            'default': 'overwrite',
            'lst_value1': 'merge',
            'lst_value2': 'merge',
            'json_value1': 'deep_merge'}

        self.env_2['parameter_merge_strategies'] = merge_strategies

        files = {'env_1': json.dumps(self.env_1),
                 'env_2': json.dumps(self.env_2)}
        environment_files = ['env_1', 'env_2']

        # Test
        env_util.merge_environments(environment_files, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {'parameters': {
                    'json_value1': {u'3': [u'str3', u'str4'],
                                    u'1': [u'str1', u'str2']},  # added
                    'json_value2': {u'4': [u'test3', u'test4']},
                    'del_lst_value1': '5,6',
                    'del_lst_value2': '7,8',
                    'lst_value1': [1, 2, 5, 6],  # added
                    'str_value1': u'string3',
                    'str_value2': u'string4'},
                    'resource_registry': {
                        'test::R1': 'OS::Heat::RandomString',
                        'test::R2': 'OS::Heat::None'},
                    'parameter_defaults': {
                        'lst_value2': [3, 4, 7, 8]}}
        self.assertEqual(expected, self.params)
コード例 #4
0
    def test_merge_environments(self):
        # Setup
        params = {
            'parameters': {
                'p0': 'CORRECT',
                'p1': 'INCORRECT',
                'p2': 'INCORRECT'
            }
        }
        env_1 = '''
        {'parameters' : {
            'p1': 'CORRECT',
            'p2': 'INCORRECT-ENV-1',
        }}'''
        env_2 = '''
        {'parameters': {
            'p2': 'CORRECT'
        }}'''

        files = {'env_1': env_1, 'env_2': env_2}
        environment_files = ['env_1', 'env_2']

        # Test
        env_util.merge_environments(environment_files, files, params)

        # Verify
        expected = {
            'parameters': {
                'p0': 'CORRECT',
                'p1': 'CORRECT',
                'p2': 'CORRECT',
            }
        }
        self.assertEqual(expected, params)
コード例 #5
0
    def test_merge_environments_no_env_files(self):
        files = {"env_1": json.dumps(self.env_1)}

        # Test - Should ignore env_1 in files
        env_util.merge_environments(None, files, self.params, self.param_schemata)

        # Verify
        expected = {"parameters": {}, "resource_registry": {}, "parameter_defaults": {}}

        self.assertEqual(expected, self.params)
コード例 #6
0
ファイル: test_common_env_util.py プロジェクト: zzjeric/heat
    def test_merge_envs_with_zeros(self):
        env1 = {'parameter_defaults': {'value1': 1}}
        env2 = {'parameter_defaults': {'value1': 0}}
        files = {'env_1': json.dumps(env1), 'env_2': json.dumps(env2)}
        environment_files = ['env_1', 'env_2']

        param_schemata = {
            'value1': parameters.Schema(parameters.Schema.NUMBER)
        }
        env_util.merge_environments(environment_files, files, self.params,
                                    param_schemata)

        self.assertEqual({'value1': 0}, self.params['parameter_defaults'])
コード例 #7
0
ファイル: test_common_env_util.py プロジェクト: aaratn/heat
    def test_merge_envs_with_zeros(self):
        env1 = {'parameter_defaults': {'value1': 1}}
        env2 = {'parameter_defaults': {'value1': 0}}
        files = {'env_1': json.dumps(env1),
                 'env_2': json.dumps(env2)}
        environment_files = ['env_1', 'env_2']

        param_schemata = {
            'value1': parameters.Schema(parameters.Schema.NUMBER)}
        env_util.merge_environments(environment_files, files, self.params,
                                    param_schemata)

        self.assertEqual({'value1': 0}, self.params['parameter_defaults'])
コード例 #8
0
ファイル: test_common_env_util.py プロジェクト: zzjeric/heat
    def test_merge_environments_no_env_files(self):
        files = {'env_1': json.dumps(self.env_1)}

        # Test - Should ignore env_1 in files
        env_util.merge_environments(None, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {
            'parameters': {},
            'resource_registry': {},
            'parameter_defaults': {}
        }

        self.assertEqual(expected, self.params)
コード例 #9
0
    def test_merge_environments_no_env_files(self):
        params = {'parameters': {'p0': 'CORRECT'}}
        env_1 = '''
        {'parameters' : {
            'p0': 'INCORRECT',
        }}'''

        files = {'env_1': env_1}

        # Test - Should ignore env_1 in files
        env_util.merge_environments(None, files, params)

        # Verify
        expected = {'parameters': {'p0': 'CORRECT'}}
        self.assertEqual(expected, params)
コード例 #10
0
ファイル: test_common_env_util.py プロジェクト: aaratn/heat
    def test_merge_envs_with_zeros_in_maps(self):
        env1 = {'parameter_defaults': {'value1': {'foo': 1}}}
        env2 = {'parameter_defaults': {'value1': {'foo': 0}},
                'parameter_merge_strategies': {'value1': 'deep_merge'}}
        files = {'env_1': json.dumps(env1),
                 'env_2': json.dumps(env2)}
        environment_files = ['env_1', 'env_2']

        param_schemata = {
            'value1': parameters.Schema(parameters.Schema.MAP)}
        env_util.merge_environments(environment_files, files, self.params,
                                    param_schemata)

        self.assertEqual({'value1': {'foo': 0}},
                         self.params['parameter_defaults'])
コード例 #11
0
    def test_merge_environments_deep_merge(self):
        # Setup
        params = {
            'parameters': {
                'p0': 'CORRECT',
                'p1': ['CORRECT1'],
                'p2': {
                    'A': ['CORRECT1', 'CORRECT2']
                },
                'p3': 'CORRECT1,CORRECT2'
            }
        }
        env_1 = '''
        {'parameters' : {
            'p1': ['CORRECT2', 'CORRECT3'],
            'p2': {'B': ['CORRECT3', 'CORRECT4'],
                   'C': [CORRECT5]},
            'p3': 'CORRECT3,CORRECT4'
        }}'''
        env_2 = '''
        {'parameters': {
        'p2': {'C': ['CORRECT6']},
        'p3': 'CORRECT5,CORRECT6'
        }}'''

        files = {'env_1': env_1, 'env_2': env_2}
        environment_files = ['env_1', 'env_2']

        # Test
        env_util.merge_environments(environment_files, files, params)

        # Verify
        # Does not work for comma_delimited_list.
        expected = {
            'parameters': {
                'p0': 'CORRECT',
                'p1': ['CORRECT1', 'CORRECT2', 'CORRECT3'],
                'p2': {
                    'A': ['CORRECT1', 'CORRECT2'],
                    'B': ['CORRECT3', 'CORRECT4'],
                    'C': ['CORRECT5', 'CORRECT6']
                },
                'p3': 'CORRECT5,CORRECT6'
            }
        }
        self.assertEqual(expected, params)
コード例 #12
0
ファイル: test_common_env_util.py プロジェクト: zzjeric/heat
    def test_merge_envs_with_param_specific_merge_strategy(self):
        merge_strategies = {
            'default': 'overwrite',
            'lst_value1': 'merge',
            'lst_value2': 'merge',
            'json_value1': 'deep_merge'
        }

        self.env_2['parameter_merge_strategies'] = merge_strategies

        files = {
            'env_1': json.dumps(self.env_1),
            'env_2': json.dumps(self.env_2)
        }
        environment_files = ['env_1', 'env_2']

        # Test
        env_util.merge_environments(environment_files, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {
            'parameters': {
                'json_value1': {
                    u'3': [u'str3', u'str4'],
                    u'1': [u'str1', u'str2']
                },  # added
                'json_value2': {
                    u'4': [u'test3', u'test4']
                },
                'del_lst_value1': '5,6',
                'del_lst_value2': '7,8',
                'lst_value1': [1, 2, 5, 6],  # added
                'str_value1': u'string3',
                'str_value2': u'string4'
            },
            'resource_registry': {
                'test::R1': 'OS::Heat::RandomString',
                'test::R2': 'OS::Heat::None'
            },
            'parameter_defaults': {
                'lst_value2': [3, 4, 7, 8]
            }
        }
        self.assertEqual(expected, self.params)
コード例 #13
0
    def test_merge_environments_no_env_files(self):
        files = {'env_1': json.dumps(self.env_1)}

        # Test - Should ignore env_1 in files
        env_util.merge_environments(None, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {'parameters': {
            'str_value1': "test1",
            'str_value2': "test2",
            'del_lst_value1': '',
            'del_lst_value2': '',
            'lst_value1': [],
            'lst_value2': [],
            'json_value1': {},
            'json_value2': {}},
            'resource_registry': {}}

        self.assertEqual(expected, self.params)
コード例 #14
0
ファイル: test_common_env_util.py プロジェクト: zzjeric/heat
    def test_merge_envs_with_zeros_in_maps(self):
        env1 = {'parameter_defaults': {'value1': {'foo': 1}}}
        env2 = {
            'parameter_defaults': {
                'value1': {
                    'foo': 0
                }
            },
            'parameter_merge_strategies': {
                'value1': 'deep_merge'
            }
        }
        files = {'env_1': json.dumps(env1), 'env_2': json.dumps(env2)}
        environment_files = ['env_1', 'env_2']

        param_schemata = {'value1': parameters.Schema(parameters.Schema.MAP)}
        env_util.merge_environments(environment_files, files, self.params,
                                    param_schemata)

        self.assertEqual({'value1': {
            'foo': 0
        }}, self.params['parameter_defaults'])
コード例 #15
0
    def test_merge_envs_with_param_default_merge_strategy(self):
        files = {"env_1": json.dumps(self.env_1), "env_2": json.dumps(self.env_2)}
        environment_files = ["env_1", "env_2"]

        # Test
        env_util.merge_environments(environment_files, files, self.params, self.param_schemata)

        # Verify
        expected = {
            "parameters": {
                "json_value1": {u"3": [u"str3", u"str4"]},
                "json_value2": {u"4": [u"test3", u"test4"]},
                "del_lst_value1": "5,6",
                "del_lst_value2": "7,8",
                "lst_value1": [5, 6],
                "str_value1": u"string3",
                "str_value2": u"string4",
            },
            "resource_registry": {"test::R1": "OS::Heat::RandomString", "test::R2": "OS::Heat::None"},
            "parameter_defaults": {"lst_value2": [7, 8]},
        }
        self.assertEqual(expected, self.params)
コード例 #16
0
    def test_merge_environments_no_env_files(self):
        files = {'env_1': json.dumps(self.env_1)}

        # Test - Should ignore env_1 in files
        env_util.merge_environments(None, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {
            'parameters': {
                'str_value1': "test1",
                'str_value2': "test2",
                'del_lst_value1': '',
                'del_lst_value2': '',
                'lst_value1': [],
                'lst_value2': [],
                'json_value1': {},
                'json_value2': {}
            },
            'resource_registry': {}
        }

        self.assertEqual(expected, self.params)
コード例 #17
0
    def test_merge_envs_with_param_default_merge_strategy(self):
        files = {'env_1': json.dumps(self.env_1),
                 'env_2': json.dumps(self.env_2)}
        environment_files = ['env_1', 'env_2']

        # Test
        env_util.merge_environments(environment_files, files, self.params,
                                    self.param_schemata)

        # Verify
        expected = {'parameters': {
                    'json_value1': {u'3': [u'str3', u'str4']},
                    'json_value2': {u'4': [u'test3', u'test4']},
                    'del_lst_value1': '5,6',
                    'del_lst_value2': '7,8',
                    'lst_value1': [5, 6],
                    'lst_value2': [7, 8],
                    'str_value1': u'string3',
                    'str_value2': u'string4'},
                    'resource_registry': {
                        'test::R1': "OS::Heat::RandomString",
                        'test::R2': "OS::Heat::None"}}
        self.assertEqual(expected, self.params)