started type hinting on class variables for nodes/base
This commit is contained in:
parent
ba8b16ec34
commit
2e78025249
1 changed files with 38 additions and 39 deletions
|
@ -6,6 +6,7 @@ import logging
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import threading
|
import threading
|
||||||
|
from threading import RLock
|
||||||
from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Type
|
from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Type
|
||||||
|
|
||||||
import netaddr
|
import netaddr
|
||||||
|
@ -16,7 +17,7 @@ from core.constants import MOUNT_BIN, VNODED_BIN
|
||||||
from core.emulator.data import LinkData, NodeData
|
from core.emulator.data import LinkData, NodeData
|
||||||
from core.emulator.enumerations import LinkTypes, MessageFlags, NodeTypes
|
from core.emulator.enumerations import LinkTypes, MessageFlags, NodeTypes
|
||||||
from core.errors import CoreCommandError, CoreError
|
from core.errors import CoreCommandError, CoreError
|
||||||
from core.nodes import client
|
from core.nodes.client import VnodeClient
|
||||||
from core.nodes.interface import CoreInterface, TunTap, Veth
|
from core.nodes.interface import CoreInterface, TunTap, Veth
|
||||||
from core.nodes.netclient import LinuxNetClient, get_net_client
|
from core.nodes.netclient import LinuxNetClient, get_net_client
|
||||||
|
|
||||||
|
@ -24,7 +25,9 @@ if TYPE_CHECKING:
|
||||||
from core.emulator.distributed import DistributedServer
|
from core.emulator.distributed import DistributedServer
|
||||||
from core.emulator.session import Session
|
from core.emulator.session import Session
|
||||||
from core.configservice.base import ConfigService
|
from core.configservice.base import ConfigService
|
||||||
|
from core.services.coreservices import CoreService
|
||||||
|
|
||||||
|
CoreServices = List[CoreService]
|
||||||
ConfigServiceType = Type[ConfigService]
|
ConfigServiceType = Type[ConfigService]
|
||||||
|
|
||||||
_DEFAULT_MTU = 1500
|
_DEFAULT_MTU = 1500
|
||||||
|
@ -35,7 +38,7 @@ class NodeBase:
|
||||||
Base class for CORE nodes (nodes and networks)
|
Base class for CORE nodes (nodes and networks)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
apitype = None
|
apitype: Optional[NodeTypes] = None
|
||||||
|
|
||||||
# TODO: appears start has no usage, verify and remove
|
# TODO: appears start has no usage, verify and remove
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -57,25 +60,25 @@ class NodeBase:
|
||||||
will run on, default is None for localhost
|
will run on, default is None for localhost
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.session = session
|
self.session: "Session" = session
|
||||||
if _id is None:
|
if _id is None:
|
||||||
_id = session.get_node_id()
|
_id = session.get_node_id()
|
||||||
self.id = _id
|
self.id: int = _id
|
||||||
if name is None:
|
if name is None:
|
||||||
name = f"o{self.id}"
|
name = f"o{self.id}"
|
||||||
self.name = name
|
self.name: str = name
|
||||||
self.server = server
|
self.server: "DistributedServer" = server
|
||||||
self.type = None
|
self.type: Optional[str] = None
|
||||||
self.services = None
|
self.services: CoreServices = []
|
||||||
self._netif = {}
|
self._netif: Dict[int, CoreInterface] = {}
|
||||||
self.ifindex = 0
|
self.ifindex: int = 0
|
||||||
self.canvas = None
|
self.canvas: Optional[int] = None
|
||||||
self.icon = None
|
self.icon: Optional[str] = None
|
||||||
self.opaque = None
|
self.opaque: Optional[str] = None
|
||||||
self.position = Position()
|
self.position: Position = Position()
|
||||||
self.up = False
|
self.up: bool = False
|
||||||
use_ovs = session.options.get_config("ovs") == "True"
|
use_ovs = session.options.get_config("ovs") == "True"
|
||||||
self.net_client = get_net_client(use_ovs, self.host_cmd)
|
self.net_client: LinuxNetClient = get_net_client(use_ovs, self.host_cmd)
|
||||||
|
|
||||||
def startup(self) -> None:
|
def startup(self) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -207,9 +210,7 @@ class NodeBase:
|
||||||
server = None
|
server = None
|
||||||
if self.server is not None:
|
if self.server is not None:
|
||||||
server = self.server.name
|
server = self.server.name
|
||||||
services = None
|
services = [service.name for service in self.services]
|
||||||
if self.services is not None:
|
|
||||||
services = [service.name for service in self.services]
|
|
||||||
return NodeData(
|
return NodeData(
|
||||||
message_type=message_type,
|
message_type=message_type,
|
||||||
id=self.id,
|
id=self.id,
|
||||||
|
@ -266,10 +267,9 @@ class CoreNodeBase(NodeBase):
|
||||||
will run on, default is None for localhost
|
will run on, default is None for localhost
|
||||||
"""
|
"""
|
||||||
super().__init__(session, _id, name, start, server)
|
super().__init__(session, _id, name, start, server)
|
||||||
self.services = []
|
self.config_services: Dict[str, "ConfigService"] = {}
|
||||||
self.config_services = {}
|
self.nodedir: Optional[str] = None
|
||||||
self.nodedir = None
|
self.tmpnodedir: bool = False
|
||||||
self.tmpnodedir = False
|
|
||||||
|
|
||||||
def add_config_service(self, service_class: "ConfigServiceType") -> None:
|
def add_config_service(self, service_class: "ConfigServiceType") -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -298,7 +298,7 @@ class CoreNodeBase(NodeBase):
|
||||||
|
|
||||||
def start_config_services(self) -> None:
|
def start_config_services(self) -> None:
|
||||||
"""
|
"""
|
||||||
Determins startup paths and starts configuration services, based on their
|
Determines startup paths and starts configuration services, based on their
|
||||||
dependency chains.
|
dependency chains.
|
||||||
|
|
||||||
:return: nothing
|
:return: nothing
|
||||||
|
@ -330,7 +330,6 @@ class CoreNodeBase(NodeBase):
|
||||||
preserve = self.session.options.get_config("preservedir") == "1"
|
preserve = self.session.options.get_config("preservedir") == "1"
|
||||||
if preserve:
|
if preserve:
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.tmpnodedir:
|
if self.tmpnodedir:
|
||||||
self.host_cmd(f"rm -rf {self.nodedir}")
|
self.host_cmd(f"rm -rf {self.nodedir}")
|
||||||
|
|
||||||
|
@ -503,16 +502,16 @@ class CoreNode(CoreNodeBase):
|
||||||
will run on, default is None for localhost
|
will run on, default is None for localhost
|
||||||
"""
|
"""
|
||||||
super().__init__(session, _id, name, start, server)
|
super().__init__(session, _id, name, start, server)
|
||||||
self.nodedir = nodedir
|
self.nodedir: Optional[str] = nodedir
|
||||||
self.ctrlchnlname = os.path.abspath(
|
self.ctrlchnlname: str = os.path.abspath(
|
||||||
os.path.join(self.session.session_dir, self.name)
|
os.path.join(self.session.session_dir, self.name)
|
||||||
)
|
)
|
||||||
self.client = None
|
self.client: Optional[VnodeClient] = None
|
||||||
self.pid = None
|
self.pid: Optional[int] = None
|
||||||
self.lock = threading.RLock()
|
self.lock: RLock = RLock()
|
||||||
self._mounts = []
|
self._mounts: List[Tuple[str, str]] = []
|
||||||
use_ovs = session.options.get_config("ovs") == "True"
|
use_ovs = session.options.get_config("ovs") == "True"
|
||||||
self.node_net_client = self.create_node_net_client(use_ovs)
|
self.node_net_client: LinuxNetClient = self.create_node_net_client(use_ovs)
|
||||||
if start:
|
if start:
|
||||||
self.startup()
|
self.startup()
|
||||||
|
|
||||||
|
@ -567,7 +566,7 @@ class CoreNode(CoreNodeBase):
|
||||||
logging.debug("node(%s) pid: %s", self.name, self.pid)
|
logging.debug("node(%s) pid: %s", self.name, self.pid)
|
||||||
|
|
||||||
# create vnode client
|
# create vnode client
|
||||||
self.client = client.VnodeClient(self.name, self.ctrlchnlname)
|
self.client = VnodeClient(self.name, self.ctrlchnlname)
|
||||||
|
|
||||||
# bring up the loopback interface
|
# bring up the loopback interface
|
||||||
logging.debug("bringing up loopback interface")
|
logging.debug("bringing up loopback interface")
|
||||||
|
@ -1201,12 +1200,12 @@ class Position:
|
||||||
:param y: y position
|
:param y: y position
|
||||||
:param z: z position
|
:param z: z position
|
||||||
"""
|
"""
|
||||||
self.x = x
|
self.x: float = x
|
||||||
self.y = y
|
self.y: float = y
|
||||||
self.z = z
|
self.z: float = z
|
||||||
self.lon = None
|
self.lon: Optional[float] = None
|
||||||
self.lat = None
|
self.lat: Optional[float] = None
|
||||||
self.alt = None
|
self.alt: Optional[float] = None
|
||||||
|
|
||||||
def set(self, x: float = None, y: float = None, z: float = None) -> bool:
|
def set(self, x: float = None, y: float = None, z: float = None) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Add table
Reference in a new issue