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:
parent
7440c1d949
commit
443c0e708f
9 changed files with 12 additions and 47 deletions
|
@ -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",
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue