From 443c0e708fa27339de1b3b7acfed734899aa0101 Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Tue, 5 Apr 2022 15:22:01 -0700 Subject: [PATCH] daemon: removed linktype and apitype from node classes, as they are no longer needed, made adjustments where needed to compensate --- daemon/core/emane/nodes.py | 5 +---- daemon/core/emulator/session.py | 5 ++--- daemon/core/nodes/base.py | 5 ----- daemon/core/nodes/docker.py | 3 --- daemon/core/nodes/lxd.py | 3 --- daemon/core/nodes/network.py | 11 +---------- daemon/core/nodes/physical.py | 4 +--- daemon/core/nodes/wireless.py | 4 +--- daemon/core/xml/corexml.py | 19 ++++++------------- 9 files changed, 12 insertions(+), 47 deletions(-) diff --git a/daemon/core/emane/nodes.py b/daemon/core/emane/nodes.py index 5556bf68..1fb96751 100644 --- a/daemon/core/emane/nodes.py +++ b/daemon/core/emane/nodes.py @@ -9,7 +9,7 @@ from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Type from core.emulator.data import InterfaceData, LinkData, LinkOptions from core.emulator.distributed import DistributedServer -from core.emulator.enumerations import EventTypes, MessageFlags, NodeTypes, RegisterTlvs +from core.emulator.enumerations import EventTypes, MessageFlags, RegisterTlvs from core.errors import CoreCommandError, CoreError from core.nodes.base import CoreNetworkBase, CoreNode from core.nodes.interface import CoreInterface @@ -149,9 +149,6 @@ class EmaneNet(CoreNetworkBase): Emane controller object that exists in a session. """ - apitype: NodeTypes = NodeTypes.EMANE - type: str = "wlan" - def __init__( self, session: "Session", diff --git a/daemon/core/emulator/session.py b/daemon/core/emulator/session.py index 84919f3a..7bf1e0a3 100644 --- a/daemon/core/emulator/session.py +++ b/daemon/core/emulator/session.py @@ -752,8 +752,6 @@ class Session: :param source: source of broadcast, None by default :return: nothing """ - if not node.apitype: - return node_data = NodeData(node=node, message_type=message_type, source=source) for handler in self.node_handlers: handler(node_data) @@ -1064,7 +1062,8 @@ class Session: with self.nodes_lock: with file_path.open("w") as f: for _id, node in self.nodes.items(): - f.write(f"{_id} {node.name} {node.apitype} {type(node)}\n") + node_type = self.get_node_type(type(node)) + f.write(f"{_id} {node.name} {node_type} {type(node)}\n") except IOError: logger.exception("error writing nodes file") diff --git a/daemon/core/nodes/base.py b/daemon/core/nodes/base.py index d9f4a7f2..1bac0885 100644 --- a/daemon/core/nodes/base.py +++ b/daemon/core/nodes/base.py @@ -14,7 +14,6 @@ import netaddr from core import utils from core.configservice.dependencies import ConfigServiceDependencies from core.emulator.data import InterfaceData, LinkOptions -from core.emulator.enumerations import NodeTypes from core.errors import CoreCommandError, CoreError from core.executables import BASH, MOUNT, TEST, VCMD, VNODED from core.nodes.interface import DEFAULT_MTU, CoreInterface @@ -39,8 +38,6 @@ class NodeBase(abc.ABC): Base class for CORE nodes (nodes and networks) """ - apitype: Optional[NodeTypes] = None - def __init__( self, session: "Session", @@ -458,8 +455,6 @@ class CoreNode(CoreNodeBase): Provides standard core node logic. """ - apitype: NodeTypes = NodeTypes.DEFAULT - def __init__( self, session: "Session", diff --git a/daemon/core/nodes/docker.py b/daemon/core/nodes/docker.py index 0a0690b1..aa398d34 100644 --- a/daemon/core/nodes/docker.py +++ b/daemon/core/nodes/docker.py @@ -6,7 +6,6 @@ from typing import TYPE_CHECKING, Callable, Dict, Optional from core import utils from core.emulator.distributed import DistributedServer -from core.emulator.enumerations import NodeTypes from core.errors import CoreCommandError from core.nodes.base import CoreNode from core.nodes.netclient import LinuxNetClient, get_net_client @@ -71,8 +70,6 @@ class DockerClient: class DockerNode(CoreNode): - apitype = NodeTypes.DOCKER - def __init__( self, session: "Session", diff --git a/daemon/core/nodes/lxd.py b/daemon/core/nodes/lxd.py index e755e9c9..1c12328f 100644 --- a/daemon/core/nodes/lxd.py +++ b/daemon/core/nodes/lxd.py @@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Callable, Dict, Optional from core import utils from core.emulator.data import InterfaceData, LinkOptions from core.emulator.distributed import DistributedServer -from core.emulator.enumerations import NodeTypes from core.errors import CoreCommandError from core.nodes.base import CoreNode from core.nodes.interface import CoreInterface @@ -68,8 +67,6 @@ class LxdClient: class LxcNode(CoreNode): - apitype = NodeTypes.LXC - def __init__( self, session: "Session", diff --git a/daemon/core/nodes/network.py b/daemon/core/nodes/network.py index 0c8c6261..a3fe1e87 100644 --- a/daemon/core/nodes/network.py +++ b/daemon/core/nodes/network.py @@ -13,12 +13,7 @@ import netaddr from core import utils from core.emulator.data import InterfaceData, LinkData -from core.emulator.enumerations import ( - MessageFlags, - NetworkPolicy, - NodeTypes, - RegisterTlvs, -) +from core.emulator.enumerations import MessageFlags, NetworkPolicy, RegisterTlvs from core.errors import CoreCommandError, CoreError from core.executables import NFTABLES from core.nodes.base import CoreNetworkBase @@ -660,7 +655,6 @@ class SwitchNode(CoreNetwork): Provides switch functionality within a core node. """ - apitype: NodeTypes = NodeTypes.SWITCH policy: NetworkPolicy = NetworkPolicy.ACCEPT @@ -670,7 +664,6 @@ class HubNode(CoreNetwork): ports by turning off MAC address learning. """ - apitype: NodeTypes = NodeTypes.HUB policy: NetworkPolicy = NetworkPolicy.ACCEPT def startup(self) -> None: @@ -688,7 +681,6 @@ class WlanNode(CoreNetwork): Provides wireless lan functionality within a core node. """ - apitype: NodeTypes = NodeTypes.WIRELESS_LAN policy: NetworkPolicy = NetworkPolicy.DROP def __init__( @@ -787,5 +779,4 @@ class TunnelNode(GreTapBridge): Provides tunnel functionality in a core node. """ - apitype: NodeTypes = NodeTypes.TUNNEL policy: NetworkPolicy = NetworkPolicy.ACCEPT diff --git a/daemon/core/nodes/physical.py b/daemon/core/nodes/physical.py index 393d497f..ccbaf956 100644 --- a/daemon/core/nodes/physical.py +++ b/daemon/core/nodes/physical.py @@ -10,7 +10,7 @@ import netaddr from core.emulator.data import InterfaceData, LinkOptions from core.emulator.distributed import DistributedServer -from core.emulator.enumerations import NodeTypes, TransportType +from core.emulator.enumerations import TransportType from core.errors import CoreCommandError, CoreError from core.executables import BASH, TEST, UMOUNT from core.nodes.base import CoreNode, CoreNodeBase @@ -28,8 +28,6 @@ class Rj45Node(CoreNodeBase): network. """ - apitype: NodeTypes = NodeTypes.RJ45 - def __init__( self, session: "Session", diff --git a/daemon/core/nodes/wireless.py b/daemon/core/nodes/wireless.py index cefb21f8..81e8bd39 100644 --- a/daemon/core/nodes/wireless.py +++ b/daemon/core/nodes/wireless.py @@ -9,7 +9,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Dict, Tuple from core.emulator.data import LinkData, LinkOptions -from core.emulator.enumerations import LinkTypes, MessageFlags, NodeTypes +from core.emulator.enumerations import LinkTypes, MessageFlags from core.errors import CoreError from core.executables import NFTABLES from core.nodes.base import CoreNetworkBase @@ -47,8 +47,6 @@ class WirelessLink: class WirelessNode(CoreNetworkBase): - apitype: NodeTypes = NodeTypes.WIRELESS - def __init__( self, session: "Session", diff --git a/daemon/core/xml/corexml.py b/daemon/core/xml/corexml.py index 49ec72d8..a091a6c9 100644 --- a/daemon/core/xml/corexml.py +++ b/daemon/core/xml/corexml.py @@ -15,7 +15,7 @@ from core.nodes.base import CoreNodeBase, NodeBase from core.nodes.docker import DockerNode from core.nodes.interface import CoreInterface from core.nodes.lxd import LxcNode -from core.nodes.network import CtrlNet, GreTapBridge, WlanNode +from core.nodes.network import CtrlNet, GreTapBridge, PtpNet, WlanNode from core.nodes.wireless import WirelessNode from core.services.coreservices import CoreService @@ -254,11 +254,8 @@ class NetworkElement(NodeElement): self.add_type() def add_type(self) -> None: - if self.node.apitype: - node_type = self.node.apitype.name - else: - node_type = self.node.__class__.__name__ - add_attribute(self.element, "type", node_type) + node_type = self.session.get_node_type(type(self.node)) + add_attribute(self.element, "type", node_type.name) class CoreXmlWriter: @@ -444,24 +441,20 @@ class CoreXmlWriter: self.scenario.append(models) def write_nodes(self) -> None: - for node_id in self.session.nodes: - node = self.session.nodes[node_id] + for node in self.session.nodes.values(): # network node is_network_or_rj45 = isinstance( node, (core.nodes.base.CoreNetworkBase, core.nodes.physical.Rj45Node) ) is_controlnet = isinstance(node, CtrlNet) - if is_network_or_rj45 and not is_controlnet: + is_ptp = isinstance(node, PtpNet) + if is_network_or_rj45 and not (is_controlnet or is_ptp): self.write_network(node) # device node elif isinstance(node, core.nodes.base.CoreNodeBase): self.write_device(node) def write_network(self, node: NodeBase) -> None: - # ignore p2p and other nodes that are not part of the api - if not node.apitype: - return - network = NetworkElement(self.session, node) self.networks.append(network.element)