Skip to content

Commit

Permalink
Merge pull request #3865 from kobergj/DontRemoveReferenceInUserShareP…
Browse files Browse the repository at this point in the history
…rovider

Remove unused gateway code
  • Loading branch information
kobergj authored May 10, 2023
2 parents 72cbc60 + e4987c8 commit 4f9d9da
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 100 deletions.
5 changes: 5 additions & 0 deletions changelog/unreleased/clean-gateway-code.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Enhancement: Remove unneccessary code from gateway

Delete unused removeReference code from gateway

https://github.com/cs3org/reva/pull/3865
7 changes: 4 additions & 3 deletions internal/grpc/services/gateway/ocmshareprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -373,9 +373,10 @@ func (s *svc) UpdateReceivedOCMShare(ctx context.Context, req *ocm.UpdateReceive
Status: createRefStatus,
}, err
case ocm.ShareState_SHARE_STATE_REJECTED:
s.removeReference(ctx, req.GetShare().GetShare().ResourceId) // error is logged inside removeReference
// FIXME we are ignoring an error from removeReference here
return res, nil
return &ocm.UpdateReceivedOCMShareResponse{
Status: status.NewUnimplemented(ctx, err, "ocm share rejection not supported at the moment"),
}, nil

}
case "mount_point":
// TODO(labkode): implementing updating mount point
Expand Down
97 changes: 0 additions & 97 deletions internal/grpc/services/gateway/usershareprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ package gateway

import (
"context"
"path"

rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
collaboration "github.com/cs3org/go-cs3apis/cs3/sharing/collaboration/v1beta1"
Expand Down Expand Up @@ -267,97 +266,6 @@ func (s *svc) UpdateReceivedShare(ctx context.Context, req *collaboration.Update
*/
}

func (s *svc) removeReference(ctx context.Context, resourceID *provider.ResourceId) *rpc.Status {
log := appctx.GetLogger(ctx)

idReference := &provider.Reference{ResourceId: resourceID}
storageProvider, _, err := s.find(ctx, idReference)
if err != nil {
appctx.GetLogger(ctx).
Err(err).
Interface("reference", idReference).
Msg("removeReference: failed to get storage provider")
if _, ok := err.(errtypes.IsNotFound); ok {
return status.NewNotFound(ctx, "storage provider not found")
}
return status.NewInternal(ctx, "error finding storage provider")
}

statRes, err := storageProvider.Stat(ctx, &provider.StatRequest{Ref: idReference})
if err != nil {
log.Error().Err(err).Interface("reference", idReference).Msg("removeReference: error calling Stat")
return status.NewInternal(ctx, "gateway: error calling Stat for the share resource id: "+resourceID.String())
}

// FIXME how can we delete a reference if the original resource was deleted?
if statRes.Status.Code != rpc.Code_CODE_OK {
log.Error().Interface("status", statRes.Status).Interface("reference", idReference).Msg("removeReference: error calling Stat")
return status.NewInternal(ctx, "could not delete share reference")
}

homeRes, err := s.GetHome(ctx, &provider.GetHomeRequest{})
if err != nil {
return status.NewInternal(ctx, "could not delete share reference")
}

sharePath := path.Join(homeRes.Path, s.c.ShareFolder, path.Base(statRes.Info.Path))
log.Debug().Str("share_path", sharePath).Msg("remove reference of share")

sharePathRef := &provider.Reference{Path: sharePath}
homeProvider, providerInfo, err := s.find(ctx, sharePathRef)
if err != nil {
appctx.GetLogger(ctx).
Err(err).
Interface("reference", sharePathRef).
Msg("removeReference: failed to get storage provider for share ref")
if _, ok := err.(errtypes.IsNotFound); ok {
return status.NewNotFound(ctx, "storage provider not found")
}
return status.NewInternal(ctx, "error finding storage provider")
}

var (
root *provider.ResourceId
mountPath string
)
for _, space := range decodeSpaces(providerInfo) {
mountPath = decodePath(space)
root = space.Root
break // TODO can there be more than one space for a path?
}

ref := unwrap(sharePathRef, mountPath, root)

deleteReq := &provider.DeleteRequest{
Opaque: &typesv1beta1.Opaque{
Map: map[string]*typesv1beta1.OpaqueEntry{
// This signals the storageprovider that we want to delete the share reference and not the underlying file.
"deleting_shared_resource": {},
},
},
Ref: ref,
}

deleteResp, err := homeProvider.Delete(ctx, deleteReq)
if err != nil {
return status.NewInternal(ctx, "could not delete share reference")
}

switch deleteResp.Status.Code {
case rpc.Code_CODE_OK:
// we can continue deleting the reference
case rpc.Code_CODE_NOT_FOUND:
// This is fine, we wanted to delete it anyway
return status.NewOK(ctx)
default:
return status.NewInternal(ctx, "could not delete share reference")
}

log.Debug().Str("share_path", sharePath).Msg("share reference successfully removed")

return status.NewOK(ctx)
}

func (s *svc) denyGrant(ctx context.Context, id *provider.ResourceId, g *provider.Grantee, opaque *typesv1beta1.Opaque) (*rpc.Status, error) {
ref := &provider.Reference{
ResourceId: id,
Expand Down Expand Up @@ -676,11 +584,6 @@ func (s *svc) removeShare(ctx context.Context, req *collaboration.RemoveShareReq
return nil, errors.Wrap(err, "gateway: error calling RemoveShare")
}

// we do not want to remove the reference if it is a reshare
if utils.UserEqual(share.Owner, share.Creator) {
s.removeReference(ctx, share.ResourceId)
}

if s.c.CommitShareToStorageGrant {
removeGrantStatus, err := s.removeGrant(ctx, share.ResourceId, share.Grantee, share.Permissions.Permissions, nil)
if err != nil {
Expand Down

0 comments on commit 4f9d9da

Please sign in to comment.