[#3] Added generate proto script create container method
Signed-off-by: Ilyas Niyazov <i.niyazov@yadro.com>
This commit is contained in:
parent
fba6eaaa9c
commit
d2e0c80f7c
16 changed files with 348 additions and 51 deletions
|
@ -1,13 +1,18 @@
|
|||
# implementation Conainer methods
|
||||
from frostfs_sdk.client.models.client_environment import ClientEnvironment
|
||||
from frostfs_sdk.client.services.context_accessor import ContextAccessor
|
||||
from frostfs_sdk.client.services.session import SessionClient
|
||||
from frostfs_sdk.client.parameters.container_param import ContainerCreateParam
|
||||
from frostfs_sdk.client.parameters.call_context_param import CallContextParam
|
||||
from frostfs_sdk.client.utils.session_cache import SessionToken
|
||||
from frostfs_sdk.client.utils.request_constructor import RequestConstructor
|
||||
from frostfs_sdk.cryptography.signer import Signer
|
||||
from frostfs_sdk.models.dto.container import ContainerId, Container
|
||||
from frostfs_sdk.models.mappers.container_mapper import ContainerMapper
|
||||
from frostfs_sdk.models.mappers.owner_id_mapper import OwnerIdMapper
|
||||
from frostfs_sdk.models.mappers.version_mapper import VersionMapper
|
||||
from frostfs_sdk.client.parameters.create_session_param import CreateSessionParam
|
||||
|
||||
from frostfs_sdk.protos.models.container import service_pb2 as service_pb2_container
|
||||
from frostfs_sdk.protos.models.container import service_pb2_grpc as service_pb2_grpc_container
|
||||
|
||||
|
@ -27,11 +32,8 @@ class ContainerClient(ContextAccessor):
|
|||
"""
|
||||
Creates a PUT request for creating a container.
|
||||
"""
|
||||
grpc_container=ContainerMapper().to_grpc_message(param.container)
|
||||
if not grpc_container.owner_id:
|
||||
grpc_container.owner_id = OwnerIdMapper.to_grpc_message(self.get_context.owner_id)
|
||||
if not grpc_container.version:
|
||||
grpc_container.version = VersionMapper.to_grpc_message(self.get_context.version)
|
||||
|
||||
grpc_container=ContainerMapper().to_grpc_message(param.container, self.get_context)
|
||||
|
||||
body = service_pb2_container.PutRequest.Body(
|
||||
container=grpc_container,
|
||||
|
@ -39,5 +41,24 @@ class ContainerClient(ContextAccessor):
|
|||
)
|
||||
|
||||
request = service_pb2_container.PutRequest(body=body)
|
||||
session_token = self.get_or_create_session(param.session_token, ctx)
|
||||
proto_token = session_token
|
||||
RequestConstructor.add_meta_header(request, param.x_headers, proto_token)
|
||||
|
||||
signed_request = Signer.sign(self.ecdsa.private_key, request)
|
||||
return signed_request
|
||||
|
||||
def get_or_create_session(self, session_ctx: SessionToken, ctx: CallContextParam) -> bytes:
|
||||
if session_ctx:
|
||||
return session_ctx.token
|
||||
|
||||
session_token_from_cache = self.get_context.session_cache.try_get_value(self.get_context.get_session_key())
|
||||
if session_token_from_cache:
|
||||
return session_token_from_cache.token
|
||||
|
||||
new_session_token = SessionClient(self.get_context).create_session(CreateSessionParam(expiration=-1), ctx)
|
||||
if new_session_token:
|
||||
self.get_context.session_cache.set_value(self.get_context.get_session_key(), new_session_token)
|
||||
return new_session_token.token
|
||||
|
||||
raise ValueError("cannot create session")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue