32 lines
1.5 KiB
Python
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
|