From 2246ed96786c600e5c5d9c120c77de1968282d85 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Fri, 14 Jan 2022 13:21:57 -0500 Subject: [PATCH] ansible-config avoid _terms and _input in --only-changed (#76597) dont display _terms or _intput on only changed those always change and it expected for the plugins that support them Co-authored-by: Abhijeet Kasurde --- changelogs/fragments/config_fix_terms.yml | 2 ++ lib/ansible/cli/config.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/config_fix_terms.yml diff --git a/changelogs/fragments/config_fix_terms.yml b/changelogs/fragments/config_fix_terms.yml new file mode 100644 index 00000000000..9825a49c969 --- /dev/null +++ b/changelogs/fragments/config_fix_terms.yml @@ -0,0 +1,2 @@ +bugfixes: + - ansible-config avoid showing _terms and _input when --only-changed. diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py index b78a5afbb82..1cb70a94d04 100755 --- a/lib/ansible/cli/config.py +++ b/lib/ansible/cli/config.py @@ -370,18 +370,23 @@ class ConfigCLI(CLI): text = [] for setting in sorted(config): + changed = False if isinstance(config[setting], Setting): + # proceed normally if config[setting].origin == 'default': color = 'green' elif config[setting].origin == 'REQUIRED': + # should include '_terms', '_input', etc color = 'red' else: color = 'yellow' + changed = True msg = "%s(%s) = %s" % (setting, config[setting].origin, config[setting].value) else: color = 'green' msg = "%s(%s) = %s" % (setting, 'default', config[setting].get('default')) - if not context.CLIARGS['only_changed'] or color == 'yellow': + + if not context.CLIARGS['only_changed'] or changed: text.append(stringc(msg, color)) return text @@ -445,6 +450,11 @@ class ConfigCLI(CLI): o = 'REQUIRED' else: raise e + + if v is None and o is None: + # not all cases will be error + o = 'REQUIRED' + config_entries[finalname][setting] = Setting(setting, v, o, None) # pretty please!