From ea22e5d0dd9169bc0d38d28227b83b8a2e708b8c Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Thu, 24 Apr 2025 12:48:12 -0400 Subject: [PATCH] show internal but not hidden config options, while still hiding test options (#84997) (cherry picked from commit aab732cb826db93265b03ca6f6f9eb1a03746975) --- changelogs/fragments/config_priv.yml | 2 ++ lib/ansible/config/manager.py | 4 ++-- .../targets/ansible-config/tasks/main.yml | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/config_priv.yml diff --git a/changelogs/fragments/config_priv.yml b/changelogs/fragments/config_priv.yml new file mode 100644 index 00000000000..367feaed0aa --- /dev/null +++ b/changelogs/fragments/config_priv.yml @@ -0,0 +1,2 @@ +minor_changes: + - ansible-config will now show internal, but not test configuration entries. This allows for debugging but still denoting the configurations as internal use only (_ prefix). diff --git a/lib/ansible/config/manager.py b/lib/ansible/config/manager.py index f4a308d58e4..0f5e8683694 100644 --- a/lib/ansible/config/manager.py +++ b/lib/ansible/config/manager.py @@ -480,9 +480,9 @@ class ConfigManager(object): else: ret = self._plugins.get(plugin_type, {}).get(name, {}) - if ignore_private: + if ignore_private: # ignore 'test' config entries, they should not change runtime behaviors for cdef in list(ret.keys()): - if cdef.startswith('_'): + if cdef.startswith('_Z_'): del ret[cdef] return ret diff --git a/test/integration/targets/ansible-config/tasks/main.yml b/test/integration/targets/ansible-config/tasks/main.yml index 88f29818590..3fbcb56342a 100644 --- a/test/integration/targets/ansible-config/tasks/main.yml +++ b/test/integration/targets/ansible-config/tasks/main.yml @@ -141,3 +141,17 @@ when: - item[1] in gs[item[0]] loop: '{{gs_keys | product(gs_all) }}' + +- name: test ansible-config init for valid private and no hidden + vars: + config_keys: "{{ config_dump['stdout'] | from_json | selectattr('name', 'defined') }}" + block: + - name: run config full dump + shell: ansible-config dump -t all -f json + register: config_dump + + - name: validate we get 'internal' but not hidden (_Z_) + assert: + that: + - config_keys | selectattr('name', 'match', '_.*') | length > 0 + - config_keys | selectattr('name', 'match', '_Z_.*') | length == 0