From 69ba295077b5409d069a062ea0e45070c93b1339 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Tue, 1 Dec 2020 11:40:32 +0300 Subject: [PATCH] [#222] Add ToMoveIt method in shard Signed-off-by: Alex Vanin --- pkg/local_object_storage/shard/move.go | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 pkg/local_object_storage/shard/move.go diff --git a/pkg/local_object_storage/shard/move.go b/pkg/local_object_storage/shard/move.go new file mode 100644 index 00000000..b24979ae --- /dev/null +++ b/pkg/local_object_storage/shard/move.go @@ -0,0 +1,37 @@ +package shard + +import ( + objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object" + "go.uber.org/zap" +) + +// ToMoveItPrm encapsulates parameters for ToMoveIt operation. +type ToMoveItPrm struct { + addr *objectSDK.Address +} + +// ToMoveItRes encapsulates results of ToMoveIt operation. +type ToMoveItRes struct{} + +// WithAdderss sets object address that should be marked to move into another +// shard. +func (p *ToMoveItPrm) WithAddress(addr *objectSDK.Address) *ToMoveItPrm { + if p != nil { + p.addr = addr + } + + return p +} + +// ToMoveIt calls metabase.ToMoveIt method to mark object as relocatable to +// another shard. +func (s *Shard) ToMoveIt(prm *ToMoveItPrm) (*ToMoveItRes, error) { + err := s.metaBase.ToMoveIt(prm.addr) + if err != nil { + s.log.Debug("could not mark object for shard relocation in metabase", + zap.String("error", err.Error()), + ) + } + + return new(ToMoveItRes), nil +}