diff options
author | rabi <ramishra@redhat.com> | 2022-06-09 09:13:09 +0530 |
---|---|---|
committer | Takashi Kajinami <tkajinam@redhat.com> | 2022-06-14 13:38:33 +0900 |
commit | bc4e3bb627294629bcd53d05f53ab4a196370b74 (patch) | |
tree | a00e8c042a5dfc5d9b46ba68293165fdfe5a624e /heat/common/environment_util.py | |
parent | 4b20eeff4df8d8bcd6317f75a8e7eafed635ab6b (diff) | |
download | heat-bc4e3bb627294629bcd53d05f53ab4a196370b74.tar.gz |
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 94f32ee39f4d705614079bd0ac113cde67dbb7e4)
(cherry picked from commit f0507980586711014e28411d53faba30138c3044)
(cherry picked from commit 66dd43c6555451e4a6f60d82ef8da33cc83f6397)
Diffstat (limited to 'heat/common/environment_util.py')
-rw-r--r-- | heat/common/environment_util.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/heat/common/environment_util.py b/heat/common/environment_util.py index 8a6ed4393..5143719d8 100644 --- a/heat/common/environment_util.py +++ b/heat/common/environment_util.py @@ -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 |