Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

centralize space id util functions #2816

Merged
merged 1 commit into from
May 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions changelog/unreleased/centralize-space-id-functions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Change: Merge the utility functions for space ids/references into one package

Merged the utility functions regarding space ids or references into one package. Also updated the functions to support the newly added provider id in the spaces id.

https://github.com/cs3org/reva/pull/2816
8 changes: 4 additions & 4 deletions internal/grpc/interceptors/auth/scope.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ import (
"github.com/cs3org/reva/v2/pkg/errtypes"
statuspkg "github.com/cs3org/reva/v2/pkg/rgrpc/status"
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
"github.com/cs3org/reva/v2/pkg/storagespace"
"github.com/cs3org/reva/v2/pkg/token"
"github.com/cs3org/reva/v2/pkg/utils"
"github.com/cs3org/reva/v2/pkg/utils/resourceid"
"google.golang.org/grpc/metadata"
)

Expand Down Expand Up @@ -137,7 +137,7 @@ func resolveLightweightScope(ctx context.Context, ref *provider.Reference, scope
}

for _, share := range shares.Shares {
shareKey := "lw:" + user.Id.OpaqueId + scopeDelimiter + resourceid.OwnCloudResourceIDWrap(share.Share.ResourceId)
shareKey := "lw:" + user.Id.OpaqueId + scopeDelimiter + storagespace.FormatResourceID(*share.Share.ResourceId)
_ = scopeExpansionCache.SetWithExpire(shareKey, nil, scopeCacheExpiration*time.Second)

if ref.ResourceId != nil && utils.ResourceIDEqual(share.Share.ResourceId, ref.ResourceId) {
Expand Down Expand Up @@ -174,7 +174,7 @@ func resolveUserShare(ctx context.Context, ref *provider.Reference, scope *authp

func checkCacheForNestedResource(ctx context.Context, ref *provider.Reference, resource *provider.ResourceId, client gateway.GatewayAPIClient, mgr token.Manager) error {
// Check if this ref is cached
key := resourceid.OwnCloudResourceIDWrap(resource) + scopeDelimiter + getRefKey(ref)
key := storagespace.FormatResourceID(*resource) + scopeDelimiter + getRefKey(ref)
if _, err := scopeExpansionCache.Get(key); err == nil {
return nil
}
Expand Down Expand Up @@ -397,5 +397,5 @@ func getRefKey(ref *provider.Reference) string {
if ref.Path != "" {
return ref.Path
}
return resourceid.OwnCloudResourceIDWrap(ref.ResourceId)
return storagespace.FormatResourceID(*ref.ResourceId)
}
5 changes: 3 additions & 2 deletions internal/grpc/services/gateway/storageprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
sdk "github.com/cs3org/reva/v2/pkg/sdk/common"
"github.com/cs3org/reva/v2/pkg/share"
"github.com/cs3org/reva/v2/pkg/storagespace"
"github.com/cs3org/reva/v2/pkg/utils"
"github.com/golang-jwt/jwt"
"github.com/pkg/errors"
Expand Down Expand Up @@ -221,7 +222,7 @@ func (s *svc) ListStorageSpaces(ctx context.Context, req *provider.ListStorageSp
for _, f := range req.Filters {
switch f.Type {
case provider.ListStorageSpacesRequest_Filter_TYPE_ID:
sid, oid, err := utils.SplitStorageSpaceID(f.GetId().OpaqueId)
sid, oid, err := storagespace.SplitID(f.GetId().OpaqueId)
if err != nil {
continue
}
Expand Down Expand Up @@ -308,7 +309,7 @@ func (s *svc) DeleteStorageSpace(ctx context.Context, req *provider.DeleteStorag
_, purge = opaque.Map["purge"]
}

storageid, opaqeid, err := utils.SplitStorageSpaceID(req.Id.OpaqueId)
storageid, opaqeid, err := storagespace.SplitID(req.Id.OpaqueId)
if err != nil {
return &provider.DeleteStorageSpaceResponse{
Status: status.NewStatusFromErrType(ctx, fmt.Sprintf("gateway could not split space id %s", req.GetId().GetOpaqueId()), err),
Expand Down
4 changes: 2 additions & 2 deletions internal/grpc/services/gateway/usershareprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
"github.com/cs3org/reva/v2/pkg/share"
"github.com/cs3org/reva/v2/pkg/storage/utils/grants"
"github.com/cs3org/reva/v2/pkg/storagespace"
rtrace "github.com/cs3org/reva/v2/pkg/trace"
"github.com/cs3org/reva/v2/pkg/utils/resourceid"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -779,7 +779,7 @@ func refIsSpaceRoot(ref *provider.ResourceId) bool {
if ref.StorageId == "" || ref.OpaqueId == "" {
return false
}
sid, _ := resourceid.StorageIDUnwrap(ref.GetStorageId())
_, sid := storagespace.SplitStorageID(ref.GetStorageId())
return sid == ref.OpaqueId
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc"
"github.com/cs3org/reva/v2/pkg/rgrpc/status"
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
"github.com/cs3org/reva/v2/pkg/storagespace"
rtrace "github.com/cs3org/reva/v2/pkg/trace"
"github.com/cs3org/reva/v2/pkg/utils"
"github.com/cs3org/reva/v2/pkg/utils/resourceid"
"github.com/mitchellh/mapstructure"
"github.com/pkg/errors"
"go.opentelemetry.io/otel/attribute"
Expand Down Expand Up @@ -104,7 +104,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) {

func (s *service) SetArbitraryMetadata(ctx context.Context, req *provider.SetArbitraryMetadataRequest) (*provider.SetArbitraryMetadataResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -126,7 +126,7 @@ func (s *service) UnsetArbitraryMetadata(ctx context.Context, req *provider.Unse
// SetLock puts a lock on the given reference
func (s *service) SetLock(ctx context.Context, req *provider.SetLockRequest) (*provider.SetLockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -144,7 +144,7 @@ func (s *service) SetLock(ctx context.Context, req *provider.SetLockRequest) (*p
// GetLock returns an existing lock on the given reference
func (s *service) GetLock(ctx context.Context, req *provider.GetLockRequest) (*provider.GetLockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -162,7 +162,7 @@ func (s *service) GetLock(ctx context.Context, req *provider.GetLockRequest) (*p
// RefreshLock refreshes an existing lock on the given reference
func (s *service) RefreshLock(ctx context.Context, req *provider.RefreshLockRequest) (*provider.RefreshLockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -180,7 +180,7 @@ func (s *service) RefreshLock(ctx context.Context, req *provider.RefreshLockRequ
// Unlock removes an existing lock from the given reference
func (s *service) Unlock(ctx context.Context, req *provider.UnlockRequest) (*provider.UnlockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -197,7 +197,7 @@ func (s *service) Unlock(ctx context.Context, req *provider.UnlockRequest) (*pro

func (s *service) InitiateFileDownload(ctx context.Context, req *provider.InitiateFileDownloadRequest) (*provider.InitiateFileDownloadResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

statReq := &provider.StatRequest{Ref: req.Ref}
Expand Down Expand Up @@ -323,7 +323,7 @@ func (s *service) initiateFileDownload(ctx context.Context, req *provider.Initia

func (s *service) InitiateFileUpload(ctx context.Context, req *provider.InitiateFileUploadRequest) (*provider.InitiateFileUploadResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

cs3Ref, _, ls, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand Down Expand Up @@ -411,7 +411,7 @@ func (s *service) CreateStorageSpace(ctx context.Context, req *provider.CreateSt
func (s *service) ListStorageSpaces(ctx context.Context, req *provider.ListStorageSpacesRequest) (*provider.ListStorageSpacesResponse, error) {
for i, f := range req.Filters {
if f.Type == provider.ListStorageSpacesRequest_Filter_TYPE_ID {
id, _ := resourceid.StorageIDUnwrap(f.GetId().GetOpaqueId())
_, id := storagespace.SplitStorageID(f.GetId().GetOpaqueId())
req.Filters[i].Term = &provider.ListStorageSpacesRequest_Filter_Id{Id: &provider.StorageSpaceId{OpaqueId: id}}
break
}
Expand All @@ -431,7 +431,7 @@ func (s *service) ListStorageSpaces(ctx context.Context, req *provider.ListStora
}
spaceTypes[spaceType] = exists
case provider.ListStorageSpacesRequest_Filter_TYPE_ID:
spaceid, shareid, err := utils.SplitStorageSpaceID(f.GetId().OpaqueId)
spaceid, shareid, err := storagespace.SplitID(f.GetId().OpaqueId)
if err != nil {
continue
}
Expand Down Expand Up @@ -549,7 +549,7 @@ func (s *service) DeleteStorageSpace(ctx context.Context, req *provider.DeleteSt

func (s *service) CreateContainer(ctx context.Context, req *provider.CreateContainerRequest) (*provider.CreateContainerResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "CreateContainer")
Expand Down Expand Up @@ -593,7 +593,7 @@ func (s *service) CreateContainer(ctx context.Context, req *provider.CreateConta

func (s *service) TouchFile(ctx context.Context, req *provider.TouchFileRequest) (*provider.TouchFileResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -610,7 +610,7 @@ func (s *service) TouchFile(ctx context.Context, req *provider.TouchFileRequest)

func (s *service) Delete(ctx context.Context, req *provider.DeleteRequest) (*provider.DeleteResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "Delete")
Expand Down Expand Up @@ -654,10 +654,10 @@ func (s *service) Delete(ctx context.Context, req *provider.DeleteRequest) (*pro

func (s *service) Move(ctx context.Context, req *provider.MoveRequest) (*provider.MoveResponse, error) {
if req.Source.GetResourceId() != nil {
req.Source.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Source.ResourceId.StorageId)
_, req.Source.ResourceId.StorageId = storagespace.SplitStorageID(req.Source.ResourceId.StorageId)
}
if req.Destination.GetResourceId() != nil {
req.Destination.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Destination.ResourceId.StorageId)
_, req.Destination.ResourceId.StorageId = storagespace.SplitStorageID(req.Destination.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "Move")
Expand Down Expand Up @@ -724,7 +724,7 @@ func (s *service) Move(ctx context.Context, req *provider.MoveRequest) (*provide

func (s *service) Stat(ctx context.Context, req *provider.StatRequest) (*provider.StatResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "Stat")
Expand Down Expand Up @@ -825,7 +825,7 @@ func (s *service) ListContainerStream(req *provider.ListContainerStreamRequest,

func (s *service) ListContainer(ctx context.Context, req *provider.ListContainerRequest) (*provider.ListContainerResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

share, ok := extractLinkFromScope(ctx)
Expand Down
Loading