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 328b3c1110f..0fff37441c4 100644 --- a/lib/ansible/cli/config.py +++ b/lib/ansible/cli/config.py @@ -365,18 +365,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 @@ -440,6 +445,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!