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

Сделать копию скрипта задания 9.2

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

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

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

'''


def generate_trunk_config(trunk):
    '''
    trunk - словарь trunk-портов,
    для которых необходимо сгенерировать конфигурацию, вида:
        { 'FastEthernet0/1':[10,20],
          'FastEthernet0/2':[11,30],
          'FastEthernet0/4':[17] }

    Возвращает словарь:
    - ключи: имена интерфейсов, вида 'FastEthernet0/1'
    - значения: список команд, который надо выполнить на этом интерфейсе
    '''
    trunk_template = [
        'switchport trunk encapsulation dot1q', 'switchport mode trunk',
        'switchport trunk native vlan 999', 'switchport trunk allowed vlan'
    ]
    result_dic = {}
    result_list =[]
    
    for intf in trunk:
        result_list = []
        for each in trunk_template:
            if each.endswith('allowed vlan'):
                st = each + ' ' + str(trunk[intf]).replace("[", '').replace("]", '')
                result_list.append(st)                            
            else:
                result_list.append(each)                    
        result_dic[intf] = result_list
    print(result_dic)
                

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

generate_trunk_config(trunk_dict)

01f292498db8aae7b58f29bbd05ba89f512e1ef3
<mask token>

<mask token>


def generate_trunk_config(trunk):
    """
    trunk - словарь trunk-портов,
    для которых необходимо сгенерировать конфигурацию, вида:
        { 'FastEthernet0/1':[10,20],
          'FastEthernet0/2':[11,30],
          'FastEthernet0/4':[17] }

    Возвращает словарь:
    - ключи: имена интерфейсов, вида 'FastEthernet0/1'
    - значения: список команд, который надо выполнить на этом интерфейсе
    """
    trunk_template = ['switchport trunk encapsulation dot1q',
        'switchport mode trunk', 'switchport trunk native vlan 999',
        'switchport trunk allowed vlan']
    result_dic = {}
    result_list = []
    for intf in trunk:
        result_list = []
        for each in trunk_template:
            if each.endswith('allowed vlan'):
                st = each + ' ' + str(trunk[intf]).replace('[', '').replace(']'
                    , '')
                result_list.append(st)
            else:
                result_list.append(each)
        result_dic[intf] = result_list
    print(result_dic)


<mask token>

<mask token>


def generate_trunk_config(trunk):
    """
    trunk - словарь trunk-портов,
    для которых необходимо сгенерировать конфигурацию, вида:
        { 'FastEthernet0/1':[10,20],
          'FastEthernet0/2':[11,30],
          'FastEthernet0/4':[17] }

    Возвращает словарь:
    - ключи: имена интерфейсов, вида 'FastEthernet0/1'
    - значения: список команд, который надо выполнить на этом интерфейсе
    """
    trunk_template = ['switchport trunk encapsulation dot1q',
        'switchport mode trunk', 'switchport trunk native vlan 999',
        'switchport trunk allowed vlan']
    result_dic = {}
    result_list = []
    for intf in trunk:
        result_list = []
        for each in trunk_template:
            if each.endswith('allowed vlan'):
                st = each + ' ' + str(trunk[intf]).replace('[', '').replace(']'
                    , '')
                result_list.append(st)
            else:
                result_list.append(each)
        result_dic[intf] = result_list
    print(result_dic)


<mask token>
generate_trunk_config(trunk_dict)

<mask token>


def generate_trunk_config(trunk):
    """
    trunk - словарь trunk-портов,
    для которых необходимо сгенерировать конфигурацию, вида:
        { 'FastEthernet0/1':[10,20],
          'FastEthernet0/2':[11,30],
          'FastEthernet0/4':[17] }

    Возвращает словарь:
    - ключи: имена интерфейсов, вида 'FastEthernet0/1'
    - значения: список команд, который надо выполнить на этом интерфейсе
    """
    trunk_template = ['switchport trunk encapsulation dot1q',
        'switchport mode trunk', 'switchport trunk native vlan 999',
        'switchport trunk allowed vlan']
    result_dic = {}
    result_list = []
    for intf in trunk:
        result_list = []
        for each in trunk_template:
            if each.endswith('allowed vlan'):
                st = each + ' ' + str(trunk[intf]).replace('[', '').replace(']'
                    , '')
                result_list.append(st)
            else:
                result_list.append(each)
        result_dic[intf] = result_list
    print(result_dic)


trunk_dict = {'FastEthernet0/1': [10, 20, 30], 'FastEthernet0/2': [11, 30],
    'FastEthernet0/4': [17]}
generate_trunk_config(trunk_dict)

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

Сделать копию скрипта задания 9.2

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

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

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

'''


def generate_trunk_config(trunk):
    '''
    trunk - словарь trunk-портов,
    для которых необходимо сгенерировать конфигурацию, вида:
        { 'FastEthernet0/1':[10,20],
          'FastEthernet0/2':[11,30],
          'FastEthernet0/4':[17] }

    Возвращает словарь:
    - ключи: имена интерфейсов, вида 'FastEthernet0/1'
    - значения: список команд, который надо выполнить на этом интерфейсе
    '''
    trunk_template = [
        'switchport trunk encapsulation dot1q', 'switchport mode trunk',
        'switchport trunk native vlan 999', 'switchport trunk allowed vlan'
    ]
    result_dic = {}
    result_list =[]
    
    for intf in trunk:
        result_list = []
        for each in trunk_template:
            if each.endswith('allowed vlan'):
                st = each + ' ' + str(trunk[intf]).replace("[", '').replace("]", '')
                result_list.append(st)                            
            else:
                result_list.append(each)                    
        result_dic[intf] = result_list
    print(result_dic)
                

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

generate_trunk_config(trunk_dict)
