Я пытаюсь получить значения ключей из одного списка диктовок и вставить их в словари в другом списке диктовок, если один из ключей соответствует, Джиндже это не нравится.
используя ansible -core 2.15.11 с коллекциями Community.general и posix на Rhel 7 с использованием Python 3.9.19
dictliet 1
"vcenterinfo": [
{
"AZ": "a",
"POD": "11",
"VCENTERNAME": "XGM1AQV11"
},
{
"AZ": "b",
"POD": "09",
"VCENTERNAME": "XGM1AQV09"
}
]
Список слов 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"
}
]
Будем благодарны за любую помощь.
Желаемые результаты:
"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"
}
]
Я попробовал это первым, но возникли ошибки
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 ','"}
Затем я попробовал это, но значения AZ пусты и выглядят как список
- 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"
}
]
Подробнее здесь: https://stackoverflow.com/questions/785 ... ct-list-if
Ansible/jinja, добавление значений ключей из одного списка слов в другой список слов, если одно значение ключа совпадает ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Хэш ключа Facebook не совпадает ни с одним из сохраненных хэшей ключей.
Anonymous » » в форуме Android - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Добавление значений столбцов из одного фрейма данных в другой в виде списка
Anonymous » » в форуме Python - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-