forked from TrueCloudLab/frostfs-node
[#1377] oid, cid: Upgrade SDK package
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
f65898a354
commit
f15e6e888f
118 changed files with 1455 additions and 886 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue