added session/node dir to grpc responses and node channels, updating route monitor to use grpc for getting session/node information

This commit is contained in:
Blake Harnden 2020-04-06 15:46:47 -07:00
parent 2750a69e79
commit 0742c08b59
3 changed files with 45 additions and 34 deletions

View file

@ -111,7 +111,7 @@ from core.emulator.enumerations import EventTypes, LinkTypes, MessageFlags
from core.emulator.session import Session
from core.errors import CoreCommandError, CoreError
from core.location.mobility import BasicRangeModel, Ns2ScriptedMobility
from core.nodes.base import CoreNodeBase, NodeBase
from core.nodes.base import CoreNode, CoreNodeBase, NodeBase
from core.nodes.docker import DockerNode
from core.nodes.lxd import LxcNode
from core.services.coreservices import ServiceManager
@ -373,6 +373,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
state=session.state.value,
nodes=session.get_node_count(),
file=session.file_name,
dir=session.session_dir,
)
sessions.append(session_summary)
return core_pb2.GetSessionsResponse(sessions=sessions)
@ -543,7 +544,6 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
node = session.nodes[_id]
if not isinstance(node.id, int):
continue
node_type = session.get_node_type(node.__class__)
model = getattr(node, "type", None)
position = core_pb2.Position(
@ -558,8 +558,12 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
emane_model = None
if isinstance(node, EmaneNet):
emane_model = node.model.name
node_dir = None
channel = None
if isinstance(node, CoreNode):
node_dir = node.nodedir
channel = node.ctrlchnlname
image = getattr(node, "image", None)
node_proto = core_pb2.Node(
id=node.id,
name=node.name,
@ -571,16 +575,17 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
icon=node.icon,
image=image,
config_services=config_services,
dir=node_dir,
channel=channel,
)
if isinstance(node, (DockerNode, LxcNode)):
node_proto.image = node.image
nodes.append(node_proto)
node_links = get_links(session, node)
links.extend(node_links)
session_proto = core_pb2.Session(
state=session.state.value, nodes=nodes, links=links
state=session.state.value, nodes=nodes, links=links, dir=session.session_dir
)
return core_pb2.GetSessionResponse(session=session_proto)
@ -713,21 +718,22 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
logging.debug("get node: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
interfaces = []
for interface_id in node._netif:
interface = node._netif[interface_id]
interface_proto = grpcutils.interface_to_proto(interface)
interfaces.append(interface_proto)
emane_model = None
if isinstance(node, EmaneNet):
emane_model = node.model.name
node_dir = None
channel = None
if isinstance(node, CoreNode):
node_dir = node.nodedir
channel = node.ctrlchnlname
services = []
if node.services:
services = [x.name for x in node.services]
position = core_pb2.Position(
x=node.position.x, y=node.position.y, z=node.position.z
)
@ -740,10 +746,11 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
model=node.type,
position=position,
services=services,
dir=node_dir,
channel=channel,
)
if isinstance(node, (DockerNode, LxcNode)):
node_proto.image = node.image
return core_pb2.GetNodeResponse(node=node_proto, interfaces=interfaces)
def EditNode(