|
|
|
@ -7,10 +7,12 @@ __metaclass__ = type
|
|
|
|
|
from os import path, walk
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
import ansible.constants as C
|
|
|
|
|
from ansible.errors import AnsibleError
|
|
|
|
|
from ansible.module_utils.six import string_types
|
|
|
|
|
from ansible.module_utils._text import to_native, to_text
|
|
|
|
|
from ansible.plugins.action import ActionBase
|
|
|
|
|
from ansible.utils.vars import combine_vars
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ActionModule(ActionBase):
|
|
|
|
@ -20,7 +22,7 @@ class ActionModule(ActionBase):
|
|
|
|
|
VALID_FILE_EXTENSIONS = ['yaml', 'yml', 'json']
|
|
|
|
|
VALID_DIR_ARGUMENTS = ['dir', 'depth', 'files_matching', 'ignore_files', 'extensions', 'ignore_unknown_extensions']
|
|
|
|
|
VALID_FILE_ARGUMENTS = ['file', '_raw_params']
|
|
|
|
|
VALID_ALL = ['name']
|
|
|
|
|
VALID_ALL = ['name', 'hash_behaviour']
|
|
|
|
|
|
|
|
|
|
def _set_dir_defaults(self):
|
|
|
|
|
if not self.depth:
|
|
|
|
@ -46,6 +48,7 @@ class ActionModule(ActionBase):
|
|
|
|
|
def _set_args(self):
|
|
|
|
|
""" Set instance variables based on the arguments that were passed """
|
|
|
|
|
|
|
|
|
|
self.hash_behaviour = self._task.args.get('hash_behaviour', None)
|
|
|
|
|
self.return_results_as_name = self._task.args.get('name', None)
|
|
|
|
|
self.source_dir = self._task.args.get('dir', None)
|
|
|
|
|
self.source_file = self._task.args.get('file', None)
|
|
|
|
@ -135,6 +138,11 @@ class ActionModule(ActionBase):
|
|
|
|
|
if failed:
|
|
|
|
|
result['failed'] = failed
|
|
|
|
|
result['message'] = err_msg
|
|
|
|
|
elif self.hash_behaviour is not None and self.hash_behaviour != C.DEFAULT_HASH_BEHAVIOUR:
|
|
|
|
|
merge_hashes = self.hash_behaviour == 'merge'
|
|
|
|
|
for key, value in results.items():
|
|
|
|
|
old_value = task_vars.get(key, None)
|
|
|
|
|
results[key] = combine_vars(old_value, value, merge=merge_hashes)
|
|
|
|
|
|
|
|
|
|
result['ansible_included_var_files'] = self.included_files
|
|
|
|
|
result['ansible_facts'] = results
|
|
|
|
|