changes to support better type checking for retrieving an arbitrary node from a session, get_node now requires an expected class that the node would be an instance of, if the returned node is not an instance a CoreError is thrown, this also helps editors pick up expected types to account for variable/function usage better as well
This commit is contained in:
parent
19ee367dc5
commit
d5254e6a91
21 changed files with 149 additions and 126 deletions
|
@ -10,7 +10,7 @@ from core.emulator.data import LinkData
|
|||
from core.emulator.emudata import InterfaceData, LinkOptions, NodeOptions
|
||||
from core.emulator.enumerations import EventTypes, NodeTypes
|
||||
from core.errors import CoreXmlError
|
||||
from core.nodes.base import CoreNetworkBase, CoreNodeBase, NodeBase
|
||||
from core.nodes.base import CoreNodeBase, NodeBase
|
||||
from core.nodes.docker import DockerNode
|
||||
from core.nodes.lxd import LxcNode
|
||||
from core.nodes.network import CtrlNet, WlanNode
|
||||
|
@ -505,9 +505,9 @@ class CoreXmlWriter:
|
|||
ip6_mask: int,
|
||||
) -> etree.Element:
|
||||
interface = etree.Element(element_name)
|
||||
node = self.session.get_node(node_id)
|
||||
node = self.session.get_node(node_id, NodeBase)
|
||||
interface_name = None
|
||||
if not isinstance(node, CoreNetworkBase):
|
||||
if isinstance(node, CoreNodeBase):
|
||||
node_interface = node.netif(interface_id)
|
||||
interface_name = node_interface.name
|
||||
|
||||
|
@ -523,7 +523,6 @@ class CoreXmlWriter:
|
|||
add_attribute(interface, "ip4_mask", ip4_mask)
|
||||
add_attribute(interface, "ip6", ip6)
|
||||
add_attribute(interface, "ip6_mask", ip6_mask)
|
||||
|
||||
return interface
|
||||
|
||||
def create_link_element(self, link_data: LinkData) -> etree.Element:
|
||||
|
@ -560,8 +559,8 @@ class CoreXmlWriter:
|
|||
link_element.append(interface_two)
|
||||
|
||||
# check for options, don't write for emane/wlan links
|
||||
node_one = self.session.get_node(link_data.node1_id)
|
||||
node_two = self.session.get_node(link_data.node2_id)
|
||||
node_one = self.session.get_node(link_data.node1_id, NodeBase)
|
||||
node_two = self.session.get_node(link_data.node2_id, NodeBase)
|
||||
is_node_one_wireless = isinstance(node_one, (WlanNode, EmaneNet))
|
||||
is_node_two_wireless = isinstance(node_two, (WlanNode, EmaneNet))
|
||||
if not any([is_node_one_wireless, is_node_two_wireless]):
|
||||
|
@ -902,7 +901,7 @@ class CoreXmlReader:
|
|||
for configservice_element in configservice_configs.iterchildren():
|
||||
name = configservice_element.get("name")
|
||||
node_id = get_int(configservice_element, "node")
|
||||
node = self.session.get_node(node_id)
|
||||
node = self.session.get_node(node_id, CoreNodeBase)
|
||||
service = node.config_services[name]
|
||||
|
||||
configs_element = configservice_element.find("configs")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue