Я пытаюсь l oop просмотреть список словарей и проверить, существует ли более одного источника для одной и той же группы в структуре такого типа:
[{"Device": "CM1LS-05B","Group": "239.216.12.8/32","Source": "10.144.12.8/32"},
{"Device": "CM1LS-01A","Group": "239.192.9.100/32","Source": "10.144.69.7/32"}]
Так что в основном мне нужно взять каждый dict в списке и сравните его со всеми остальными в списке, для каждого сравнения, если совпадают dict.groups, затем проверьте, совпадают ли dict.sources, совпадают ли они dict.groups и не совпадают ли dict.sources мне нужно добавить оба слова в final_list
вот что у меня есть:
- name: Look for Multicast Groups with More than One Source
hosts: localhost
connection: local
gather_facts: false
vars:
final_list: []
my_list: [
{
"Device": "CM1LS-05B",
"Group": "239.216.12.8/32",
"Source": "10.144.12.8/32"
},
{
"Device": "CM1LS-01A",
"Group": "239.192.9.100/32",
"Source": "10.144.69.7/32"
},
{
"Device": "CM1LS-05B",
"Group": "239.216.48.229/32",
"Source": "10.144.48.15/32"
},
{
"Device": "CM1LS-05B",
"Group": "239.216.48.40/32",
"Source": "10.144.65.161/32"
},
{
"Device": "CM1LS-01A",
"Group": "239.208.0.202/32",
"Source": "172.23.59.16/32"
},
{
"Device": "CM1LS-05B",
"Group": "239.216.48.229/32",
"Source": "10.144.48.229/32"
},
{
"Device": "CM1LS-01A",
"Group": "239.208.0.203/32",
"Source": "172.23.59.16/32"
}
]
tasks:
- read_csv:
path: results.csv
register: lines
- set_fact:
final_list:
"{% for i in my_list %}
{% for j in my_list %}
{% if i[ 'Group' ] == j[ 'Group' ] %}
{{ final_list + [ i['Group']] }}
{% endif %}
{% endfor %}
{% endfor %}"
- debug: var=final_list
вывод:
TASK [debug] **********************************************************************************************************************************************************************************
ok: [localhost] => {
"final_list": " [u'239.216.12.8/32'] [u'239.192.9.100/32'] [u'239.216.48.229/32'] [u'239.216.48.229/32'] [u'239.216.48.40/32'] [u'239.208.0.202/32'] [u'239.216.48.229/32'] [u'239.216.48.229/32'] [u'239.208.0.203/32'] "
}
PLAY RECAP ************************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Я думаю, что у меня что-то не так в jinja2 forl oop если сравнение заявления
есть идеи?