diff --git a/perxis/extensions/extension_service.py b/perxis/extensions/extension_service.py index d6a0c71585ba03f103c5694c5001996a0a08a10b..198c7f454f7d126864baf6751217b2e5749934c3 100644 --- a/perxis/extensions/extension_service.py +++ b/perxis/extensions/extension_service.py @@ -41,6 +41,58 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): for client in self.clients or []: self.extension_setup.add_client(client) + def write_result_log(self, operation, request, response): + log_func = self.get_log_func_by_state(response.results[0].state) + + log_func( + "Результат %s расширения %s для окружения %s пространства %s: \r\n" + "State: %s\r\n" + "Msg: %s\r\n" + "Error: %s" % ( + operation, + self.extension_id, + request.env_id, + request.space_id, + response.results[0].state, + response.results[0].msg, + response.results[0].error + ) + ) + + def get_log_func_by_state(self, state): + if state == extension_pb2.ExtensionRequestResult.State.OK: + return self.logger.info + else: + return self.logger.error + + def ext_request_results_from_exception(self, e: Exception) -> extension_pb2.ExtensionRequestResult: + return [ + extension_pb2.ExtensionRequestResult( + extension=self.extension_id, + state=extension_pb2.ExtensionRequestResult.State.ERROR, + error=str(e), + msg=None + ) + ] + + def _Install(self, request: extension_pb2.InstallRequest, context): + errors_list = self.extension_setup.install( + request.space_id, request.env_id, request.force + ) + + response_state = extension_pb2.ExtensionRequestResult.State.OK \ + if not errors_list \ + else extension_pb2.ExtensionRequestResult.State.ERROR + + return extension_pb2.InstallResponse( + results=[extension_pb2.ExtensionRequestResult( + extension=self.extension_id, + state=response_state, + error="; ".join(errors_list) if errors_list else None, + msg="Ok" if not errors_list else None + )] + ) + def Install(self, request: extension_pb2.InstallRequest, context): self.logger.info( "Установка расширения %s для окружения %s пространства %s. %s force" % ( @@ -52,59 +104,37 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ) try: - errors_list = self.extension_setup.install( - request.space_id, request.env_id, request.force - ) - - if errors_list: - context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details("; ".join(errors_list)) - - response_state = extension_pb2.ExtensionRequestResult.State.OK \ - if not errors_list \ - else extension_pb2.ExtensionRequestResult.State.ERROR - + response = self._Install(request, context) + except Exception as e: response = extension_pb2.InstallResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=response_state, - error="; ".join(errors_list) if errors_list else None, - msg="Ok" if not errors_list else None - )] + results=self.ext_request_results_from_exception(e) ) - except Exception as e: + + if response.results[0].state != extension_pb2.ExtensionRequestResult.State.OK: context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details(str(e)) + context.set_details(response.results[0].error) - response = extension_pb2.InstallResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=extension_pb2.ExtensionRequestResult.State.ERROR, - error=str(e), - msg=None - )] - ) + self.write_result_log("установки", request, response) - if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK: - log_func = self.logger.info - else: - log_func = self.logger.error + return response - log_func( - "Результат установки расширения %s для окружения %s пространства %s: \r\n" - "State: %s\r\n" - "Msg: %s\r\n" - "Error: %s" % ( - self.extension_id, - request.env_id, - request.space_id, - response.results[0].state, - response.results[0].msg, - response.results[0].error - ) + def _Update(self, request: extension_pb2.UpdateRequest, context): + errors_list = self.extension_setup.update( + request.space_id, request.env_id, request.force ) - return response + response_state = extension_pb2.ExtensionRequestResult.State.OK \ + if not errors_list \ + else extension_pb2.ExtensionRequestResult.State.ERROR + + return extension_pb2.UpdateResponse( + results=[extension_pb2.ExtensionRequestResult( + extension=self.extension_id, + state=response_state, + error="; ".join(errors_list) if errors_list else None, + msg="Ok" if not errors_list else None + )] + ) def Update(self, request: extension_pb2.UpdateRequest, context): self.logger.info( @@ -117,60 +147,36 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ) try: - errors_list = self.extension_setup.update( - request.space_id, request.env_id, request.force + response = self._Update(request, context) + except Exception as e: + response = extension_pb2.UpdateResponse( + results=self.ext_request_results_from_exception(e) ) - if errors_list: - context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details("; ".join(errors_list)) + if response.results[0].state != extension_pb2.ExtensionRequestResult.State.OK: + context.set_code(grpc.StatusCode.UNKNOWN) + context.set_details(response.results[0].error) - response_state = extension_pb2.ExtensionRequestResult.State.OK \ - if not errors_list \ - else extension_pb2.ExtensionRequestResult.State.ERROR + self.write_result_log("обновления", request, response) - response = extension_pb2.UpdateResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=response_state, - error="; ".join(errors_list) if errors_list else None, - msg="Ok" if not errors_list else None - )] - ) - except Exception as e: - context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details(str(e)) + return response - response = extension_pb2.UpdateResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=extension_pb2.ExtensionRequestResult.State.ERROR, - error=str(e), - msg=None - )] - ) + def _Uninstall(self, request: extension_pb2.UninstallRequest, context): + errors_list: list[str] = self.extension_setup.uninstall(request.space_id, request.env_id, request.remove) - if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK: - log_func = self.logger.info - else: - log_func = self.logger.error + response_state = extension_pb2.ExtensionRequestResult.State.OK \ + if not errors_list \ + else extension_pb2.ExtensionRequestResult.State.ERROR - log_func( - "Результат обновления расширения %s для окружения %s пространства %s: \r\n" - "State: %s\r\n" - "Msg: %s\r\n" - "Error: %s" % ( - self.extension_id, - request.env_id, - request.space_id, - response.results[0].state, - response.results[0].msg, - response.results[0].error - ) + return extension_pb2.UninstallResponse( + results=[extension_pb2.ExtensionRequestResult( + extension=self.extension_id, + state=response_state, + error="; ".join(errors_list) if errors_list else None, + msg="Ok" if not errors_list else None + )] ) - return response - def Uninstall(self, request: extension_pb2.UninstallRequest, context): self.logger.info( "Удаление расширения %s для окружения %s пространства %s. %s remove" % ( @@ -182,54 +188,36 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ) try: - errors_list: list[str] = self.extension_setup.uninstall(request.space_id, request.env_id, request.remove) - - response_state = extension_pb2.ExtensionRequestResult.State.OK \ - if not errors_list \ - else extension_pb2.ExtensionRequestResult.State.ERROR - - response = extension_pb2.UninstallResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=response_state, - error="; ".join(errors_list) if errors_list else None, - msg="Ok" if not errors_list else None - )] - ) + response = self._Uninstall(request, context) except Exception as e: - context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details(str(e)) - response = extension_pb2.UninstallResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=extension_pb2.ExtensionRequestResult.State.ERROR, - error=str(e), - msg=None - )] + results=self.ext_request_results_from_exception(e) ) - if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK: - log_func = self.logger.info - else: - log_func = self.logger.error + if response.results[0].state != extension_pb2.ExtensionRequestResult.State.OK: + context.set_code(grpc.StatusCode.UNKNOWN) + context.set_details(response.results[0].error) - log_func( - "Результат удаления расширения %s для окружения %s пространства %s: \r\n" - "State: %s\r\n" - "Msg: %s\r\n" - "Error: %s" % ( - self.extension_id, - request.env_id, - request.space_id, - response.results[0].state, - response.results[0].msg, - response.results[0].error - ) - ) + self.write_result_log("удаления", request, response) return response + def _Check(self, request: extension_pb2.CheckRequest, context): + errors_list = self.extension_setup.check(request.space_id, request.env_id) + + response_state = extension_pb2.ExtensionRequestResult.State.OK \ + if not errors_list \ + else extension_pb2.ExtensionRequestResult.State.ERROR + + return extension_pb2.CheckResponse( + results=[extension_pb2.ExtensionRequestResult( + extension=self.extension_id, + state=response_state, + error="; ".join(errors_list) if errors_list else None, + msg="Ok" if not errors_list else None + )] + ) + def Check(self, request: extension_pb2.CheckRequest, context): self.logger.info( "Проверка расширения %s для окружения %s пространства %s" % ( @@ -240,55 +228,17 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ) try: - errors_list = self.extension_setup.check(request.space_id, request.env_id) - - if errors_list: - context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details("; ".join(errors_list)) - - response_state = extension_pb2.ExtensionRequestResult.State.OK \ - if not errors_list \ - else extension_pb2.ExtensionRequestResult.State.ERROR - - response = extension_pb2.CheckResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=response_state, - error="; ".join(errors_list) if errors_list else None, - msg="Ok" if not errors_list else None - )] - ) + response = self._Check(request, context) except Exception as e: - context.set_code(grpc.StatusCode.UNKNOWN) - context.set_details(str(e)) - response = extension_pb2.CheckResponse( - results=[extension_pb2.ExtensionRequestResult( - extension=self.extension_id, - state=extension_pb2.ExtensionRequestResult.State.ERROR, - error=str(e), - msg=None - )] + results=self.ext_request_results_from_exception(e) ) - if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK: - log_func = self.logger.info - else: - log_func = self.logger.error + if response.results[0].state != extension_pb2.ExtensionRequestResult.State.OK: + context.set_code(grpc.StatusCode.UNKNOWN) + context.set_details(response.results[0].error) - log_func( - "Результат проверки расширения %s для окружения %s пространства %s: \r\n" - "State: %s\r\n" - "Msg: %s\r\n" - "Error: %s" % ( - self.extension_id, - request.env_id, - request.space_id, - response.results[0].state, - response.results[0].msg, - response.results[0].error - ) - ) + self.write_result_log("проверки", request, response) return response