mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-03-09 19:15:19 +01:00
Compare commits
11 commits
d4e1efab0d
...
1983123473
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1983123473 | ||
|
|
795d8e34e7 | ||
|
|
b615d61fae | ||
|
|
bda85b7453 | ||
|
|
ac82f575c6 | ||
|
|
a356bdd3c4 | ||
|
|
4f93234a8b | ||
|
|
8cdf51b3b3 | ||
|
|
0b6eb4506b | ||
|
|
dea22dcf4e | ||
|
|
dd3b97069b |
5 changed files with 50 additions and 20 deletions
|
|
@ -178,8 +178,8 @@ stages:
|
|||
targets:
|
||||
- name: RHEL 9.3
|
||||
test: rhel/9.3
|
||||
- name: FreeBSD 13.2
|
||||
test: freebsd/13.2
|
||||
- name: FreeBSD 13.3
|
||||
test: freebsd/13.3
|
||||
- stage: Remote_2_16
|
||||
displayName: Remote 2.16
|
||||
dependsOn: []
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- synchronize - user-defined ``--out-format`` in ``rsync_opts`` is now honored in the returned output. (https://github.com/ansible-collections/ansible.posix/pull/428)
|
||||
|
|
@ -365,6 +365,7 @@ EXAMPLES = r'''
|
|||
|
||||
import os
|
||||
import errno
|
||||
import re
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils._text import to_bytes, to_native
|
||||
|
|
@ -596,8 +597,19 @@ def main():
|
|||
module.fail_json(msg='Hardlinking into a subdirectory of the source would cause recursion. %s and %s' % (destination_path, dest))
|
||||
cmd.append('--link-dest=%s' % link_path)
|
||||
|
||||
changed_marker = '<<CHANGED>>'
|
||||
cmd.append('--out-format=%s' % shlex_quote(changed_marker + '%i %n%L'))
|
||||
# find the last specified out-format
|
||||
out_format = ''
|
||||
for rsync_opt in rsync_opts:
|
||||
if rsync_opt.startswith('--out-format='):
|
||||
out_format = rsync_opt.replace('--out-format=', '', 1)
|
||||
|
||||
# force a known out-format so we can test for changes and return a known format of diff
|
||||
diff_marker = 'DIFF'
|
||||
if out_format == '' or module._diff:
|
||||
diff_detail = '%n%L'
|
||||
else:
|
||||
diff_detail = ''
|
||||
cmd.append('--out-format=%s' % shlex_quote('%s//%s//%%i//%s' % (out_format, diff_marker, diff_detail)))
|
||||
|
||||
cmd.append(shlex_quote(source))
|
||||
cmd.append(shlex_quote(dest))
|
||||
|
|
@ -623,18 +635,36 @@ def main():
|
|||
if rc:
|
||||
return module.fail_json(msg=err, rc=rc, cmd=cmdstr)
|
||||
|
||||
if link_dest:
|
||||
# a leading period indicates no change
|
||||
changed = (changed_marker + '.') not in out
|
||||
else:
|
||||
changed = changed_marker in out
|
||||
changed = False
|
||||
diff = []
|
||||
out_lines = []
|
||||
# remove forced out-format suffix, check for file changes
|
||||
for line in out.split('\n'):
|
||||
match = re.match('(.*)//%s//(...*?)//(.*)$' % diff_marker, line)
|
||||
if match:
|
||||
default_diff = '%s %s' % (match.group(2), match.group(3))
|
||||
|
||||
out_clean = out.replace(changed_marker, '')
|
||||
out_lines = out_clean.split('\n')
|
||||
if module._diff:
|
||||
diff.append(default_diff)
|
||||
|
||||
if out_format == '':
|
||||
out_lines.append(default_diff)
|
||||
else:
|
||||
out_lines.append(match.group(1))
|
||||
|
||||
# a period in the first position indicates no changes to the file's contents
|
||||
# a period in every other position from the third onward indicates no attribute changes
|
||||
if not re.match(r'\..\.*$', match.group(2)):
|
||||
changed = True
|
||||
else:
|
||||
out_lines.append(line)
|
||||
|
||||
out_clean = '\n'.join(out_lines)
|
||||
while '' in out_lines:
|
||||
out_lines.remove('')
|
||||
|
||||
if module._diff:
|
||||
diff = {'prepared': out_clean}
|
||||
diff = {'prepared': '\n'.join(diff)}
|
||||
return module.exit_json(changed=changed, msg=out_clean,
|
||||
rc=rc, cmd=cmdstr, stdout_lines=out_lines,
|
||||
diff=diff)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
- name: Attempt to add mapping without 'seuser'
|
||||
register: selogin_error
|
||||
ignore_errors: true
|
||||
community.general.system.selogin:
|
||||
community.general.selogin:
|
||||
login: seuser
|
||||
- name: Verify failure
|
||||
ansible.builtin.assert:
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
- false
|
||||
- true
|
||||
- false
|
||||
community.general.system.selogin:
|
||||
community.general.selogin:
|
||||
login: seuser
|
||||
seuser: staff_u
|
||||
- name: New mapping- verify functionality and check_mode
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
- false
|
||||
- true
|
||||
- false
|
||||
community.general.system.selogin:
|
||||
community.general.selogin:
|
||||
login: seuser
|
||||
seuser: user_u
|
||||
- name: Changed mapping- verify functionality and check_mode
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
- false
|
||||
- true
|
||||
- false
|
||||
community.general.system.selogin:
|
||||
community.general.selogin:
|
||||
login: seuser
|
||||
state: absent
|
||||
- name: Delete mapping- verify functionality and check_mode
|
||||
|
|
|
|||
|
|
@ -64,8 +64,7 @@ if sys.version_info >= (3,) and sys.version_info < (3, 4, 4):
|
|||
# newline that our naive format() added
|
||||
data_as_list[-1] = data_as_list[-1][:-1]
|
||||
|
||||
for line in data_as_list:
|
||||
yield line
|
||||
yield from data_as_list
|
||||
|
||||
def mock_open(mock=None, read_data=''):
|
||||
"""
|
||||
|
|
@ -93,8 +92,7 @@ if sys.version_info >= (3,) and sys.version_info < (3, 4, 4):
|
|||
if handle.readline.return_value is not None:
|
||||
while True:
|
||||
yield handle.readline.return_value
|
||||
for line in _data:
|
||||
yield line
|
||||
yield from _data
|
||||
|
||||
global file_spec
|
||||
if file_spec is None:
|
||||
|
|
|
|||
Loading…
Reference in a new issue