From b5f0a0271389462f7d98f3ccded1f4fe2b8f092c Mon Sep 17 00:00:00 2001 From: Fredrik Wrede Date: Wed, 4 Dec 2024 10:56:06 +0100 Subject: [PATCH] Bugfix/SK-1241 | Fix missing ROLE and TYPE in client status messages (#766) --- fedn/network/clients/client.py | 20 +-- fedn/network/clients/fedn_client.py | 24 +++- fedn/network/clients/grpc_handler.py | 12 +- fedn/network/combiner/combiner.py | 6 +- fedn/network/grpc/fedn.proto | 19 +-- fedn/network/grpc/fedn_pb2.py | 188 +++++++++++++-------------- 6 files changed, 143 insertions(+), 126 deletions(-) diff --git a/fedn/network/clients/client.py b/fedn/network/clients/client.py index 92731ccf3..77ba7f528 100644 --- a/fedn/network/clients/client.py +++ b/fedn/network/clients/client.py @@ -406,7 +406,7 @@ def _listen_to_task_stream(self): # Process training request self.send_status( "Received model update request.", - log_level=fedn.Status.AUDIT, + log_level=fedn.LogLevel.AUDIT, type=fedn.StatusType.MODEL_UPDATE_REQUEST, request=request, sesssion_id=request.session_id, @@ -641,7 +641,7 @@ def process_request(self): _ = self.combinerStub.SendModelUpdate(update, metadata=self.metadata) self.send_status( "Model update completed.", - log_level=fedn.Status.AUDIT, + log_level=fedn.LogLevel.AUDIT, type=fedn.StatusType.MODEL_UPDATE, request=update, sesssion_id=request.session_id, @@ -655,7 +655,7 @@ def process_request(self): logger.debug(e) else: self.send_status( - "Client {} failed to complete model update.", log_level=fedn.Status.WARNING, request=request, sesssion_id=request.session_id + "Client {} failed to complete model update.", log_level=fedn.LogLevel.WARNING, request=request, sesssion_id=request.session_id ) self.state = ClientState.idle @@ -683,7 +683,11 @@ def process_request(self): status_type = fedn.StatusType.MODEL_VALIDATION self.send_status( - "Model validation completed.", log_level=fedn.Status.AUDIT, type=status_type, request=validation, sesssion_id=request.session_id + "Model validation completed.", + log_level=fedn.LogLevel.AUDIT, + type=status_type, + request=validation, + sesssion_id=request.session_id, ) except grpc.RpcError as e: status_code = e.code() @@ -695,7 +699,7 @@ def process_request(self): else: self.send_status( "Client {} failed to complete model validation.".format(self.name), - log_level=fedn.Status.WARNING, + log_level=fedn.LogLevel.WARNING, request=request, sesssion_id=request.session_id, ) @@ -736,7 +740,7 @@ def process_request(self): _ = self.combinerStub.SendModelPrediction(prediction, metadata=self.metadata) status_type = fedn.StatusType.MODEL_PREDICTION self.send_status( - "Model prediction completed.", log_level=fedn.Status.AUDIT, type=status_type, request=prediction, sesssion_id=request.session_id + "Model prediction completed.", log_level=fedn.LogLevel.AUDIT, type=status_type, request=prediction, sesssion_id=request.session_id ) except grpc.RpcError as e: status_code = e.code() @@ -789,13 +793,13 @@ def _send_heartbeat(self, update_frequency=2.0): logger.info("SendStatus: Client disconnected.") return - def send_status(self, msg, log_level=fedn.Status.INFO, type=None, request=None, sesssion_id: str = None): + def send_status(self, msg, log_level=fedn.LogLevel.INFO, type=None, request=None, sesssion_id: str = None): """Send status message. :param msg: The message to send. :type msg: str :param log_level: The log level of the message. - :type log_level: fedn.Status.INFO, fedn.Status.WARNING, fedn.Status.ERROR + :type log_level: fedn.LogLevel.INFO, fedn.LogLevel.WARNING, fedn.LogLevel.ERROR :param type: The type of the message. :type type: str :param request: The request message. diff --git a/fedn/network/clients/fedn_client.py b/fedn/network/clients/fedn_client.py index dced3d2b5..c38347a7b 100644 --- a/fedn/network/clients/fedn_client.py +++ b/fedn/network/clients/fedn_client.py @@ -220,7 +220,13 @@ def update_local_model(self, request): logger.error("No train callback set") return - self.send_status(f"\t Starting processing of training request for model_id {model_id}", sesssion_id=request.session_id, sender_name=self.name) + self.send_status( + f"\t Starting processing of training request for model_id {model_id}", + sesssion_id=request.session_id, + sender_name=self.name, + log_level=fedn.LogLevel.INFO, + type=fedn.StatusType.MODEL_UPDATE, + ) logger.info(f"Running train callback with model ID: {model_id}") client_settings = json.loads(request.data).get("client_settings", {}) @@ -241,7 +247,7 @@ def update_local_model(self, request): self.send_status( "Model update completed.", - log_level=fedn.Status.AUDIT, + log_level=fedn.LogLevel.AUDIT, type=fedn.StatusType.MODEL_UPDATE, request=update, sesssion_id=request.session_id, @@ -251,7 +257,13 @@ def update_local_model(self, request): def validate_global_model(self, request): model_id = request.model_id - self.send_status(f"Processing validate request for model_id {model_id}", sesssion_id=request.session_id, sender_name=self.name) + self.send_status( + f"Processing validate request for model_id {model_id}", + sesssion_id=request.session_id, + sender_name=self.name, + log_level=fedn.LogLevel.INFO, + type=fedn.StatusType.MODEL_VALIDATION, + ) in_model = self.get_model_from_combiner(id=model_id, client_id=self.client_id) @@ -275,7 +287,7 @@ def validate_global_model(self, request): if result: self.send_status( "Model validation completed.", - log_level=fedn.Status.AUDIT, + log_level=fedn.LogLevel.AUDIT, type=fedn.StatusType.MODEL_VALIDATION, request=validation, sesssion_id=request.session_id, @@ -284,7 +296,7 @@ def validate_global_model(self, request): else: self.send_status( "Client {} failed to complete model validation.".format(self.name), - log_level=fedn.Status.WARNING, + log_level=fedn.LogLevel.WARNING, request=request, sesssion_id=request.session_id, sender_name=self.name, @@ -362,7 +374,7 @@ def get_model_from_combiner(self, id: str, client_id: str, timeout: int = 20) -> def send_model_to_combiner(self, model: BytesIO, id: str): return self.grpc_handler.send_model_to_combiner(model, id) - def send_status(self, msg: str, log_level=fedn.Status.INFO, type=None, request=None, sesssion_id: str = None, sender_name: str = None): + def send_status(self, msg: str, log_level=fedn.LogLevel.INFO, type=None, request=None, sesssion_id: str = None, sender_name: str = None): return self.grpc_handler.send_status(msg, log_level, type, request, sesssion_id, sender_name) def send_model_update(self, update: fedn.ModelUpdate) -> bool: diff --git a/fedn/network/clients/grpc_handler.py b/fedn/network/clients/grpc_handler.py index 898f3bb63..0f1d4b07e 100644 --- a/fedn/network/clients/grpc_handler.py +++ b/fedn/network/clients/grpc_handler.py @@ -164,9 +164,9 @@ def listen_to_task_stream(self, client_name: str, client_id: str, callback: Call for request in self.combinerStub.TaskStream(r, metadata=self.metadata): if request.sender.role == fedn.COMBINER: self.send_status( - "Received model update request.", - log_level=fedn.Status.AUDIT, - type=fedn.StatusType.MODEL_UPDATE_REQUEST, + "Received request from combiner.", + log_level=fedn.LogLevel.AUDIT, + type=request.type, request=request, sesssion_id=request.session_id, sender_name=client_name, @@ -183,13 +183,13 @@ def listen_to_task_stream(self, client_name: str, client_id: str, callback: Call logger.error(f"GRPC (TaskStream): An error occurred: {e}") self._handle_unknown_error(e, "TaskStream", lambda: self.listen_to_task_stream(client_name, client_id, callback)) - def send_status(self, msg: str, log_level=fedn.Status.INFO, type=None, request=None, sesssion_id: str = None, sender_name: str = None): + def send_status(self, msg: str, log_level=fedn.LogLevel.INFO, type=None, request=None, sesssion_id: str = None, sender_name: str = None): """Send status message. :param msg: The message to send. :type msg: str :param log_level: The log level of the message. - :type log_level: fedn.Status.INFO, fedn.Status.WARNING, fedn.Status.ERROR + :type log_level: fedn.LogLevel.INFO, fedn.LogLevel.WARNING, fedn.LogLevel.ERROR :param type: The type of the message. :type type: str :param request: The request message. @@ -198,7 +198,7 @@ def send_status(self, msg: str, log_level=fedn.Status.INFO, type=None, request=N status = fedn.Status() status.timestamp.GetCurrentTime() status.sender.name = sender_name - status.sender.role = fedn.WORKER + status.sender.role = fedn.Role.WORKER status.log_level = log_level status.status = str(msg) status.session_id = sesssion_id diff --git a/fedn/network/combiner/combiner.py b/fedn/network/combiner/combiner.py index 1801e785f..57c0a4452 100644 --- a/fedn/network/combiner/combiner.py +++ b/fedn/network/combiner/combiner.py @@ -668,9 +668,8 @@ def TaskStream(self, response, context): metadata = dict(metadata) logger.info("grpc.Combiner.TaskStream: Client connected: {}\n".format(metadata["client"])) - status = fedn.Status(status="Client {} connecting to TaskStream.".format(client.name)) + status = fedn.Status(status="Client {} connecting to TaskStream.".format(client.name), log_level=fedn.LogLevel.INFO, type=fedn.StatusType.NETWORK) logger.info("Client {} connecting to TaskStream.".format(client.name)) - status.log_level = fedn.Status.INFO status.timestamp.GetCurrentTime() self.__whoami(status.sender, self) @@ -724,7 +723,8 @@ def TaskStream(self, response, context): logger.error("Error in ModelUpdateRequestStream: {}".format(e)) logger.warning("Client {} disconnected from TaskStream".format(client.name)) status = fedn.Status(status="Client {} disconnected from TaskStream.".format(client.name)) - status.log_level = fedn.Status.INFO + status.log_level = fedn.LogLevel.INFO + status.type = fedn.StatusType.NETWORK status.timestamp.GetCurrentTime() self.__whoami(status.sender, self) self._send_status(status) diff --git a/fedn/network/grpc/fedn.proto b/fedn/network/grpc/fedn.proto index fb7c312f4..3594181ff 100644 --- a/fedn/network/grpc/fedn.proto +++ b/fedn/network/grpc/fedn.proto @@ -16,20 +16,21 @@ enum StatusType { MODEL_VALIDATION_REQUEST = 3; MODEL_VALIDATION = 4; MODEL_PREDICTION = 5; + NETWORK = 6; } +enum LogLevel { + NONE = 0; + INFO = 1; + DEBUG = 2; + WARNING = 3; + ERROR = 4; + AUDIT = 5; + } + message Status { Client sender = 1; string status = 2; - - enum LogLevel { - INFO = 0; - DEBUG = 1; - WARNING = 2; - ERROR = 3; - AUDIT = 4; - } - LogLevel log_level = 3; string data = 4; string correlation_id = 5; diff --git a/fedn/network/grpc/fedn_pb2.py b/fedn/network/grpc/fedn_pb2.py index 2e23c4b32..f5746672c 100644 --- a/fedn/network/grpc/fedn_pb2.py +++ b/fedn/network/grpc/fedn_pb2.py @@ -25,7 +25,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17network/grpc/fedn.proto\x12\x04\x66\x65\x64n\x1a\x1fgoogle/protobuf/timestamp.proto\":\n\x08Response\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08response\x18\x02 \x01(\t\"\xbc\x02\n\x06Status\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x0e\n\x06status\x18\x02 \x01(\t\x12(\n\tlog_level\x18\x03 \x01(\x0e\x32\x15.fedn.Status.LogLevel\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12-\n\ttimestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x04type\x18\x07 \x01(\x0e\x32\x10.fedn.StatusType\x12\r\n\x05\x65xtra\x18\x08 \x01(\t\x12\x12\n\nsession_id\x18\t \x01(\t\"B\n\x08LogLevel\x12\x08\n\x04INFO\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\x01\x12\x0b\n\x07WARNING\x10\x02\x12\t\n\x05\x45RROR\x10\x03\x12\t\n\x05\x41UDIT\x10\x04\"\xd8\x01\n\x0bTaskRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\t\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x12\n\nsession_id\x18\x08 \x01(\t\x12\x1e\n\x04type\x18\t \x01(\x0e\x32\x10.fedn.StatusType\"\xbf\x01\n\x0bModelUpdate\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x17\n\x0fmodel_update_id\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\t\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x0e\n\x06\x63onfig\x18\x08 \x01(\t\"\xd8\x01\n\x0fModelValidation\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12-\n\ttimestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x12\n\nsession_id\x18\x08 \x01(\t\"\xdb\x01\n\x0fModelPrediction\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12-\n\ttimestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x15\n\rprediction_id\x18\x08 \x01(\t\"\x89\x01\n\x0cModelRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\n\n\x02id\x18\x04 \x01(\t\x12!\n\x06status\x18\x05 \x01(\x0e\x32\x11.fedn.ModelStatus\"]\n\rModelResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\n\n\x02id\x18\x02 \x01(\t\x12!\n\x06status\x18\x03 \x01(\x0e\x32\x11.fedn.ModelStatus\x12\x0f\n\x07message\x18\x04 \x01(\t\"U\n\x15GetGlobalModelRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\"h\n\x16GetGlobalModelResponse\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\")\n\tHeartbeat\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\"W\n\x16\x43lientAvailableMessage\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\"P\n\x12ListClientsRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1c\n\x07\x63hannel\x18\x02 \x01(\x0e\x32\x0b.fedn.Queue\"*\n\nClientList\x12\x1c\n\x06\x63lient\x18\x01 \x03(\x0b\x32\x0c.fedn.Client\"C\n\x06\x43lient\x12\x18\n\x04role\x18\x01 \x01(\x0e\x32\n.fedn.Role\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tclient_id\x18\x03 \x01(\t\"m\n\x0fReassignRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x0e\n\x06server\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\r\"c\n\x10ReconnectRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x11\n\treconnect\x18\x03 \x01(\r\"\'\n\tParameter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"T\n\x0e\x43ontrolRequest\x12\x1e\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\r.fedn.Command\x12\"\n\tparameter\x18\x02 \x03(\x0b\x32\x0f.fedn.Parameter\"F\n\x0f\x43ontrolResponse\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\"\n\tparameter\x18\x02 \x03(\x0b\x32\x0f.fedn.Parameter\"\x13\n\x11\x43onnectionRequest\"<\n\x12\x43onnectionResponse\x12&\n\x06status\x18\x01 \x01(\x0e\x32\x16.fedn.ConnectionStatus\"1\n\x18ProvidedFunctionsRequest\x12\x15\n\rfunction_code\x18\x01 \x01(\t\"\xac\x01\n\x19ProvidedFunctionsResponse\x12T\n\x13\x61vailable_functions\x18\x01 \x03(\x0b\x32\x37.fedn.ProvidedFunctionsResponse.AvailableFunctionsEntry\x1a\x39\n\x17\x41vailableFunctionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\"#\n\x13\x43lientConfigRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"/\n\x14\x43lientConfigResponse\x12\x17\n\x0f\x63lient_settings\x18\x01 \x01(\t\",\n\x16\x43lientSelectionRequest\x12\x12\n\nclient_ids\x18\x01 \x01(\t\"-\n\x17\x43lientSelectionResponse\x12\x12\n\nclient_ids\x18\x01 \x01(\t\"8\n\x11\x43lientMetaRequest\x12\x10\n\x08metadata\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\"$\n\x12\x43lientMetaResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"-\n\x11StoreModelRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\n\n\x02id\x18\x02 \x01(\t\"$\n\x12StoreModelResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"\'\n\x12\x41ggregationRequest\x12\x11\n\taggregate\x18\x01 \x01(\t\"#\n\x13\x41ggregationResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c*\x8b\x01\n\nStatusType\x12\x07\n\x03LOG\x10\x00\x12\x18\n\x14MODEL_UPDATE_REQUEST\x10\x01\x12\x10\n\x0cMODEL_UPDATE\x10\x02\x12\x1c\n\x18MODEL_VALIDATION_REQUEST\x10\x03\x12\x14\n\x10MODEL_VALIDATION\x10\x04\x12\x14\n\x10MODEL_PREDICTION\x10\x05*$\n\x05Queue\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0e\n\nTASK_QUEUE\x10\x01*S\n\x0bModelStatus\x12\x06\n\x02OK\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x12\n\x0eIN_PROGRESS_OK\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\x0b\n\x07UNKNOWN\x10\x04*8\n\x04Role\x12\n\n\x06WORKER\x10\x00\x12\x0c\n\x08\x43OMBINER\x10\x01\x12\x0b\n\x07REDUCER\x10\x02\x12\t\n\x05OTHER\x10\x03*J\n\x07\x43ommand\x12\x08\n\x04IDLE\x10\x00\x12\t\n\x05START\x10\x01\x12\t\n\x05PAUSE\x10\x02\x12\x08\n\x04STOP\x10\x03\x12\t\n\x05RESET\x10\x04\x12\n\n\x06REPORT\x10\x05*I\n\x10\x43onnectionStatus\x12\x11\n\rNOT_ACCEPTING\x10\x00\x12\r\n\tACCEPTING\x10\x01\x12\x13\n\x0fTRY_AGAIN_LATER\x10\x02\x32z\n\x0cModelService\x12\x33\n\x06Upload\x12\x12.fedn.ModelRequest\x1a\x13.fedn.ModelResponse(\x01\x12\x35\n\x08\x44ownload\x12\x12.fedn.ModelRequest\x1a\x13.fedn.ModelResponse0\x01\x32\xbb\x02\n\x07\x43ontrol\x12\x34\n\x05Start\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12\x33\n\x04Stop\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12\x44\n\x15\x46lushAggregationQueue\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12<\n\rSetAggregator\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12\x41\n\x12SetServerFunctions\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse2V\n\x07Reducer\x12K\n\x0eGetGlobalModel\x12\x1b.fedn.GetGlobalModelRequest\x1a\x1c.fedn.GetGlobalModelResponse2\xab\x03\n\tConnector\x12\x44\n\x14\x41llianceStatusStream\x12\x1c.fedn.ClientAvailableMessage\x1a\x0c.fedn.Status0\x01\x12*\n\nSendStatus\x12\x0c.fedn.Status\x1a\x0e.fedn.Response\x12?\n\x11ListActiveClients\x12\x18.fedn.ListClientsRequest\x1a\x10.fedn.ClientList\x12\x45\n\x10\x41\x63\x63\x65ptingClients\x12\x17.fedn.ConnectionRequest\x1a\x18.fedn.ConnectionResponse\x12\x30\n\rSendHeartbeat\x12\x0f.fedn.Heartbeat\x1a\x0e.fedn.Response\x12\x37\n\x0eReassignClient\x12\x15.fedn.ReassignRequest\x1a\x0e.fedn.Response\x12\x39\n\x0fReconnectClient\x12\x16.fedn.ReconnectRequest\x1a\x0e.fedn.Response2\xfd\x01\n\x08\x43ombiner\x12?\n\nTaskStream\x12\x1c.fedn.ClientAvailableMessage\x1a\x11.fedn.TaskRequest0\x01\x12\x34\n\x0fSendModelUpdate\x12\x11.fedn.ModelUpdate\x1a\x0e.fedn.Response\x12<\n\x13SendModelValidation\x12\x15.fedn.ModelValidation\x1a\x0e.fedn.Response\x12<\n\x13SendModelPrediction\x12\x15.fedn.ModelPrediction\x1a\x0e.fedn.Response2\xec\x03\n\x0f\x46unctionService\x12Z\n\x17HandleProvidedFunctions\x12\x1e.fedn.ProvidedFunctionsRequest\x1a\x1f.fedn.ProvidedFunctionsResponse\x12M\n\x12HandleClientConfig\x12\x19.fedn.ClientConfigRequest\x1a\x1a.fedn.ClientConfigResponse(\x01\x12T\n\x15HandleClientSelection\x12\x1c.fedn.ClientSelectionRequest\x1a\x1d.fedn.ClientSelectionResponse\x12\x43\n\x0eHandleMetadata\x12\x17.fedn.ClientMetaRequest\x1a\x18.fedn.ClientMetaResponse\x12G\n\x10HandleStoreModel\x12\x17.fedn.StoreModelRequest\x1a\x18.fedn.StoreModelResponse(\x01\x12J\n\x11HandleAggregation\x12\x18.fedn.AggregationRequest\x1a\x19.fedn.AggregationResponse0\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17network/grpc/fedn.proto\x12\x04\x66\x65\x64n\x1a\x1fgoogle/protobuf/timestamp.proto\":\n\x08Response\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08response\x18\x02 \x01(\t\"\xf1\x01\n\x06Status\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x0e\n\x06status\x18\x02 \x01(\t\x12!\n\tlog_level\x18\x03 \x01(\x0e\x32\x0e.fedn.LogLevel\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12-\n\ttimestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x04type\x18\x07 \x01(\x0e\x32\x10.fedn.StatusType\x12\r\n\x05\x65xtra\x18\x08 \x01(\t\x12\x12\n\nsession_id\x18\t \x01(\t\"\xd8\x01\n\x0bTaskRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\t\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x12\n\nsession_id\x18\x08 \x01(\t\x12\x1e\n\x04type\x18\t \x01(\x0e\x32\x10.fedn.StatusType\"\xbf\x01\n\x0bModelUpdate\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x17\n\x0fmodel_update_id\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\t\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x0e\n\x06\x63onfig\x18\x08 \x01(\t\"\xd8\x01\n\x0fModelValidation\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12-\n\ttimestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x12\n\nsession_id\x18\x08 \x01(\t\"\xdb\x01\n\x0fModelPrediction\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x05 \x01(\t\x12-\n\ttimestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04meta\x18\x07 \x01(\t\x12\x15\n\rprediction_id\x18\x08 \x01(\t\"\x89\x01\n\x0cModelRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\n\n\x02id\x18\x04 \x01(\t\x12!\n\x06status\x18\x05 \x01(\x0e\x32\x11.fedn.ModelStatus\"]\n\rModelResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\n\n\x02id\x18\x02 \x01(\t\x12!\n\x06status\x18\x03 \x01(\x0e\x32\x11.fedn.ModelStatus\x12\x0f\n\x07message\x18\x04 \x01(\t\"U\n\x15GetGlobalModelRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\"h\n\x16GetGlobalModelResponse\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x10\n\x08model_id\x18\x03 \x01(\t\")\n\tHeartbeat\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\"W\n\x16\x43lientAvailableMessage\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\"P\n\x12ListClientsRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1c\n\x07\x63hannel\x18\x02 \x01(\x0e\x32\x0b.fedn.Queue\"*\n\nClientList\x12\x1c\n\x06\x63lient\x18\x01 \x03(\x0b\x32\x0c.fedn.Client\"C\n\x06\x43lient\x12\x18\n\x04role\x18\x01 \x01(\x0e\x32\n.fedn.Role\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tclient_id\x18\x03 \x01(\t\"m\n\x0fReassignRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x0e\n\x06server\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\r\"c\n\x10ReconnectRequest\x12\x1c\n\x06sender\x18\x01 \x01(\x0b\x32\x0c.fedn.Client\x12\x1e\n\x08receiver\x18\x02 \x01(\x0b\x32\x0c.fedn.Client\x12\x11\n\treconnect\x18\x03 \x01(\r\"\'\n\tParameter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"T\n\x0e\x43ontrolRequest\x12\x1e\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\r.fedn.Command\x12\"\n\tparameter\x18\x02 \x03(\x0b\x32\x0f.fedn.Parameter\"F\n\x0f\x43ontrolResponse\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\"\n\tparameter\x18\x02 \x03(\x0b\x32\x0f.fedn.Parameter\"\x13\n\x11\x43onnectionRequest\"<\n\x12\x43onnectionResponse\x12&\n\x06status\x18\x01 \x01(\x0e\x32\x16.fedn.ConnectionStatus\"1\n\x18ProvidedFunctionsRequest\x12\x15\n\rfunction_code\x18\x01 \x01(\t\"\xac\x01\n\x19ProvidedFunctionsResponse\x12T\n\x13\x61vailable_functions\x18\x01 \x03(\x0b\x32\x37.fedn.ProvidedFunctionsResponse.AvailableFunctionsEntry\x1a\x39\n\x17\x41vailableFunctionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\"#\n\x13\x43lientConfigRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"/\n\x14\x43lientConfigResponse\x12\x17\n\x0f\x63lient_settings\x18\x01 \x01(\t\",\n\x16\x43lientSelectionRequest\x12\x12\n\nclient_ids\x18\x01 \x01(\t\"-\n\x17\x43lientSelectionResponse\x12\x12\n\nclient_ids\x18\x01 \x01(\t\"8\n\x11\x43lientMetaRequest\x12\x10\n\x08metadata\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\"$\n\x12\x43lientMetaResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"-\n\x11StoreModelRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\n\n\x02id\x18\x02 \x01(\t\"$\n\x12StoreModelResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"\'\n\x12\x41ggregationRequest\x12\x11\n\taggregate\x18\x01 \x01(\t\"#\n\x13\x41ggregationResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c*\x98\x01\n\nStatusType\x12\x07\n\x03LOG\x10\x00\x12\x18\n\x14MODEL_UPDATE_REQUEST\x10\x01\x12\x10\n\x0cMODEL_UPDATE\x10\x02\x12\x1c\n\x18MODEL_VALIDATION_REQUEST\x10\x03\x12\x14\n\x10MODEL_VALIDATION\x10\x04\x12\x14\n\x10MODEL_PREDICTION\x10\x05\x12\x0b\n\x07NETWORK\x10\x06*L\n\x08LogLevel\x12\x08\n\x04NONE\x10\x00\x12\x08\n\x04INFO\x10\x01\x12\t\n\x05\x44\x45\x42UG\x10\x02\x12\x0b\n\x07WARNING\x10\x03\x12\t\n\x05\x45RROR\x10\x04\x12\t\n\x05\x41UDIT\x10\x05*$\n\x05Queue\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0e\n\nTASK_QUEUE\x10\x01*S\n\x0bModelStatus\x12\x06\n\x02OK\x10\x00\x12\x0f\n\x0bIN_PROGRESS\x10\x01\x12\x12\n\x0eIN_PROGRESS_OK\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\x0b\n\x07UNKNOWN\x10\x04*8\n\x04Role\x12\n\n\x06WORKER\x10\x00\x12\x0c\n\x08\x43OMBINER\x10\x01\x12\x0b\n\x07REDUCER\x10\x02\x12\t\n\x05OTHER\x10\x03*J\n\x07\x43ommand\x12\x08\n\x04IDLE\x10\x00\x12\t\n\x05START\x10\x01\x12\t\n\x05PAUSE\x10\x02\x12\x08\n\x04STOP\x10\x03\x12\t\n\x05RESET\x10\x04\x12\n\n\x06REPORT\x10\x05*I\n\x10\x43onnectionStatus\x12\x11\n\rNOT_ACCEPTING\x10\x00\x12\r\n\tACCEPTING\x10\x01\x12\x13\n\x0fTRY_AGAIN_LATER\x10\x02\x32z\n\x0cModelService\x12\x33\n\x06Upload\x12\x12.fedn.ModelRequest\x1a\x13.fedn.ModelResponse(\x01\x12\x35\n\x08\x44ownload\x12\x12.fedn.ModelRequest\x1a\x13.fedn.ModelResponse0\x01\x32\xbb\x02\n\x07\x43ontrol\x12\x34\n\x05Start\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12\x33\n\x04Stop\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12\x44\n\x15\x46lushAggregationQueue\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12<\n\rSetAggregator\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse\x12\x41\n\x12SetServerFunctions\x12\x14.fedn.ControlRequest\x1a\x15.fedn.ControlResponse2V\n\x07Reducer\x12K\n\x0eGetGlobalModel\x12\x1b.fedn.GetGlobalModelRequest\x1a\x1c.fedn.GetGlobalModelResponse2\xab\x03\n\tConnector\x12\x44\n\x14\x41llianceStatusStream\x12\x1c.fedn.ClientAvailableMessage\x1a\x0c.fedn.Status0\x01\x12*\n\nSendStatus\x12\x0c.fedn.Status\x1a\x0e.fedn.Response\x12?\n\x11ListActiveClients\x12\x18.fedn.ListClientsRequest\x1a\x10.fedn.ClientList\x12\x45\n\x10\x41\x63\x63\x65ptingClients\x12\x17.fedn.ConnectionRequest\x1a\x18.fedn.ConnectionResponse\x12\x30\n\rSendHeartbeat\x12\x0f.fedn.Heartbeat\x1a\x0e.fedn.Response\x12\x37\n\x0eReassignClient\x12\x15.fedn.ReassignRequest\x1a\x0e.fedn.Response\x12\x39\n\x0fReconnectClient\x12\x16.fedn.ReconnectRequest\x1a\x0e.fedn.Response2\xfd\x01\n\x08\x43ombiner\x12?\n\nTaskStream\x12\x1c.fedn.ClientAvailableMessage\x1a\x11.fedn.TaskRequest0\x01\x12\x34\n\x0fSendModelUpdate\x12\x11.fedn.ModelUpdate\x1a\x0e.fedn.Response\x12<\n\x13SendModelValidation\x12\x15.fedn.ModelValidation\x1a\x0e.fedn.Response\x12<\n\x13SendModelPrediction\x12\x15.fedn.ModelPrediction\x1a\x0e.fedn.Response2\xec\x03\n\x0f\x46unctionService\x12Z\n\x17HandleProvidedFunctions\x12\x1e.fedn.ProvidedFunctionsRequest\x1a\x1f.fedn.ProvidedFunctionsResponse\x12M\n\x12HandleClientConfig\x12\x19.fedn.ClientConfigRequest\x1a\x1a.fedn.ClientConfigResponse(\x01\x12T\n\x15HandleClientSelection\x12\x1c.fedn.ClientSelectionRequest\x1a\x1d.fedn.ClientSelectionResponse\x12\x43\n\x0eHandleMetadata\x12\x17.fedn.ClientMetaRequest\x1a\x18.fedn.ClientMetaResponse\x12G\n\x10HandleStoreModel\x12\x17.fedn.StoreModelRequest\x1a\x18.fedn.StoreModelResponse(\x01\x12J\n\x11HandleAggregation\x12\x18.fedn.AggregationRequest\x1a\x19.fedn.AggregationResponse0\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,100 +34,100 @@ DESCRIPTOR._loaded_options = None _globals['_PROVIDEDFUNCTIONSRESPONSE_AVAILABLEFUNCTIONSENTRY']._loaded_options = None _globals['_PROVIDEDFUNCTIONSRESPONSE_AVAILABLEFUNCTIONSENTRY']._serialized_options = b'8\001' - _globals['_STATUSTYPE']._serialized_start=3213 - _globals['_STATUSTYPE']._serialized_end=3352 - _globals['_QUEUE']._serialized_start=3354 - _globals['_QUEUE']._serialized_end=3390 - _globals['_MODELSTATUS']._serialized_start=3392 - _globals['_MODELSTATUS']._serialized_end=3475 - _globals['_ROLE']._serialized_start=3477 - _globals['_ROLE']._serialized_end=3533 - _globals['_COMMAND']._serialized_start=3535 - _globals['_COMMAND']._serialized_end=3609 - _globals['_CONNECTIONSTATUS']._serialized_start=3611 - _globals['_CONNECTIONSTATUS']._serialized_end=3684 + _globals['_STATUSTYPE']._serialized_start=3138 + _globals['_STATUSTYPE']._serialized_end=3290 + _globals['_LOGLEVEL']._serialized_start=3292 + _globals['_LOGLEVEL']._serialized_end=3368 + _globals['_QUEUE']._serialized_start=3370 + _globals['_QUEUE']._serialized_end=3406 + _globals['_MODELSTATUS']._serialized_start=3408 + _globals['_MODELSTATUS']._serialized_end=3491 + _globals['_ROLE']._serialized_start=3493 + _globals['_ROLE']._serialized_end=3549 + _globals['_COMMAND']._serialized_start=3551 + _globals['_COMMAND']._serialized_end=3625 + _globals['_CONNECTIONSTATUS']._serialized_start=3627 + _globals['_CONNECTIONSTATUS']._serialized_end=3700 _globals['_RESPONSE']._serialized_start=66 _globals['_RESPONSE']._serialized_end=124 _globals['_STATUS']._serialized_start=127 - _globals['_STATUS']._serialized_end=443 - _globals['_STATUS_LOGLEVEL']._serialized_start=377 - _globals['_STATUS_LOGLEVEL']._serialized_end=443 - _globals['_TASKREQUEST']._serialized_start=446 - _globals['_TASKREQUEST']._serialized_end=662 - _globals['_MODELUPDATE']._serialized_start=665 - _globals['_MODELUPDATE']._serialized_end=856 - _globals['_MODELVALIDATION']._serialized_start=859 - _globals['_MODELVALIDATION']._serialized_end=1075 - _globals['_MODELPREDICTION']._serialized_start=1078 - _globals['_MODELPREDICTION']._serialized_end=1297 - _globals['_MODELREQUEST']._serialized_start=1300 - _globals['_MODELREQUEST']._serialized_end=1437 - _globals['_MODELRESPONSE']._serialized_start=1439 - _globals['_MODELRESPONSE']._serialized_end=1532 - _globals['_GETGLOBALMODELREQUEST']._serialized_start=1534 - _globals['_GETGLOBALMODELREQUEST']._serialized_end=1619 - _globals['_GETGLOBALMODELRESPONSE']._serialized_start=1621 - _globals['_GETGLOBALMODELRESPONSE']._serialized_end=1725 - _globals['_HEARTBEAT']._serialized_start=1727 - _globals['_HEARTBEAT']._serialized_end=1768 - _globals['_CLIENTAVAILABLEMESSAGE']._serialized_start=1770 - _globals['_CLIENTAVAILABLEMESSAGE']._serialized_end=1857 - _globals['_LISTCLIENTSREQUEST']._serialized_start=1859 - _globals['_LISTCLIENTSREQUEST']._serialized_end=1939 - _globals['_CLIENTLIST']._serialized_start=1941 - _globals['_CLIENTLIST']._serialized_end=1983 - _globals['_CLIENT']._serialized_start=1985 - _globals['_CLIENT']._serialized_end=2052 - _globals['_REASSIGNREQUEST']._serialized_start=2054 - _globals['_REASSIGNREQUEST']._serialized_end=2163 - _globals['_RECONNECTREQUEST']._serialized_start=2165 - _globals['_RECONNECTREQUEST']._serialized_end=2264 - _globals['_PARAMETER']._serialized_start=2266 - _globals['_PARAMETER']._serialized_end=2305 - _globals['_CONTROLREQUEST']._serialized_start=2307 - _globals['_CONTROLREQUEST']._serialized_end=2391 - _globals['_CONTROLRESPONSE']._serialized_start=2393 - _globals['_CONTROLRESPONSE']._serialized_end=2463 - _globals['_CONNECTIONREQUEST']._serialized_start=2465 - _globals['_CONNECTIONREQUEST']._serialized_end=2484 - _globals['_CONNECTIONRESPONSE']._serialized_start=2486 - _globals['_CONNECTIONRESPONSE']._serialized_end=2546 - _globals['_PROVIDEDFUNCTIONSREQUEST']._serialized_start=2548 - _globals['_PROVIDEDFUNCTIONSREQUEST']._serialized_end=2597 - _globals['_PROVIDEDFUNCTIONSRESPONSE']._serialized_start=2600 - _globals['_PROVIDEDFUNCTIONSRESPONSE']._serialized_end=2772 - _globals['_PROVIDEDFUNCTIONSRESPONSE_AVAILABLEFUNCTIONSENTRY']._serialized_start=2715 - _globals['_PROVIDEDFUNCTIONSRESPONSE_AVAILABLEFUNCTIONSENTRY']._serialized_end=2772 - _globals['_CLIENTCONFIGREQUEST']._serialized_start=2774 - _globals['_CLIENTCONFIGREQUEST']._serialized_end=2809 - _globals['_CLIENTCONFIGRESPONSE']._serialized_start=2811 - _globals['_CLIENTCONFIGRESPONSE']._serialized_end=2858 - _globals['_CLIENTSELECTIONREQUEST']._serialized_start=2860 - _globals['_CLIENTSELECTIONREQUEST']._serialized_end=2904 - _globals['_CLIENTSELECTIONRESPONSE']._serialized_start=2906 - _globals['_CLIENTSELECTIONRESPONSE']._serialized_end=2951 - _globals['_CLIENTMETAREQUEST']._serialized_start=2953 - _globals['_CLIENTMETAREQUEST']._serialized_end=3009 - _globals['_CLIENTMETARESPONSE']._serialized_start=3011 - _globals['_CLIENTMETARESPONSE']._serialized_end=3047 - _globals['_STOREMODELREQUEST']._serialized_start=3049 - _globals['_STOREMODELREQUEST']._serialized_end=3094 - _globals['_STOREMODELRESPONSE']._serialized_start=3096 - _globals['_STOREMODELRESPONSE']._serialized_end=3132 - _globals['_AGGREGATIONREQUEST']._serialized_start=3134 - _globals['_AGGREGATIONREQUEST']._serialized_end=3173 - _globals['_AGGREGATIONRESPONSE']._serialized_start=3175 - _globals['_AGGREGATIONRESPONSE']._serialized_end=3210 - _globals['_MODELSERVICE']._serialized_start=3686 - _globals['_MODELSERVICE']._serialized_end=3808 - _globals['_CONTROL']._serialized_start=3811 - _globals['_CONTROL']._serialized_end=4126 - _globals['_REDUCER']._serialized_start=4128 - _globals['_REDUCER']._serialized_end=4214 - _globals['_CONNECTOR']._serialized_start=4217 - _globals['_CONNECTOR']._serialized_end=4644 - _globals['_COMBINER']._serialized_start=4647 - _globals['_COMBINER']._serialized_end=4900 - _globals['_FUNCTIONSERVICE']._serialized_start=4903 - _globals['_FUNCTIONSERVICE']._serialized_end=5395 + _globals['_STATUS']._serialized_end=368 + _globals['_TASKREQUEST']._serialized_start=371 + _globals['_TASKREQUEST']._serialized_end=587 + _globals['_MODELUPDATE']._serialized_start=590 + _globals['_MODELUPDATE']._serialized_end=781 + _globals['_MODELVALIDATION']._serialized_start=784 + _globals['_MODELVALIDATION']._serialized_end=1000 + _globals['_MODELPREDICTION']._serialized_start=1003 + _globals['_MODELPREDICTION']._serialized_end=1222 + _globals['_MODELREQUEST']._serialized_start=1225 + _globals['_MODELREQUEST']._serialized_end=1362 + _globals['_MODELRESPONSE']._serialized_start=1364 + _globals['_MODELRESPONSE']._serialized_end=1457 + _globals['_GETGLOBALMODELREQUEST']._serialized_start=1459 + _globals['_GETGLOBALMODELREQUEST']._serialized_end=1544 + _globals['_GETGLOBALMODELRESPONSE']._serialized_start=1546 + _globals['_GETGLOBALMODELRESPONSE']._serialized_end=1650 + _globals['_HEARTBEAT']._serialized_start=1652 + _globals['_HEARTBEAT']._serialized_end=1693 + _globals['_CLIENTAVAILABLEMESSAGE']._serialized_start=1695 + _globals['_CLIENTAVAILABLEMESSAGE']._serialized_end=1782 + _globals['_LISTCLIENTSREQUEST']._serialized_start=1784 + _globals['_LISTCLIENTSREQUEST']._serialized_end=1864 + _globals['_CLIENTLIST']._serialized_start=1866 + _globals['_CLIENTLIST']._serialized_end=1908 + _globals['_CLIENT']._serialized_start=1910 + _globals['_CLIENT']._serialized_end=1977 + _globals['_REASSIGNREQUEST']._serialized_start=1979 + _globals['_REASSIGNREQUEST']._serialized_end=2088 + _globals['_RECONNECTREQUEST']._serialized_start=2090 + _globals['_RECONNECTREQUEST']._serialized_end=2189 + _globals['_PARAMETER']._serialized_start=2191 + _globals['_PARAMETER']._serialized_end=2230 + _globals['_CONTROLREQUEST']._serialized_start=2232 + _globals['_CONTROLREQUEST']._serialized_end=2316 + _globals['_CONTROLRESPONSE']._serialized_start=2318 + _globals['_CONTROLRESPONSE']._serialized_end=2388 + _globals['_CONNECTIONREQUEST']._serialized_start=2390 + _globals['_CONNECTIONREQUEST']._serialized_end=2409 + _globals['_CONNECTIONRESPONSE']._serialized_start=2411 + _globals['_CONNECTIONRESPONSE']._serialized_end=2471 + _globals['_PROVIDEDFUNCTIONSREQUEST']._serialized_start=2473 + _globals['_PROVIDEDFUNCTIONSREQUEST']._serialized_end=2522 + _globals['_PROVIDEDFUNCTIONSRESPONSE']._serialized_start=2525 + _globals['_PROVIDEDFUNCTIONSRESPONSE']._serialized_end=2697 + _globals['_PROVIDEDFUNCTIONSRESPONSE_AVAILABLEFUNCTIONSENTRY']._serialized_start=2640 + _globals['_PROVIDEDFUNCTIONSRESPONSE_AVAILABLEFUNCTIONSENTRY']._serialized_end=2697 + _globals['_CLIENTCONFIGREQUEST']._serialized_start=2699 + _globals['_CLIENTCONFIGREQUEST']._serialized_end=2734 + _globals['_CLIENTCONFIGRESPONSE']._serialized_start=2736 + _globals['_CLIENTCONFIGRESPONSE']._serialized_end=2783 + _globals['_CLIENTSELECTIONREQUEST']._serialized_start=2785 + _globals['_CLIENTSELECTIONREQUEST']._serialized_end=2829 + _globals['_CLIENTSELECTIONRESPONSE']._serialized_start=2831 + _globals['_CLIENTSELECTIONRESPONSE']._serialized_end=2876 + _globals['_CLIENTMETAREQUEST']._serialized_start=2878 + _globals['_CLIENTMETAREQUEST']._serialized_end=2934 + _globals['_CLIENTMETARESPONSE']._serialized_start=2936 + _globals['_CLIENTMETARESPONSE']._serialized_end=2972 + _globals['_STOREMODELREQUEST']._serialized_start=2974 + _globals['_STOREMODELREQUEST']._serialized_end=3019 + _globals['_STOREMODELRESPONSE']._serialized_start=3021 + _globals['_STOREMODELRESPONSE']._serialized_end=3057 + _globals['_AGGREGATIONREQUEST']._serialized_start=3059 + _globals['_AGGREGATIONREQUEST']._serialized_end=3098 + _globals['_AGGREGATIONRESPONSE']._serialized_start=3100 + _globals['_AGGREGATIONRESPONSE']._serialized_end=3135 + _globals['_MODELSERVICE']._serialized_start=3702 + _globals['_MODELSERVICE']._serialized_end=3824 + _globals['_CONTROL']._serialized_start=3827 + _globals['_CONTROL']._serialized_end=4142 + _globals['_REDUCER']._serialized_start=4144 + _globals['_REDUCER']._serialized_end=4230 + _globals['_CONNECTOR']._serialized_start=4233 + _globals['_CONNECTOR']._serialized_end=4660 + _globals['_COMBINER']._serialized_start=4663 + _globals['_COMBINER']._serialized_end=4916 + _globals['_FUNCTIONSERVICE']._serialized_start=4919 + _globals['_FUNCTIONSERVICE']._serialized_end=5411 # @@protoc_insertion_point(module_scope)