From f41860f9bd41368d5ddedeb9ed535fcfe97c0fa3 Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Fri, 7 Apr 2023 18:40:54 +0300 Subject: [PATCH] [#46] client: Allow set `copy_number` for every placement vector Signed-off-by: Pavel Karpy --- client/object_put.go | 11 +++++++++-- pool/pool.go | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/client/object_put.go b/client/object_put.go index f25e44b0..5995683a 100644 --- a/client/object_put.go +++ b/client/object_put.go @@ -22,14 +22,21 @@ import ( // PrmObjectPutInit groups parameters of ObjectPutInit operation. type PrmObjectPutInit struct { - copyNum uint32 + copyNum []uint32 key *ecdsa.PrivateKey meta v2session.RequestMetaHeader } // SetCopiesNumber sets number of object copies that is enough to consider put successful. func (x *PrmObjectPutInit) SetCopiesNumber(copiesNumber uint32) { - x.copyNum = copiesNumber + x.copyNum = []uint32{copiesNumber} +} + +// SetCopiesNumberByVectors sets ordered list of minimal required object copies numbers +// per placement vector. List's length MUST equal container's placement vector number, +// otherwise request will fail. +func (x *PrmObjectPutInit) SetCopiesNumberByVectors(copiesNumbers []uint32) { + x.copyNum = copiesNumbers } // ResObjectPut groups the final result values of ObjectPutInit operation. diff --git a/pool/pool.go b/pool/pool.go index 657afbf5..28715ac6 100644 --- a/pool/pool.go +++ b/pool/pool.go @@ -615,7 +615,7 @@ func (c *clientWrapper) objectPut(ctx context.Context, prm PrmObjectPut) (oid.ID } var cliPrm sdkClient.PrmObjectPutInit - cliPrm.SetCopiesNumber(prm.copiesNumber) + cliPrm.SetCopiesNumber(prm.copiesNumber) // TODO(@ironbee): adopt multiple copy number https://git.frostfs.info/TrueCloudLab/frostfs-sdk-go/issues/44 if prm.stoken != nil { cliPrm.WithinSession(*prm.stoken) }