|
|
|
@ -43,14 +43,12 @@ class ActionModule(ActionBase):
|
|
|
|
|
dest = self._task.args.get('dest', None)
|
|
|
|
|
raw = boolean(self._task.args.get('raw', 'no'))
|
|
|
|
|
force = boolean(self._task.args.get('force', 'yes'))
|
|
|
|
|
faf = task_vars.get('first_available_file', None)
|
|
|
|
|
|
|
|
|
|
# FIXME: first available file needs to be reworked somehow...
|
|
|
|
|
#if (source is None and content is None and not 'first_available_file' in inject) or dest is None:
|
|
|
|
|
# result=dict(failed=True, msg="src (or content) and dest are required")
|
|
|
|
|
# return ReturnData(conn=conn, result=result)
|
|
|
|
|
#elif (source is not None or 'first_available_file' in inject) and content is not None:
|
|
|
|
|
# result=dict(failed=True, msg="src and content are mutually exclusive")
|
|
|
|
|
# return ReturnData(conn=conn, result=result)
|
|
|
|
|
if (source is None and content is None and faf is None) or dest is None:
|
|
|
|
|
return dict(failed=True, msg="src (or content) and dest are required")
|
|
|
|
|
elif (source is not None or faf is not None) and content is not None:
|
|
|
|
|
return dict(failed=True, msg="src and content are mutually exclusive")
|
|
|
|
|
|
|
|
|
|
# Check if the source ends with a "/"
|
|
|
|
|
source_trailing_slash = False
|
|
|
|
@ -65,7 +63,7 @@ class ActionModule(ActionBase):
|
|
|
|
|
try:
|
|
|
|
|
# If content comes to us as a dict it should be decoded json.
|
|
|
|
|
# We need to encode it back into a string to write it out.
|
|
|
|
|
if isinstance(content, dict):
|
|
|
|
|
if isinstance(content, dict) or isinstance(content, list):
|
|
|
|
|
content_tempfile = self._create_content_tempfile(json.dumps(content))
|
|
|
|
|
else:
|
|
|
|
|
content_tempfile = self._create_content_tempfile(content)
|
|
|
|
@ -73,27 +71,23 @@ class ActionModule(ActionBase):
|
|
|
|
|
except Exception as err:
|
|
|
|
|
return dict(failed=True, msg="could not write content temp file: %s" % err)
|
|
|
|
|
|
|
|
|
|
###############################################################################################
|
|
|
|
|
# FIXME: first_available_file needs to be reworked?
|
|
|
|
|
###############################################################################################
|
|
|
|
|
# if we have first_available_file in our vars
|
|
|
|
|
# look up the files and use the first one we find as src
|
|
|
|
|
#elif 'first_available_file' in inject:
|
|
|
|
|
# found = False
|
|
|
|
|
# for fn in inject.get('first_available_file'):
|
|
|
|
|
# fn_orig = fn
|
|
|
|
|
# fnt = template.template(self.runner.basedir, fn, inject)
|
|
|
|
|
# fnd = utils.path_dwim(self.runner.basedir, fnt)
|
|
|
|
|
# if not os.path.exists(fnd) and '_original_file' in inject:
|
|
|
|
|
# fnd = utils.path_dwim_relative(inject['_original_file'], 'files', fnt, self.runner.basedir, check=False)
|
|
|
|
|
# if os.path.exists(fnd):
|
|
|
|
|
# source = fnd
|
|
|
|
|
# found = True
|
|
|
|
|
# break
|
|
|
|
|
# if not found:
|
|
|
|
|
# results = dict(failed=True, msg="could not find src in first_available_file list")
|
|
|
|
|
# return ReturnData(conn=conn, result=results)
|
|
|
|
|
###############################################################################################
|
|
|
|
|
elif faf:
|
|
|
|
|
found = False
|
|
|
|
|
for fn in faf:
|
|
|
|
|
fn_orig = fn
|
|
|
|
|
fnt = self._templar.template(fn)
|
|
|
|
|
fnd = self._loader.path_dwim_relative(self._task._role._role_path, 'files', fnt)
|
|
|
|
|
of = task_vars.get('_original_file', None)
|
|
|
|
|
if not os.path.exists(fnd) and of is not None:
|
|
|
|
|
fnd = self._loader.path_dwim_relative(of, 'files', fnt)
|
|
|
|
|
if os.path.exists(fnd):
|
|
|
|
|
source = fnd
|
|
|
|
|
found = True
|
|
|
|
|
break
|
|
|
|
|
if not found:
|
|
|
|
|
return dict(failed=True, msg="could not find src in first_available_file list")
|
|
|
|
|
else:
|
|
|
|
|
if self._task._role is not None:
|
|
|
|
|
source = self._loader.path_dwim_relative(self._task._role._role_path, 'files', source)
|
|
|
|
|