# -*- coding: utf-8 -*-
"""
Задание 9.2a

Сделать копию функции generate_trunk_config из задания 9.2

Изменить функцию таким образом, чтобы она возвращала не список команд, а словарь:
- ключи: имена интерфейсов, вида 'FastEthernet0/1'
- значения: список команд, который надо
  выполнить на этом интерфейсе

Проверить работу функции на примере словаря trunk_config и шаблона trunk_mode_template.

Пример итогового словаря, который должна возвращать функция (перевод строки
после каждого элемента сделан для удобства чтения):
{
    "FastEthernet0/1": [
        "switchport mode trunk",
        "switchport trunk native vlan 999",
        "switchport trunk allowed vlan 10,20,30",
    ],
    "FastEthernet0/2": [
        "switchport mode trunk",
        "switchport trunk native vlan 999",
        "switchport trunk allowed vlan 11,30",
    ],
    "FastEthernet0/4": [
        "switchport mode trunk",
        "switchport trunk native vlan 999",
        "switchport trunk allowed vlan 17",
    ],
}

Ограничение: Все задания надо выполнять используя только пройденные темы.

"""


trunk_mode_template = [
    "switchport mode trunk",
    "switchport trunk native vlan 999",
    "switchport trunk allowed vlan",
]

trunk_config = {
    "FastEthernet0/1": [10, 20, 30],
    "FastEthernet0/2": [11, 30],
    "FastEthernet0/4": [17],
}

def generate_trunk_config (intf_vlan_mapping, trunk_template):
    '''
    Функция генерирует конфигурацию для trunk-портов в формате словаря
    - intf_vlan_mapping: ожидает как аргумент словарь с соответствием интерфейс-VLANы
    такого вида:
        {'FastEthernet0/1': [10, 20],
        'FastEthernet0/2': [11, 30],
        'FastEthernet0/4': [17]}
    - trunk_template: ожидает как аргумент шаблон конфигурации trunk-портов в виде
    списка команд (список trunk_mode_template)
    '''
    result = {}
    for intf, vlans in intf_vlan_mapping.items():
        config = []
        for line in trunk_template:
            if line.endswith('allowed vlan'):
                vlans_str = [str(item) for item in vlans]
                config.append(line+ ' ' + ','.join(vlans_str))
            else:
                config.append(line)
        result[intf]=config
    return(result)

print (generate_trunk_config(trunk_config, trunk_mode_template))