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)) options.update(utils.parse_kv(module_args))
source = options.get('src', None) source = options.get('src', None)
dest = options.get('dest', 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: if source is None or dest is None:
results = dict(failed=True, msg="src and dest are required") results = dict(failed=True, msg="src and dest are required")
return ReturnData(conn=conn, result=results) 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) result = dict(msg="unable to calculate the md5 sum of the remote file", file=source, changed=False)
return ReturnData(conn=conn, result=result) return ReturnData(conn=conn, result=result)
if remote_md5 == '1': 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) return ReturnData(conn=conn, result=result)
if remote_md5 == '2': if remote_md5 == '2':
result = dict(msg="no read permission on remote file, not transferring, ignored", file=source, changed=False) 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: description:
- This module works like M(copy), but in reverse. It is used for fetching - 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, files from remote machines and storing them locally in a file tree,
organized by hostname. Note that if the source file is missing, it organized by hostname. Note that this module was originally written to
returns status=ok. 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" version_added: "0.2"
options: options:
src: src:
@ -26,6 +27,12 @@ options:
C(/backup/host.example.com/etc/profile) C(/backup/host.example.com/etc/profile)
required: true required: true
default: null default: null
fail_on_missing:
description:
- Makes it fails when the source file is missing.
required: false
choices: [ "yes", "no" ]
default: "no"
examples: examples:
- code: "fetch: src=/var/log/messages dest=/home/logtree" - code: "fetch: src=/var/log/messages dest=/home/logtree"
description: "Example from Ansible Playbooks" description: "Example from Ansible Playbooks"