public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: Daniel Gomez <da.gomez@kruces.com>
Cc: Daniel Gomez <da.gomez@kernel.org>,
	kdevops@lists.linux.dev, Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [PATCH] ansible_cfg: template boolean defaults must be "False"
Date: Wed, 16 Apr 2025 12:22:37 -0400	[thread overview]
Message-ID: <9b68de55-e52e-40c3-a29e-06bc82771bb0@oracle.com> (raw)
In-Reply-To: <CABj0suARn7ycHyjiXQPEi7JLd4bGmapkndcz2f7pfZsekxtWzA@mail.gmail.com>

On 4/16/25 11:48 AM, Daniel Gomez wrote:
> On Wed, 16 Apr 2025 at 15.41, <cel@kernel.org <mailto:cel@kernel.org>>
> wrote:
> 
>     From: Chuck Lever <chuck.lever@oracle.com
>     <mailto:chuck.lever@oracle.com>>
> 
>     I found that the "disable_skipped_hosts" Kconfig setting was not
>     working.
> 
>     Using "output yaml" with a boolean behaves somewhat counter-
>     intuitively. When the user specifies "Yes, please set this", the
>     variable appears in .extra_vars_auto.yaml with a value of True.
>     When the user specifies "No, please do not set this" the variable
>     does not appear in .extra_vars_auto.yaml at all.
> 
> 
> This is a good catch. Does this issue affect other playbooks?

Whenever Kconfig passes a boolean setting via "output yaml", we might
have this issue. The "False" value has to be provided by a Makefile or a
defaults/main.yml setting.

My recent terraform patches removed the Ansible defaults except for the
booleans for this very reason (see
playbooks/roles/gen_tfvars/defaults/main.yml).

I haven't looked closely for it outside of terraform/ however. The
defaults/main.yml treatment is pervasive, so I just go with that flow
and make a mental adjustment ;-)


>     To make a template that uses these variables behave correctly, then,
>     the defaults/main.yml setting has to be False always. When the
>     Kconfig setting is enabled, that will override this default.
> 
> 
> It seems counterintuitive too to default to False only to ensure it can
> be overwritten. Perhaps we could fix this in kconfig/yaml? If we can
> rely on kconfig defaults, we might even be able to remove playbook
> defaults as we talked recently (not only here but globally).
> 
> What do you think?

I guess that is indeed an option, since the YAML output logic is only in
kdevops' version of Kconfig?

But I think this arises from Kconfig itself: For booleans, the setting
is written into .config as either "CONFIG_YADA=y" or "# CONFIG_YADA is
not set" probably because CONFIG_YADA can be checked via "#ifdef"; not
defined inherently means "false".

Yes, I agree it is something that is likely to trip up developers again,
and it makes sense that "output yaml" should always define the Ansible/
YAML version of the variable whether it is set to True or False.


>     Signed-off-by: Chuck Lever <chuck.lever@oracle.com
>     <mailto:chuck.lever@oracle.com>>
>     ---
>      playbooks/roles/ansible_cfg/defaults/main.yml | 10 +++++-----
>      1 file changed, 5 insertions(+), 5 deletions(-)
> 
>     diff --git a/playbooks/roles/ansible_cfg/defaults/main.yml b/
>     playbooks/roles/ansible_cfg/defaults/main.yml
>     index e01de2f4481d..4ff00c18976d 100644
>     --- a/playbooks/roles/ansible_cfg/defaults/main.yml
>     +++ b/playbooks/roles/ansible_cfg/defaults/main.yml
>     @@ -1,12 +1,12 @@
>      ---
>     -ansible_cfg_deprecation_warnings: true
>     +ansible_cfg_deprecation_warnings: false
>      ansible_cfg_callback_plugin_string: dense
>      ansible_cfg_callback_plugin_check_mode_markers: false
>      ansible_cfg_callback_plugin_display_failed_stderr: false
>     -ansible_cfg_callback_plugin_display_ok_hosts: true
>     -ansible_cfg_callback_plugin_display_skipped_hosts: true
>     +ansible_cfg_callback_plugin_display_ok_hosts: false
>     +ansible_cfg_callback_plugin_display_skipped_hosts: false
>      ansible_cfg_callback_plugin_show_custom_stats: false
>     -ansible_cfg_callback_plugin_show_per_host_start: true
>     -ansible_cfg_callback_plugin_show_task_path_on_failure: true
>     +ansible_cfg_callback_plugin_show_per_host_start: false
>     +ansible_cfg_callback_plugin_show_task_path_on_failure: false
>      ansible_cfg_interpreter_python: "auto_silent"
>      ansible_cfg_forks: 10
>     -- 
>     2.49.0
> 

-- 
Chuck Lever


      parent reply	other threads:[~2025-04-16 16:22 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-16 13:41 [PATCH] ansible_cfg: template boolean defaults must be "False" cel
     [not found] ` <CABj0suARn7ycHyjiXQPEi7JLd4bGmapkndcz2f7pfZsekxtWzA@mail.gmail.com>
2025-04-16 16:22   ` Chuck Lever [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9b68de55-e52e-40c3-a29e-06bc82771bb0@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=da.gomez@kernel.org \
    --cc=da.gomez@kruces.com \
    --cc=kdevops@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox