# 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