Added a fail_on_missing option to fetch.

This commit is contained in:
Yves Dorfsman 2013-03-02 11:04:48 -07:00
parent 6d41983173
commit e45a0fd61d
2 changed files with 15 additions and 3 deletions

View file

@ -46,6 +46,8 @@ class ActionModule(object):
options.update(utils.parse_kv(module_args))
source = options.get('src', None)
dest = options.get('dest', None)
fail_on_missing = options.get('fail_on_missing', False)
fail_on_missing = utils.boolean(fail_on_missing)
if source is None or dest is None:
results = dict(failed=True, msg="src and dest are required")
return ReturnData(conn=conn, result=results)
@ -73,7 +75,10 @@ class ActionModule(object):
result = dict(msg="unable to calculate the md5 sum of the remote file", file=source, changed=False)
return ReturnData(conn=conn, result=result)
if remote_md5 == '1':
result = dict(msg="the remote file does not exist, not transferring, ignored", file=source, changed=False)
if fail_on_missing:
result = dict(failed=True, msg="the remote file does not exist", file=source)
else:
result = dict(msg="the remote file does not exist, not transferring, ignored", file=source, changed=False)
return ReturnData(conn=conn, result=result)
if remote_md5 == '2':
result = dict(msg="no read permission on remote file, not transferring, ignored", file=source, changed=False)

View file

@ -7,8 +7,9 @@ short_description: Fetches a file from remote nodes
description:
- This module works like M(copy), but in reverse. It is used for fetching
files from remote machines and storing them locally in a file tree,
organized by hostname. Note that if the source file is missing, it
returns status=ok.
organized by hostname. Note that this module was originally written to
transfer log files that were not necessarily present, therefore, by
default, if the source file is missing, it does not fail ;
version_added: "0.2"
options:
src:
@ -26,6 +27,12 @@ options:
C(/backup/host.example.com/etc/profile)
required: true
default: null
fail_on_missing:
description:
- Makes it fails when the source file is missing.
required: false
choices: [ "yes", "no" ]
default: "no"
examples:
- code: "fetch: src=/var/log/messages dest=/home/logtree"
description: "Example from Ansible Playbooks"