Thanks, Vladimir. I had missed the point of "community.general.dict_kv".
I had gotten as far as this:
- set_fact:
bn: |
{{ query('ansible.builtin.nested', ['basename'], (all_objects
| map(attribute='Key')
| map('regex_replace', '^' ~ prefix ~ '\d{10}_(.*)\.pgdump',
'\1'))) }}
which produces:
bn:
- - basename
- dev_wss_db
- - basename
- dev_wss_db_requests
- - basename
- dev_bss_service_database
- - basename
- dev_bss_frontend_db
- - basename
- dev_mss_db
But I didn't find a way to map that using "community.general.dict" to create
bn:
- basename: dev_wss_db
- basename: dev_wss_db_requests
- basename: dev_bss_service_database
- basename: dev_bss_frontend_db
- basename: dev_mss_db
This for me is one of the more frustrating things about Jinja pipelines.
I keep wishing "map" would take arbitrary expressions rather than the
limited set it's stuck with. So you end up with a fleet of one-off
filters like "community.general.dict_kv" which does what
"community.general.dict" would do if there were an obvious way to turn this:
- - basename
- dev_wss_db
- - basename
- dev_wss_db_requests
- - basename
- dev_bss_service_database
- - basename
- dev_bss_frontend_db
- - basename
- dev_mss_db
into this:
- - - basename
- dev_wss_db
- - - basename
- dev_wss_db_requests
- - - basename
- dev_bss_service_database
- - - basename
- dev_bss_frontend_db
- - - basename
- dev_mss_db
i.e. a "deepen" counterpart to "flatten". But that magical incantation
has so far eluded me.
--
Todd
On 8/16/23 6:46 PM, Vladimir Botka wrote:
Create the list of the hashes
bn_regex: '^{{ prefix }}\d{10}_(.*)\.pgdump$'
bn: "{{ all_objects|
map(attribute='Key')|
map('regex_replace', bn_regex, '\\1')|
map('community.general.dict_kv', 'basename') }}"
gives
bn:
- basename: dev_wss_db
- basename: dev_wss_db_requests
- basename: dev_bss_service_database
- basename: dev_bss_frontend_db
- basename: dev_mss_db
zip the lists and combine the items
backup_object: "{{ all_objects|zip(bn)|map('combine') }}"
--
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/d783a813-746b-c961-eca7-76ba6bccc6aa%40gmail.com.