Loading src/device/service/drivers/gnmi_openconfig/handlers/Interface.py +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig_interface_handler.py +45 −2 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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 Loading @@ -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 Loading
src/device/service/drivers/gnmi_openconfig/handlers/Interface.py +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
src/device/tests/gnmi_openconfig/test_unitary_gnmi_openconfig_interface_handler.py +45 −2 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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 Loading @@ -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