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

decomposed fs: return reference to parent #2691

Merged
merged 4 commits into from
Mar 31, 2022
Merged
Show file tree
Hide file tree
Changes from 3 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/decomposed-fs-parent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Enhancement: Decomposed FS: return a reference to the parent

We've implemented the changes from cs3org/cs3apis#167 in the DecomposedFS, so that a stat on a resource always includes a reference to the parent of the resource.

https://github.com/cs3org/reva/pull/2691
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ require (
github.com/cheggaaa/pb v1.0.29
github.com/coreos/go-oidc v2.2.1+incompatible
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e
github.com/cs3org/go-cs3apis v0.0.0-20220126114148-64c025ccdd19
github.com/cs3org/go-cs3apis v0.0.0-20220328105952-297bef33e13f
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8
github.com/dgraph-io/ristretto v0.1.0
github.com/eventials/go-tus v0.0.0-20200718001131-45c7ec8f5d59
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,8 @@ github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e h1:tqSPWQeueWTKnJVMJff
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4=
github.com/cs3org/go-cs3apis v0.0.0-20220126114148-64c025ccdd19 h1:1jqPH58jCxvbaJ9WLIJ7W2/m622bWS6ChptzljSG6IQ=
github.com/cs3org/go-cs3apis v0.0.0-20220126114148-64c025ccdd19/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/go-cs3apis v0.0.0-20220328105952-297bef33e13f h1:emnlOWc1s2gx77MViLnZH9yh5TRHKsykRu6rJjx3lkM=
github.com/cs3org/go-cs3apis v0.0.0-20220328105952-297bef33e13f/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8 h1:Z9lwXumT5ACSmJ7WGnFl+OMLLjpz5uR2fyz7dC255FI=
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8/go.mod h1:4abs/jPXcmJzYoYGF91JF9Uq9s/KL5n1jvFDix8KcqY=
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
Expand Down
12 changes: 7 additions & 5 deletions internal/grpc/services/authregistry/authregistry.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,17 +116,19 @@ func (s *service) ListAuthProviders(ctx context.Context, req *registrypb.ListAut
return res, nil
}

func (s *service) GetAuthProvider(ctx context.Context, req *registrypb.GetAuthProviderRequest) (*registrypb.GetAuthProviderResponse, error) {
func (s *service) GetAuthProviders(ctx context.Context, req *registrypb.GetAuthProvidersRequest) (*registrypb.GetAuthProvidersResponse, error) {
pinfo, err := s.reg.GetProvider(ctx, req.Type)
if err != nil {
return &registrypb.GetAuthProviderResponse{
return &registrypb.GetAuthProvidersResponse{
Status: status.NewInternal(ctx, "error getting auth provider for type: "+req.Type),
}, nil
}

res := &registrypb.GetAuthProviderResponse{
Status: status.NewOK(ctx),
Provider: pinfo,
res := &registrypb.GetAuthProvidersResponse{
Status: status.NewOK(ctx),
Providers: []*registrypb.ProviderInfo{
pinfo,
},
}
return res, nil
}
18 changes: 15 additions & 3 deletions internal/grpc/services/datatx/datatx.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ func (s *service) UnprotectedEndpoints() []string {
return []string{}
}

func (s *service) CreateTransfer(ctx context.Context, req *datatx.CreateTransferRequest) (*datatx.CreateTransferResponse, error) {
return &datatx.CreateTransferResponse{
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CreateTransfer not implemented"), "CreateTransfer not implemented"),
func (s *service) PullTransfer(ctx context.Context, req *datatx.PullTransferRequest) (*datatx.PullTransferResponse, error) {
return &datatx.PullTransferResponse{
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("PullTransfer not implemented"), "PullTransfer not implemented"),
}, nil
}

Expand All @@ -93,6 +93,18 @@ func (s *service) GetTransferStatus(ctx context.Context, in *datatx.GetTransferS
}, nil
}

func (s *service) ListTransfers(ctx context.Context, in *datatx.ListTransfersRequest) (*datatx.ListTransfersResponse, error) {
return &datatx.ListTransfersResponse{
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("ListTransfers not implemented"), "ListTransfers not implemented"),
}, nil
}

func (s *service) RetryTransfer(ctx context.Context, in *datatx.RetryTransferRequest) (*datatx.RetryTransferResponse, error) {
return &datatx.RetryTransferResponse{
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("RetryTransfer not implemented"), "RetryTransfer not implemented"),
}, nil
}

func (s *service) CancelTransfer(ctx context.Context, in *datatx.CancelTransferRequest) (*datatx.CancelTransferResponse, error) {
return &datatx.CancelTransferResponse{
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CancelTransfer not implemented"), "CancelTransfer not implemented"),
Expand Down
6 changes: 3 additions & 3 deletions internal/grpc/services/gateway/authprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func (s *svc) findAuthProvider(ctx context.Context, authType string) (authpb.Pro
return nil, err
}

res, err := c.GetAuthProvider(ctx, &registry.GetAuthProviderRequest{
res, err := c.GetAuthProviders(ctx, &registry.GetAuthProvidersRequest{
Type: authType,
})

Expand All @@ -219,9 +219,9 @@ func (s *svc) findAuthProvider(ctx context.Context, authType string) (authpb.Pro
return nil, err
}

if res.Status.Code == rpc.Code_CODE_OK && res.Provider != nil {
if res.Status.Code == rpc.Code_CODE_OK && res.Providers != nil && len(res.Providers) > 0 {
// TODO(labkode): check for capabilities here
c, err := pool.GetAuthProviderServiceClient(res.Provider.Address)
c, err := pool.GetAuthProviderServiceClient(res.Providers[0].Address)
if err != nil {
err = errors.Wrap(err, "gateway: error getting an auth provider client")
return nil, err
Expand Down
40 changes: 36 additions & 4 deletions internal/grpc/services/gateway/datatx.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,49 @@ import (
"github.com/pkg/errors"
)

func (s *svc) CreateTransfer(ctx context.Context, req *datatx.CreateTransferRequest) (*datatx.CreateTransferResponse, error) {
func (s *svc) PullTransfer(ctx context.Context, req *datatx.PullTransferRequest) (*datatx.PullTransferResponse, error) {
c, err := pool.GetDataTxClient(s.c.DataTxEndpoint)
if err != nil {
return &datatx.CreateTransferResponse{
return &datatx.PullTransferResponse{
Status: status.NewInternal(ctx, "error getting data transfer client"),
}, nil
}

res, err := c.CreateTransfer(ctx, req)
res, err := c.PullTransfer(ctx, req)
if err != nil {
return nil, errors.Wrap(err, "gateway: error calling CreateTransfer")
return nil, errors.Wrap(err, "gateway: error calling PullTransfer")
}

return res, nil
}

func (s *svc) ListTransfers(ctx context.Context, req *datatx.ListTransfersRequest) (*datatx.ListTransfersResponse, error) {
c, err := pool.GetDataTxClient(s.c.DataTxEndpoint)
if err != nil {
return &datatx.ListTransfersResponse{
Status: status.NewInternal(ctx, "error getting data transfer client"),
}, nil
}

res, err := c.ListTransfers(ctx, req)
if err != nil {
return nil, errors.Wrap(err, "gateway: error calling ListTransfers")
}

return res, nil
}

func (s *svc) RetryTransfer(ctx context.Context, req *datatx.RetryTransferRequest) (*datatx.RetryTransferResponse, error) {
c, err := pool.GetDataTxClient(s.c.DataTxEndpoint)
if err != nil {
return &datatx.RetryTransferResponse{
Status: status.NewInternal(ctx, "error getting data transfer client"),
}, nil
}

res, err := c.RetryTransfer(ctx, req)
if err != nil {
return nil, errors.Wrap(err, "gateway: error calling RetryTransfer")
}

return res, nil
Expand Down
9 changes: 9 additions & 0 deletions pkg/storage/utils/decomposedfs/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,14 @@ func (n *Node) AsResourceInfo(ctx context.Context, rp *provider.ResourcePermissi
}
}

var parentID *provider.ResourceId = nil
if p, err := n.Parent(); err == nil {
parentID = &provider.ResourceId{
StorageId: p.SpaceID,
OpaqueId: p.ID,
}
}

ri = &provider.ResourceInfo{
Id: id,
Path: fn,
Expand All @@ -613,6 +621,7 @@ func (n *Node) AsResourceInfo(ctx context.Context, rp *provider.ResourcePermissi
Target: target,
PermissionSet: rp,
Owner: n.Owner(),
ParentId: parentID,
}

if nodeType == provider.ResourceType_RESOURCE_TYPE_CONTAINER {
Expand Down