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 }}"

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.

Reply via email to