frostfs-sdk-python/frostfs_sdk/client/services/container.py
Ilyas Niyazov f8465e5b99 Added create container grpc method
Signed-off-by: Ilyas Niyazov <i.niyazov@yadro.com>
2025-03-10 13:46:17 +03:00

32 lines
1.5 KiB
Python

# implementation Conainer methods
from frostfs_sdk.client.models.client_environment import ClientEnvironment
from frostfs_sdk.cryptography.signer import Signer
from frostfs_sdk.models.dto.container import ContainerId
import protos.models.container.service_pb2_grpc as service_pb2_grpc_container
import protos.models.container.service_pb2 as service_pb2_container
from frostfs_sdk.client.parameters.container_create import PrmContainerCreate
from frostfs_sdk.models.mappers.container_mapper import ContainerMapper
class ContainerClient:
def __init__(self, client_environment: ClientEnvironment):
self.container_stub = service_pb2_grpc_container.ContainerServiceStub(client_environment.channel)
self.ecdsa = client_environment.ecdsa
def create(self, prm_container_create: PrmContainerCreate) -> ContainerId:
request = self.create_put_request(prm_container_create)
response: service_pb2_container.PutResponse = self.container_stub.Put(request)
return ContainerId(value=response.body.container_id)
def create_put_request(self, prm: PrmContainerCreate):
grpc_container=ContainerMapper().to_grpc_message(prm.container)
body = service_pb2_container.PutRequest.Body(
container=grpc_container,
signature=Signer.sign_rfc6979(self.ecdsa.private_key, grpc_container)
)
request = service_pb2_container.PutRequest(body=body)
signed_request = Signer.sign(self.ecdsa.private_key, request)
return signed_request