Esempio n. 1
0
def test_get_interfaces_mode_cisco(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'Ethernet1/22/1': {
            'mode': 'switched'
        },
        'Ethernet1/23/2': {
            'mode': 'switched'
        },
        'Ethernet1/25': {
            'mode': 'routed'
        },
        'port-channel1.3000': {
            'mode': 'routed'
        },
        'port-channel2': {
            'mode': 'routed'
        },
        'Vlan604': {
            'mode': 'routed'
        },
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(), get_file_contents('cisco_show_int_brief.txt'),
        vendor_vars['Cisco Nexus'], None, 'nxos',
        check_interfaces.get_interfaces_mode, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 2
0
def test_find_lag_hierarchy_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'Eth-Trunk1': {
            'members': ['40GE1/0/17', '40GE1/0/19']
        },
        'Eth-Trunk2': {
            'members': ['40GE1/0/18', '40GE1/0/20']
        },
        '40GE1/0/17': {
            'member': 'Eth-Trunk1'
        },
        '40GE1/0/18': {
            'member': 'Eth-Trunk2'
        },
        '40GE1/0/19': {
            'member': 'Eth-Trunk1'
        },
        '40GE1/0/20': {
            'member': 'Eth-Trunk2'
        },
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(), get_file_contents('huawei_show_int_brief.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.find_lag_hierarchy, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 3
0
def test_check_interfaces_status_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        '40GE1/0/28:1': {
            'admin_status': 'down',
            'oper_status': 'down'
        },
        '40GE1/0/32:4': {
            'admin_status': 'up',
            'oper_status': 'down'
        },
        'Vlanif1517': {
            'admin_status': 'up',
            'oper_status': 'up'
        },
        'Vlanif762': {
            'admin_status': 'up',
            'oper_status': 'up',
            'svi': True
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(), get_file_contents('huawei_show_int_brief.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.check_interfaces_status, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 4
0
def test_check_interfaces_status_cisco(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'Ethernet1/22/2': {
            'admin_status': 'down',
            'oper_status': 'down'
        },
        'Ethernet1/25': {
            'admin_status': 'up',
            'oper_status': 'up'
        },
        'port-channel1.3000': {
            'admin_status': 'up',
            'oper_status': 'up',
            'subinterface': True
        },
        'Vlan604': {
            'admin_status': 'up',
            'oper_status': 'down',
            'svi': True
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(), get_file_contents('cisco_show_int_brief.txt'),
        vendor_vars['Cisco Nexus'], None, 'nxos',
        check_interfaces.check_interfaces_status, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 5
0
def test_check_vrf_bgp_neighbors(set_vendor_vars):
    vendor_vars = set_vendor_vars
    cisco_v6_task = create_fake_task(
        get_file_contents('cisco_show_bgp_ipv6_vrf_neighbors.txt'),
        vendor_vars['Cisco Nexus'], 'Galaxy', 'nxos',
        check_vrf_status.check_vrf_bgp_neighbors)
    check_vrf_status.check_vrf_bgp_neighbors(cisco_v6_task, af='v6')
    assert len(cisco_v6_task.host['bgp_neighbors']) == 2
    assert cisco_v6_task.host['bgp_neighbors']['fe80::152:12'].state == \
        'established'
    assert cisco_v6_task.host['bgp_neighbors']['fe80::152:12']._type == \
        'external'
    assert cisco_v6_task.host['bgp_neighbors']['fe80::152:12'].as_number == \
        '65001'
    assert cisco_v6_task.host['bgp_neighbors']['fe80::152:12'].router_id.\
        compressed == '172.20.134.2'
    assert cisco_v6_task.host['bgp_neighbors']['fe80::152:12'].af['ipv4'] is \
        None
    v6 = cisco_v6_task.host['bgp_neighbors']['fe80::152:12'].af['ipv6']
    assert v6.learned_routes == 1975
    assert v6.sent_routes == 7
    huawei_v6_task = create_fake_task(
        get_file_contents('huawei_show_bgp_ipv6_vrf_neighbors.txt'),
        vendor_vars['Huawei CE'], 'Galaxy', 'huawei_vrpv8',
        check_vrf_status.check_vrf_bgp_neighbors)
    check_vrf_status.check_vrf_bgp_neighbors(huawei_v6_task, af='v6')
    assert len(huawei_v6_task.host['bgp_neighbors']) == 2
    assert huawei_v6_task.host['bgp_neighbors']['fe80::dd:a1'].state == \
        'established'
    assert huawei_v6_task.host['bgp_neighbors']['fe80::dd:a1']._type == \
        'external'
    assert huawei_v6_task.host['bgp_neighbors']['fe80::dd:a1'].as_number == \
        '65012'
    assert huawei_v6_task.host['bgp_neighbors']['fe80::dd:a1'].router_id.\
        compressed == '172.24.16.1'
    assert huawei_v6_task.host['bgp_neighbors']['fe80::dd:a1'].af['ipv4'] is \
        None
    v6 = huawei_v6_task.host['bgp_neighbors']['fe80::dd:a1'].af['ipv6']
    assert v6.learned_routes == 1980
    assert v6.sent_routes == 1982
Esempio n. 6
0
def test_find_vrf(set_vendor_vars):
    vendor_vars = set_vendor_vars
    cisco_output = get_file_contents('cisco_show_vrf.txt')
    task_fail = create_fake_task(cisco_output, vendor_vars['Cisco Nexus'],
                                 'Galaxy', 'nxos', check_vrf_status.find_vrf)
    result_fail = check_vrf_status.find_vrf(task_fail)
    assert result_fail.failed is True
    task_true = create_fake_task(cisco_output, vendor_vars['Cisco Nexus'],
                                 'Lasers', 'nxos', check_vrf_status.find_vrf)
    result_true = check_vrf_status.find_vrf(task_true)
    assert result_true.failed is False
    huawei_output = get_file_contents('huawei_show_vrf.txt')
    task_fail = create_fake_task(huawei_output, vendor_vars['Huawei CE'],
                                 'Galaxy', 'huawei_vrpv8',
                                 check_vrf_status.find_vrf)
    result_fail = check_vrf_status.find_vrf(task_fail)
    assert result_fail.failed is True
    task_true = create_fake_task(huawei_output, vendor_vars['Huawei CE'],
                                 'Lasers', 'huawei_vrpv8',
                                 check_vrf_status.find_vrf)
    result_true = check_vrf_status.find_vrf(task_true)
    assert result_true.failed is False
Esempio n. 7
0
def test_get_vrf_interfaces(set_vendor_vars):
    vendor_vars = set_vendor_vars
    cisco_output_interfaces_true = get_file_contents(
        'cisco_vrf_interfaces_present.txt')
    task_cisco_yes_int = create_fake_task(cisco_output_interfaces_true,
                                          vendor_vars['Cisco Nexus'], 'Star',
                                          'nxos',
                                          check_vrf_status.get_vrf_interfaces)
    check_vrf_status.get_vrf_interfaces(task_cisco_yes_int)
    assert len(task_cisco_yes_int.host['interfaces']) == 3
    cisco_output_interfaces_false = get_file_contents(
        'cisco_vrf_interfaces_absent.txt')
    task_cisco_no_int = create_fake_task(cisco_output_interfaces_false,
                                         vendor_vars['Cisco Nexus'], 'Star',
                                         'nxos',
                                         check_vrf_status.get_vrf_interfaces)
    result = check_vrf_status.get_vrf_interfaces(task_cisco_no_int)
    assert len(task_cisco_no_int.host['interfaces']) == 0
    assert result.failed is True
    huawei_output_interfaces_true = get_file_contents(
        'huawei_vrf_interfaces_present.txt')
    task_huawei_yes_int = create_fake_task(huawei_output_interfaces_true,
                                           vendor_vars['Huawei CE'], 'Star',
                                           'huawei_vrpv8',
                                           check_vrf_status.get_vrf_interfaces)
    check_vrf_status.get_vrf_interfaces(task_huawei_yes_int)
    assert len(task_huawei_yes_int.host['interfaces']) == 2
    huawei_output_interfaces_false = get_file_contents(
        'huawei_vrf_interfaces_absent.txt')
    task_huawei_no_int = create_fake_task(huawei_output_interfaces_false,
                                          vendor_vars['Huawei CE'], 'Star',
                                          'huawei_vrpv8',
                                          check_vrf_status.get_vrf_interfaces)
    result = check_vrf_status.get_vrf_interfaces(task_huawei_no_int)
    assert len(task_huawei_no_int.host['interfaces']) == 0
    assert result.failed is True
    task_huawei_no_int.host.platform = 'eos'
    with pytest.raises(UnsupportedNOS):
        check_vrf_status.get_vrf_interfaces(task_huawei_no_int)
Esempio n. 8
0
def create_test_interfaces(interface_names,
                           output,
                           vendor_vars,
                           vrf_name,
                           nos,
                           operation,
                           file_prefix,
                           effect_outputs=None,
                           attr_map=None):
    '''Combine create_fake_task with prepare_interfaces helper functions to
    produce task/host filled with interfaces, execute task and return list of
    interfaces back.
    Arguments:
        * interface_names - list of interface names
        * output - string with CLI output of some command, if we need single
            output
        * vendor_vars - dict with NOS CLI commands
        * vrf_name - name of VRF to test upon
        * nos - NOS name
        * operation - instance of nornir.core.task.Task which we will test
        * file_prefix - prefix to find file names to produce different host
            outputs, if we need more than one
        * effect_outputs (defaults to None) - list of outputs ready to be used
            as mock side effect
        * attr_map (defaults to None) - dict, which maps interface names to
            set of attributes and corresponding values. This values must be
            applied to interface objects before executing task.
    Returns:
        * list of utils.switch_objects.SwitchInterface associated with task
            host
    '''
    if file_prefix:
        outputs = []
        for interface in interface_names:
            name = interface_name_to_file_name(interface)
            file_name = file_prefix + name + '.txt'
            outputs.append(get_file_contents(file_name))
    elif effect_outputs:
        outputs = effect_outputs
    else:
        outputs = None
    fake_task = create_fake_task(output, vendor_vars, vrf_name, nos, operation,
                                 outputs)
    test_interfaces = prepare_interfaces(fake_task, interface_names)
    if attr_map:
        for interface in test_interfaces:
            if interface.name in attr_map:
                for key, value in attr_map[interface.name].items():
                    setattr(interface, key, value)
    operation(fake_task)
    return test_interfaces
Esempio n. 9
0
def test_get_interfaces_macs(set_vendor_vars):
    vendor_vars = set_vendor_vars
    cisco_no_mac_int_task = create_fake_task(
        get_file_contents('cisco_show_mac_table_int_eth1_15.txt'),
        vendor_vars['Cisco Nexus'], None, 'nxos',
        check_mac_table.get_interfaces_macs)
    check_mac_table.get_interfaces_macs(cisco_no_mac_int_task,
                                        interface_list=['Ethernet1/15'])
    assert cisco_no_mac_int_task.host['interfaces'][0].macs_learned == 0
    cisco_svi_task = create_fake_task(
        get_file_contents('cisco_show_mac_table_vlan412.txt'),
        vendor_vars['Cisco Nexus'], None, 'nxos',
        check_mac_table.get_interfaces_macs)
    check_mac_table.get_interfaces_macs(cisco_svi_task,
                                        interface_list=['Vlan412'])
    assert cisco_svi_task.host['interfaces'][0].macs_learned == 3
    huawei_no_mac_svi_task = create_fake_task(
        get_file_contents('huawei_show_mac_table_vlan515.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_mac_table.get_interfaces_macs)
    check_mac_table.get_interfaces_macs(huawei_no_mac_svi_task,
                                        interface_list=['Vlanif515'])
    assert huawei_no_mac_svi_task.host['interfaces'][0].macs_learned == 0
    huawei_int_task = create_fake_task(
        get_file_contents('huawei_show_mac_table_int_10ge1_0_28.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_mac_table.get_interfaces_macs)
    check_mac_table.get_interfaces_macs(huawei_int_task,
                                        interface_list=['10GE1/0/28'])
    assert huawei_int_task.host['interfaces'][0].macs_learned == 4
    routing_int_task = create_fake_task(None, vendor_vars['Huawei CE'], None,
                                        'huawei_vrpv8',
                                        check_mac_table.get_interfaces_macs)
    routing_int_task.host['interfaces'] = [
        SwitchInterface('100GE1/0/1', mode='routed')
    ]
    check_mac_table.get_interfaces_macs(routing_int_task)
    assert routing_int_task.host['interfaces'][0].macs_learned == 0
Esempio n. 10
0
def test_get_interfaces_vrf_binding_cisco(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'Vlan215': {
            'vrf': 'Star'
        },
        'Ethernet1/31.200': {
            'vrf': 'World'
        },
        'Ethernet1/32.144': {
            'vrf': 'World'
        },
        'Vlan1222': {
            'vrf': 'Galaxy'
        },
        'Vlan1': {
            'vrf': 'default'
        },
        'Ethernet1/26': {
            'vrf': 'default'
        },
        'mgmt0': {
            'vrf': 'management'
        },
        'Ethernet1/5/3': {
            'vrf': None
        }
    }
    mode_map = {
        'Ethernet1/26': {
            'mode': 'routed'
        },
        'Ethernet1/5/3': {
            'mode': 'routed'
        },
        'mgmt0': {
            'mode': 'routed'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents('cisco_show_vrf_interfaces_all.txt'),
        vendor_vars['Cisco Nexus'],
        None,
        'nxos',
        check_interfaces.get_interfaces_vrf_binding,
        None,
        attr_map=mode_map)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 11
0
def test_find_lag_hierarchy_huawei_no_lag(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        '40GE1/0/18': {
            'member': None
        },
        '40GE1/0/5': {
            'member': None
        },
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents('huawei_show_int_brief_no_lag.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.find_lag_hierarchy, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 12
0
def test_find_lag_hierarchy_cisco_no_lag(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'Ethernet1/31': {
            'member': None
        },
        'Ethernet1/32': {
            'member': None
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents('cisco_show_int_brief_no_lag.txt'),
        vendor_vars['Cisco Nexus'], None, 'nxos',
        check_interfaces.find_lag_hierarchy, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 13
0
def test_find_rx_power_single_lane_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        '10GE1/0/1': {
            'rx_power': -1.94,
            'optical_lanes': 1,
            'ddm': True,
            'module_type': '10GBASE-SR',
            'transceiver': 'OEM GPP-85192-SRC'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents('huawei_show_int_10ge1_0_1_transceiver_verbose.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.get_transceiver_stats, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 14
0
def test_get_interfaces_vrf_binding_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'Vlanif334': {
            'vrf': 'Star'
        },
        'Vlanif422': {
            'vrf': 'Star'
        },
        '100GE1/0/4.215': {
            'vrf': 'Star'
        },
        '100GE1/0/6': {
            'vrf': 'Star'
        },
        'Vlanif516': {
            'vrf': 'Galaxy'
        },
        '10GE1/0/32': {
            'vrf': 'Galaxy'
        },
        '10GE1/0/5:4': {
            'vrf': None
        }
    }
    mode_map = {
        '100GE1/0/6': {
            'mode': 'routed'
        },
        '10GE1/0/32': {
            'mode': 'routed'
        },
        '10GE1/0/5:4': {
            'mode': 'routed'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents('huawei_show_vrf_interfaces_all.txt'),
        vendor_vars['Huawei CE'],
        None,
        'huawei_vrpv8',
        check_interfaces.get_interfaces_vrf_binding,
        None,
        attr_map=mode_map)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 15
0
def test_find_rx_power_dom_yes_but_no_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        '100GE5/0/0': {
            'rx_power': None,
            'optical_lanes': None,
            'ddm': True,
            'module_type': '100GBASE-SR4',
            'transceiver': 'NETWELL NW-QSFP28-SR4'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents(
            'huawei_show_int_100ge5_0_0_transceiver_verbose.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.get_transceiver_stats, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 16
0
def test_find_rx_power_no_dom_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        '100GE5/0/8': {
            'rx_power': None,
            'optical_lanes': None,
            'ddm': False,
            'module_type': '40GBASE-BIDI',
            'transceiver': 'CISCO-AVAGO AFBR-79EBPZ-CS2'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents(
            'huawei_show_int_100ge5_0_8_transceiver_verbose.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.get_transceiver_stats, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 17
0
def test_find_rx_power_multi_lane_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        '40GE1/0/15': {
            'rx_power': [-2.90, -2.52, -2.34, -2.44],
            'optical_lanes': 4,
            'ddm': True,
            'module_type': '40GBASE-SR4',
            'transceiver': 'FINISAR CORP FTL410QE3C'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(),
        get_file_contents(
            'huawei_show_int_40ge1_0_15_transceiver_verbose.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.get_transceiver_stats, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 18
0
def get_ip_outputs(interfaces, vendor, pad=''):
    '''Get different file contents for commands that imply both IPv4 and IPv6
    for list of interfaces. Little helper to open up different files.
    Arguments:
        * interfaces - list of interface names
        * vendor - lower case vendor name to use in file names
        * pad (defaults to '') - additional field to insert into file name
    Returns:
        * list of file contents outputs
    '''
    outputs = []
    for interface in interfaces:
        name = interface_name_to_file_name(interface)
        file_names = [
            vendor + '_show_ipv' + x + pad + '_int_' + name + '.txt'
            for x in ('4', '6')
        ]
        outputs.extend([get_file_contents(x) for x in file_names])
    return outputs
Esempio n. 19
0
def test_find_lag_hierarchy_cisco(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interfaces = {
        'port-channel1': {
            'members': ['Ethernet1/32']
        },
        'port-channel2': {
            'members': ['Ethernet1/31']
        },
        'Ethernet1/31': {
            'member': 'port-channel2'
        },
        'Ethernet1/32': {
            'member': 'port-channel1'
        }
    }
    interface_objects = create_test_interfaces(
        interfaces.keys(), get_file_contents('cisco_show_int_brief.txt'),
        vendor_vars['Cisco Nexus'], None, 'nxos',
        check_interfaces.find_lag_hierarchy, None)
    do_interface_checks(interfaces, interface_objects)
Esempio n. 20
0
def test_check_arbitrary_interface(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interface = ['40GE1/0/32:4']
    fake_task = create_fake_task(
        get_file_contents('huawei_show_int_brief.txt'),
        vendor_vars['Huawei CE'], None, 'huawei_vrpv8',
        check_interfaces.check_interfaces_status)
    check_interfaces.check_interfaces_status(fake_task,
                                             interface_list=interface)
    assert fake_task.host['interfaces'][0].admin_status == 'up'
    assert fake_task.host['interfaces'][0].oper_status == 'down'
    outputs = get_ip_outputs(interface, 'huawei')
    fake_task = create_fake_task(None,
                                 vendor_vars['Huawei CE'],
                                 None,
                                 'huawei_vrpv8',
                                 check_interfaces.get_interfaces_ip_addresses,
                                 effect=outputs)
    check_interfaces.get_interfaces_ip_addresses(fake_task,
                                                 interface_list=interface)
    assert len(fake_task.host['interfaces'][0].ipv4_addresses) == 0
    assert len(fake_task.host['interfaces'][0].ipv6_addresses) == 3
Esempio n. 21
0
def test_sanitize_interface_list_cisco(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interface_names = [
        'Ethernet1/3/1', 'Ethernet1/31.3000', 'port-channel2', 'Vlan741'
    ]
    outputs = []
    for interface in interface_names:
        name = interface_name_to_file_name(interface)
        file_name = 'cisco_show_int_' + name + '.txt'
        outputs.append(get_file_contents(file_name))
    # add incorrect interface
    interface_names.insert(2, 'etoh1/3/2')
    outputs.insert(2, '''"^\nInvalid interface format at '^' marker."''')
    task = create_fake_task(None,
                            vendor_vars['Cisco Nexus'],
                            None,
                            'nxos',
                            check_interfaces.sanitize_interface_list,
                            effect=outputs)
    check_interfaces.sanitize_interface_list(task, ', '.join(interface_names))
    assert len(task.host['interfaces']) == 4
    assert 'Ethernet1/3/2' not in [x.name for x in task.host['interfaces']]
    assert 'Vlan741' in [x.name for x in task.host['interfaces']]
Esempio n. 22
0
def test_sanitize_interface_list_huawei(set_vendor_vars):
    vendor_vars = set_vendor_vars
    interface_names = [
        '40GE1/0/2:1', '10GE1/0/2.3013', 'Eth-Trunk0', 'Vlanif761'
    ]
    outputs = []
    for interface in interface_names:
        name = interface_name_to_file_name(interface)
        file_name = 'huawei_show_int_' + name + '.txt'
        outputs.append(get_file_contents(file_name))
    # add incorrect interface
    interface_names.insert(2, '24GE1/77')
    outputs.insert(2, '''"^\nError: Wrong parameter found at '^' position."''')
    task = create_fake_task(None,
                            vendor_vars['Huawei CE'],
                            None,
                            'huawei_vrpv8',
                            check_interfaces.sanitize_interface_list,
                            effect=outputs)
    check_interfaces.sanitize_interface_list(task, ', '.join(interface_names))
    assert len(task.host['interfaces']) == 4
    assert '24GE1/77' not in [x.name for x in task.host['interfaces']]
    assert 'Eth-Trunk0' in [x.name for x in task.host['interfaces']]