From: Ward Vandewege Date: Thu, 11 Feb 2021 16:34:35 +0000 (-0500) Subject: 17119: fix options and response type of the groups/shared and X-Git-Tag: 2.2.0~110^2~10 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/8f42bb4d4cb3e4beb60cd15f2fc5aeb22f08dbbd 17119: fix options and response type of the groups/shared and groups/content endpoints. Arvados-DCO-1.1-Signed-off-by: Ward Vandewege --- diff --git a/lib/controller/federation/conn.go b/lib/controller/federation/conn.go index 31faa04b81..63a05eb270 100644 --- a/lib/controller/federation/conn.go +++ b/lib/controller/federation/conn.go @@ -422,7 +422,7 @@ func (conn *Conn) GroupContents(ctx context.Context, options arvados.ContentsOpt return conn.chooseBackend(options.UUID).GroupContents(ctx, options) } -func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.ObjectList, error) { +func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.SharedGroupList, error) { return conn.chooseBackend(options.UUID).GroupShared(ctx, options) } @@ -464,6 +464,7 @@ var userAttrsCachedFromLoginCluster = map[string]bool{ "modified_at": true, "prefs": true, "username": true, + "kind": true, "etag": false, "full_name": false, diff --git a/lib/controller/router/response.go b/lib/controller/router/response.go index d554ab930f..656e731701 100644 --- a/lib/controller/router/response.go +++ b/lib/controller/router/response.go @@ -71,7 +71,9 @@ func (rtr *router) sendResponse(w http.ResponseWriter, req *http.Request, resp i } respKind := kind(resp) - if respKind != "" { + if respKind == "arvados#sharedGroupList" { + tmp["kind"] = "arvados#groupList" + } else if respKind != "" { tmp["kind"] = respKind } defaultItemKind := "" diff --git a/lib/controller/rpc/conn.go b/lib/controller/rpc/conn.go index 36411adfa8..fc2ca3c5a1 100644 --- a/lib/controller/rpc/conn.go +++ b/lib/controller/rpc/conn.go @@ -451,9 +451,9 @@ func (conn *Conn) GroupContents(ctx context.Context, options arvados.ContentsOpt return resp, err } -func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.ObjectList, error) { +func (conn *Conn) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.SharedGroupList, error) { ep := arvados.EndpointGroupShared - var resp arvados.ObjectList + var resp arvados.SharedGroupList 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 d17f8735b8..9aaa3205b7 100644 --- a/sdk/go/arvados/api.go +++ b/sdk/go/arvados/api.go @@ -140,6 +140,7 @@ type ContentsOptions struct { Limit int64 `json:"limit"` Offset int64 `json:"offset"` Order []string `json:"order"` + Include string `json:"include"` Recursive bool `json:"recursive"` ExcludeHomeProject bool `json:"exclude_home_project"` } @@ -239,7 +240,7 @@ type API interface { GroupGet(ctx context.Context, options GetOptions) (Group, error) GroupList(ctx context.Context, options ListOptions) (GroupList, error) GroupContents(ctx context.Context, options ContentsOptions) (ObjectList, error) - GroupShared(ctx context.Context, options SharedOptions) (ObjectList, error) + GroupShared(ctx context.Context, options SharedOptions) (SharedGroupList, 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 5380988153..b46b596f4f 100644 --- a/sdk/go/arvados/group.go +++ b/sdk/go/arvados/group.go @@ -16,6 +16,7 @@ type Group struct { GroupClass string `json:"group_class"` Etag string `json:"etag"` Href string `json:"href"` + Kind string `json:"kind"` TrashAt *time.Time `json:"trash_at"` CreatedAt time.Time `json:"created_at"` ModifiedAt time.Time `json:"modified_at"` @@ -36,8 +37,17 @@ type GroupList struct { Limit int `json:"limit"` } +// SharedGroupList is an arvados#groupList resource. +type SharedGroupList struct { + Included []interface{} `json:"included"` + Items []Group `json:"items"` + Offset int `json:"offset"` + Limit int `json:"limit"` +} + // ObjectList is an arvados#objectList resource. type ObjectList struct { + Included []interface{} `json:"included"` Items []interface{} `json:"items"` ItemsAvailable int `json:"items_available"` Offset int `json:"offset"` diff --git a/sdk/go/arvados/user.go b/sdk/go/arvados/user.go index 68960144a8..7693c8442b 100644 --- a/sdk/go/arvados/user.go +++ b/sdk/go/arvados/user.go @@ -16,6 +16,7 @@ type User struct { Email string `json:"email"` FullName string `json:"full_name"` FirstName string `json:"first_name"` + Kind string `json:"kind"` LastName string `json:"last_name"` IdentityURL string `json:"identity_url"` IsInvited bool `json:"is_invited"` diff --git a/sdk/go/arvadostest/api.go b/sdk/go/arvadostest/api.go index f4e725f7e4..781ede1d5d 100644 --- a/sdk/go/arvadostest/api.go +++ b/sdk/go/arvadostest/api.go @@ -149,9 +149,9 @@ func (as *APIStub) GroupContents(ctx context.Context, options arvados.ContentsOp as.appendCall(ctx, as.GroupContents, options) return arvados.ObjectList{}, as.Error } -func (as *APIStub) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.ObjectList, error) { +func (as *APIStub) GroupShared(ctx context.Context, options arvados.SharedOptions) (arvados.SharedGroupList, error) { as.appendCall(ctx, as.GroupShared, options) - return arvados.ObjectList{}, as.Error + return arvados.SharedGroupList{}, as.Error } func (as *APIStub) GroupDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error) { as.appendCall(ctx, as.GroupDelete, options)