On Thu, Mar 26, 2020 at 7:55 AM Davide Scrimieri <[email protected]> wrote:
>
> Hello,
>
> Whenever a ternary is used are both conditions evaluated regardless ?
>
> For example, I want to convert "my_other_var" to an object only if it is 
> passed as as string, otherwise I don't want to touch the object, and leave it 
> as it is.
>
> - set_fact:
>     my_var: "{{  ( my_other_var | type_debug == 'str' ) | ternary 
> (my_other_var | from_json, my_other_var }}"
>

Yes, this is how the ternary filter works. To work around that you can
use a ternary statement:

- set_fact:
        my_var: "{{  my_other_var | from_json if (my_other_var |
type_debug == 'str') else my_other_var }}"

That should result in desired behavior.

M.

> What happens right now is this:
>
> if my_other_var is str -> It works
> if my_other_var is dict -> it gives me the error saying that my_other_var 
> should be a string to be converted from_json. But I would expect that being 
> the condition on the left = False, it would ignore the left condition on the 
> ternary and only consider the rightmost condition.
>
> I also tried using when:
>
> -- name: Set fact for string  object
>   set_fact:
>      my_var: "{{ my_other_var | from_json }}"
>   when: (my_other_var | type_debug == 'str')
>
>
> - name: Set fat for dict  object
>   set_fact:
>     my_var: "{{ my_other_var | from_json }}"
>   when: (my_other_var | type_debug == 'dict')
>
> However, if "my_other_var" is dict, the first block (named set fact for 
> string object) gives me the same error as before. I was actually expecting 
> that being the when statement equals to false, it would simply ignore it.
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/8e08a7c9-9f2a-4c83-a7c4-ab9aa389b4e2%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CADDq2ENmBvy7%2B1rXhJ--G1c2aYDPiwJnCDU2%3D3TiC8%3D-Ergxww%40mail.gmail.com.

Reply via email to