aboutsummaryrefslogtreecommitdiff
path: root/ansible/action_plugins
diff options
context:
space:
mode:
authorDoug Szumski <doug@stackhpc.com>2018-10-30 15:38:14 +0000
committerDoug Szumski <doug@stackhpc.com>2018-11-05 18:09:22 +0000
commitbadb41a49c4b304bc525ba3fb997ef9288e3a6e9 (patch)
tree3f7cdfa2f919e6442ffc05dd672b99835dfcaf10 /ansible/action_plugins
parent58eec5ca12aa3e2c0bbfc7cfb00beee82ff199d2 (diff)
downloadkolla-ansible-badb41a49c4b304bc525ba3fb997ef9288e3a6e9.tar.gz
kolla-ansible-badb41a49c4b304bc525ba3fb997ef9288e3a6e9.zip
Support merging nested yaml config
Closes-Bug: 1786741 Change-Id: Ic217f3f8194cdcb5e28045e771a0160c1f12280e
Diffstat (limited to 'ansible/action_plugins')
-rwxr-xr-xansible/action_plugins/merge_yaml.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/ansible/action_plugins/merge_yaml.py b/ansible/action_plugins/merge_yaml.py
index 371905d0d..0bff14dc2 100755
--- a/ansible/action_plugins/merge_yaml.py
+++ b/ansible/action_plugins/merge_yaml.py
@@ -32,6 +32,7 @@ except ImportError:
from ansible import constants
from ansible.plugins import action
+import six
class ActionModule(action.ActionBase):
@@ -76,7 +77,7 @@ class ActionModule(action.ActionBase):
if not isinstance(sources, list):
sources = [sources]
for source in sources:
- output.update(self.read_config(source))
+ Utils.update_nested_conf(output, self.read_config(source))
# restore original vars
self._templar.set_available_variables(old_vars)
@@ -109,3 +110,14 @@ class ActionModule(action.ActionBase):
finally:
shutil.rmtree(local_tempdir)
return result
+
+
+class Utils(object):
+ @staticmethod
+ def update_nested_conf(conf, update):
+ for k, v in six.iteritems(update):
+ if isinstance(v, dict):
+ conf[k] = Utils.update_nested_conf(conf.get(k, {}), v)
+ else:
+ conf[k] = v
+ return conf