@@ -49,6 +49,13 @@ func (l ResourceClusterIndexer[T]) List(selector labels.Selector) (ret []T, err
49
49
return ret , err
50
50
}
51
51
52
+ // WithCluster returns a ResourceIndexer with the specified cluster.
53
+ func (l ResourceClusterIndexer [T ]) WithCluster (cluster logicalcluster.Name ) ResourceIndexer [T ] {
54
+ ret := New [T ](l .indexer , l .resource )
55
+ ret .cluster = cluster
56
+ return ret
57
+ }
58
+
52
59
// ResourceIndexer wraps an indexer, resource, and optional namespace for a given type.
53
60
// This is intended for use by listers (generated by lister-gen) only.
54
61
type ResourceIndexer [T runtime.Object ] struct {
@@ -60,12 +67,35 @@ type ResourceIndexer[T runtime.Object] struct {
60
67
61
68
// New returns a new instance of a lister (resource indexer) wrapping the given indexer and resource for the specified type.
62
69
// This is intended for use by listers (generated by lister-gen) only.
63
- func New [T runtime.Object ](indexer cache.Indexer , cluster logicalcluster.Name , resource schema.GroupResource ) ResourceIndexer [T ] {
64
- return ResourceIndexer [T ]{indexer : indexer , cluster : cluster , resource : resource }
70
+ func New [T runtime.Object ](indexer cache.Indexer , resource schema.GroupResource ) ResourceIndexer [T ] {
71
+ return ResourceIndexer [T ]{indexer : indexer , resource : resource }
72
+ }
73
+
74
+ // WithCluster returns a new copy of the ResourceIndexer with the
75
+ // specified cluster.
76
+ func (l ResourceIndexer [T ]) WithCluster (cluster logicalcluster.Name ) ResourceIndexer [T ] {
77
+ return ResourceIndexer [T ]{
78
+ indexer : l .indexer ,
79
+ cluster : cluster ,
80
+ resource : l .resource ,
81
+ namespace : l .namespace ,
82
+ }
83
+ }
84
+
85
+ // WithNamespace returns a new copy of the ResourceIndexer with the
86
+ // specified namespace.
87
+ func (l ResourceIndexer [T ]) WithNamespace (namespace string ) ResourceIndexer [T ] {
88
+ return ResourceIndexer [T ]{
89
+ indexer : l .indexer ,
90
+ cluster : l .cluster ,
91
+ resource : l .resource ,
92
+ namespace : namespace ,
93
+ }
65
94
}
66
95
67
96
// NewNamespaced returns a new instance of a namespaced lister (resource indexer) wrapping the given parent and namespace for the specified type.
68
97
// This is intended for use by listers (generated by lister-gen) only.
98
+ // Deprecated: Use ResourceIndexer.WithNamespace instead.
69
99
func NewNamespaced [T runtime.Object ](parent ResourceIndexer [T ], namespace string ) ResourceIndexer [T ] {
70
100
return ResourceIndexer [T ]{indexer : parent .indexer , resource : parent .resource , namespace : namespace }
71
101
}
0 commit comments