This commit is contained in:
Mandar Kulkarni 2023-08-22 19:07:30 +00:00 committed by GitHub
commit b6396f5ee9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 44 deletions

View file

@ -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).

View file

@ -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__':

View file

@ -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