further updates to python docs and docs files

This commit is contained in:
Huy Pham 2019-09-13 11:07:04 -07:00
parent 2bfcc9ef24
commit 1843b5f709
6 changed files with 459 additions and 81 deletions

View file

@ -35,12 +35,27 @@ _INTERFACE_REGEX = re.compile(r"\d+")
def convert_value(value):
"""
Convert value into string.
:param value: value
:return: string conversion of the value
:rtype: str
"""
if value is not None:
value = str(value)
return value
# TODO add comments
def get_config_groups(config, configurable_options):
"""
???
:param core.config.Configuration config: configuration
:param core.config.ConfigurableOptions configurable_options: configurable options
:return:
"""
groups = []
config_options = []
@ -66,11 +81,13 @@ def get_config_groups(config, configurable_options):
return groups
# TODO add comments
def get_links(session, node):
"""
Get
:param session:
:param node:
:param core.emulator.Session session: node's section
:param core.nodes.base.CoreNode node: node to get links from
:return:
"""
links = []
@ -81,6 +98,14 @@ def get_links(session, node):
def get_emane_model_id(node_id, interface_id):
"""
Get EMANE model id
:param int node_id: node id
:param int interface_id: interface id
:return: EMANE model id
:rtype: int
"""
if interface_id >= 0:
return node_id * 1000 + interface_id
else:
@ -88,6 +113,14 @@ def get_emane_model_id(node_id, interface_id):
def convert_link(session, link_data):
"""
Convert link_data into core protobuf Link
:param core.emulator.session.Session session:
:param core.emulator.data.LinkData link_data:
:return: core protobuf Link
:rtype: core.api.grpc.core_pb2.Link
"""
interface_one = None
if link_data.interface1_id is not None:
node = session.get_node(link_data.node1_id)
@ -146,6 +179,7 @@ def convert_link(session, link_data):
)
# TODO add comments
def get_net_stats():
with open("/proc/net/dev", "r") as f:
data = f.readlines()[2:]
@ -162,7 +196,14 @@ def get_net_stats():
return stats
# TODO add comment
class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
"""
Create CoreGrpcServer instance
:param core.emulator.coreemu.CoreEmu coreemu: coreemu object
"""
def __init__(self, coreemu):
super(CoreGrpcServer, self).__init__()
self.coreemu = coreemu
@ -194,6 +235,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
self.server.stop(None)
def get_session(self, session_id, context):
"""
Retrieve session given the session id
:param int session_id: session id
:param grpc.ServicerContext context:
:return: session object that satisfies. If session not found then raise an exception.
:rtype: core.emulator.session.Session
"""
session = self.coreemu.sessions.get(session_id)
if not session:
context.abort(
@ -202,6 +251,15 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return session
def get_node(self, session, node_id, context):
"""
Retrieve node given session and node id
:param core.emulator.session.Session session: session that contains the node
:param int node_id: node id
:param grpc.ServicerContext context:
:return: node object that satisfies. If node not found then raise an exception.
:rtype: core.nodes.base.CoreNode
"""
try:
return session.get_node(node_id)
except KeyError:
@ -210,6 +268,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
)
def CreateSession(self, request, context):
"""
Create a session
:param core.api.grpc.core_pb2.CreateSessionRequest request: create-session request
:param grpc.ServicerContext context:
:return: a create-session response
:rtype: core.api.grpc.core_pb2.CreateSessionResponse
"""
logging.debug("create session: %s", request)
session = self.coreemu.create_session(request.session_id)
session.set_state(EventTypes.DEFINITION_STATE)
@ -220,11 +286,27 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
)
def DeleteSession(self, request, context):
"""
Delete the session
:param core.api.grpc.core_pb2.DeleteSessionRequest request: delete-session request
:param grpc.ServicerContext context: context object
:return: a delete-session response
:rtype: core.api.grpc.core_pb2.DeleteSessionResponse
"""
logging.debug("delete session: %s", request)
result = self.coreemu.delete_session(request.session_id)
return core_pb2.DeleteSessionResponse(result=result)
def GetSessions(self, request, context):
"""
Delete the session
:param core.api.grpc.core_pb2.GetSessionRequest request: get-session request
:param grpc.ServicerContext context: context object
:return: a delete-session response
:rtype: core.api.grpc.core_pb2.DeleteSessionResponse
"""
logging.debug("get sessions: %s", request)
sessions = []
for session_id in self.coreemu.sessions:
@ -236,6 +318,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetSessionsResponse(sessions=sessions)
def GetSessionLocation(self, request, context):
"""
Retrieve a requested session location
:param core.api.grpc.core_pb2.GetSessionLocationRequest request: get-session-location request
:param grpc.ServicerContext context: context object
:return: a get-session-location response
:rtype: core.api.grpc.core_pb2.GetSessionLocationResponse
"""
logging.debug("get session location: %s", request)
session = self.get_session(request.session_id, context)
x, y, z = session.location.refxyz
@ -246,6 +336,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
)
def SetSessionLocation(self, request, context):
"""
Set session location
:param core.api.grpc.core_pb2.SetSessionLocationRequest request: set-session-location request
:param grpc.ServicerContext context: context object
:return: a set-session-location-response
:rtype: core.api.grpc.core_pb2.SetSessionLocationResponse
"""
logging.debug("set session location: %s", request)
session = self.get_session(request.session_id, context)
session.location.refxyz = (
@ -260,6 +358,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetSessionLocationResponse(result=True)
def SetSessionState(self, request, context):
"""
Set session state
:param core.api.grpc.core_pb2.SetSessionStateRequest request: set-session-state request
:param grpc.ServicerContext context:context object
:return: set-session-state response
:rtype: core.api.grpc.core_pb2.SetSessionStateResponse
"""
logging.debug("set session state: %s", request)
session = self.get_session(request.session_id, context)
@ -284,6 +390,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetSessionStateResponse(result=result)
# TODO add comments
def GetSessionOptions(self, request, context):
logging.debug("get session options: %s", request)
session = self.get_session(request.session_id, context)
@ -293,6 +400,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
groups = get_config_groups(defaults, session.options)
return core_pb2.GetSessionOptionsResponse(groups=groups)
# TODO add comments
def SetSessionOptions(self, request, context):
logging.debug("set session options: %s", request)
session = self.get_session(request.session_id, context)
@ -301,6 +409,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetSessionOptionsResponse(result=True)
def GetSession(self, request, context):
"""
Retrieve requested session
:param core.api.grpc.core_pb2.GetSessionRequest request: get-session request
:param grpc.ServicerContext context: context object
:return: get-session response
:rtype: core.api.grpc.core_bp2.GetSessionResponse
"""
logging.debug("get session: %s", request)
session = self.get_session(request.session_id, context)
@ -345,6 +461,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
session_proto = core_pb2.Session(state=session.state, nodes=nodes, links=links)
return core_pb2.GetSessionResponse(session=session_proto)
# TODO add comments
def Events(self, request, context):
session = self.get_session(request.session_id, context)
queue = Queue()
@ -389,7 +506,15 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
session.event_handlers.remove(queue.put)
self._cancel_stream(context)
# TODO add comment
def _handle_node_event(self, event):
"""
Handle node event when there is a node event
:param event: an event in the event queue
:return: node event that contains node id, name, model, position, and services
:rtype: core.api.grpc.core_pb2.Node Event
"""
position = core_pb2.Position(x=event.x_position, y=event.y_position)
services = event.services or ""
services = services.split("|")
@ -402,7 +527,15 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
)
return core_pb2.NodeEvent(node=node_proto)
# TODO add comments
def _handle_link_event(self, event):
"""
Handle link event when there is a link event
:param event: an event from the event queue
:return: link event that has message type and link information
:rtype: core.api.grpc.core_pb2.LinkEvent
"""
interface_one = None
if event.interface1_id is not None:
interface_one = core_pb2.Interface(
@ -450,7 +583,15 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
)
return core_pb2.LinkEvent(message_type=event.message_type, link=link)
# TODO add comments
def _handle_session_event(self, event):
"""
Handle session event when there is a session event
:param event:
:return: session event
:rtype: core.api.grpc.core_pb2.SessionEvent
"""
event_time = event.time
if event_time is not None:
event_time = float(event_time)
@ -463,7 +604,15 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
session_id=event.session,
)
# TODO add comments
def _handle_config_event(self, event):
"""
Handle configuration event when there is configuration event
:param event:
:return: configuration event
:rtype: core.api.grpc.core_pb2.ConfigEvent
"""
session_id = None
if event.session is not None:
session_id = int(event.session)
@ -484,7 +633,12 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
data_types=event.data_types,
)
# TODO add comments
def _handle_exception_event(self, event):
"""
:param event:
:return:
"""
return core_pb2.ExceptionEvent(
node_id=event.node,
session_id=int(event.session),
@ -495,6 +649,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
opaque=event.opaque,
)
# TODO add comments
def _handle_file_event(self, event):
return core_pb2.FileEvent(
message_type=event.message_type,
@ -509,6 +664,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
compressed_data=event.compressed_data,
)
# TODO add comments
def Throughputs(self, request, context):
delay = 3
last_check = None
@ -561,6 +717,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
time.sleep(delay)
def AddNode(self, request, context):
"""
Add node to requested session
:param core.api.grpc.core_pb2.AddNodeRequest request: add-node request
:param grpc.ServicerContext context: context object
:return: add-node response
:rtype: core.api.grpc.core_pb2.AddNodeResponse
"""
logging.debug("add node: %s", request)
session = self.get_session(request.session_id, context)
@ -590,6 +754,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.AddNodeResponse(node_id=node.id)
def GetNode(self, request, context):
"""
Retrieve node
:param core.api.grpc.core_pb2.GetNodeRequest request: get-node request
:param grpc.ServicerContext context: context object
:return: get-node response
:rtype: core.api.grpc.core_pb2.GetNodeResponse
"""
logging.debug("get node: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -634,6 +806,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetNodeResponse(node=node_proto, interfaces=interfaces)
def EditNode(self, request, context):
"""
Edit node
:param core.api.grpc.core_bp2.EditNodeRequest request: edit-node request
:param grpc.ServicerContext context: context object
:return: edit-node response
:rtype: core.api.grpc.core_pb2.EditNodeResponse
"""
logging.debug("edit node: %s", request)
session = self.get_session(request.session_id, context)
node_id = request.node_id
@ -653,12 +833,26 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.EditNodeResponse(result=result)
def DeleteNode(self, request, context):
"""
Delete node
:param core.api.grpc.core_pb2.DeleteNodeRequest request: delete-node request
:param grpc.ServicerContext context: context object
:return: core.api.grpc.core_pb2.DeleteNodeResponse
"""
logging.debug("delete node: %s", request)
session = self.get_session(request.session_id, context)
result = session.delete_node(request.node_id)
return core_pb2.DeleteNodeResponse(result=result)
def NodeCommand(self, request, context):
"""
Run command on a node
:param core.api.grpc.core_pb2.NodeCommandRequest request: node-command request
:param grpc.ServicerContext context: context object
:return: core.api.grpc.core_pb2.NodeCommandResponse
"""
logging.debug("sending node command: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -666,6 +860,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.NodeCommandResponse(output=output)
def GetNodeTerminal(self, request, context):
"""
Retrieve terminal command string of a node
:param core.api.grpc.core_pb2.GetNodeTerminalRequest request: get-node-terminal request
:param grpc.ServicerContext context: context object
:return: get-node-terminal response
:rtype: core.api.grpc.core_bp2.GetNodeTerminalResponse
"""
logging.debug("getting node terminal: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -673,6 +875,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetNodeTerminalResponse(terminal=terminal)
def GetNodeLinks(self, request, context):
"""
Retrieve all links form a requested node
:param core.api.grpc.core_pb2.GetNodeLinksRequest request: get-node-links request
:param grpc.ServicerContext context: context object
:return: get-node-links response
:rtype: core.api.grpc.core_pb2.GetNodeLinksResponse
"""
logging.debug("get node links: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -680,6 +890,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetNodeLinksResponse(links=links)
def AddLink(self, request, context):
"""
Add link to a session
:param core.api.grpc.core_pb2.AddLinkRequest request: add-link request
:param grpc.ServicerContext context: context object
:return: add-link response
:rtype: core.api.grpc.AddLinkResponse
"""
logging.debug("add link: %s", request)
session = self.get_session(request.session_id, context)
@ -761,6 +979,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.AddLinkResponse(result=True)
def EditLink(self, request, context):
"""
Edit a link
:param core.api.grpc.core_pb2.EditLinkRequest request: edit-link request
:param grpc.ServicerContext context: context object
:return: edit-link response
:rtype: core.api.grpc.core_pb2.EditLinkResponse
"""
logging.debug("edit link: %s", request)
session = self.get_session(request.session_id, context)
node_one_id = request.node_one_id
@ -786,6 +1012,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.EditLinkResponse(result=True)
def DeleteLink(self, request, context):
"""
Delete a link
:param core.api.grpc.core_pb2.DeleteLinkRequest request: delete-link request
:param grpc.ServicerContext context: context object
:return: delete-link response
:rtype: core.api.grpc.core_pb2.DeleteLinkResponse
"""
logging.debug("delete link: %s", request)
session = self.get_session(request.session_id, context)
node_one_id = request.node_one_id
@ -809,6 +1043,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetHooksResponse(hooks=hooks)
def AddHook(self, request, context):
"""
Add hook to a session
:param core.api.grpc.core_pb2.AddHookRequest request: add-hook request
:param grpc.ServicerContext context: context object
:return: add-hook response
:rtype: core.api.grpc.core_pb2.AddHookResponse
"""
logging.debug("add hook: %s", request)
session = self.get_session(request.session_id, context)
hook = request.hook
@ -816,6 +1058,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.AddHookResponse(result=True)
def GetMobilityConfigs(self, request, context):
"""
Retrieve all mobility configurations from a session
:param core.api.grpc.core_pb2.GetMobilityConfigsRequest request: get-mobility-configurations request
:param grpc.ServicerContext context: context object
:return: get-mobility-configurations response that has a list of configurations
:rtype: core.api.grpc.core_pb2.GetMobilityConfigsResponse
"""
logging.debug("get mobility configs: %s", request)
session = self.get_session(request.session_id, context)
response = core_pb2.GetMobilityConfigsResponse()
@ -832,6 +1082,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return response
def GetMobilityConfig(self, request, context):
"""
Retrieve mobility configuration of a node
:param core.api.grpc.core_pb2.GetMobilityConfigRequest request: get-mobility-configuration request
:param grpc.ServicerContext context: context object
:return: get-mobility-configuration response
:rtype: core.api.grpc.core_pb2.GetMobilityConfigResponse
"""
logging.debug("get mobility config: %s", request)
session = self.get_session(request.session_id, context)
config = session.mobility.get_model_config(
@ -841,6 +1099,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetMobilityConfigResponse(groups=groups)
def SetMobilityConfig(self, request, context):
"""
Set mobility configuration of a node
:param core.api.grpc.core_pb2.SetMobilityConfigRequest request: set-mobility-configuration request
:param grpc.ServicerContext context: context object
:return: set-mobility-configuration response
"rtype" core.api.grpc.SetMobilityConfigResponse
"""
logging.debug("set mobility config: %s", request)
session = self.get_session(request.session_id, context)
session.mobility.set_model_config(
@ -849,6 +1115,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetMobilityConfigResponse(result=True)
def MobilityAction(self, request, context):
"""
Take mobility action whether to start, pause, stop or none of those
:param core.api.grpc.core_pb2.MobilityActionRequest request: mobility-action request
:param grpc.ServicerContext context: context object
:return: mobility-action response
:rtype: core.api.grpc.core_pb2.MobilityActionResponse
"""
logging.debug("mobility action: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -864,6 +1138,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.MobilityActionResponse(result=result)
def GetServices(self, request, context):
"""
Retrieve all the services that are running
:param core.api.grpc.core_pb2.GetServicesRequest request: get-service request
:param grpc.ServicerContext context: context object
:return: get-services response
:rtype: core.api.grpc.core_pb2.GetServicesResponse
"""
logging.debug("get services: %s", request)
services = []
for name in ServiceManager.services:
@ -873,6 +1155,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetServicesResponse(services=services)
def GetServiceDefaults(self, request, context):
"""
Retrieve all the default services of all node types in a session
:param core.api.grpc.core_pb2.GetServiceDefaultsRequest request: get-default-service request
:param grpc.ServicerContext context: context object
:return: get-service-defaults response about all the available default services
:rtype: core.api.grpc.core_pb2.GetServiceDefaultsResponse
"""
logging.debug("get service defaults: %s", request)
session = self.get_session(request.session_id, context)
all_service_defaults = []
@ -884,6 +1174,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
all_service_defaults.append(service_defaults)
return core_pb2.GetServiceDefaultsResponse(defaults=all_service_defaults)
# TODO add comments
def SetServiceDefaults(self, request, context):
logging.debug("set service defaults: %s", request)
session = self.get_session(request.session_id, context)
@ -895,6 +1186,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetServiceDefaultsResponse(result=True)
def GetNodeService(self, request, context):
"""
Retrieve a requested service from a node
:param core.api.grpc.core_pb2.GetNodeServiceRequest request: get-node-service request
:param grpc.ServicerContext context: context object
:return: get-node-service response about the requested service
:rtype: core.api.grpc.core_pb2.GetNodeServiceResponse
"""
logging.debug("get node service: %s", request)
session = self.get_session(request.session_id, context)
service = session.services.get_service(
@ -915,6 +1214,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetNodeServiceResponse(service=service_proto)
def GetNodeServiceFile(self, request, context):
"""
Retrieve a requested service file from a node
:param core.api.grpc.core_pb2.GetNodeServiceFileRequest request: get-node-service request
:param grpc.ServicerContext context: context object
:return: get-node-service response about the requested service
:rtype: core.api.grpc.core_pb2.GetNodeServiceFileResponse
"""
logging.debug("get node service file: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -931,6 +1238,15 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetNodeServiceFileResponse(data=file_data.data)
def SetNodeService(self, request, context):
"""
Set a node service for a node
:param core.api.grpc.core_pb2.SetNodeServiceRequest request: set-node-service request
that has info to set a node service
:param grpc.ServicerContext context: context object
:return: set-node-service response
:rtype: core.api.grpc.core_pb2.SetNodeServiceResponse
"""
logging.debug("set node service: %s", request)
session = self.get_session(request.session_id, context)
session.services.set_service(request.node_id, request.service)
@ -941,6 +1257,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetNodeServiceResponse(result=True)
def SetNodeServiceFile(self, request, context):
"""
Store the customized service file in the service config
:param core.api.grpc.core_pb2.SetNodeServiceFileRequest request: set-node-service-file request
:param grpc.ServicerContext context: context object
:return: set-node-service-file response
:rtype: core.api.grpc.core_pb2.SetNodeServiceFileResponse
"""
logging.debug("set node service file: %s", request)
session = self.get_session(request.session_id, context)
session.services.set_service_file(
@ -949,6 +1273,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetNodeServiceFileResponse(result=True)
def ServiceAction(self, request, context):
"""
Take action whether to start, stop, restart, validate the service or none of the above
:param core.api.grpc.core_pb2.ServiceActionRequest request: service-action request
:param grpcServicerContext context: context object
:return: service-action response about status of action
:rtype: core.api.grpc.core_pb2.ServiceActionResponse
"""
logging.debug("service action: %s", request)
session = self.get_session(request.session_id, context)
node = self.get_node(session, request.node_id, context)
@ -980,6 +1312,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.ServiceActionResponse(result=result)
def GetWlanConfig(self, request, context):
"""
Retrieve wireless-lan configuration of a node
:param core.api.grpc.core_pb2.GetWlanConfigRequest request: get-wlan-configuration request
:param context: core.api.grpc.core_pb2.GetWlanConfigResponse
:return: get-wlan-configuration response about the wlan configuration of a node
:rtype: core.api.grpc.core_pb2.GetWlanConfigResponse
"""
logging.debug("get wlan config: %s", request)
session = self.get_session(request.session_id, context)
config = session.mobility.get_model_config(
@ -989,6 +1329,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetWlanConfigResponse(groups=groups)
def SetWlanConfig(self, request, context):
"""
Set configuration data for a model
:param core.api.grpc.core_pb2.SetWlanConfigRequest request: set-wlan-configuration request
:param grpc.ServicerContext context: context object
:return: set-wlan-configuration response
:rtype: core.api.grpc.core_pb2.SetWlanConfigResponse
"""
logging.debug("set wlan config: %s", request)
session = self.get_session(request.session_id, context)
session.mobility.set_model_config(
@ -1000,6 +1348,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SetWlanConfigResponse(result=True)
def GetEmaneConfig(self, request, context):
"""
Retrieve EMANE configuration of a session
:param core.api.grpc.core_pb2.GetEmanConfigRequest request: get-EMANE-configuration request
:param grpc.ServicerContext context: context object
:return: get-EMANE-configuration response
:rtype: core.api.grpc.core_pb2.GetEmaneConfigResponse
"""
logging.debug("get emane config: %s", request)
session = self.get_session(request.session_id, context)
config = session.emane.get_configs()
@ -1007,13 +1363,29 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.GetEmaneConfigResponse(groups=groups)
def SetEmaneConfig(self, request, context):
"""
Set EMANE configuration of a session
:param core.api.grpc.core_pb2.SetEmaneConfigRequest request: set-EMANE-configuration request
:param grpc.ServicerContext context: context object
:return: set-EMANE-configuration response
:rtype: core.api.grpc.core_pb2.SetEmaneConfigResponse
"""
logging.debug("set emane config: %s", request)
session = self.get_session(request.session_id, context)
config = session.emane.get_configs()
config.update(request.config)
return core_pb2.SetEmaneConfigResponse(result=True)
# TODO add comment
def GetEmaneModels(self, request, context):
"""
Retrieve all the EMANE models in the session
:param request:
:param context:
:return:
"""
logging.debug("get emane models: %s", request)
session = self.get_session(request.session_id, context)
models = []
@ -1058,6 +1430,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return response
def SaveXml(self, request, context):
"""
Export the session nto the EmulationScript XML format
:param core.api.grpc.core_pb2.SaveXmlRequest request: save xml request
:param grpc SrvicerContext context: context object
:return: save-xml response
:rtype: core.api.grpc.core_pb2.SaveXmlResponse
"""
logging.debug("save xml: %s", request)
session = self.get_session(request.session_id, context)
@ -1070,6 +1450,14 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
return core_pb2.SaveXmlResponse(data=data)
def OpenXml(self, request, context):
"""
Import a session from the EmulationScript XML format
:param core.api.grpc.OpenXmlRequest request: open-xml request
:param grpc.ServicerContext context: context object
:return: Open-XML response or raise an exception if invalid XML file
:rtype: core.api.grpc.core_pb2.OpenXMLResponse
"""
logging.debug("open xml: %s", request)
session = self.coreemu.create_session()
session.set_state(EventTypes.CONFIGURATION_STATE)
@ -1086,6 +1474,7 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
self.coreemu.delete_session(session.id)
context.abort(grpc.StatusCode.INVALID_ARGUMENT, "invalid xml file")
# TODO add comment
def GetInterfaces(self, request, context):
interfaces = []
for interface in os.listdir("/sys/class/net"):

View file

@ -351,7 +351,7 @@ class ModelManager(ConfigurableManager):
def get_model_config(self, node_id, model_name):
"""
Set configuration data for a model.
Retrieve configuration data for a model.
:param int node_id: node id to set model configuration for
:param str model_name: model to set configuration for

View file

@ -210,7 +210,7 @@ class NodeBase(object):
:param flags: message flags
:return: list of link data
:rtype: core.data.LinkData
:rtype: [core.data.LinkData]
"""
return []
@ -1109,6 +1109,11 @@ class CoreNetworkBase(NodeBase):
"""
Build link data objects for this network. Each link object describes a link
between this network and a node.
:param int flags: message type
:return: list of link data
:rtype: [core.data.LinkData]
"""
all_links = []