Commit f8ecc893 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Device component - gNMI OpenConfig driver:

- Fixed configuration of interface type, if provided
parent 4ecdab12
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ MIN_MTU = 68


def _normalize_interface_type(if_type: str, sif_index: int) -> str:
    if if_type == 'l3ipvlan' and sif_index is not None:
        return 'iana-if-type:ethernetCsmacd'
    if ':' not in if_type:
        return 'iana-if-type:{:s}'.format(if_type)
    return if_type
+45 −2
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ from device.service.drivers.gnmi_openconfig.handlers.Interface import InterfaceH
from device.service.drivers.gnmi_openconfig.handlers.YangHandler import YangHandler


def test_compose_tagged_l3_subinterface_keeps_l3ipvlan_type() -> None:
def test_compose_tagged_l3_subinterface_sets_parent_ethernet_type() -> None:
    handler = InterfaceHandler()
    yang_handler = YangHandler()
    try:
@@ -40,7 +40,7 @@ def test_compose_tagged_l3_subinterface_keeps_l3ipvlan_type() -> None:
        yang_handler.destroy()

    json_data = json.loads(str_data)
    assert json_data['config']['type'] == 'iana-if-type:l3ipvlan'
    assert json_data['config']['type'] == 'iana-if-type:ethernetCsmacd'

    subinterface = json_data['subinterfaces']['subinterface'][0]
    assert subinterface['index'] == 125
@@ -48,3 +48,46 @@ def test_compose_tagged_l3_subinterface_keeps_l3ipvlan_type() -> None:
    address = subinterface['openconfig-if-ip:ipv4']['addresses']['address'][0]
    assert address['config']['ip'] == '172.17.1.1'
    assert address['config']['prefix-length'] == 24


def test_delete_subinterface_zero_unlinks_it_from_shared_yang_state() -> None:
    handler = InterfaceHandler()
    yang_handler = YangHandler()
    try:
        handler.compose(
            '/interface[Ethernet10]/subinterface[0]',
            {
                'name': 'Ethernet10',
                'type': 'l3ipvlan',
                'index': 0,
                'address_ip': '172.16.1.1',
                'address_prefix': 24,
                'enabled': True,
            },
            yang_handler,
            delete=False,
        )

        str_path, _ = handler.compose(
            '/interface[Ethernet10]/subinterface[0]',
            {
                'name': 'Ethernet10',
                'index': 0,
            },
            yang_handler,
            delete=True,
        )

        root_node = yang_handler.get_data_path('/openconfig-interfaces:interfaces')
        yang_subif = root_node.find_path('/'.join([
            '',
            'openconfig-interfaces:interfaces',
            'interface[name="Ethernet10"]',
            'subinterfaces',
            'subinterface[index="0"]',
        ]))
    finally:
        yang_handler.destroy()

    assert str_path == '/interfaces/interface[name=Ethernet10]/subinterfaces/subinterface[index=0]'
    assert yang_subif is None