grpc added get/set service defaults and get node service data

This commit is contained in:
bharnden 2019-03-14 22:33:10 -07:00
parent 0c20e76630
commit 5753c91906
3 changed files with 133 additions and 0 deletions

View file

@ -216,6 +216,29 @@ class CoreApiClient(object):
request = core_pb2.GetServicesRequest()
return self.stub.GetServices(request)
def get_service_defaults(self, session):
request = core_pb2.GetServiceDefaultsRequest()
request.session = session
return self.stub.GetServiceDefaults(request)
def set_service_defaults(self, session, service_defaults):
request = core_pb2.SetServiceDefaultsRequest()
request.session = session
for node_type in service_defaults:
services = service_defaults[node_type]
service_defaults_proto = request.defaults.add()
service_defaults_proto.node_type = node_type
service_defaults_proto.services.extend(services)
return self.stub.SetServiceDefaults(request)
def get_node_service(self, session, _id, service):
request = core_pb2.GetNodeServiceRequest()
request.session = session
request.id = _id
request.service = service
return self.stub.GetNodeService(request)
def get_emane_config(self, session):
request = core_pb2.GetEmaneConfigRequest()
request.session = session
@ -260,6 +283,8 @@ def main():
session_data = client.create_session()
print("created session: %s" % session_data)
print("default services: %s" % client.get_service_defaults(session_data.id))
response = client.get_sessions()
print("core client received: %s" % response)
@ -301,6 +326,8 @@ def main():
print("edit node: %s" % client.edit_node(session_data.id, node_id, node_options))
print("get node: %s" % client.get_node(session_data.id, node_id))
print("node service: %s" % client.get_node_service(session_data.id, node_id, "zebra"))
# create link
interface_one = InterfaceData(
_id=None, name=None, mac=None,

View file

@ -513,6 +513,55 @@ class CoreApiServer(core_pb2_grpc.CoreApiServicer):
service_proto.name = service.name
return response
def GetServiceDefaults(self, request, context):
session = self.coreemu.sessions.get(request.session)
if not session:
raise Exception("no session found")
response = core_pb2.GetServiceDefaultsResponse()
for node_type in session.services.default_services:
services = session.services.default_services[node_type]
service_defaults = response.defaults.add()
service_defaults.node_type = node_type
service_defaults.services.extend(services)
return response
def SetServiceDefaults(self, request, context):
session = self.coreemu.sessions.get(request.session)
if not session:
raise Exception("no session found")
session.services.default_services.clear()
for service_defaults in request.defaults:
session.services.default_services[service_defaults.node_type] = service_defaults.services
response = core_pb2.SetServiceDefaultsResponse()
response.result = True
return response
def GetNodeService(self, request, context):
session = self.coreemu.sessions.get(request.session)
if not session:
raise Exception("no session found")
node = session.get_object(request.id)
if not node:
raise Exception("no node found")
service = session.services.get_service(node.objid, request.service, default_service=True)
response = core_pb2.GetNodeServiceResponse()
response.service.executables.extend(service.executables)
response.service.dependencies.extend(service.dependencies)
response.service.dirs.extend(service.dirs)
response.service.configs.extend(service.configs)
response.service.startup.extend(service.startup)
response.service.validate.extend(service.validate)
response.service.validation_mode = service.validation_mode.value
response.service.validation_timer = service.validation_timer
response.service.shutdown.extend(service.shutdown)
if service.meta:
response.service.meta = service.meta
return response
def GetEmaneConfig(self, request, context):
session = self.coreemu.sessions.get(request.session)
if not session: