[#1377] oid, cid: Upgrade SDK package

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2022-05-12 19:37:46 +03:00 committed by LeL
parent f65898a354
commit f15e6e888f
118 changed files with 1455 additions and 886 deletions

View file

@ -1,6 +1,8 @@
package placement
import (
"crypto/sha256"
"errors"
"fmt"
"github.com/nspcc-dev/neofs-node/pkg/core/netmap"
@ -36,26 +38,42 @@ func (s *netMapSrc) GetNetMap(diff uint64) (*netmapSDK.Netmap, error) {
}
func (b *netMapBuilder) BuildPlacement(a *addressSDK.Address, p *netmapSDK.PlacementPolicy) ([]netmapSDK.Nodes, error) {
cnr, ok := a.ContainerID()
if !ok {
return nil, errors.New("missing container in object address")
}
nm, err := netmap.GetLatestNetworkMap(b.nmSrc)
if err != nil {
return nil, fmt.Errorf("could not get network map: %w", err)
}
cn, err := nm.GetContainerNodes(p, a.ContainerID().ToV2().GetValue())
binCnr := make([]byte, sha256.Size)
cnr.Encode(binCnr)
cn, err := nm.GetContainerNodes(p, binCnr)
if err != nil {
return nil, fmt.Errorf("could not get container nodes: %w", err)
}
return BuildObjectPlacement(nm, cn, a.ObjectID())
var idPtr *oidSDK.ID
if id, ok := a.ObjectID(); ok {
idPtr = &id
}
return BuildObjectPlacement(nm, cn, idPtr)
}
func BuildObjectPlacement(nm *netmapSDK.Netmap, cnrNodes netmapSDK.ContainerNodes, id *oidSDK.ID) ([]netmapSDK.Nodes, error) {
objectID := id.ToV2()
if objectID == nil {
if id == nil {
return cnrNodes.Replicas(), nil
}
on, err := nm.GetPlacementVectors(cnrNodes, objectID.GetValue())
binObj := make([]byte, sha256.Size)
id.Encode(binObj)
on, err := nm.GetPlacementVectors(cnrNodes, binObj)
if err != nil {
return nil, fmt.Errorf("could not get placement vectors for object: %w", err)
}

View file

@ -228,7 +228,9 @@ func ForContainer(cnr *container.Container) Option {
// ForObject is a processing object setting option.
func ForObject(id *oidSDK.ID) Option {
return func(c *cfg) {
c.addr.SetObjectID(id)
if id != nil {
c.addr.SetObjectID(*id)
}
}
}

View file

@ -15,7 +15,7 @@ import (
// with information about members collected via HeadReceiver.
//
// Resulting storage group consists of physically stored objects only.
func CollectMembers(r objutil.HeadReceiver, cid *cid.ID, members []oidSDK.ID) (*storagegroup.StorageGroup, error) {
func CollectMembers(r objutil.HeadReceiver, cnr *cid.ID, members []oidSDK.ID) (*storagegroup.StorageGroup, error) {
var (
sumPhySize uint64
phyMembers []oidSDK.ID
@ -24,13 +24,18 @@ func CollectMembers(r objutil.HeadReceiver, cid *cid.ID, members []oidSDK.ID) (*
sg = storagegroup.New()
)
addr.SetContainerID(cid)
addr.SetContainerID(*cnr)
for i := range members {
addr.SetObjectID(&members[i])
addr.SetObjectID(members[i])
if err := objutil.IterateAllSplitLeaves(r, addr, func(leaf *object.Object) {
phyMembers = append(phyMembers, *leaf.ID())
id, ok := leaf.ID()
if !ok {
return
}
phyMembers = append(phyMembers, id)
sumPhySize += leaf.PayloadSize()
cs, _ := leaf.PayloadHomomorphicHash()
phyHashes = append(phyHashes, cs.Value())

View file

@ -81,17 +81,18 @@ func (f *formatter) Close() (*AccessIdentifiers, error) {
rawPar.SetSessionToken(f.prm.SessionToken)
rawPar.SetCreationEpoch(curEpoch)
if err := object.SetIDWithSignature(f.prm.Key, rawPar); err != nil {
if err := object.SetIDWithSignature(*f.prm.Key, rawPar); err != nil {
return nil, fmt.Errorf("could not finalize parent object: %w", err)
}
parID = rawPar.ID()
id, _ := rawPar.ID()
parID = &id
parHdr = rawPar
f.obj.SetParent(parHdr)
}
if err := object.SetIDWithSignature(f.prm.Key, f.obj); err != nil {
if err := object.SetIDWithSignature(*f.prm.Key, f.obj); err != nil {
return nil, fmt.Errorf("could not finalize object: %w", err)
}
@ -103,8 +104,10 @@ func (f *formatter) Close() (*AccessIdentifiers, error) {
return nil, fmt.Errorf("could not close next target: %w", err)
}
id, _ := f.obj.ID()
return new(AccessIdentifiers).
WithSelfID(f.obj.ID()).
WithSelfID(&id).
WithParentID(parID).
WithParent(parHdr), nil
}

View file

@ -79,15 +79,17 @@ func (s *payloadSizeLimiter) initialize() {
}
// set previous object to the last previous identifier
s.current.SetPreviousID(&s.previous[ln-1])
s.current.SetPreviousID(s.previous[ln-1])
}
s.initializeCurrent()
}
func fromObject(obj *object.Object) *object.Object {
cnr, _ := obj.ContainerID()
res := object.New()
res.SetContainerID(obj.ContainerID())
res.SetContainerID(cnr)
res.SetOwnerID(obj.OwnerID())
res.SetAttributes(obj.Attributes()...)
res.SetType(obj.Type())