mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
[PR #7612/5adb7ab9 backport][stable-8] interfaces_file: filter by address_familiy when updating method (#7616)
interfaces_file: filter by address_familiy when updating method (#7612)
* When updating method, check address_family if provided.
* Also test modifying 'method' without address_family filter.
(cherry picked from commit 5adb7ab948
)
Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
b7e68f5b2d
commit
e3eaeda81a
3 changed files with 62 additions and 0 deletions
2
changelogs/fragments/7612-interface_file-method.yml
Normal file
2
changelogs/fragments/7612-interface_file-method.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- "interface_files - also consider ``address_family`` when changing ``option=method`` (https://github.com/ansible-collections/community.general/issues/7610, https://github.com/ansible-collections/community.general/pull/7612)."
|
|
@ -340,6 +340,8 @@ def addOptionAfterLine(option, value, iface, lines, last_line_dict, iface_option
|
|||
changed = False
|
||||
for ln in lines:
|
||||
if ln.get('line_type', '') == 'iface' and ln.get('iface', '') == iface and value != ln.get('params', {}).get('method', ''):
|
||||
if address_family is not None and ln.get('address_family') != address_family:
|
||||
continue
|
||||
changed = True
|
||||
ln['line'] = re.sub(ln.get('params', {}).get('method', '') + '$', value, ln.get('line'))
|
||||
ln['params']['method'] = value
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
set_fact:
|
||||
interfaces_testfile: '{{ remote_tmp_dir }}/interfaces'
|
||||
interfaces_testfile_3841: '{{ remote_tmp_dir }}/interfaces_3841'
|
||||
interfaces_testfile_7610: '{{ remote_tmp_dir }}/interfaces_7610'
|
||||
|
||||
- name: Copy interfaces file
|
||||
copy:
|
||||
|
@ -65,3 +66,60 @@
|
|||
that:
|
||||
- ifile_3841_a is changed
|
||||
- ifile_3841_b is not changed
|
||||
|
||||
- name: 7610 - create file
|
||||
copy:
|
||||
dest: '{{ interfaces_testfile_7610 }}'
|
||||
content: |
|
||||
iface ens3 inet dhcp
|
||||
iface ens3 inet6 auto
|
||||
|
||||
- name: 7610 - modify file
|
||||
interfaces_file:
|
||||
dest: '{{ interfaces_testfile_7610 }}'
|
||||
iface: ens3
|
||||
address_family: "inet6"
|
||||
option: "{{ item.option }}"
|
||||
value: "{{ item.value }}"
|
||||
loop:
|
||||
- option: "method"
|
||||
value: "static"
|
||||
- option: "address"
|
||||
value: "1:2::3/48"
|
||||
|
||||
- name: 7610 - read file
|
||||
slurp:
|
||||
src: '{{ interfaces_testfile_7610 }}'
|
||||
register: content_7610
|
||||
|
||||
- name: 7610 - check assertions
|
||||
assert:
|
||||
that:
|
||||
- content_7610.content | b64decode == expected_content
|
||||
vars:
|
||||
expected_content: |
|
||||
iface ens3 inet dhcp
|
||||
iface ens3 inet6 static
|
||||
address 1:2::3/48
|
||||
|
||||
- name: 7610 - modify file again
|
||||
interfaces_file:
|
||||
dest: '{{ interfaces_testfile_7610 }}'
|
||||
iface: ens3
|
||||
option: method
|
||||
value: foobar
|
||||
|
||||
- name: 7610 - read file
|
||||
slurp:
|
||||
src: '{{ interfaces_testfile_7610 }}'
|
||||
register: content_7610
|
||||
|
||||
- name: 7610 - check assertions
|
||||
assert:
|
||||
that:
|
||||
- content_7610.content | b64decode == expected_content
|
||||
vars:
|
||||
expected_content: |
|
||||
iface ens3 inet foobar
|
||||
iface ens3 inet6 foobar
|
||||
address 1:2::3/48
|
||||
|
|
Loading…
Reference in a new issue