daemon: removed linktype and apitype from node classes, as they are no longer needed, made adjustments where needed to compensate

This commit is contained in:
Blake Harnden 2022-04-05 15:22:01 -07:00
parent 7440c1d949
commit 443c0e708f
9 changed files with 12 additions and 47 deletions

View file

@ -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",

View file

@ -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")

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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

View file

@ -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",

View file

@ -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",

View file

@ -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)