From 678b79a2733fa94a8aabad7a61998badf4296b93 Mon Sep 17 00:00:00 2001 From: "Nelo-T. Wallus" Date: Mon, 30 Jun 2025 12:46:05 +0200 Subject: [PATCH] Add WithCluster and WithNamespace Signed-off-by: Nelo-T. Wallus --- .../client-go/listers/generic_helpers.go | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/third_party/k8s.io/client-go/listers/generic_helpers.go b/third_party/k8s.io/client-go/listers/generic_helpers.go index 576ca7e2c..f673acb1f 100644 --- a/third_party/k8s.io/client-go/listers/generic_helpers.go +++ b/third_party/k8s.io/client-go/listers/generic_helpers.go @@ -49,6 +49,13 @@ func (l ResourceClusterIndexer[T]) List(selector labels.Selector) (ret []T, err return ret, err } +// WithCluster returns a ResourceIndexer with the specified cluster. +func (l ResourceClusterIndexer[T]) WithCluster(cluster logicalcluster.Name) ResourceIndexer[T] { + ret := New[T](l.indexer, l.resource) + ret.cluster = cluster + return ret +} + // ResourceIndexer wraps an indexer, resource, and optional namespace for a given type. // This is intended for use by listers (generated by lister-gen) only. type ResourceIndexer[T runtime.Object] struct { @@ -60,12 +67,35 @@ type ResourceIndexer[T runtime.Object] struct { // New returns a new instance of a lister (resource indexer) wrapping the given indexer and resource for the specified type. // This is intended for use by listers (generated by lister-gen) only. -func New[T runtime.Object](indexer cache.Indexer, cluster logicalcluster.Name, resource schema.GroupResource) ResourceIndexer[T] { - return ResourceIndexer[T]{indexer: indexer, cluster: cluster, resource: resource} +func New[T runtime.Object](indexer cache.Indexer, resource schema.GroupResource) ResourceIndexer[T] { + return ResourceIndexer[T]{indexer: indexer, resource: resource} +} + +// WithCluster returns a new copy of the ResourceIndexer with the +// specified cluster. +func (l ResourceIndexer[T]) WithCluster(cluster logicalcluster.Name) ResourceIndexer[T] { + return ResourceIndexer[T]{ + indexer: l.indexer, + cluster: cluster, + resource: l.resource, + namespace: l.namespace, + } +} + +// WithNamespace returns a new copy of the ResourceIndexer with the +// specified namespace. +func (l ResourceIndexer[T]) WithNamespace(namespace string) ResourceIndexer[T] { + return ResourceIndexer[T]{ + indexer: l.indexer, + cluster: l.cluster, + resource: l.resource, + namespace: namespace, + } } // NewNamespaced returns a new instance of a namespaced lister (resource indexer) wrapping the given parent and namespace for the specified type. // This is intended for use by listers (generated by lister-gen) only. +// Deprecated: Use ResourceIndexer.WithNamespace instead. func NewNamespaced[T runtime.Object](parent ResourceIndexer[T], namespace string) ResourceIndexer[T] { return ResourceIndexer[T]{indexer: parent.indexer, resource: parent.resource, namespace: namespace} }