I’m trying to get key values from one dict list and insert them into the dictionaries on another dict list if one of the keys match jinja is not liking this.
using ansible-core 2.15.11 with community.general and posix collections on rhel 7 using python 3.9.19
dict liet 1
"vcenterinfo": [
{
"AZ": "a",
"POD": "11",
"VCENTERNAME": "XGM1AQV11"
},
{
"AZ": "b",
"POD": "09",
"VCENTERNAME": "XGM1AQV09"
}
]
dict list 2:
"provdata": [
{
"CLUSTER": "XGM1AQV11-C4-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV11"
},
{
"CLUSTER": "XGM1AQV11-C5-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV09"
},
{
"CLUSTER": "XGM1AQV11-C6-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV11"
}
]
Any help greatley appreciated.
Desired results:
"provdata": [
{
"CLUSTER": "XGM1AQV11-C4-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV11"
"AZ": "a",
"POD": "11"
},
{
"CLUSTER": "XGM1AQV11-C5-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV09",
"AZ": "b",
"POD": "09"
},
{
"CLUSTER": "XGM1AQV11-C6-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV11"
"AZ": "a",
"POD": "11"
}
]
I tried this first and iet just errors out
provdata: "{{ provdata + [{ item | combine({'AZ':, vcenterinfo | selectattr('VCENTERNAME', 'equalto', 'item.VCENTER') | map(attribute='AZ') | list}) }] }}"
fatal: [localhost]: FAILED! => {"msg": "template error while templating string: unexpected ','. String: {{ provdata + [{ item | combine({'AZ':, vcenterinfo | selectattr('VCENTERNAME', 'equalto', 'item.VCENTER') | map(attribute='AZ') | list}) }] }}. unexpected ','"}
I then tried this but the AZ values is empty and looks to be a list
- name: Create a new list
vars:
azdata: "{{ item | combine({AZ: vcenterinfo | selectattr(VCENTERNAME, equalto, item.VCENTERNAME) | map(attribute=AZ) }) }}"
set_fact:
list4: "{{ list4 | default([]) + [azdata] }}"
loop: "{{ provdata }}"
"list4": [
{
"AZ": [],
"CLUSTER": "XGM1AQV11-C4-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV11"
},
{
"AZ": [],
"CLUSTER": "XGM1AQV11-C5-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV09"
},
{
"AZ": [],
"CLUSTER": "XGM1AQV11-C6-NTNX",
"DEDICATED": "false",
"EnvironMent": "test",
"TIER": "silver",
"VCENTERNAME": "XGM1AQV11"
}
]