Skip to content

Commit

Permalink
Fix issue whereby file will be transferred before checking the create…
Browse files Browse the repository at this point in the history
…s argument.
  • Loading branch information
jonhadfield committed Nov 13, 2014
1 parent ffc2e5a commit 697582f
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions lib/ansible/runner/action_plugins/unarchive.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,30 @@ def run(self, conn, tmp, module_name, module_args, inject, complex_args=None, **
source = options.get('src', None)
dest = options.get('dest', None)
copy = utils.boolean(options.get('copy', 'yes'))
creates = options.get('creates', None)

if source is None or dest is None:
result = dict(failed=True, msg="src (or content) and dest are required")
return ReturnData(conn=conn, result=result)

if creates:
# do not run the command if the line contains creates=filename
# and the filename already exists. This allows idempotence
# of command executions.
module_args_tmp = "path=%s" % creates
module_return = self.runner._execute_module(conn, tmp, 'stat', module_args_tmp, inject=inject,
complex_args=complex_args, persist_files=True)
stat = module_return.result.get('stat', None)
if stat and stat.get('exists', False):
return ReturnData(
conn=conn,
comm_ok=True,
result=dict(
skipped=True,
msg=("skipped, since %s exists" % creates)
)
)

dest = self.runner._remote_expand_user(conn, dest, tmp) # CCTODO: Fix path for Windows hosts.
source = template.template(self.runner.basedir, os.path.expanduser(source), inject)
if copy:
Expand Down

0 comments on commit 697582f

Please sign in to comment.