mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-01-11 15:15:26 +01:00
Merge 92dc532b49 into 542643e786
This commit is contained in:
commit
b6396f5ee9
3 changed files with 53 additions and 44 deletions
|
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- synchronize - add the ``quiet`` option to suppress non-error messages (https://github.com/ansible-collections/ansible.posix/issues/171).
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
from __future__ import absolute_import, division, print_function
|
from __future__ import absolute_import, division, print_function
|
||||||
__metaclass__ = type
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = r'''
|
DOCUMENTATION = r'''
|
||||||
---
|
---
|
||||||
module: synchronize
|
module: synchronize
|
||||||
|
|
@ -186,6 +185,12 @@ options:
|
||||||
type: bool
|
type: bool
|
||||||
default: true
|
default: true
|
||||||
version_added: '1.3.0'
|
version_added: '1.3.0'
|
||||||
|
quiet:
|
||||||
|
description:
|
||||||
|
- This option specifies quiet option which on true suppresses the output.
|
||||||
|
type: bool
|
||||||
|
default: no
|
||||||
|
version_added: '1.3.0'
|
||||||
|
|
||||||
notes:
|
notes:
|
||||||
- rsync must be installed on both the local and remote host.
|
- rsync must be installed on both the local and remote host.
|
||||||
|
|
@ -343,6 +348,12 @@ EXAMPLES = r'''
|
||||||
src: /tmp/localpath/
|
src: /tmp/localpath/
|
||||||
dest: /tmp/remotepath
|
dest: /tmp/remotepath
|
||||||
rsync_path: /usr/gnu/bin/rsync
|
rsync_path: /usr/gnu/bin/rsync
|
||||||
|
|
||||||
|
- name: Synchronization with quiet option enabled
|
||||||
|
ansible.posix.synchronize:
|
||||||
|
src: some/relative/path
|
||||||
|
dest: /some/absolute/path
|
||||||
|
quiet: yes
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -419,6 +430,7 @@ def main():
|
||||||
delay_updates=dict(type='bool', default=True),
|
delay_updates=dict(type='bool', default=True),
|
||||||
mode=dict(type='str', default='push', choices=['pull', 'push']),
|
mode=dict(type='str', default='push', choices=['pull', 'push']),
|
||||||
link_dest=dict(type='list', elements='str'),
|
link_dest=dict(type='list', elements='str'),
|
||||||
|
quiet=dict(type='bool', default=False)
|
||||||
),
|
),
|
||||||
supports_check_mode=True,
|
supports_check_mode=True,
|
||||||
)
|
)
|
||||||
|
|
@ -459,6 +471,7 @@ def main():
|
||||||
verify_host = module.params['verify_host']
|
verify_host = module.params['verify_host']
|
||||||
link_dest = module.params['link_dest']
|
link_dest = module.params['link_dest']
|
||||||
delay_updates = module.params['delay_updates']
|
delay_updates = module.params['delay_updates']
|
||||||
|
quiet = module.params['quiet']
|
||||||
|
|
||||||
if '/' not in rsync:
|
if '/' not in rsync:
|
||||||
rsync = module.get_bin_path(rsync, required=True)
|
rsync = module.get_bin_path(rsync, required=True)
|
||||||
|
|
@ -589,6 +602,9 @@ def main():
|
||||||
|
|
||||||
cmd.append(shlex_quote(source))
|
cmd.append(shlex_quote(source))
|
||||||
cmd.append(shlex_quote(dest))
|
cmd.append(shlex_quote(dest))
|
||||||
|
if quiet:
|
||||||
|
cmd.append('--quiet')
|
||||||
|
|
||||||
cmdstr = ' '.join(cmd)
|
cmdstr = ' '.join(cmd)
|
||||||
|
|
||||||
# If we are using password authentication, write the password into the pipe
|
# If we are using password authentication, write the password into the pipe
|
||||||
|
|
@ -621,14 +637,17 @@ def main():
|
||||||
out_lines = out_clean.split('\n')
|
out_lines = out_clean.split('\n')
|
||||||
while '' in out_lines:
|
while '' in out_lines:
|
||||||
out_lines.remove('')
|
out_lines.remove('')
|
||||||
if module._diff:
|
|
||||||
diff = {'prepared': out_clean}
|
|
||||||
return module.exit_json(changed=changed, msg=out_clean,
|
|
||||||
rc=rc, cmd=cmdstr, stdout_lines=out_lines,
|
|
||||||
diff=diff)
|
|
||||||
|
|
||||||
return module.exit_json(changed=changed, msg=out_clean,
|
result = dict(changed=changed, rc=rc, cmd=cmdstr, stdout_lines=out_lines, msg=out_clean)
|
||||||
rc=rc, cmd=cmdstr, stdout_lines=out_lines)
|
|
||||||
|
if quiet:
|
||||||
|
changes = out.count(changed_marker) if changed else 0
|
||||||
|
result['msg'] = "%s files/directories have been synchronized" % changes
|
||||||
|
|
||||||
|
if module._diff:
|
||||||
|
result['diff'] = {'prepared': out_clean}
|
||||||
|
|
||||||
|
return module.exit_json(**result)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
||||||
|
|
@ -265,46 +265,34 @@
|
||||||
- directory_a/foo.txt
|
- directory_a/foo.txt
|
||||||
- directory_a
|
- directory_a
|
||||||
- directory_b
|
- directory_b
|
||||||
|
- name: synchronize files with quiet option
|
||||||
- name: setup - test for source with working dir with spaces in path
|
|
||||||
file:
|
|
||||||
state: directory
|
|
||||||
path: '{{output_dir}}/{{item}}'
|
|
||||||
delegate_to: '{{ inventory_hostname }}'
|
|
||||||
with_items:
|
|
||||||
- 'directory a'
|
|
||||||
- 'directory b'
|
|
||||||
- name: setup - create test new files
|
|
||||||
copy:
|
|
||||||
dest: '{{output_dir}}/directory a/{{item}}'
|
|
||||||
mode: '0644'
|
|
||||||
content: 'hello world'
|
|
||||||
with_items:
|
|
||||||
- foo.txt
|
|
||||||
delegate_to: '{{ inventory_hostname }}'
|
|
||||||
- name: copy source with spaces in dir path
|
|
||||||
synchronize:
|
synchronize:
|
||||||
src: '{{output_dir}}/directory a/foo.txt'
|
src: '{{ output_dir }}/foo.txt'
|
||||||
dest: '{{output_dir}}/directory b/'
|
dest: '{{ output_dir }}/foo.result'
|
||||||
delegate_to: '{{ inventory_hostname }}'
|
quiet: true
|
||||||
register: sync_result
|
register: sync_result
|
||||||
ignore_errors: true
|
|
||||||
- name: get stat information for directory_b
|
|
||||||
stat:
|
|
||||||
path: '{{ output_dir }}/directory b/foo.txt'
|
|
||||||
register: stat_result_b
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- '''changed'' in sync_result'
|
- '''files/directories have been synchronized'' in sync_result.msg'
|
||||||
- sync_result.changed == true
|
|
||||||
- stat_result_b.stat.exists == True
|
|
||||||
- stat_result_b.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
file:
|
file:
|
||||||
state: absent
|
state: absent
|
||||||
path: '{{output_dir}}/{{item}}'
|
path: '{{ output_dir }}/{{ item }}'
|
||||||
with_items:
|
loop:
|
||||||
- 'directory b/foo.txt'
|
- foo.result
|
||||||
- 'directory a/foo.txt'
|
- bar.result
|
||||||
- 'directory a'
|
- name: synchronize files without quiet option
|
||||||
- 'directory b'
|
synchronize:
|
||||||
|
src: '{{ output_dir }}/foo.txt'
|
||||||
|
dest: '{{ output_dir }}/foo.result'
|
||||||
|
register: sync_result
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- '''files/directories have been synchronized'' not in sync_result.msg'
|
||||||
|
- name: Cleanup
|
||||||
|
file:
|
||||||
|
state: absent
|
||||||
|
path: '{{ output_dir }}/{{ item }}'
|
||||||
|
loop:
|
||||||
|
- foo.result
|
||||||
|
- bar.result
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue