From: Peter Amstutz Date: Mon, 24 May 2021 14:33:00 +0000 (-0400) Subject: 17702: Federated lists supports cluster_id parameter X-Git-Tag: 2.2.0~16^2~1 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/f1aec3387f765a3f8a2f3f2c22d3a53fb4f9f1f3 17702: Federated lists supports cluster_id parameter Use cluster_id parameter to override splitListRequest behavior in controller. Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- diff --git a/apps/workbench/app/models/arvados_resource_list.rb b/apps/workbench/app/models/arvados_resource_list.rb index 99502bd56e..75a9429a43 100644 --- a/apps/workbench/app/models/arvados_resource_list.rb +++ b/apps/workbench/app/models/arvados_resource_list.rb @@ -223,6 +223,7 @@ class ArvadosResourceList api_params[:filters] = @filters if @filters api_params[:distinct] = @distinct if @distinct api_params[:include_trash] = @include_trash if @include_trash + api_params[:cluster_id] = Rails.configuration.ClusterID if @fetch_multiple_pages # Default limit to (effectively) api server's MAX_LIMIT api_params[:limit] = 2**(0.size*8 - 1) - 1 diff --git a/lib/controller/federation/generated.go b/lib/controller/federation/generated.go index 49a2e5b751..3ede1f1154 100755 --- a/lib/controller/federation/generated.go +++ b/lib/controller/federation/generated.go @@ -18,6 +18,12 @@ import ( // func (conn *Conn) generated_ContainerList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerList, error) { + if options.ClusterID != "" { + // explicitly selected cluster + options.ForwardedFor = conn.cluster.ClusterID + "-" + options.ForwardedFor + return conn.chooseBackend(options.ClusterID).ContainerList(ctx, options) + } + var mtx sync.Mutex var merged arvados.ContainerList var needSort atomic.Value @@ -59,6 +65,12 @@ func (conn *Conn) generated_ContainerList(ctx context.Context, options arvados.L } func (conn *Conn) generated_ContainerRequestList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerRequestList, error) { + if options.ClusterID != "" { + // explicitly selected cluster + options.ForwardedFor = conn.cluster.ClusterID + "-" + options.ForwardedFor + return conn.chooseBackend(options.ClusterID).ContainerRequestList(ctx, options) + } + var mtx sync.Mutex var merged arvados.ContainerRequestList var needSort atomic.Value @@ -100,6 +112,12 @@ func (conn *Conn) generated_ContainerRequestList(ctx context.Context, options ar } func (conn *Conn) generated_GroupList(ctx context.Context, options arvados.ListOptions) (arvados.GroupList, error) { + if options.ClusterID != "" { + // explicitly selected cluster + options.ForwardedFor = conn.cluster.ClusterID + "-" + options.ForwardedFor + return conn.chooseBackend(options.ClusterID).GroupList(ctx, options) + } + var mtx sync.Mutex var merged arvados.GroupList var needSort atomic.Value @@ -141,6 +159,12 @@ func (conn *Conn) generated_GroupList(ctx context.Context, options arvados.ListO } func (conn *Conn) generated_SpecimenList(ctx context.Context, options arvados.ListOptions) (arvados.SpecimenList, error) { + if options.ClusterID != "" { + // explicitly selected cluster + options.ForwardedFor = conn.cluster.ClusterID + "-" + options.ForwardedFor + return conn.chooseBackend(options.ClusterID).SpecimenList(ctx, options) + } + var mtx sync.Mutex var merged arvados.SpecimenList var needSort atomic.Value @@ -182,6 +206,12 @@ func (conn *Conn) generated_SpecimenList(ctx context.Context, options arvados.Li } func (conn *Conn) generated_UserList(ctx context.Context, options arvados.ListOptions) (arvados.UserList, error) { + if options.ClusterID != "" { + // explicitly selected cluster + options.ForwardedFor = conn.cluster.ClusterID + "-" + options.ForwardedFor + return conn.chooseBackend(options.ClusterID).UserList(ctx, options) + } + var mtx sync.Mutex var merged arvados.UserList var needSort atomic.Value diff --git a/lib/controller/federation/list.go b/lib/controller/federation/list.go index 183557eb15..a9ac03ee5d 100644 --- a/lib/controller/federation/list.go +++ b/lib/controller/federation/list.go @@ -22,6 +22,12 @@ import ( // methods for other types; see generate.go. func (conn *Conn) generated_CollectionList(ctx context.Context, options arvados.ListOptions) (arvados.CollectionList, error) { + if options.ClusterID != "" { + // explicitly selected cluster + options.ForwardedFor = conn.cluster.ClusterID + "-" + options.ForwardedFor + return conn.chooseBackend(options.ClusterID).CollectionList(ctx, options) + } + var mtx sync.Mutex var merged arvados.CollectionList var needSort atomic.Value