Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions third_party/k8s.io/client-go/listers/generic_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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}
}
Expand Down