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 grpc
import logging
from concurrent import futures from concurrent import futures
from perxis.collections import collections_pb2_grpc from perxis.collections import collections_pb2_grpc
...@@ -11,10 +12,16 @@ from perxis.interceptors import header_adder_interceptor ...@@ -11,10 +12,16 @@ from perxis.interceptors import header_adder_interceptor
from servicer import Servicer from servicer import Servicer
from constants.extension import get_extension_descriptor from constants.extension import get_extension_descriptor
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def main(): def main():
my_extension_descriptor = get_extension_descriptor(host="demo-ext-backend:50051") my_extension_descriptor = get_extension_descriptor(host="demo-ext-backend:50051")
logger.info(f"Инициализация сервиса расширения {my_extension_descriptor.extension}")
interceptor = header_adder_interceptor( interceptor = header_adder_interceptor(
'x-perxis-access', 'system' 'x-perxis-access', 'system'
) )
...@@ -34,10 +41,16 @@ def main(): ...@@ -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( ext_manager_stub.RegisterExtensions(manager_pb2.RegisterExtensionsRequest(
extensions=[my_extension_descriptor] extensions=[my_extension_descriptor]
)) ))
logger.info(f"Расширение {my_extension_descriptor.extension} зарегистрировано в perxis")
with grpc.insecure_channel("content:9020") as content_channel: with grpc.insecure_channel("content:9020") as content_channel:
intercepted_content_channel = grpc.intercept_channel(content_channel, interceptor) intercepted_content_channel = grpc.intercept_channel(content_channel, interceptor)
......
import grpc import grpc
import logging
from perxis.extensions import extension_pb2, extension_pb2_grpc from perxis.extensions import extension_pb2, extension_pb2_grpc
from perxis.roles import roles_pb2_grpc, roles_pb2 from perxis.roles import roles_pb2_grpc, roles_pb2
...@@ -20,6 +21,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -20,6 +21,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
roles_service: roles_pb2_grpc.RolesStub, roles_service: roles_pb2_grpc.RolesStub,
clients_service: clients_pb2_grpc.ClientsStub, clients_service: clients_pb2_grpc.ClientsStub,
): ):
self.logger = logging.getLogger(__name__)
self.collections_service = collections_service self.collections_service = collections_service
self.environments_service = environments_service self.environments_service = environments_service
self.roles_service = roles_service self.roles_service = roles_service
...@@ -40,6 +42,16 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -40,6 +42,16 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
self.extension_setup.add_client(client) self.extension_setup.add_client(client)
def Install(self, request: extension_pb2.InstallRequest, context): 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( errors_list = self.extension_setup.install(
request.space_id, request.env_id, request.force request.space_id, request.env_id, request.force
) )
...@@ -52,7 +64,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -52,7 +64,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
if not errors_list \ if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.InstallResponse( response = extension_pb2.InstallResponse(
results=[extension_pb2.ExtensionRequestResult( results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id, extension=self.extension_id,
state=response_state, state=response_state,
...@@ -60,8 +72,51 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -60,8 +72,51 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not 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))
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): 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( errors_list = self.extension_setup.update(
request.space_id, request.env_id, request.force request.space_id, request.env_id, request.force
) )
...@@ -74,7 +129,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -74,7 +129,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
if not errors_list \ if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.UpdateResponse( response = extension_pb2.UpdateResponse(
results=[extension_pb2.ExtensionRequestResult( results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id, extension=self.extension_id,
state=response_state, state=response_state,
...@@ -82,15 +137,58 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -82,15 +137,58 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not 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))
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): 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) errors_list: list[str] = self.extension_setup.uninstall(request.space_id, request.env_id, request.remove)
response_state = extension_pb2.ExtensionRequestResult.State.OK \ response_state = extension_pb2.ExtensionRequestResult.State.OK \
if not errors_list \ if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.UninstallResponse( response = extension_pb2.UninstallResponse(
results=[extension_pb2.ExtensionRequestResult( results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id, extension=self.extension_id,
state=response_state, state=response_state,
...@@ -98,8 +196,50 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -98,8 +196,50 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not 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))
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): 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) errors_list = self.extension_setup.check(request.space_id, request.env_id)
if errors_list: if errors_list:
...@@ -110,7 +250,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -110,7 +250,7 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
if not errors_list \ if not errors_list \
else extension_pb2.ExtensionRequestResult.State.ERROR else extension_pb2.ExtensionRequestResult.State.ERROR
return extension_pb2.CheckResponse( response = extension_pb2.CheckResponse(
results=[extension_pb2.ExtensionRequestResult( results=[extension_pb2.ExtensionRequestResult(
extension=self.extension_id, extension=self.extension_id,
state=response_state, state=response_state,
...@@ -118,6 +258,39 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer): ...@@ -118,6 +258,39 @@ class ExtensionService(extension_pb2_grpc.ExtensionServicer):
msg="Ok" if not 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))
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): def Action(self, request: extension_pb2.ActionRequest, context):
context.set_code(grpc.StatusCode.UNKNOWN) context.set_code(grpc.StatusCode.UNKNOWN)
......
...@@ -14,7 +14,7 @@ def load_requirements(): ...@@ -14,7 +14,7 @@ def load_requirements():
setup( setup(
name='perxis', name='perxis',
version='0.0.17', version='0.0.18',
description='Perxis python client', description='Perxis python client',
long_description=long_description, long_description=long_description,
long_description_content_type='text/markdown', 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