X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c869babecb193f02a24f071b8fd101e16aeec680..7aaf9f22aa646077b4b7fd961d6b731185b88137:/lib/controller/federation/conn.go diff --git a/lib/controller/federation/conn.go b/lib/controller/federation/conn.go index a9352098d3..586ac23013 100644 --- a/lib/controller/federation/conn.go +++ b/lib/controller/federation/conn.go @@ -69,6 +69,9 @@ func saltedTokenProvider(local backend, remoteID string) rpc.TokenProvider { tokens = append(tokens, salted) case auth.ErrSalted: tokens = append(tokens, token) + case auth.ErrTokenFormat: + // pass through unmodified (assume it's an OIDC access token) + tokens = append(tokens, token) case auth.ErrObsoleteToken: ctx := auth.NewContext(ctx, &auth.Credentials{Tokens: []string{token}}) aca, err := local.APIClientAuthorizationCurrent(ctx, arvados.GetOptions{}) @@ -418,8 +421,19 @@ func (conn *Conn) GroupList(ctx context.Context, options arvados.ListOptions) (a return conn.generated_GroupList(ctx, options) } +var userUuidRe = regexp.MustCompile(`^[0-9a-z]{5}-tpzed-[0-9a-z]{15}$`) + func (conn *Conn) GroupContents(ctx context.Context, options arvados.GroupContentsOptions) (arvados.ObjectList, error) { - return conn.chooseBackend(options.UUID).GroupContents(ctx, options) + if options.ClusterID != "" { + // explicitly selected cluster + return conn.chooseBackend(options.ClusterID).GroupContents(ctx, options) + } else if userUuidRe.MatchString(options.UUID) { + // user, get the things they own on the local cluster + return conn.local.GroupContents(ctx, options) + } else { + // a group, potentially want to make federated request + return conn.chooseBackend(options.UUID).GroupContents(ctx, options) + } } func (conn *Conn) GroupShared(ctx context.Context, options arvados.ListOptions) (arvados.GroupList, error) { @@ -430,6 +444,10 @@ func (conn *Conn) GroupDelete(ctx context.Context, options arvados.DeleteOptions return conn.chooseBackend(options.UUID).GroupDelete(ctx, options) } +func (conn *Conn) GroupTrash(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error) { + return conn.chooseBackend(options.UUID).GroupTrash(ctx, options) +} + func (conn *Conn) GroupUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Group, error) { return conn.chooseBackend(options.UUID).GroupUntrash(ctx, options) } @@ -575,10 +593,6 @@ func (conn *Conn) UserUpdate(ctx context.Context, options arvados.UpdateOptions) return resp, err } -func (conn *Conn) UserUpdateUUID(ctx context.Context, options arvados.UpdateUUIDOptions) (arvados.User, error) { - return conn.local.UserUpdateUUID(ctx, options) -} - func (conn *Conn) UserMerge(ctx context.Context, options arvados.UserMergeOptions) (arvados.User, error) { return conn.local.UserMerge(ctx, options) }