Instead of
selectattr('name', 'eq', db_servers_names)
try this:
selectattr('name', 'in', db_servers_names)
On Saturday, February 5, 2022 at 9:56:36 AM UTC-5 [email protected]
wrote:
> Let's assume the following fictional list of dictionaries:
> domain_definition:
> - name: server11
> cluster: cluster1
> db_servers:
> - server12
> - server21
> port: '8080'
> - name: server12
> cluster: cluster1
> db_servers:
> - server22
> port: '8090'
> - name: server13
> cluster: cluster1
> port: '8091'
> - name: server21
> cluster: cluster2
> db_servers:
> - server12
> - server22
> port: '9080'
> - name: server22
> cluster: cluster2
> port: '9090'
> The goal is to list all ports of used 'db_servers', so the expected list
> is:
> - '8090'
> - '9080'
> - '9090'
> - '8090'
> - '9090'
>
> The *constraint* is to use one (some operation is performed for each
> item) and only one loop (the list is huge in reality).
>
> The following does not work because selectattr expects a value, not a list
> of values:
> - name: Extracting a list of values of a field within a list of
> dictionaries when a key matches another list of values
> hosts:
> - localhost
> strategy: debug
> tasks:
> - name: Extracting a list of values of a field within a
> list of dictionaries when a key matches another list of values
> vars:
> domain_definition:
> - name: server11
> cluster: cluster1
> db_servers:
> - server12
> - server21
> port: '8080'
> - name: server12
> cluster: cluster1
> db_servers:
> - server22
> port: '8090'
> - name: server13
> cluster: cluster1
> port: '8091'
> - name: server21
> cluster: cluster2
> db_servers:
> - server12
> - server22
> port: '9080'
> - name: server22
> cluster: cluster2
> port: '9090'
> db_servers_names: "{{ item.db_servers |
> default([]) |
> list }}"
> db_servers_used_ports: "{{ domain_definition |
> selectattr('name',
> 'eq', db_servers_names) |
> map(attribute=
> 'port') |
> list }}"
> debug:
> msg:
> - "db_servers_names: {{
> db_servers_names }}"
> - "db_servers_used_ports: {{
> db_servers_used_ports }}"
> loop: "{{ domain_definition }}"
>
> Any suggestion?
>
--
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/3dc85240-925c-45cf-bc0d-a36fdd7460bbn%40googlegroups.com.