From 8b17f2ab7bcfcad4dcf9e3aa2cc203417053b23e Mon Sep 17 00:00:00 2001 From: Ward Vandewege Date: Wed, 10 Feb 2021 16:19:40 -0500 Subject: [PATCH] 17119: tweaks for groups endpoints. Arvados-DCO-1.1-Signed-off-by: Ward Vandewege --- lib/controller/federation/conn.go | 4 ++-- lib/controller/router/request.go | 2 ++ lib/controller/router/router.go | 25 ++++++++++++++++--------- lib/controller/rpc/conn.go | 8 ++++---- sdk/go/arvados/api.go | 10 ++++++---- sdk/go/arvados/group.go | 8 ++++++++ sdk/go/arvadostest/api.go | 12 ++++++++---- 7 files changed, 46 insertions(+), 23 deletions(-) diff --git a/lib/controller/federation/conn.go b/lib/controller/federation/conn.go index b43e79c3ff..31faa04b81 100644 --- a/lib/controller/federation/conn.go +++ b/lib/controller/federation/conn.go @@ -418,11 +418,11 @@ func (conn *Conn) GroupList(ctx context.Context, options arvados.ListOptions) (a return conn.generated_GroupList(ctx, options) } -func (conn *Conn) GroupContents(ctx context.Context, options arvados.ContentsOptions) (arvados.GroupList, error) { +func (conn *Conn) GroupContents(ctx context.Context, options arvados.ContentsOptions) (arvados.ObjectList, error) { return conn.chooseBackend(options.UUID).GroupContents(ctx, options) } -func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.GroupList, error) { +func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.ObjectList, error) { return conn.chooseBackend(options.UUID).GroupShared(ctx, options) } diff --git a/lib/controller/router/request.go b/lib/controller/router/request.go index 977a15f3ab..eae9e0a8ce 100644 --- a/lib/controller/router/request.go +++ b/lib/controller/router/request.go @@ -170,6 +170,8 @@ var boolParams = map[string]bool{ "redirect_to_new_user": true, "send_notification_email": true, "bypass_federation": true, + "recursive": true, + "exclude_home_project": true, } func stringToBool(s string) bool { diff --git a/lib/controller/router/router.go b/lib/controller/router/router.go index f5db9426b8..3f4a7e30b1 100644 --- a/lib/controller/router/router.go +++ b/lib/controller/router/router.go @@ -242,13 +242,6 @@ func (rtr *router) addRoutes() { return rtr.backend.GroupUpdate(ctx, *opts.(*arvados.UpdateOptions)) }, }, - { - arvados.EndpointGroupGet, - func() interface{} { return &arvados.GetOptions{} }, - func(ctx context.Context, opts interface{}) (interface{}, error) { - return rtr.backend.GroupGet(ctx, *opts.(*arvados.GetOptions)) - }, - }, { arvados.EndpointGroupList, func() interface{} { return &arvados.ListOptions{Limit: -1} }, @@ -258,18 +251,32 @@ func (rtr *router) addRoutes() { }, { arvados.EndpointGroupContents, - func() interface{} { return &arvados.ListOptions{Limit: -1} }, + func() interface{} { return &arvados.ContentsOptions{Limit: -1} }, + func(ctx context.Context, opts interface{}) (interface{}, error) { + return rtr.backend.GroupContents(ctx, *opts.(*arvados.ContentsOptions)) + }, + }, + { + arvados.EndpointGroupContents2, + func() interface{} { return &arvados.ContentsOptions{Limit: -1} }, func(ctx context.Context, opts interface{}) (interface{}, error) { return rtr.backend.GroupContents(ctx, *opts.(*arvados.ContentsOptions)) }, }, { arvados.EndpointGroupShared, - func() interface{} { return &arvados.ListOptions{Limit: -1} }, + func() interface{} { return &arvados.SharedOptions{Limit: -1} }, func(ctx context.Context, opts interface{}) (interface{}, error) { return rtr.backend.GroupShared(ctx, *opts.(*arvados.SharedOptions)) }, }, + { + arvados.EndpointGroupGet, + func() interface{} { return &arvados.GetOptions{} }, + func(ctx context.Context, opts interface{}) (interface{}, error) { + return rtr.backend.GroupGet(ctx, *opts.(*arvados.GetOptions)) + }, + }, { arvados.EndpointGroupDelete, func() interface{} { return &arvados.DeleteOptions{} }, diff --git a/lib/controller/rpc/conn.go b/lib/controller/rpc/conn.go index 69bb06c0fd..36411adfa8 100644 --- a/lib/controller/rpc/conn.go +++ b/lib/controller/rpc/conn.go @@ -444,16 +444,16 @@ func (conn *Conn) GroupList(ctx context.Context, options arvados.ListOptions) (a return resp, err } -func (conn *Conn) GroupContents(ctx context.Context, options arvados.ContentsOptions) (arvados.GroupList, error) { +func (conn *Conn) GroupContents(ctx context.Context, options arvados.ContentsOptions) (arvados.ObjectList, error) { ep := arvados.EndpointGroupContents - var resp arvados.GroupList + var resp arvados.ObjectList err := conn.requestAndDecode(ctx, &resp, ep, nil, options) return resp, err } -func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.GroupList, error) { +func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.ObjectList, error) { ep := arvados.EndpointGroupShared - var resp arvados.GroupList + var resp arvados.ObjectList err := conn.requestAndDecode(ctx, &resp, ep, nil, options) return resp, err } diff --git a/sdk/go/arvados/api.go b/sdk/go/arvados/api.go index 3331be58d5..d17f8735b8 100644 --- a/sdk/go/arvados/api.go +++ b/sdk/go/arvados/api.go @@ -55,8 +55,9 @@ var ( EndpointGroupUpdate = APIEndpoint{"PATCH", "arvados/v1/groups/{uuid}", "group"} EndpointGroupGet = APIEndpoint{"GET", "arvados/v1/groups/{uuid}", ""} EndpointGroupList = APIEndpoint{"GET", "arvados/v1/groups", ""} - EndpointGroupContents = APIEndpoint{"GET", "arvados/v1/groups/{uuid}/contents", ""} - EndpointGroupShared = APIEndpoint{"GET", "arvados/v1/groups/{uuid}/shared", ""} + EndpointGroupContents = APIEndpoint{"GET", "arvados/v1/groups/contents", ""} + EndpointGroupContents2 = APIEndpoint{"GET", "arvados/v1/groups/{uuid}/contents", ""} + EndpointGroupShared = APIEndpoint{"GET", "arvados/v1/groups/shared", ""} EndpointGroupDelete = APIEndpoint{"DELETE", "arvados/v1/groups/{uuid}", ""} EndpointGroupUntrash = APIEndpoint{"POST", "arvados/v1/groups/{uuid}/untrash", ""} EndpointUserActivate = APIEndpoint{"POST", "arvados/v1/users/{uuid}/activate", ""} @@ -149,6 +150,7 @@ type SharedOptions struct { Filters []Filter `json:"filters"` Limit int64 `json:"limit"` Offset int64 `json:"offset"` + Count string `json:"count"` Order []string `json:"order"` Include string `json:"include"` } @@ -236,8 +238,8 @@ type API interface { GroupUpdate(ctx context.Context, options UpdateOptions) (Group, error) GroupGet(ctx context.Context, options GetOptions) (Group, error) GroupList(ctx context.Context, options ListOptions) (GroupList, error) - GroupContents(ctx context.Context, options ContentsOptions) (GroupList, error) - GroupShared(ctx context.Context, options SharedOptions) (GroupList, error) + GroupContents(ctx context.Context, options ContentsOptions) (ObjectList, error) + GroupShared(ctx context.Context, options SharedOptions) (ObjectList, error) GroupDelete(ctx context.Context, options DeleteOptions) (Group, error) GroupUntrash(ctx context.Context, options UntrashOptions) (Group, error) SpecimenCreate(ctx context.Context, options CreateOptions) (Specimen, error) diff --git a/sdk/go/arvados/group.go b/sdk/go/arvados/group.go index 26bd6e1874..5380988153 100644 --- a/sdk/go/arvados/group.go +++ b/sdk/go/arvados/group.go @@ -36,6 +36,14 @@ type GroupList struct { Limit int `json:"limit"` } +// ObjectList is an arvados#objectList resource. +type ObjectList struct { + Items []interface{} `json:"items"` + ItemsAvailable int `json:"items_available"` + Offset int `json:"offset"` + Limit int `json:"limit"` +} + func (g Group) resourceName() string { return "group" } diff --git a/sdk/go/arvadostest/api.go b/sdk/go/arvadostest/api.go index fe8c324660..f4e725f7e4 100644 --- a/sdk/go/arvadostest/api.go +++ b/sdk/go/arvadostest/api.go @@ -145,18 +145,22 @@ func (as *APIStub) GroupList(ctx context.Context, options arvados.ListOptions) ( as.appendCall(ctx, as.GroupList, options) return arvados.GroupList{}, as.Error } -func (as *APIStub) GroupContents(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) { +func (as *APIStub) GroupContents(ctx context.Context, options arvados.ContentsOptions) (arvados.ObjectList, error) { as.appendCall(ctx, as.GroupContents, options) - return nil, as.Error + return arvados.ObjectList{}, as.Error } -func (as *APIStub) GroupShared(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) { +func (as *APIStub) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.ObjectList, error) { as.appendCall(ctx, as.GroupShared, options) - return nil, as.Error + return arvados.ObjectList{}, as.Error } func (as *APIStub) GroupDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error) { as.appendCall(ctx, as.GroupDelete, options) return arvados.Group{}, as.Error } +func (as *APIStub) GroupUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Group, error) { + as.appendCall(ctx, as.GroupUntrash, options) + return arvados.Group{}, as.Error +} func (as *APIStub) SpecimenCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Specimen, error) { as.appendCall(ctx, as.SpecimenCreate, options) return arvados.Specimen{}, as.Error -- 2.30.2