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:
Blake Harnden 2020-05-20 14:44:34 -07:00
parent 19ee367dc5
commit d5254e6a91
21 changed files with 149 additions and 126 deletions

View file

@ -41,6 +41,7 @@ from core.emulator.enumerations import (
)
from core.errors import CoreCommandError, CoreError
from core.location.mobility import BasicRangeModel
from core.nodes.base import CoreNodeBase, NodeBase
from core.nodes.network import WlanNode
from core.services.coreservices import ServiceManager, ServiceShim
@ -836,7 +837,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
return ()
try:
node = self.session.get_node(node_num)
node = self.session.get_node(node_num, CoreNodeBase)
# build common TLV items for reply
tlv_data = b""
@ -1228,7 +1229,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
if not node_id:
return replies
node = self.session.get_node(node_id)
node = self.session.get_node(node_id, CoreNodeBase)
if node is None:
logging.warning(
"request to configure service for unknown node %s", node_id
@ -1373,7 +1374,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
self.session.mobility.set_model_config(node_id, object_name, parsed_config)
if self.session.state == EventTypes.RUNTIME_STATE and parsed_config:
try:
node = self.session.get_node(node_id)
node = self.session.get_node(node_id, WlanNode)
if object_name == BasicRangeModel.name:
node.updatemodel(parsed_config)
except CoreError:
@ -1553,7 +1554,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
logging.debug("handling event %s at %s", event_type.name, time.ctime())
if event_type.value <= EventTypes.SHUTDOWN_STATE.value:
if node_id is not None:
node = self.session.get_node(node_id)
node = self.session.get_node(node_id, NodeBase)
# configure mobility models for WLAN added during runtime
if event_type == EventTypes.INSTANTIATION_STATE and isinstance(
@ -1647,7 +1648,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
name = event_data.name
try:
node = self.session.get_node(node_id)
node = self.session.get_node(node_id, CoreNodeBase)
except CoreError:
logging.warning(
"ignoring event for service '%s', unknown node '%s'", name, node_id
@ -1883,7 +1884,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
data_types = tuple(
repeat(ConfigDataTypes.STRING.value, len(ServiceShim.keys))
)
node = self.session.get_node(node_id)
node = self.session.get_node(node_id, CoreNodeBase)
values = ServiceShim.tovaluelist(node, service)
config_data = ConfigData(
message_type=0,