2022-04-22 07:18:21 +00:00
|
|
|
package layer
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"errors"
|
|
|
|
|
|
|
|
"github.com/nspcc-dev/neofs-s3-gw/api/data"
|
|
|
|
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
|
2022-05-12 01:50:52 +00:00
|
|
|
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
2022-04-22 07:18:21 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// TreeService provide interface to interact with tree service using s3 data models.
|
|
|
|
type TreeService interface {
|
|
|
|
// PutSettingsNode update or create new settings node in tree service.
|
2022-05-17 13:52:51 +00:00
|
|
|
PutSettingsNode(context.Context, *cid.ID, *data.BucketSettings) error
|
2022-04-22 07:18:21 +00:00
|
|
|
|
|
|
|
// GetSettingsNode retrieves the settings node from the tree service and form data.BucketSettings.
|
|
|
|
//
|
2022-05-12 01:48:17 +00:00
|
|
|
// If node is not found returns ErrNodeNotFound error.
|
2022-05-17 13:52:51 +00:00
|
|
|
GetSettingsNode(context.Context, *cid.ID) (*data.BucketSettings, error)
|
2022-05-12 01:50:52 +00:00
|
|
|
|
2022-05-17 13:52:51 +00:00
|
|
|
GetNotificationConfigurationNode(ctx context.Context, cnrID *cid.ID) (*oid.ID, error)
|
|
|
|
// PutNotificationConfigurationNode puts a node to a system tree
|
|
|
|
// and returns objectID of a previous notif config which must be deleted in NeoFS
|
|
|
|
PutNotificationConfigurationNode(ctx context.Context, cnrID *cid.ID, objID *oid.ID) (*oid.ID, error)
|
2022-05-12 02:33:03 +00:00
|
|
|
|
2022-05-17 13:52:51 +00:00
|
|
|
GetBucketCORS(ctx context.Context, cnrID *cid.ID) (*oid.ID, error)
|
|
|
|
// PutBucketCORS puts a node to a system tree and returns objectID of a previous cors config which must be deleted in NeoFS
|
|
|
|
PutBucketCORS(ctx context.Context, cnrID *cid.ID, objID *oid.ID) (*oid.ID, error)
|
|
|
|
// DeleteBucketCORS removes a node from a system tree and returns objID which must be deleted in NeoFS
|
|
|
|
DeleteBucketCORS(ctx context.Context, cnrID *cid.ID) (*oid.ID, error)
|
2022-05-17 14:56:05 +00:00
|
|
|
|
2022-05-24 06:58:33 +00:00
|
|
|
GetObjectTagging(ctx context.Context, cnrID *cid.ID, objVersion *data.NodeVersion) (map[string]string, error)
|
|
|
|
PutObjectTagging(ctx context.Context, cnrID *cid.ID, objVersion *data.NodeVersion, tagSet map[string]string) error
|
|
|
|
DeleteObjectTagging(ctx context.Context, cnrID *cid.ID, objVersion *data.NodeVersion) error
|
|
|
|
|
2022-05-25 01:58:25 +00:00
|
|
|
GetBucketTagging(ctx context.Context, cnrID *cid.ID) (map[string]string, error)
|
|
|
|
PutBucketTagging(ctx context.Context, cnrID *cid.ID, tagSet map[string]string) error
|
|
|
|
DeleteBucketTagging(ctx context.Context, cnrID *cid.ID) error
|
|
|
|
|
2022-05-20 15:02:00 +00:00
|
|
|
GetVersions(ctx context.Context, cnrID *cid.ID, objectName string) ([]*data.NodeVersion, error)
|
|
|
|
GetLatestVersion(ctx context.Context, cnrID *cid.ID, objectName string) (*data.NodeVersion, error)
|
2022-05-20 08:26:35 +00:00
|
|
|
GetLatestVersionsByPrefix(ctx context.Context, cnrID *cid.ID, prefix string) ([]oid.ID, error)
|
2022-05-20 15:02:00 +00:00
|
|
|
GetAllVersionsByPrefix(ctx context.Context, cnrID *cid.ID, prefix string) ([]*data.NodeVersion, error)
|
|
|
|
GetUnversioned(ctx context.Context, cnrID *cid.ID, objectName string) (*data.NodeVersion, error)
|
|
|
|
AddVersion(ctx context.Context, cnrID *cid.ID, objectName string, newVersion *data.NodeVersion) error
|
2022-05-17 14:56:05 +00:00
|
|
|
RemoveVersion(ctx context.Context, cnrID *cid.ID, nodeID uint64) error
|
|
|
|
|
2022-05-20 15:02:00 +00:00
|
|
|
AddSystemVersion(ctx context.Context, cnrID *cid.ID, objectName string, newVersion *data.BaseNodeVersion) error
|
|
|
|
GetSystemVersion(ctx context.Context, cnrID *cid.ID, objectName string) (*data.BaseNodeVersion, error)
|
2022-05-17 14:56:05 +00:00
|
|
|
RemoveSystemVersion(ctx context.Context, cnrID *cid.ID, nodeID uint64) error
|
2022-05-23 14:34:13 +00:00
|
|
|
|
2022-05-24 11:30:37 +00:00
|
|
|
CreateMultipartUpload(ctx context.Context, cnrID *cid.ID, info *data.MultipartInfo) error
|
2022-05-24 08:41:10 +00:00
|
|
|
GetMultipartUploadsByPrefix(ctx context.Context, cnrID *cid.ID, prefix string) ([]*data.MultipartInfo, error)
|
2022-05-24 11:30:37 +00:00
|
|
|
GetMultipartUpload(ctx context.Context, cnrID *cid.ID, objectName, uploadID string) (*data.MultipartInfo, error)
|
|
|
|
|
|
|
|
// AddPart puts a node to a system tree as a child of appropriate multipart upload
|
|
|
|
// and returns objectID of a previous part which must be deleted in NeoFS.
|
|
|
|
// If a part is being added for the first time, the previous part ID will be nil.
|
|
|
|
AddPart(ctx context.Context, cnrID *cid.ID, multipartNodeID uint64, info *data.PartInfo) (oldObjIDToDelete *oid.ID, err error)
|
2022-05-24 13:07:47 +00:00
|
|
|
GetParts(ctx context.Context, cnrID *cid.ID, multipartNodeID uint64) ([]*data.PartInfo, error)
|
2022-05-17 14:56:05 +00:00
|
|
|
}
|
|
|
|
|
2022-05-12 01:48:17 +00:00
|
|
|
// ErrNodeNotFound is returned from Tree service in case of not found error.
|
|
|
|
var ErrNodeNotFound = errors.New("not found")
|