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

Add GRPC stubs for CreateSymlink method #1228

Merged
merged 1 commit into from
Oct 7, 2020
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
3 changes: 3 additions & 0 deletions changelog/unreleased/create-symlink-stubs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Enhancement: Add GRPC stubs for CreateSymlink method

https://github.com/cs3org/reva/pull/1228
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,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-20200810113633-b00aca449666
github.com/cs3org/go-cs3apis v0.0.0-20200903142434-7dfeb0059208
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/eventials/go-tus v0.0.0-20200718001131-45c7ec8f5d59
github.com/go-ldap/ldap/v3 v3.2.3
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ github.com/cs3org/go-cs3apis v0.0.0-20200730121022-c4f3d4f7ddfd h1:uMaudkC7znaiI
github.com/cs3org/go-cs3apis v0.0.0-20200730121022-c4f3d4f7ddfd/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666 h1:E7VsSSN/2YZLSwrDMJJdAWU11lP7W1qkcXbrslb0PM0=
github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/go-cs3apis v0.0.0-20200903142434-7dfeb0059208 h1:EnNRlx2qlHh1l4rLIdlA2QVwvHyKT1KFZxRyDqm0NNQ=
github.com/cs3org/go-cs3apis v0.0.0-20200903142434-7dfeb0059208/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down
6 changes: 6 additions & 0 deletions internal/grpc/services/gateway/storageprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -2025,6 +2025,12 @@ func (s *svc) getSharedFolder(ctx context.Context) string {
return shareFolder
}

func (s *svc) CreateSymlink(ctx context.Context, req *provider.CreateSymlinkRequest) (*provider.CreateSymlinkResponse, error) {
return &provider.CreateSymlinkResponse{
Status: status.NewUnimplemented(ctx, errors.New("CreateSymlink not implemented"), "CreateSymlink not implemented"),
}, nil
}

func (s *svc) ListFileVersions(ctx context.Context, req *provider.ListFileVersionsRequest) (*provider.ListFileVersionsResponse, error) {
c, err := s.find(ctx, req.Ref)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,10 @@ func (s *service) CreateReference(ctx context.Context, req *provider.CreateRefer
return nil, gstatus.Errorf(codes.Unimplemented, "method not implemented")
}

func (s *service) CreateSymlink(ctx context.Context, req *provider.CreateSymlinkRequest) (*provider.CreateSymlinkResponse, error) {
return nil, gstatus.Errorf(codes.Unimplemented, "method not implemented")
}

func (s *service) UpdateGrant(ctx context.Context, req *provider.UpdateGrantRequest) (*provider.UpdateGrantResponse, error) {
return nil, gstatus.Errorf(codes.Unimplemented, "method not implemented")
}
Expand Down
98 changes: 52 additions & 46 deletions internal/grpc/services/storageprovider/storageprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -878,52 +878,6 @@ func (s *service) AddGrant(ctx context.Context, req *provider.AddGrantRequest) (
return res, nil
}

func (s *service) CreateReference(ctx context.Context, req *provider.CreateReferenceRequest) (*provider.CreateReferenceResponse, error) {
log := appctx.GetLogger(ctx)

// parse uri is valid
u, err := url.Parse(req.TargetUri)
if err != nil {
log.Err(err).Msg("invalid target uri")
return &provider.CreateReferenceResponse{
Status: status.NewInvalidArg(ctx, "target uri is invalid: "+err.Error()),
}, nil
}

ref := &provider.Reference{
Spec: &provider.Reference_Path{
Path: req.Path,
},
}

newRef, err := s.unwrap(ctx, ref)
if err != nil {
return &provider.CreateReferenceResponse{
Status: status.NewInternal(ctx, err, "error unwrapping path"),
}, nil
}

if err := s.storage.CreateReference(ctx, newRef.GetPath(), u); err != nil {
log.Err(err).Msg("error calling CreateReference")
var st *rpc.Status
switch err.(type) {
case errtypes.IsNotFound:
st = status.NewNotFound(ctx, "path not found when creating reference")
case errtypes.PermissionDenied:
st = status.NewPermissionDenied(ctx, err, "permission denied")
default:
st = status.NewInternal(ctx, err, "error creating reference")
}
return &provider.CreateReferenceResponse{
Status: st,
}, nil
}

return &provider.CreateReferenceResponse{
Status: status.NewOK(ctx),
}, nil
}

func (s *service) UpdateGrant(ctx context.Context, req *provider.UpdateGrantRequest) (*provider.UpdateGrantResponse, error) {
// check grantee type is valid
if req.Grant.Grantee.Type == provider.GranteeType_GRANTEE_TYPE_INVALID {
Expand Down Expand Up @@ -996,6 +950,58 @@ func (s *service) RemoveGrant(ctx context.Context, req *provider.RemoveGrantRequ
return res, nil
}

func (s *service) CreateReference(ctx context.Context, req *provider.CreateReferenceRequest) (*provider.CreateReferenceResponse, error) {
log := appctx.GetLogger(ctx)

// parse uri is valid
u, err := url.Parse(req.TargetUri)
if err != nil {
log.Err(err).Msg("invalid target uri")
return &provider.CreateReferenceResponse{
Status: status.NewInvalidArg(ctx, "target uri is invalid: "+err.Error()),
}, nil
}

ref := &provider.Reference{
Spec: &provider.Reference_Path{
Path: req.Path,
},
}

newRef, err := s.unwrap(ctx, ref)
if err != nil {
return &provider.CreateReferenceResponse{
Status: status.NewInternal(ctx, err, "error unwrapping path"),
}, nil
}

if err := s.storage.CreateReference(ctx, newRef.GetPath(), u); err != nil {
log.Err(err).Msg("error calling CreateReference")
var st *rpc.Status
switch err.(type) {
case errtypes.IsNotFound:
st = status.NewNotFound(ctx, "path not found when creating reference")
case errtypes.PermissionDenied:
st = status.NewPermissionDenied(ctx, err, "permission denied")
default:
st = status.NewInternal(ctx, err, "error creating reference")
}
return &provider.CreateReferenceResponse{
Status: st,
}, nil
}

return &provider.CreateReferenceResponse{
Status: status.NewOK(ctx),
}, nil
}

func (s *service) CreateSymlink(ctx context.Context, req *provider.CreateSymlinkRequest) (*provider.CreateSymlinkResponse, error) {
return &provider.CreateSymlinkResponse{
Status: status.NewUnimplemented(ctx, errors.New("CreateSymlink not implemented"), "CreateSymlink not implemented"),
}, nil
}

func (s *service) GetQuota(ctx context.Context, req *provider.GetQuotaRequest) (*provider.GetQuotaResponse, error) {
total, used, err := s.storage.GetQuota(ctx)
if err != nil {
Expand Down