grpc added save/open xml, fixed session.get_node_count(), fixed issue with grpc get session options
This commit is contained in:
parent
0ccf5a7456
commit
0c20e76630
4 changed files with 145 additions and 62 deletions
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
import tempfile
|
||||
|
||||
from core.emulator.emudata import NodeOptions, InterfaceData, LinkOptions
|
||||
from core.enumerations import NodeTypes, EventTypes, LinkTypes
|
||||
|
@ -201,7 +202,10 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
|
|||
session = self.coreemu.sessions.get(request.id)
|
||||
|
||||
config = session.options.get_configs()
|
||||
groups = get_config_groups(config, session.options)
|
||||
defaults = session.options.default_values()
|
||||
defaults.update(config)
|
||||
|
||||
groups = get_config_groups(defaults, session.options)
|
||||
|
||||
response = core_pb2.SessionOptionsResponse()
|
||||
response.groups.extend(groups)
|
||||
|
@ -519,6 +523,41 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
|
|||
response.groups.extend(groups)
|
||||
return response
|
||||
|
||||
def SaveXml(self, request, context):
|
||||
session = self.coreemu.sessions.get(request.session)
|
||||
if not session:
|
||||
raise Exception("no session found")
|
||||
|
||||
_, temp_path = tempfile.mkstemp()
|
||||
session.save_xml(temp_path)
|
||||
|
||||
with open(temp_path, "rb") as xml_file:
|
||||
data = xml_file.read()
|
||||
|
||||
response = core_pb2.SaveXmlResponse()
|
||||
response.data = data
|
||||
return response
|
||||
|
||||
def OpenXml(self, request, context):
|
||||
session = self.coreemu.create_session()
|
||||
session.set_state(EventTypes.CONFIGURATION_STATE)
|
||||
|
||||
_, temp_path = tempfile.mkstemp()
|
||||
with open(temp_path, "wb") as xml_file:
|
||||
xml_file.write(request.data)
|
||||
|
||||
response = core_pb2.OpenXmlResponse()
|
||||
try:
|
||||
session.open_xml(temp_path, start=True)
|
||||
response.session = session.session_id
|
||||
response.result = True
|
||||
except:
|
||||
response.result = False
|
||||
logging.exception("error opening session file")
|
||||
self.coreemu.delete_session(session.session_id)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def listen(coreemu, address="[::]:50051"):
|
||||
logging.info("starting grpc api: %s", address)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue