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

Удален лишний код, исправлена ошибка в методе update

parent 747cf8a1
No related branches found
No related tags found
1 merge request!35Удален лишний код, исправлена ошибка в методе update
...@@ -11,7 +11,7 @@ ARG PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL} ...@@ -11,7 +11,7 @@ ARG PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
ENV PIP_EXTRA_INDEX_URL=$PIP_EXTRA_INDEX_URL ENV PIP_EXTRA_INDEX_URL=$PIP_EXTRA_INDEX_URL
COPY . /home/${USER}/app COPY . /home/${USER}/app
RUN pip install perxis==0.0.14 RUN pip install perxis==0.0.15
ENV PYTHONPATH="/home/perx/app" ENV PYTHONPATH="/home/perx/app"
ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
......
schemes_mapping = { schemes_mapping = {
"test_collection": "Тестовая коллекция", "test_collection": "Тестовая коллекция",
"another_test_collection": "Ещё Тестовая коллекция",
} }
# TODO: убрать дублирование кода. На момент написания сервиса ещё не было версии пакета с perxis-python в которую входил
# TODO: бы написанный ниже код. Удалить после того как станет не нужно
import grpc
import collections
from typing import Optional
from perxis.collections import collections_pb2
from perxis.extensions import manager_pb2
def make_descriptor(
extension_id: str, name: str, description: str,
version: str, version_description: str, host: str,
dependencies: Optional[list[str]] = None
) -> manager_pb2.ExtensionDescriptor:
if dependencies is None:
dependencies = []
return manager_pb2.ExtensionDescriptor(
extension=extension_id,
title=name,
description=description,
version=version,
version_description=version_description,
deps=dependencies,
url=host
)
def make_collection_instances(schemes_dir: str, schemes_mapping: dict[str, str]) -> list[collections_pb2.Collection]:
collections = []
for collection_id, collection_name in schemes_mapping.items():
with open(f"{schemes_dir}/{collection_id}.json", "r") as file:
collection_schema = file.read()
collection = collections_pb2.Collection(
id=collection_id,
name=collection_name,
schema=collection_schema
)
collections.append(collection)
return collections
class _GenericClientInterceptor(grpc.UnaryUnaryClientInterceptor,
grpc.UnaryStreamClientInterceptor,
grpc.StreamUnaryClientInterceptor,
grpc.StreamStreamClientInterceptor):
def __init__(self, interceptor_function):
self._fn = interceptor_function
def intercept_unary_unary(self, continuation, client_call_details, request):
new_details, new_request_iterator, postprocess = self._fn(
client_call_details, iter((request,)), False, False)
response = continuation(new_details, next(new_request_iterator))
return postprocess(response) if postprocess else response
def intercept_unary_stream(self, continuation, client_call_details,
request):
new_details, new_request_iterator, postprocess = self._fn(
client_call_details, iter((request,)), False, True)
response_it = continuation(new_details, next(new_request_iterator))
return postprocess(response_it) if postprocess else response_it
def intercept_stream_unary(self, continuation, client_call_details,
request_iterator):
new_details, new_request_iterator, postprocess = self._fn(
client_call_details, request_iterator, True, False)
response = continuation(new_details, new_request_iterator)
return postprocess(response) if postprocess else response
def intercept_stream_stream(self, continuation, client_call_details,
request_iterator):
new_details, new_request_iterator, postprocess = self._fn(
client_call_details, request_iterator, True, True)
response_it = continuation(new_details, new_request_iterator)
return postprocess(response_it) if postprocess else response_it
def create(intercept_call):
return _GenericClientInterceptor(intercept_call)
class _ClientCallDetails(
collections.namedtuple(
'_ClientCallDetails',
('method', 'timeout', 'metadata', 'credentials')),
grpc.ClientCallDetails):
pass
def header_adder_interceptor(header, value):
def intercept_call(client_call_details, request_iterator, request_streaming,
response_streaming):
metadata = []
if client_call_details.metadata is not None:
metadata = list(client_call_details.metadata)
metadata.append((
header,
value,
))
client_call_details = _ClientCallDetails(
client_call_details.method, client_call_details.timeout, metadata,
client_call_details.credentials)
return client_call_details, request_iterator, None
return create(intercept_call)
\ No newline at end of file
...@@ -6,9 +6,9 @@ from perxis.environments import environments_pb2_grpc ...@@ -6,9 +6,9 @@ from perxis.environments import environments_pb2_grpc
from perxis.roles import roles_pb2_grpc from perxis.roles import roles_pb2_grpc
from perxis.clients import clients_pb2_grpc from perxis.clients import clients_pb2_grpc
from perxis.extensions import extension_pb2_grpc, manager_pb2_grpc, manager_pb2 from perxis.extensions import extension_pb2_grpc, manager_pb2_grpc, manager_pb2
from perxis.interceptors import header_adder_interceptor
from servicer import Servicer from servicer import Servicer
from helpers import header_adder_interceptor
from constants.extension import get_extension_descriptor from constants.extension import get_extension_descriptor
......
from constants import extension from constants import extension
from helpers import make_collection_instances
from constants import collections from constants import collections
from perxis.extensions.extension_service import ExtensionService from perxis.extensions.extension_service import ExtensionService
from perxis.collections import helpers as collections_helpers
from perxis.roles import roles_pb2 from perxis.roles import roles_pb2
from perxis.common import common_pb2 from perxis.common import common_pb2
from perxis.clients import clients_pb2 from perxis.clients import clients_pb2
...@@ -11,7 +11,7 @@ from perxis.clients import clients_pb2 ...@@ -11,7 +11,7 @@ from perxis.clients import clients_pb2
class Servicer(ExtensionService): class Servicer(ExtensionService):
extension_id = extension.ID extension_id = extension.ID
collections = make_collection_instances("./schemes", collections.schemes_mapping) collections = collections_helpers.make_collection_instances("./schemes", collections.schemes_mapping)
roles = [ roles = [
roles_pb2.Role( roles_pb2.Role(
id="demo-role", id="demo-role",
......
...@@ -284,7 +284,7 @@ class ExtensionSetup: ...@@ -284,7 +284,7 @@ class ExtensionSetup:
collections_pb2.CreateRequest(collection=cloned_collection) collections_pb2.CreateRequest(collection=cloned_collection)
) )
collection = create_response.collection collection = create_response.created
except grpc.RpcError as e: except grpc.RpcError as e:
errors_list.append(f"Не удалось создать коллекцию {local_collection.id}, {e.details()}") errors_list.append(f"Не удалось создать коллекцию {local_collection.id}, {e.details()}")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment