I am trying to build a list of names from a list of objects. It works fine,
but some of the objects don't have a name. No problem, I use the default()
filter to set those elements of my list to empty strings, like this:

# Build a list of names from a list of things
- set_fact:
     names: "{{ names |default([]) + [ item.name |default('') ] }}"
  with_items: "{{ things }}"

This got me, as expected, this result (because at the moment, my test list
of things has two items, and neither has a name attribute):

ok: [localhost] => {
    "names": [
        "",
        ""
    ]
}

Now, how can I remove those empty strings from my list? I have read
numerous articles that mention "rejectattr", but I don't understand how to
use it.

I tried this:

# Remove any empty elements from the list of instance profile names
- set_fact:
     names: "{{ names |default([]) |reject('equalto', '') }}"

And got this mystifying  output:

ok: [localhost] => {
    "names": "<generator object _select_or_reject at 0x7f4ecd9c9aa0>"
}

I also tried using rejectattr on the first loop like this:

# Build a list of names from a list of things
- set_fact:
     names: "{{ names |default([]) + [ item.name |default('') ] }}"
  with_items: "{{ things |rejectattr('name', 'undefined') }}"

That got me a list with ONE empty string:

ok: [localhost] => {
    "names": [
        ""
    ]
}

Grateful for any pointers...

Regards, K.

PS: Pointers to USEFUL, COMPLETE examples of how to use rejectattr(),
reject() and so on would be useful too. All the examples I have found seem
to assume a huge amount of knowledge I don't have, or are tiny fragments of
code...


-- 
Karl Auer

Email  : ka...@2pisoftware.com
Website: http://2pisoftware.com

GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CA%2B%2BT08TyAdr%3DN8ssaLC0jwqsZWvsiw4aKPddWbHXOBGZX38kUw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to