Skip to content
Snippets Groups Projects
Commit 26a74b61 authored by Podosochnyy Maxim's avatar Podosochnyy Maxim
Browse files

Добавлено логгирование запросов

parent 59f9d25d
No related branches found
No related tags found
No related merge requests found
import grpc
import logging
from concurrent import futures
from perxis.collections import collections_pb2_grpc
......@@ -11,10 +12,16 @@ from perxis.interceptors import header_adder_interceptor
from servicer import Servicer
from constants.extension import get_extension_descriptor
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def main():
my_extension_descriptor = get_extension_descriptor(host="demo-ext-backend:50051")
logger.info(f"Инициализация сервиса расширения {my_extension_descriptor.extension}")
interceptor = header_adder_interceptor(
'x-perxis-access', 'system'
)
......@@ -34,10 +41,16 @@ def main():
)
)
logger.info(
f"Изменилась версия расширения {my_extension_descriptor.extension} ({ext.version} -> {my_extension_descriptor.version})"
)
ext_manager_stub.RegisterExtensions(manager_pb2.RegisterExtensionsRequest(
extensions=[my_extension_descriptor]
))
logger.info(f"Расширение {my_extension_descriptor.extension} зарегистрировано в perxis")
with grpc.insecure_channel("content:9020") as content_channel:
intercepted_content_channel = grpc.intercept_channel(content_channel, interceptor)
......
import grpc
import logging
from perxis.extensions import extension_pb2, extension_pb2_grpc
from perxis.roles import roles_pb2_grpc, roles_pb2
......@@ -20,6 +21,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
roles_service: roles_pb2_grpc.RolesStub,
clients_service: clients_pb2_grpc.ClientsStub,
):
self.logger = logging.getLogger(__name__)
self.collections_service = collections_service
self.environments_service = environments_service
self.roles_service = roles_service
......@@ -40,6 +42,16 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
self.extension_setup.add_client(client)
def Install(self, request: extension_pb2.InstallRequest, context):
self.logger.info(
"Установка расширения %s для окружения %s пространства %s. %s force" % (
self.extension_id,
request.env_id,
request.space_id,
"С" if request.force else "Без"
)
)
try:
errors_list = self.extension_setup.install(
request.space_id, request.env_id, request.force
)
......@@ -52,7 +64,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.InstallResponse(
response = extension_pb2.InstallResponse(
results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id,
state=response_state,
......@@ -60,8 +72,51 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not errors_list else None
)]
)
except Exception as e:
context.set_code(grpc.StatusCode.UNKNOWN)
context.set_details(str(e))
response = extension_pb2.InstallResponse(
results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id,
state=extension_pb2.ExtensionRequestResult.State.ERROR,
error=str(e),
msg=None
)]
)
if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK:
log_func = self.logger.info
else:
log_func = self.logger.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 response
def Update(self, request: extension_pb2.UpdateRequest, context):
self.logger.info(
"Обновление расширения %s для окружения %s пространства %s. %s force" % (
self.extension_id,
request.env_id,
request.space_id,
"С" if request.force else "Без"
)
)
try:
errors_list = self.extension_setup.update(
request.space_id, request.env_id, request.force
)
......@@ -74,7 +129,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.UpdateResponse(
response = extension_pb2.UpdateResponse(
results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id,
state=response_state,
......@@ -82,15 +137,58 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not errors_list else None
)]
)
except Exception as e:
context.set_code(grpc.StatusCode.UNKNOWN)
context.set_details(str(e))
response = extension_pb2.UpdateResponse(
results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id,
state=extension_pb2.ExtensionRequestResult.State.ERROR,
error=str(e),
msg=None
)]
)
if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK:
log_func = self.logger.info
else:
log_func = self.logger.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 response
def Uninstall(self, request: extension_pb2.UninstallRequest, context):
self.logger.info(
"Удаление расширения %s для окружения %s пространства %s. %s remove" % (
self.extension_id,
request.env_id,
request.space_id,
"С" if request.remove else "Без"
)
)
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
return extension_pb2.UninstallResponse(
response = extension_pb2.UninstallResponse(
results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id,
state=response_state,
......@@ -98,8 +196,50 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not errors_list else None
)]
)
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
)]
)
if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK:
log_func = self.logger.info
else:
log_func = self.logger.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 response
def Check(self, request: extension_pb2.CheckRequest, context):
self.logger.info(
"Проверка расширения %s для окружения %s пространства %s" % (
self.extension_id,
request.env_id,
request.space_id,
)
)
try:
errors_list = self.extension_setup.check(request.space_id, request.env_id)
if errors_list:
......@@ -110,7 +250,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.CheckResponse(
response = extension_pb2.CheckResponse(
results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id,
state=response_state,
......@@ -118,6 +258,39 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not errors_list else None
)]
)
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
)]
)
if response.results[0].state == extension_pb2.ExtensionRequestResult.State.OK:
log_func = self.logger.info
else:
log_func = self.logger.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 response
def Action(self, request: extension_pb2.ActionRequest, context):
context.set_code(grpc.StatusCode.UNKNOWN)
......
......@@ -14,7 +14,7 @@ def load_requirements():
setup(
name='perxis',
version='0.0.17',
version='0.0.18',
description='Perxis python client',
long_description=long_description,
long_description_content_type='text/markdown',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment