Кажется, я не могу понять это в Ansible, но на Python довольно просто. У меня есть два разных списка, которые мне возвращают из модуля. Модуль (ntc-ansible) по сути подключается к сетевому коммутатору и получает информацию о порте с помощью двух разных команд show. В основном я хочу перебрать список № 1 и список № 2, и если номер порта совпадает, объединить переменные из каждого списка в новый список. Например, я мог бы получить это (и другие данные) обратно из модуля:
list1 = [
{
"description": "Switch #1",
"port": "Gi1/1",
"protocol": "up",
"status": "up"
},
{
"description": "Switch #2",
"port": "Gi1/5",
"protocol": "up",
"status": "up"
}
]
list2 = [ {
{
"duplex": "a-full",
"name": "Switch #1",
"port": "Gi1/1",
"speed": "a-1000",
"status": "connected",
"type": "10/100/1000BaseT",
"vlan": "trunk"
},
{
"duplex": "a-full",
"name": "Some Server",
"port": "Gi1/2",
"speed": "a-100",
"status": "connected",
"type": "10/100/1000BaseT",
"vlan": "trunk"
}
]
Я хочу перебрать list1, а затем перебрать list2. Если порт совпадает, объедините записи dict в новый список, чтобы я получил правильные переменные для рассматриваемого порта. Что еще хуже, я не хочу объединять все вары, а только выбирать их.
Надеюсь, я понимаю ... Если бы я делал это на Python, я мог бы сделать:
new_list = []
for port_a in list1:
temp_dict = {}
for port_b in list2:
if port_a['port'] == port_b['port']:
temp_dict['port'] = port_a['port']
temp_dict['desc'] = port_a['description']
temp_dict['status'] = port_b['status']
temp_dict['vlan'] = port_b['vlan']
temp_dict['speed'] = port_b['speed']
temp_dict['duplex'] = port_b['duplex']
temp_dict['type'] = port_b['type']
new_list.append(temp_dict)
В приведенных выше списках я бы получил только порт "Gi1 / 1" в новом списке.