diff --git a/daemon/core/nodes/base.py b/daemon/core/nodes/base.py index fa3c063c..fbee291a 100644 --- a/daemon/core/nodes/base.py +++ b/daemon/core/nodes/base.py @@ -969,7 +969,15 @@ class CoreNetworkBase(NodeBase): """ raise NotImplementedError + @abc.abstractmethod def custom_iface(self, node: CoreNode, iface_data: InterfaceData) -> CoreInterface: + """ + Defines custom logic for creating an interface, if required. + + :param node: node to create interface for + :param iface_data: data for creating interface + :return: created interface + """ raise NotImplementedError def get_linked_iface(self, net: "CoreNetworkBase") -> Optional[CoreInterface]: diff --git a/daemon/core/nodes/network.py b/daemon/core/nodes/network.py index 4337daa8..262d422c 100644 --- a/daemon/core/nodes/network.py +++ b/daemon/core/nodes/network.py @@ -22,7 +22,7 @@ from core.emulator.enumerations import ( ) from core.errors import CoreCommandError, CoreError from core.executables import NFTABLES -from core.nodes.base import CoreNetworkBase +from core.nodes.base import CoreNetworkBase, CoreNode from core.nodes.interface import CoreInterface, GreTap, Veth from core.nodes.netclient import get_net_client @@ -436,6 +436,9 @@ class CoreNetwork(CoreNetworkBase): for ip in ips: self.net_client.create_address(self.brname, ip) + def custom_iface(self, node: CoreNode, iface_data: InterfaceData) -> CoreInterface: + raise CoreError(f"{type(self).__name__} does not support, custom interfaces") + class GreTapBridge(CoreNetwork): """