Я пытаюсь получить значения ключей из одного списка диктовок и вставить их в словари в другом списке диктовок, если один из ключей соответствует, Джиндже это не нравится.
используя 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
1716184637
Anonymous
Я пытаюсь получить значения ключей из одного списка диктовок и вставить их в словари в другом списке диктовок, если один из ключей соответствует, Джиндже это не нравится.
используя 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"
}
]
Подробнее здесь: [url]https://stackoverflow.com/questions/78503966/ansible-jinja-adding-key-values-from-one-dict-list-into-another-dict-list-if[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия