file: fix setting attributes for symlinked file (#57217)
This commit is contained in:
parent
206f18dcca
commit
705d0201cf
3 changed files with 46 additions and 2 deletions
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- file - fix setting attributes for symlinked file (https://github.com/ansible/ansible/issues/56928)
|
|
@ -635,7 +635,6 @@ def ensure_symlink(path, src, follow, force, timestamps):
|
|||
b_path = to_bytes(path, errors='surrogate_or_strict')
|
||||
b_src = to_bytes(src, errors='surrogate_or_strict')
|
||||
prev_state = get_state(b_path)
|
||||
file_args = module.load_file_common_arguments(module.params)
|
||||
mtime = get_timestamp_for_time(timestamps['modification_time'], timestamps['modification_time_format'])
|
||||
atime = get_timestamp_for_time(timestamps['access_time'], timestamps['access_time_format'])
|
||||
# source is both the source of a symlink or an informational passing of the src for a template module
|
||||
|
@ -732,6 +731,12 @@ def ensure_symlink(path, src, follow, force, timestamps):
|
|||
if module.check_mode and not os.path.exists(b_path):
|
||||
return {'dest': path, 'src': src, 'changed': changed, 'diff': diff}
|
||||
|
||||
# Now that we might have created the symlink, get the arguments.
|
||||
# We need to do it now so we can properly follow the symlink if needed
|
||||
# because load_file_common_arguments sets 'path' according
|
||||
# the value of follow and the symlink existance.
|
||||
file_args = module.load_file_common_arguments(module.params)
|
||||
|
||||
# Whenever we create a link to a nonexistent target we know that the nonexistent target
|
||||
# cannot have any permissions set on it. Skip setting those and emit a warning (the user
|
||||
# can set follow=False to remove the warning)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
#
|
||||
# Basic absolute symlink to a file
|
||||
#
|
||||
#
|
||||
- name: create soft link to file
|
||||
file: src={{output_file}} dest={{output_dir}}/soft.txt state=link
|
||||
register: file1_result
|
||||
|
@ -308,3 +308,40 @@
|
|||
that:
|
||||
- 'file10_result is changed'
|
||||
- 'file10_target_stat["stat"]["mode"] == "0644"'
|
||||
|
||||
|
||||
# https://github.com/ansible/ansible/issues/56928
|
||||
- block:
|
||||
|
||||
- name: Create a testing file
|
||||
file:
|
||||
path: "{{ output_dir }}/test_follow1"
|
||||
state: touch
|
||||
|
||||
- name: Create a symlink and change mode of the original file, since follow == yes by default
|
||||
file:
|
||||
src: "{{ output_dir }}/test_follow1"
|
||||
dest: "{{ output_dir }}/test_follow1_link"
|
||||
state: link
|
||||
mode: 0700
|
||||
|
||||
- name: stat the original file
|
||||
stat:
|
||||
path: "{{ output_dir }}/test_follow1"
|
||||
register: stat_out
|
||||
|
||||
- name: Check if the mode of the original file was set
|
||||
assert:
|
||||
that:
|
||||
- 'stat_out.stat.mode == "0700"'
|
||||
|
||||
always:
|
||||
- name: Clean up
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- "{{ output_dir }}/test_follow1"
|
||||
- "{{ output_dir }}/test_follow1_link"
|
||||
|
||||
# END #56928
|
||||
|
|
Loading…
Reference in a new issue