[arvados] updated: 2.1.0-2935-gedc70abe9

git repository hosting git at public.arvados.org
Fri Sep 23 19:27:25 UTC 2022


Summary of changes:
 lib/controller/localdb/conn.go  | 49 --------------------------------------
 lib/controller/localdb/group.go | 52 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 49 deletions(-)

       via  edc70abe9c05ff9a4ce90ce4c6c271223142c5e5 (commit)
      from  d3efc21c6aa0f31988b2e7936f24e6f1941791e7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit edc70abe9c05ff9a4ce90ce4c6c271223142c5e5
Author: Tom Clegg <tom at curii.com>
Date:   Fri Sep 23 15:26:55 2022 -0400

    19388: Trigger activity logs on group contents API, too.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curii.com>

diff --git a/lib/controller/localdb/conn.go b/lib/controller/localdb/conn.go
index 0420cf6f2..5a3faa727 100644
--- a/lib/controller/localdb/conn.go
+++ b/lib/controller/localdb/conn.go
@@ -10,7 +10,6 @@ import (
 	"fmt"
 	"net/http"
 	"os"
-	"strings"
 	"sync"
 	"time"
 
@@ -166,54 +165,6 @@ func (conn *Conn) UserAuthenticate(ctx context.Context, opts arvados.UserAuthent
 	return conn.loginController.UserAuthenticate(ctx, opts)
 }
 
-func (conn *Conn) GroupContents(ctx context.Context, options arvados.GroupContentsOptions) (arvados.ObjectList, error) {
-	// The requested UUID can be a user (virtual home project), which we just pass on to
-	// the API server.
-	if strings.Index(options.UUID, "-j7d0g-") != 5 {
-		return conn.railsProxy.GroupContents(ctx, options)
-	}
-
-	var resp arvados.ObjectList
-
-	// Get the group object
-	respGroup, err := conn.GroupGet(ctx, arvados.GetOptions{UUID: options.UUID})
-	if err != nil {
-		return resp, err
-	}
-
-	// If the group has groupClass 'filter', apply the filters before getting the contents.
-	if respGroup.GroupClass == "filter" {
-		if filters, ok := respGroup.Properties["filters"].([]interface{}); ok {
-			for _, f := range filters {
-				// f is supposed to be a []string
-				tmp, ok2 := f.([]interface{})
-				if !ok2 || len(tmp) < 3 {
-					return resp, fmt.Errorf("filter unparsable: %T, %+v, original field: %T, %+v\n", tmp, tmp, f, f)
-				}
-				var filter arvados.Filter
-				if attr, ok2 := tmp[0].(string); ok2 {
-					filter.Attr = attr
-				} else {
-					return resp, fmt.Errorf("filter unparsable: attribute must be string: %T, %+v, filter: %T, %+v\n", tmp[0], tmp[0], f, f)
-				}
-				if operator, ok2 := tmp[1].(string); ok2 {
-					filter.Operator = operator
-				} else {
-					return resp, fmt.Errorf("filter unparsable: operator must be string: %T, %+v, filter: %T, %+v\n", tmp[1], tmp[1], f, f)
-				}
-				filter.Operand = tmp[2]
-				options.Filters = append(options.Filters, filter)
-			}
-		} else {
-			return resp, fmt.Errorf("filter unparsable: not an array\n")
-		}
-		// Use the generic /groups/contents endpoint for filter groups
-		options.UUID = ""
-	}
-
-	return conn.railsProxy.GroupContents(ctx, options)
-}
-
 func httpErrorf(code int, format string, args ...interface{}) error {
 	return httpserver.ErrorWithStatus(fmt.Errorf(format, args...), code)
 }
diff --git a/lib/controller/localdb/group.go b/lib/controller/localdb/group.go
index 86924c521..418fd6b8b 100644
--- a/lib/controller/localdb/group.go
+++ b/lib/controller/localdb/group.go
@@ -6,6 +6,8 @@ package localdb
 
 import (
 	"context"
+	"fmt"
+	"strings"
 
 	"git.arvados.org/arvados.git/sdk/go/arvados"
 )
@@ -54,3 +56,53 @@ func (conn *Conn) GroupDelete(ctx context.Context, opts arvados.DeleteOptions) (
 	conn.logActivity(ctx)
 	return conn.railsProxy.GroupDelete(ctx, opts)
 }
+
+func (conn *Conn) GroupContents(ctx context.Context, options arvados.GroupContentsOptions) (arvados.ObjectList, error) {
+	conn.logActivity(ctx)
+
+	// The requested UUID can be a user (virtual home project), which we just pass on to
+	// the API server.
+	if strings.Index(options.UUID, "-j7d0g-") != 5 {
+		return conn.railsProxy.GroupContents(ctx, options)
+	}
+
+	var resp arvados.ObjectList
+
+	// Get the group object
+	respGroup, err := conn.GroupGet(ctx, arvados.GetOptions{UUID: options.UUID})
+	if err != nil {
+		return resp, err
+	}
+
+	// If the group has groupClass 'filter', apply the filters before getting the contents.
+	if respGroup.GroupClass == "filter" {
+		if filters, ok := respGroup.Properties["filters"].([]interface{}); ok {
+			for _, f := range filters {
+				// f is supposed to be a []string
+				tmp, ok2 := f.([]interface{})
+				if !ok2 || len(tmp) < 3 {
+					return resp, fmt.Errorf("filter unparsable: %T, %+v, original field: %T, %+v\n", tmp, tmp, f, f)
+				}
+				var filter arvados.Filter
+				if attr, ok2 := tmp[0].(string); ok2 {
+					filter.Attr = attr
+				} else {
+					return resp, fmt.Errorf("filter unparsable: attribute must be string: %T, %+v, filter: %T, %+v\n", tmp[0], tmp[0], f, f)
+				}
+				if operator, ok2 := tmp[1].(string); ok2 {
+					filter.Operator = operator
+				} else {
+					return resp, fmt.Errorf("filter unparsable: operator must be string: %T, %+v, filter: %T, %+v\n", tmp[1], tmp[1], f, f)
+				}
+				filter.Operand = tmp[2]
+				options.Filters = append(options.Filters, filter)
+			}
+		} else {
+			return resp, fmt.Errorf("filter unparsable: not an array\n")
+		}
+		// Use the generic /groups/contents endpoint for filter groups
+		options.UUID = ""
+	}
+
+	return conn.railsProxy.GroupContents(ctx, options)
+}

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list