From 684424251145049fa2607bdcca798cc223136302 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Mon, 11 Oct 2021 14:39:45 +0200 Subject: [PATCH 1/6] report quota --- go.mod | 4 ++- go.sum | 6 ++--- graph/pkg/service/v0/drives.go | 47 +++++++++++++++++++++++++++++++--- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 07c461daf68..82e6381e828 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/asim/go-micro/v3 v3.6.1-0.20210924081004-8c39b1e1204d github.com/blevesearch/bleve/v2 v2.1.0 github.com/coreos/go-oidc/v3 v3.0.0 - github.com/cs3org/go-cs3apis v0.0.0-20210922150613-cb9e3c99f8de + github.com/cs3org/go-cs3apis v0.0.0-20211007101428-6d142794ec11 github.com/cs3org/reva v1.13.1-0.20211006080436-67f39be571fa github.com/disintegration/imaging v1.6.2 github.com/glauth/glauth v1.1.3-0.20210729125545-b9aecdfcac31 @@ -77,3 +77,5 @@ require ( // this is a transitive replace. See https://github.com/libregraph/lico/blob/master/go.mod#L38 replace github.com/crewjam/saml => github.com/crewjam/saml v0.4.5 + +replace github.com/cs3org/reva => ../reva diff --git a/go.sum b/go.sum index f3c9e54f680..48a8f8c2ffd 100644 --- a/go.sum +++ b/go.sum @@ -289,10 +289,8 @@ github.com/crewjam/httperr v0.2.0/go.mod h1:Jlz+Sg/XqBQhyMjdDiC+GNNRzZTD7x39Gu3p github.com/crewjam/saml v0.4.5 h1:H9u+6CZAESUKHxMyxUbVn0IawYvKZn4nt3d4ccV4O/M= github.com/crewjam/saml v0.4.5/go.mod h1:qCJQpUtZte9R1ZjUBcW8qtCNlinbO363ooNl02S68bk= github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4= -github.com/cs3org/go-cs3apis v0.0.0-20210922150613-cb9e3c99f8de h1:N+AI8wz7yhDDqHDuq9EGaqQoFhAOi9XW37xt0ormflw= -github.com/cs3org/go-cs3apis v0.0.0-20210922150613-cb9e3c99f8de/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= -github.com/cs3org/reva v1.13.1-0.20211006080436-67f39be571fa h1:sKNIaZ7rZFi+32Wnv8Z8Tc+J4gh0AYrUjaxl0Uk8JCQ= -github.com/cs3org/reva v1.13.1-0.20211006080436-67f39be571fa/go.mod h1:z1GjBB1gBv2olyqhWpTbL+JOobb2Q+GCSebR09x797A= +github.com/cs3org/go-cs3apis v0.0.0-20211007101428-6d142794ec11 h1:cc/8fdzWdr/wAZOXb29J8bnXjo1poCMCLwhlFBlvhfI= +github.com/cs3org/go-cs3apis v0.0.0-20211007101428-6d142794ec11/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= diff --git a/graph/pkg/service/v0/drives.go b/graph/pkg/service/v0/drives.go index 2cd8f8b9535..4971e56585b 100644 --- a/graph/pkg/service/v0/drives.go +++ b/graph/pkg/service/v0/drives.go @@ -1,6 +1,7 @@ package svc import ( + "context" "encoding/json" "fmt" "math" @@ -11,6 +12,7 @@ import ( "time" "github.com/CiscoM31/godata" + gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1" cs3rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1" v1beta11 "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" @@ -62,8 +64,7 @@ func (g Graph) GetDrives(w http.ResponseWriter, r *http.Request) { errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) return } - - files, err := formatDrives(wdu, res.StorageSpaces) + files, err := g.formatDrives(ctx, wdu, res.StorageSpaces) if err != nil { g.logger.Error().Err(err).Msg("error encoding response as json") errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) @@ -377,15 +378,55 @@ func cs3StorageSpaceToDrive(baseURL *url.URL, space *storageprovider.StorageSpac return drive, nil } -func formatDrives(baseURL *url.URL, mds []*storageprovider.StorageSpace) ([]*msgraph.Drive, error) { +func (g Graph) formatDrives(ctx context.Context, baseURL *url.URL, mds []*storageprovider.StorageSpace) ([]*msgraph.Drive, error) { responses := make([]*msgraph.Drive, 0, len(mds)) for i := range mds { res, err := cs3StorageSpaceToDrive(baseURL, mds[i]) if err != nil { return nil, err } + qta, err := g.getDriveQuota(ctx, mds[i]) + if err != nil { + return nil, err + } + res.Quota = &qta responses = append(responses, res) } return responses, nil } + +func (g Graph) getDriveQuota(ctx context.Context, space *storageprovider.StorageSpace) (msgraph.Quota, error) { + client, err := g.GetClient() + + req := &gateway.GetQuotaRequest{ + Ref: &provider.Reference{ + ResourceId: &provider.ResourceId{ + StorageId: space.Root.StorageId, + OpaqueId: space.Root.OpaqueId, + }, + Path: ".", + }, + } + res, err := client.GetQuota(ctx, req) + switch { + case err != nil: + g.logger.Error().Err(err).Msg("error sending get quota grpc request") + return msgraph.Quota{}, err + case res.Status.Code != cs3rpc.Code_CODE_OK: + g.logger.Error().Err(err).Msg("error sending sending get quota grpc request") + return msgraph.Quota{}, err + } + + total := int64(res.TotalBytes) + + used := int64(res.UsedBytes) + remaining := total - used + qta := msgraph.Quota{ + Remaining: &remaining, + Total: &total, + Used: &used, + } + + return qta, nil +} From a9ec4e99b79a4d633a4d2a8f283f9aa13e81e934 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Thu, 14 Oct 2021 13:56:03 +0200 Subject: [PATCH 2/6] replace reva with micbar fork for testing --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index d99359dc377..b02572bcf41 100644 --- a/go.mod +++ b/go.mod @@ -245,4 +245,4 @@ require ( // this is a transitive replace. See https://github.com/libregraph/lico/blob/master/go.mod#L38 replace github.com/crewjam/saml => github.com/crewjam/saml v0.4.5 -replace github.com/cs3org/reva => ../reva +replace github.com/cs3org/reva => github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531 diff --git a/go.sum b/go.sum index 68ad437b31d..e3a725de867 100644 --- a/go.sum +++ b/go.sum @@ -765,6 +765,8 @@ github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 h1:Z/i1e+gTZrmcGeZy github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103/go.mod h1:o9YPB5aGP8ob35Vy6+vyq3P3bWe7NQWzf+JLiXCiMaE= github.com/mennanov/fieldmask-utils v0.4.0 h1:MvXJgV4em1j0u2Aw2Wwd/ES8alZE9vN5FSB1SYiJ6vM= github.com/mennanov/fieldmask-utils v0.4.0/go.mod h1:lah2lHczE2ff+7SqnNKpB+YzaO7M3h5iNO4LgPTJheM= +github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531 h1:8ArBLoRSC94F6jvPx97TprxTMJ310+JiyqMm9RtPy7o= +github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531/go.mod h1:uENdZEtDFmTRt6+d4+Ro4P5XnNL+9I6gwftHEBJzHQw= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= From 7b062ce2a4300b367f51b0a4fe9fae4070d6cf87 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 14 Oct 2021 16:00:21 +0200 Subject: [PATCH 3/6] update reva --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index b02572bcf41..8b5bedf7d23 100644 --- a/go.mod +++ b/go.mod @@ -245,4 +245,4 @@ require ( // this is a transitive replace. See https://github.com/libregraph/lico/blob/master/go.mod#L38 replace github.com/crewjam/saml => github.com/crewjam/saml v0.4.5 -replace github.com/cs3org/reva => github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531 +replace github.com/cs3org/reva => github.com/micbar/reva v1.9.1-0.20211014134834-c5ca8080f587 From abbd64bff63b8098faa47fd3115e6b2d70187b50 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 14 Oct 2021 16:06:49 +0200 Subject: [PATCH 4/6] fix update branch --- go.sum | 2 ++ graph/pkg/service/v0/drives.go | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/go.sum b/go.sum index e3a725de867..41caa6abc80 100644 --- a/go.sum +++ b/go.sum @@ -767,6 +767,8 @@ github.com/mennanov/fieldmask-utils v0.4.0 h1:MvXJgV4em1j0u2Aw2Wwd/ES8alZE9vN5FS github.com/mennanov/fieldmask-utils v0.4.0/go.mod h1:lah2lHczE2ff+7SqnNKpB+YzaO7M3h5iNO4LgPTJheM= github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531 h1:8ArBLoRSC94F6jvPx97TprxTMJ310+JiyqMm9RtPy7o= github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531/go.mod h1:uENdZEtDFmTRt6+d4+Ro4P5XnNL+9I6gwftHEBJzHQw= +github.com/micbar/reva v1.9.1-0.20211014134834-c5ca8080f587 h1:/SfB2iKBzK7yQrK7bBoTHfUCHY+FB9AoVSOoErXTXo4= +github.com/micbar/reva v1.9.1-0.20211014134834-c5ca8080f587/go.mod h1:uENdZEtDFmTRt6+d4+Ro4P5XnNL+9I6gwftHEBJzHQw= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= diff --git a/graph/pkg/service/v0/drives.go b/graph/pkg/service/v0/drives.go index d401d506cbb..b2b3ad4fcff 100644 --- a/graph/pkg/service/v0/drives.go +++ b/graph/pkg/service/v0/drives.go @@ -451,3 +451,21 @@ func (g Graph) getDriveQuota(ctx context.Context, space *storageprovider.Storage return qta, nil } + +func getQuota(quota *msgraph.Quota, defaultQuota string) *provider.Quota { + switch { + case quota != nil && quota.Total != nil: + if q := *quota.Total; q >= 0 { + return &provider.Quota{QuotaMaxBytes: uint64(q)} + } + fallthrough + case defaultQuota != "": + if q, err := strconv.ParseInt(defaultQuota, 10, 64); err == nil && q >= 0 { + return &provider.Quota{QuotaMaxBytes: uint64(q)} + } + fallthrough + default: + return nil + } + +} From 654c237094669c3756c1f181ea5059cbe53894ef Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Thu, 14 Oct 2021 17:23:40 +0200 Subject: [PATCH 5/6] add missing error handling --- graph/pkg/service/v0/drives.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/graph/pkg/service/v0/drives.go b/graph/pkg/service/v0/drives.go index b2b3ad4fcff..a40288a8f98 100644 --- a/graph/pkg/service/v0/drives.go +++ b/graph/pkg/service/v0/drives.go @@ -419,6 +419,10 @@ func (g Graph) formatDrives(ctx context.Context, baseURL *url.URL, mds []*storag func (g Graph) getDriveQuota(ctx context.Context, space *storageprovider.StorageSpace) (msgraph.Quota, error) { client, err := g.GetClient() + if err != nil { + g.logger.Error().Err(err).Msg("error creating grpc client") + return msgraph.Quota{}, err + } req := &gateway.GetQuotaRequest{ Ref: &provider.Reference{ From 986543ef8b1d194dae389f450649c27f41eda1a9 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Thu, 14 Oct 2021 19:19:18 +0200 Subject: [PATCH 6/6] update reva to latest master --- go.mod | 4 +--- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 8b5bedf7d23..8d6c719ed35 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/blevesearch/bleve/v2 v2.1.0 github.com/coreos/go-oidc/v3 v3.0.0 github.com/cs3org/go-cs3apis v0.0.0-20211007101428-6d142794ec11 - github.com/cs3org/reva v1.13.1-0.20211006080436-67f39be571fa + github.com/cs3org/reva v1.14.1-0.20211014164014-5866f5e0f31b github.com/disintegration/imaging v1.6.2 github.com/glauth/glauth v1.1.3-0.20210729125545-b9aecdfcac31 github.com/go-chi/chi/v5 v5.0.4 @@ -244,5 +244,3 @@ require ( // this is a transitive replace. See https://github.com/libregraph/lico/blob/master/go.mod#L38 replace github.com/crewjam/saml => github.com/crewjam/saml v0.4.5 - -replace github.com/cs3org/reva => github.com/micbar/reva v1.9.1-0.20211014134834-c5ca8080f587 diff --git a/go.sum b/go.sum index 41caa6abc80..0a63b1ef7da 100644 --- a/go.sum +++ b/go.sum @@ -291,6 +291,8 @@ github.com/crewjam/saml v0.4.5/go.mod h1:qCJQpUtZte9R1ZjUBcW8qtCNlinbO363ooNl02S github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4= github.com/cs3org/go-cs3apis v0.0.0-20211007101428-6d142794ec11 h1:cc/8fdzWdr/wAZOXb29J8bnXjo1poCMCLwhlFBlvhfI= github.com/cs3org/go-cs3apis v0.0.0-20211007101428-6d142794ec11/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/reva v1.14.1-0.20211014164014-5866f5e0f31b h1:IT6h3/gt83pge8hHRdb8FpIMkyrrgeEM1VF9I0RP/kA= +github.com/cs3org/reva v1.14.1-0.20211014164014-5866f5e0f31b/go.mod h1:uENdZEtDFmTRt6+d4+Ro4P5XnNL+9I6gwftHEBJzHQw= 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= @@ -765,10 +767,6 @@ github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 h1:Z/i1e+gTZrmcGeZy github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103/go.mod h1:o9YPB5aGP8ob35Vy6+vyq3P3bWe7NQWzf+JLiXCiMaE= github.com/mennanov/fieldmask-utils v0.4.0 h1:MvXJgV4em1j0u2Aw2Wwd/ES8alZE9vN5FSB1SYiJ6vM= github.com/mennanov/fieldmask-utils v0.4.0/go.mod h1:lah2lHczE2ff+7SqnNKpB+YzaO7M3h5iNO4LgPTJheM= -github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531 h1:8ArBLoRSC94F6jvPx97TprxTMJ310+JiyqMm9RtPy7o= -github.com/micbar/reva v1.9.1-0.20211014111217-0edd79fd6531/go.mod h1:uENdZEtDFmTRt6+d4+Ro4P5XnNL+9I6gwftHEBJzHQw= -github.com/micbar/reva v1.9.1-0.20211014134834-c5ca8080f587 h1:/SfB2iKBzK7yQrK7bBoTHfUCHY+FB9AoVSOoErXTXo4= -github.com/micbar/reva v1.9.1-0.20211014134834-c5ca8080f587/go.mod h1:uENdZEtDFmTRt6+d4+Ro4P5XnNL+9I6gwftHEBJzHQw= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=