Use previous parameter merge strategy
We don't allow different parameter merge strategies
in different environment files for a parameter. If
a merge strategy has already been provided in one
environment file, let's use that for subsequent ones
unless a different merge strategy has been provided.
Task: 45578
Change-Id: Iec3367667248d0b46196a6d569f3cbb3b200d842
(cherry picked from commit 94f32ee39f
)
This commit is contained in:
parent
eefb921612
commit
f050798058
|
@ -22,14 +22,19 @@ ALLOWED_PARAM_MERGE_STRATEGIES = (OVERWRITE, MERGE, DEEP_MERGE) = (
|
|||
'overwrite', 'merge', 'deep_merge')
|
||||
|
||||
|
||||
def get_param_merge_strategy(merge_strategies, param_key):
|
||||
def get_param_merge_strategy(merge_strategies, param_key,
|
||||
available_strategies=None):
|
||||
if not available_strategies:
|
||||
available_strategies = {}
|
||||
|
||||
if merge_strategies is None:
|
||||
return OVERWRITE
|
||||
|
||||
env_default = merge_strategies.get('default', OVERWRITE)
|
||||
merge_strategy = merge_strategies.get(
|
||||
param_key, available_strategies.get(
|
||||
param_key, env_default))
|
||||
|
||||
merge_strategy = merge_strategies.get(param_key, env_default)
|
||||
if merge_strategy in ALLOWED_PARAM_MERGE_STRATEGIES:
|
||||
return merge_strategy
|
||||
|
||||
|
@ -114,7 +119,7 @@ def merge_parameters(old, new, param_schemata, strategies_in_file,
|
|||
# if key not in param_schemata ignore it
|
||||
if key in param_schemata and value is not None:
|
||||
param_merge_strategy = get_param_merge_strategy(
|
||||
strategies_in_file, key)
|
||||
strategies_in_file, key, available_strategies)
|
||||
if key not in available_strategies:
|
||||
new_strategies[key] = param_merge_strategy
|
||||
|
||||
|
|
|
@ -202,7 +202,13 @@ class TestMergeEnvironments(common.HeatTestCase):
|
|||
'lst_value1': "merge",
|
||||
'json_value1': "deep_merge"}
|
||||
|
||||
env3_merge_strategies = {
|
||||
'default': "overwrite",
|
||||
'lst_value1': "deep_merge",
|
||||
'json_value1': "merge"}
|
||||
|
||||
self.env_2['parameter_merge_strategies'] = merge_strategies
|
||||
self.env_3['parameter_merge_strategies'] = env3_merge_strategies
|
||||
|
||||
files = {'env_1': json.dumps(self.env_1),
|
||||
'env_2': json.dumps(self.env_2),
|
||||
|
@ -221,7 +227,12 @@ class TestMergeEnvironments(common.HeatTestCase):
|
|||
'default': "overwrite",
|
||||
'lst_value2': "merge"}
|
||||
|
||||
env4_merge_strategies = {
|
||||
'default': "overwrite",
|
||||
'lst_value2': "overwrite"}
|
||||
|
||||
self.env_2['parameter_merge_strategies'] = merge_strategies
|
||||
self.env_4['parameter_merge_strategies'] = env4_merge_strategies
|
||||
|
||||
files = {'env_1': json.dumps(self.env_1),
|
||||
'env_2': json.dumps(self.env_2),
|
||||
|
|
Loading…
Reference in New Issue