mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-04-29 23:39:35 -05:00
Bump reva to get https://github.com/cs3org/reva/pull/4867
This commit is contained in:
committed by
Ralf Haferkamp
parent
1d9182025d
commit
038993ed10
+5
@@ -116,6 +116,11 @@ func (bs *Blobstore) Delete(node *node.Node) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetAvailableSize returns the available size in the blobstore in bytes
|
||||
func (bs *Blobstore) GetAvailableSize(n *node.Node) (uint64, error) {
|
||||
return node.GetAvailableSize(n.InternalPath())
|
||||
}
|
||||
|
||||
// List lists all blobs in the Blobstore
|
||||
func (bs *Blobstore) List() ([]*node.Node, error) {
|
||||
dirs, err := filepath.Glob(filepath.Join(bs.root, "spaces", "*", "*", "blobs", "*", "*", "*", "*", "*"))
|
||||
|
||||
+5
@@ -88,3 +88,8 @@ func (bs *Blobstore) Download(node *node.Node) (io.ReadCloser, error) {
|
||||
func (bs *Blobstore) Delete(node *node.Node) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetAvailableSize returns the available size in the blobstore in bytes
|
||||
func (bs *Blobstore) GetAvailableSize(n *node.Node) (uint64, error) {
|
||||
return node.GetAvailableSize(n.InternalPath())
|
||||
}
|
||||
|
||||
+1
@@ -126,6 +126,7 @@ func New(m map[string]interface{}, stream events.Stream) (storage.FS, error) {
|
||||
aspects := aspects.Aspects{
|
||||
Lookup: lu,
|
||||
Tree: tp,
|
||||
Blobstore: bs,
|
||||
Permissions: p,
|
||||
EventStream: stream,
|
||||
UserMapper: um,
|
||||
|
||||
+7
@@ -29,6 +29,7 @@ import (
|
||||
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/lookup"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/node"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree"
|
||||
"github.com/minio/minio-go/v7"
|
||||
"github.com/minio/minio-go/v7/pkg/credentials"
|
||||
"github.com/pkg/errors"
|
||||
@@ -128,6 +129,12 @@ func (bs *Blobstore) Delete(node *node.Node) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetAvailableSize returns the available size in the blobstore in bytes
|
||||
func (bs *Blobstore) GetAvailableSize(n *node.Node) (uint64, error) {
|
||||
// S3 doen't have a concept of available size
|
||||
return 0, tree.ErrSizeUnlimited
|
||||
}
|
||||
|
||||
// List lists all blobs in the Blobstore
|
||||
func (bs *Blobstore) List() ([]*node.Node, error) {
|
||||
ch := bs.client.ListObjects(context.Background(), bs.bucket, minio.ListObjectsOptions{Recursive: true})
|
||||
|
||||
Generated
Vendored
+2
@@ -23,6 +23,7 @@ import (
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/node"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/permissions"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/trashbin"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/usermapper"
|
||||
)
|
||||
|
||||
@@ -30,6 +31,7 @@ import (
|
||||
type Aspects struct {
|
||||
Lookup node.PathLookup
|
||||
Tree node.Tree
|
||||
Blobstore tree.Blobstore
|
||||
Trashbin trashbin.Trashbin
|
||||
Permissions permissions.Permissions
|
||||
EventStream events.Stream
|
||||
|
||||
+9
-3
@@ -22,6 +22,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
"net/url"
|
||||
"path"
|
||||
"path/filepath"
|
||||
@@ -112,6 +113,7 @@ type SessionStore interface {
|
||||
type Decomposedfs struct {
|
||||
lu node.PathLookup
|
||||
tp node.Tree
|
||||
bs tree.Blobstore
|
||||
trashbin trashbin.Trashbin
|
||||
o *options.Options
|
||||
p permissions.Permissions
|
||||
@@ -162,6 +164,7 @@ func NewDefault(m map[string]interface{}, bs tree.Blobstore, es events.Stream) (
|
||||
aspects := aspects.Aspects{
|
||||
Lookup: lu,
|
||||
Tree: tp,
|
||||
Blobstore: bs,
|
||||
Permissions: permissions.NewPermissions(node.NewPermissions(lu), permissionsSelector),
|
||||
EventStream: es,
|
||||
DisableVersioning: o.DisableVersioning,
|
||||
@@ -223,6 +226,7 @@ func New(o *options.Options, aspects aspects.Aspects) (storage.FS, error) {
|
||||
|
||||
fs := &Decomposedfs{
|
||||
tp: aspects.Tree,
|
||||
bs: aspects.Blobstore,
|
||||
lu: aspects.Lookup,
|
||||
trashbin: aspects.Trashbin,
|
||||
o: o,
|
||||
@@ -598,9 +602,11 @@ func (fs *Decomposedfs) GetQuota(ctx context.Context, ref *provider.Reference) (
|
||||
quotaStr = string(ri.Opaque.Map["quota"].Value)
|
||||
}
|
||||
|
||||
// FIXME this reads remaining disk size from the local disk, not the blobstore
|
||||
remaining, err = node.GetAvailableSize(n.InternalPath())
|
||||
if err != nil {
|
||||
remaining, err = fs.bs.GetAvailableSize(n)
|
||||
switch {
|
||||
case errors.Is(err, tree.ErrSizeUnlimited):
|
||||
remaining = math.MaxUint64
|
||||
case err != nil:
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
|
||||
|
||||
+9
-4
@@ -45,6 +45,7 @@ import (
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/metadata/prefixes"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/node"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/permissions"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree"
|
||||
"github.com/cs3org/reva/v2/pkg/storage/utils/templates"
|
||||
"github.com/cs3org/reva/v2/pkg/storagespace"
|
||||
"github.com/cs3org/reva/v2/pkg/utils"
|
||||
@@ -1028,9 +1029,11 @@ func (fs *Decomposedfs) StorageSpaceFromNode(ctx context.Context, n *node.Node,
|
||||
quotaStr = quotaInOpaque
|
||||
}
|
||||
|
||||
// FIXME this reads remaining disk size from the local disk, not the blobstore
|
||||
remaining, err := node.GetAvailableSize(n.InternalPath())
|
||||
if err != nil {
|
||||
remaining, err := fs.bs.GetAvailableSize(n)
|
||||
switch {
|
||||
case errors.Is(err, tree.ErrSizeUnlimited):
|
||||
remaining = math.MaxUint64
|
||||
case err != nil:
|
||||
return nil, err
|
||||
}
|
||||
total, used, remaining, err := fs.calculateTotalUsedRemaining(quotaStr, space.GetRootInfo().GetSize(), remaining)
|
||||
@@ -1039,7 +1042,9 @@ func (fs *Decomposedfs) StorageSpaceFromNode(ctx context.Context, n *node.Node,
|
||||
}
|
||||
space.Opaque = utils.AppendPlainToOpaque(space.Opaque, "quota.total", strconv.FormatUint(total, 10))
|
||||
space.Opaque = utils.AppendPlainToOpaque(space.Opaque, "quota.used", strconv.FormatUint(used, 10))
|
||||
space.Opaque = utils.AppendPlainToOpaque(space.Opaque, "quota.remaining", strconv.FormatUint(remaining, 10))
|
||||
if remaining != math.MaxUint64 {
|
||||
space.Opaque = utils.AppendPlainToOpaque(space.Opaque, "quota.remaining", strconv.FormatUint(remaining, 10))
|
||||
}
|
||||
|
||||
return space, nil
|
||||
}
|
||||
|
||||
+5
-1
@@ -48,7 +48,10 @@ import (
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
var tracer trace.Tracer
|
||||
var (
|
||||
tracer trace.Tracer
|
||||
ErrSizeUnlimited = errors.New("blobstore size unlimited")
|
||||
)
|
||||
|
||||
func init() {
|
||||
tracer = otel.Tracer("github.com/cs3org/reva/pkg/storage/utils/decomposedfs/tree")
|
||||
@@ -59,6 +62,7 @@ type Blobstore interface {
|
||||
Upload(node *node.Node, source string) error
|
||||
Download(node *node.Node) (io.ReadCloser, error)
|
||||
Delete(node *node.Node) error
|
||||
GetAvailableSize(node *node.Node) (uint64, error)
|
||||
}
|
||||
|
||||
// Tree manages a hierarchical tree
|
||||
|
||||
Reference in New Issue
Block a user