mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-27 10:40:22 -07:00
Feature filter keep_keys (#8456)
* Add filter keep_keys. Implement feature request #8438 * Fix comment indentation. * Fix regex reference. * Fix indentation. * Fix isinstance list. * Update plugins/plugin_utils/keys_filter.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/plugin_utils/keys_filter.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/plugin_utils/keys_filter.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/plugin_utils/keys_filter.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/filter/keep_keys.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update documentation, examples, and integration tests. * _keys_filter_target_str returns tuple of unique target strings if target is list. Update documentation, function comments, and error messages. * Sort maintainers. * Update plugins/filter/keep_keys.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update examples with explicit collection. --------- Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
5041ebe5b2
commit
6f8f12f762
7 changed files with 374 additions and 0 deletions
5
tests/integration/targets/filter_keep_keys/aliases
Normal file
5
tests/integration/targets/filter_keep_keys/aliases
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Copyright (c) Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
azp/posix/2
|
|
@ -0,0 +1,79 @@
|
|||
---
|
||||
# Copyright (c) Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Debug ansible_version
|
||||
ansible.builtin.debug:
|
||||
var: ansible_version
|
||||
when: not quite_test | d(true) | bool
|
||||
tags: ansible_version
|
||||
|
||||
- name: Test keep keys equal (default)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (rr | difference(result1) | length) == 0
|
||||
success_msg: |
|
||||
[OK] result:
|
||||
{{ rr | to_yaml }}
|
||||
fail_msg: |
|
||||
[ERR] result:
|
||||
{{ rr | to_yaml }}
|
||||
quiet: "{{ quiet_test | d(true) | bool }}"
|
||||
vars:
|
||||
rr: "{{ list1 | community.general.keep_keys(target=tt) }}"
|
||||
tt: [k0_x0, k1_x1]
|
||||
tags: equal_default
|
||||
|
||||
- name: Test keep keys regex string
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (rr | difference(result1) | length) == 0
|
||||
success_msg: |
|
||||
[OK] result:
|
||||
{{ rr | to_yaml }}
|
||||
fail_msg: |
|
||||
[ERR] result:
|
||||
{{ rr | to_yaml }}
|
||||
quiet: "{{ quiet_test | d(true) | bool }}"
|
||||
vars:
|
||||
rr: "{{ list1 | community.general.keep_keys(target=tt, matching_parameter=mp) }}"
|
||||
mp: regex
|
||||
tt: '^.*[01]_x.*$'
|
||||
tags: regex_string
|
||||
|
||||
- name: Test keep keys targets1
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (rr | difference(result1) | length) == 0
|
||||
success_msg: |
|
||||
[OK] result:
|
||||
{{ rr | to_yaml }}
|
||||
fail_msg: |
|
||||
[ERR] result:
|
||||
{{ rr | to_yaml }}
|
||||
quiet: "{{ quiet_test | d(true) | bool }}"
|
||||
loop: "{{ targets1 }}"
|
||||
loop_control:
|
||||
label: "{{ item.mp }}: {{ item.tt }}"
|
||||
vars:
|
||||
rr: "{{ list1 | community.general.keep_keys(target=item.tt, matching_parameter=item.mp) }}"
|
||||
tags: targets1
|
||||
|
||||
- name: Test keep keys targets2
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (rr | difference(result2) | length) == 0
|
||||
success_msg: |
|
||||
[OK] result:
|
||||
{{ rr | to_yaml }}
|
||||
fail_msg: |
|
||||
[ERR] result:
|
||||
{{ rr | to_yaml }}
|
||||
quiet: "{{ quiet_test | d(true) | bool }}"
|
||||
loop: "{{ targets2 }}"
|
||||
loop_control:
|
||||
label: "{{ item.mp }}: {{ item.tt }}"
|
||||
vars:
|
||||
rr: "{{ list2 | community.general.keep_keys(target=item.tt, matching_parameter=item.mp) }}"
|
||||
tags: targets2
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
# Copyright (c) Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Test keep_keys
|
||||
import_tasks: keep_keys.yml
|
33
tests/integration/targets/filter_keep_keys/vars/main.yml
Normal file
33
tests/integration/targets/filter_keep_keys/vars/main.yml
Normal file
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
# Copyright (c) Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
targets1:
|
||||
- {mp: equal, tt: [k0_x0, k1_x1]}
|
||||
- {mp: starts_with, tt: [k0, k1]}
|
||||
- {mp: ends_with, tt: [x0, x1]}
|
||||
- {mp: regex, tt: ['^.*[01]_x.*$']}
|
||||
- {mp: regex, tt: '^.*[01]_x.*$'}
|
||||
|
||||
list1:
|
||||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
|
||||
result1:
|
||||
- {k0_x0: A0, k1_x1: B0}
|
||||
- {k0_x0: A1, k1_x1: B1}
|
||||
|
||||
targets2:
|
||||
- {mp: equal, tt: k0_x0}
|
||||
- {mp: starts_with, tt: k0}
|
||||
- {mp: ends_with, tt: x0}
|
||||
- {mp: regex, tt: '^.*0_x.*$'}
|
||||
|
||||
list2:
|
||||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
|
||||
result2:
|
||||
- {k0_x0: A0}
|
||||
- {k0_x0: A1}
|
Loading…
Add table
Add a link
Reference in a new issue