diff --git a/ansible/action_plugins/merge_configs.py b/ansible/action_plugins/merge_configs.py index 7bbf706549..a825835506 100644 --- a/ansible/action_plugins/merge_configs.py +++ b/ansible/action_plugins/merge_configs.py @@ -171,12 +171,12 @@ class ActionModule(action.ActionBase): del tmp # not used sources = self._task.args.get('sources', None) + whitespace = self._task.args.get('whitespace', True) if not isinstance(sources, list): sources = [sources] - config = OverrideConfigParser( - whitespace=self._task.args.get('whitespace', True)) + config = OverrideConfigParser(whitespace=whitespace) for source in sources: self.read_config(source, config) @@ -213,7 +213,11 @@ class ActionModule(action.ActionBase): loader=self._loader, templar=self._templar, shared_loader_obj=self._shared_loader_obj) - result.update(copy_action.run(task_vars=task_vars)) + copy_result = copy_action.run(task_vars=task_vars) + copy_result['invocation']['module_args'].update({ + 'src': result_file, 'sources': sources, + 'whitespace': whitespace}) + result.update(copy_result) finally: shutil.rmtree(local_tempdir) return result diff --git a/ansible/action_plugins/merge_yaml.py b/ansible/action_plugins/merge_yaml.py old mode 100755 new mode 100644 index c8a7182bf3..6481091630 --- a/ansible/action_plugins/merge_yaml.py +++ b/ansible/action_plugins/merge_yaml.py @@ -17,8 +17,7 @@ import os import shutil import tempfile -from yaml import dump -from yaml import safe_load +import yaml from ansible import constants from ansible import errors as ansible_errors @@ -81,7 +80,7 @@ class ActionModule(action.ActionBase): def read_config(self, source): result = None # Only use config if present - if os.access(source, os.R_OK): + if source and os.access(source, os.R_OK): with open(source, 'r') as f: template_data = f.read() @@ -94,7 +93,7 @@ class ActionModule(action.ActionBase): self._templar.environment.loader.searchpath = searchpath template_data = self._templar.template(template_data) - result = safe_load(template_data) + result = yaml.safe_load(template_data) return result or {} def run(self, tmp=None, task_vars=None): @@ -128,7 +127,7 @@ class ActionModule(action.ActionBase): try: result_file = os.path.join(local_tempdir, 'source') with open(result_file, 'w') as f: - f.write(dump(output, default_flow_style=False)) + f.write(yaml.dump(output, default_flow_style=False)) new_task = self._task.copy() new_task.args.pop('sources', None) @@ -147,7 +146,11 @@ class ActionModule(action.ActionBase): loader=self._loader, templar=self._templar, shared_loader_obj=self._shared_loader_obj) - result.update(copy_action.run(task_vars=task_vars)) + copy_result = copy_action.run(task_vars=task_vars) + copy_result['invocation']['module_args'].update({ + 'src': result_file, 'sources': sources, + 'extend_lists': extend_lists}) + result.update(copy_result) finally: shutil.rmtree(local_tempdir) return result