diff --git a/perxis/extensions/extension_service.py b/perxis/extensions/extension_service.py index fae7e7655f830b6a5d86bc7ee2fde698b024b814..664d11e409635a97a438394e45a26e28a31cdfa3 100644 --- a/perxis/extensions/extension_service.py +++ b/perxis/extensions/extension_service.py @@ -46,7 +46,11 @@ class OperationMeta: was_finished: bool = False metadata: dict[str, typing.Any] = dataclasses.field(default_factory=dict) - def finish(self, errors: typing.Optional[list[str]] = None): + def mark_cancelled(self): + self.was_finished = True + self.response = "Отменено" + + def mark_finished(self, errors: typing.Optional[list[str]] = None): self.modified_at = datetime.datetime.now() self.was_finished = True self.errors = errors @@ -191,7 +195,7 @@ class ExtensionService( self.result_log("установки", operation_id, request, errors_list) - self.__operations[operation_id].finish(errors_list) + self.__operations[operation_id].mark_finished(errors_list) async def Install(self, request: extension_service_pb2.InstallRequest, context): operation_id = generate_operation_id() @@ -215,7 +219,7 @@ class ExtensionService( self.result_log("удаления", operation_id, request, errors_list) - self.__operations[operation_id].finish(errors_list) + self.__operations[operation_id].mark_finished(errors_list) async def Uninstall(self, request: extension_service_pb2.UninstallRequest, context): operation_id = generate_operation_id() @@ -239,7 +243,7 @@ class ExtensionService( self.result_log("проверки", operation_id, request, errors_list) - self.__operations[operation_id].finish(errors_list) + self.__operations[operation_id].mark_finished(errors_list) async def Check(self, request: extension_service_pb2.CheckRequest, context): operation_id = generate_operation_id() @@ -262,7 +266,7 @@ class ExtensionService( return None async def Get(self, request: operation_service_pb2.GetOperationRequest, context): - operations_meta = self.__operations.get(request.operation_id) + operations_meta = self.get_operation_meta(request.operation_id) if not operations_meta: error_description = "Ошибка проверки операции %s в расширении %s - не найдена" % ( @@ -287,7 +291,7 @@ class ExtensionService( return operations_meta.to_operation() def Cancel(self, request: operation_service_pb2.CancelOperationRequest, context): - operations_meta = self.__operations.get(request.operation_id) + operations_meta = self.get_operation_meta(request.operation_id) if not operations_meta: error_description = "Не удалось удалить операцию %s в расширении %s - не найдена" % ( @@ -306,8 +310,7 @@ class ExtensionService( try: operations_meta.task.cancel() - - operations_meta.response = "Отменено" + operations_meta.mark_cancelled() except Exception as e: error_description = "Во время отмены операции %s расширении %s произошла ошибка %s" % ( request.operation_id,