From 5bda418761e13724a986a9824bf5af5af17654dd Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Mon, 9 Dec 2019 16:36:23 -0500 Subject: [PATCH] 15922: Preserve writable_by in user and collection responses. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- lib/controller/federation/conn.go | 1 + lib/controller/router/response.go | 8 +++++--- sdk/go/arvados/collection.go | 1 + sdk/go/arvados/user.go | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/controller/federation/conn.go b/lib/controller/federation/conn.go index 174ece134f..a12ebc1faf 100644 --- a/lib/controller/federation/conn.go +++ b/lib/controller/federation/conn.go @@ -345,6 +345,7 @@ var userAttrsCachedFromLoginCluster = map[string]bool{ "is_invited": false, "owner_uuid": false, "uuid": false, + "writable_by": false, } func (conn *Conn) UserList(ctx context.Context, options arvados.ListOptions) (arvados.UserList, error) { diff --git a/lib/controller/router/response.go b/lib/controller/router/response.go index 23462bcb0c..7f6e06844f 100644 --- a/lib/controller/router/response.go +++ b/lib/controller/router/response.go @@ -45,9 +45,11 @@ func applySelectParam(selectParam []string, orig map[string]interface{}) map[str selected[attr] = v } } - // Preserve "kind" even if not requested - if v, ok := orig["kind"]; ok { - selected["kind"] = v + // Some keys are always preserved, even if not requested + for _, k := range []string{"kind", "writable_by"} { + if v, ok := orig[k]; ok { + selected[k] = v + } } return selected } diff --git a/sdk/go/arvados/collection.go b/sdk/go/arvados/collection.go index 4c9305f3f7..5ac35e2292 100644 --- a/sdk/go/arvados/collection.go +++ b/sdk/go/arvados/collection.go @@ -36,6 +36,7 @@ type Collection struct { DeleteAt *time.Time `json:"delete_at"` IsTrashed bool `json:"is_trashed"` Properties map[string]interface{} `json:"properties"` + WritableBy []string `json:"writable_by,omitempty"` } func (c Collection) resourceName() string { diff --git a/sdk/go/arvados/user.go b/sdk/go/arvados/user.go index 30bc094d07..950b2ff4e2 100644 --- a/sdk/go/arvados/user.go +++ b/sdk/go/arvados/user.go @@ -24,6 +24,7 @@ type User struct { ModifiedByUserUUID string `json:"modified_by_user_uuid"` ModifiedByClientUUID string `json:"modified_by_client_uuid"` Prefs map[string]interface{} `json:"prefs"` + WritableBy []string `json:"writable_by,omitempty"` } // UserList is an arvados#userList resource. -- 2.30.2