|
|
|
@ -20,7 +20,7 @@ __metaclass__ = type
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
from ansible.errors import AnsibleError, AnsibleAction, AnsibleActionFail
|
|
|
|
|
from ansible.errors import AnsibleError, AnsibleAction, AnsibleActionFail, AnsibleFileNotFound
|
|
|
|
|
from ansible.module_utils._text import to_text
|
|
|
|
|
from ansible.plugins.action import ActionBase
|
|
|
|
|
|
|
|
|
@ -43,11 +43,17 @@ class ActionModule(ActionBase):
|
|
|
|
|
new_module_args = self._task.args.copy()
|
|
|
|
|
if source:
|
|
|
|
|
source = os.path.expanduser(source)
|
|
|
|
|
try:
|
|
|
|
|
source = self._loader.get_real_file(self._find_needle('files', source))
|
|
|
|
|
new_module_args['src'] = source
|
|
|
|
|
except AnsibleError as e:
|
|
|
|
|
raise AnsibleActionFail(to_text(e))
|
|
|
|
|
|
|
|
|
|
# For backward compatibility check if the file exists on the remote; it should take precedence
|
|
|
|
|
if not self._remote_file_exists(source):
|
|
|
|
|
try:
|
|
|
|
|
source = self._loader.get_real_file(self._find_needle('files', source))
|
|
|
|
|
new_module_args['src'] = source
|
|
|
|
|
except AnsibleFileNotFound as e:
|
|
|
|
|
# module handles error message for nonexistent files
|
|
|
|
|
new_module_args['src'] = source
|
|
|
|
|
except AnsibleError as e:
|
|
|
|
|
raise AnsibleActionFail(to_text(e))
|
|
|
|
|
|
|
|
|
|
# execute the aws_s3 module now, with the updated args
|
|
|
|
|
result.update(self._execute_module(module_args=new_module_args, task_vars=task_vars))
|
|
|
|
|