grpc: removed add session server, achieved with start session providing servers for session
This commit is contained in:
parent
7e6b87101b
commit
d40435fa68
6 changed files with 42 additions and 54 deletions
|
@ -307,6 +307,7 @@ class CoreGrpcClient:
|
|||
)
|
||||
config_service_configs.append(config_service_config)
|
||||
options = {k: v.value for k, v in session.options.items()}
|
||||
servers = [x.to_proto() for x in session.servers]
|
||||
request = core_pb2.StartSessionRequest(
|
||||
session_id=session.id,
|
||||
nodes=nodes,
|
||||
|
@ -325,6 +326,7 @@ class CoreGrpcClient:
|
|||
user=session.user,
|
||||
definition=definition,
|
||||
metadata=session.metadata,
|
||||
servers=servers,
|
||||
)
|
||||
response = self.stub.StartSession(request)
|
||||
return response.result, list(response.exceptions)
|
||||
|
@ -421,22 +423,6 @@ class CoreGrpcClient:
|
|||
response = self.stub.SetSessionState(request)
|
||||
return response.result
|
||||
|
||||
def add_session_server(self, session_id: int, name: str, host: str) -> bool:
|
||||
"""
|
||||
Add distributed session server.
|
||||
|
||||
:param session_id: id of session
|
||||
:param name: name of server to add
|
||||
:param host: host address to connect to
|
||||
:return: True for success, False otherwise
|
||||
:raises grpc.RpcError: when session doesn't exist
|
||||
"""
|
||||
request = core_pb2.AddSessionServerRequest(
|
||||
session_id=session_id, name=name, host=host
|
||||
)
|
||||
response = self.stub.AddSessionServer(request)
|
||||
return response.result
|
||||
|
||||
def alert(
|
||||
self,
|
||||
session_id: int,
|
||||
|
|
|
@ -244,6 +244,10 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
|||
session.options.set_config(key, value)
|
||||
session.metadata = dict(request.metadata)
|
||||
|
||||
# add servers
|
||||
for server in request.servers:
|
||||
session.distributed.add_server(server.name, server.host)
|
||||
|
||||
# location
|
||||
if request.HasField("location"):
|
||||
grpcutils.session_location(session, request.location)
|
||||
|
@ -477,6 +481,10 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
|||
config_service_configs = grpcutils.get_node_config_service_configs(session)
|
||||
session_file = str(session.file_path) if session.file_path else None
|
||||
options = get_config_options(session.options.get_configs(), session.options)
|
||||
servers = [
|
||||
core_pb2.Server(name=x.name, host=x.host)
|
||||
for x in session.distributed.servers.values()
|
||||
]
|
||||
session_proto = core_pb2.Session(
|
||||
id=session.id,
|
||||
state=session.state.value,
|
||||
|
@ -497,24 +505,10 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
|||
metadata=session.metadata,
|
||||
file=session_file,
|
||||
options=options,
|
||||
servers=servers,
|
||||
)
|
||||
return core_pb2.GetSessionResponse(session=session_proto)
|
||||
|
||||
def AddSessionServer(
|
||||
self, request: core_pb2.AddSessionServerRequest, context: ServicerContext
|
||||
) -> core_pb2.AddSessionServerResponse:
|
||||
"""
|
||||
Add distributed server to a session.
|
||||
|
||||
:param request: get-session
|
||||
request
|
||||
:param context: context object
|
||||
:return: add session server response
|
||||
"""
|
||||
session = self.get_session(request.session_id, context)
|
||||
session.distributed.add_server(request.name, request.host)
|
||||
return core_pb2.AddSessionServerResponse(result=True)
|
||||
|
||||
def SessionAlert(
|
||||
self, request: core_pb2.SessionAlertRequest, context: ServicerContext
|
||||
) -> core_pb2.SessionAlertResponse:
|
||||
|
|
|
@ -184,6 +184,19 @@ class ConfigServiceDefaults:
|
|||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Server:
|
||||
name: str
|
||||
host: str
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, proto: core_pb2.Server) -> "Server":
|
||||
return Server(name=proto.name, host=proto.host)
|
||||
|
||||
def to_proto(self) -> core_pb2.Server:
|
||||
return core_pb2.Server(name=self.name, host=self.host)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Service:
|
||||
group: str
|
||||
|
@ -775,6 +788,7 @@ class Session:
|
|||
metadata: Dict[str, str] = field(default_factory=dict)
|
||||
file: Path = None
|
||||
options: Dict[str, ConfigOption] = field(default_factory=dict)
|
||||
servers: List[Server] = field(default_factory=list)
|
||||
|
||||
@classmethod
|
||||
def from_proto(cls, proto: core_pb2.Session) -> "Session":
|
||||
|
@ -812,6 +826,7 @@ class Session:
|
|||
node.mobility_config = ConfigOption.from_dict(mapped_config.config)
|
||||
file_path = Path(proto.file) if proto.file else None
|
||||
options = ConfigOption.from_dict(proto.options)
|
||||
servers = [Server.from_proto(x) for x in proto.servers]
|
||||
return Session(
|
||||
id=proto.id,
|
||||
state=SessionState(proto.state),
|
||||
|
@ -827,6 +842,7 @@ class Session:
|
|||
metadata=dict(proto.metadata),
|
||||
file=file_path,
|
||||
options=options,
|
||||
servers=servers,
|
||||
)
|
||||
|
||||
def add_node(
|
||||
|
|
|
@ -28,6 +28,7 @@ from core.api.grpc.wrappers import (
|
|||
NodeServiceData,
|
||||
NodeType,
|
||||
Position,
|
||||
Server,
|
||||
ServiceConfig,
|
||||
ServiceFileConfig,
|
||||
Session,
|
||||
|
@ -433,10 +434,6 @@ class CoreClient:
|
|||
except grpc.RpcError as e:
|
||||
self.app.show_grpc_exception("Edit Node Error", e)
|
||||
|
||||
def send_servers(self) -> None:
|
||||
for server in self.servers.values():
|
||||
self.client.add_session_server(self.session.id, server.name, server.address)
|
||||
|
||||
def get_links(self, definition: bool = False) -> Tuple[List[Link], List[Link]]:
|
||||
if not definition:
|
||||
self.ifaces_manager.set_macs([x.link for x in self.links.values()])
|
||||
|
@ -457,10 +454,12 @@ class CoreClient:
|
|||
links, asym_links = self.get_links(definition)
|
||||
self.session.links = links
|
||||
self.session.metadata = self.get_metadata()
|
||||
self.session.servers.clear()
|
||||
for server in self.servers.values():
|
||||
self.session.servers.append(Server(name=server.name, host=server.address))
|
||||
result = False
|
||||
exceptions = []
|
||||
try:
|
||||
self.send_servers()
|
||||
result, exceptions = self.client.start_session(
|
||||
self.session, asym_links, definition
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue