def create_interface(node: CoreNode, network: CoreNetworkBase, interface_data: InterfaceData): """ Create an interface for a node on a network using provided interface data. :param node: node to create interface for :param network: network to associate interface with :param interface_data: interface data :return: created interface """ node.newnetif( network, addrlist=interface_data.get_addresses(), hwaddr=interface_data.mac, ifindex=interface_data.id, ifname=interface_data.name, ) return node.netif(interface_data.id)
def get_nem_id(node: CoreNode, netif_id: int, context: ServicerContext) -> int: """ Get nem id for a given node and interface id. :param node: node to get nem id for :param netif_id: id of interface on node to get nem id for :param context: request context :return: nem id """ netif = node.netif(netif_id) if not netif: message = f"{node.name} missing interface {netif_id}" context.abort(grpc.StatusCode.NOT_FOUND, message) net = netif.net if not isinstance(net, EmaneNet): message = f"{node.name} interface {netif_id} is not an EMANE network" context.abort(grpc.StatusCode.INVALID_ARGUMENT, message) return net.getnemid(netif)