@@ -221,7 +221,6 @@ func (g *listerGenerator) Imports(_ *generator.Context) (imports []string) {
221221 `kcplisters "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers"` ,
222222 `"k8s.io/apimachinery/pkg/labels"` ,
223223 `"k8s.io/client-go/tools/cache"` ,
224- `"k8s.io/client-go/listers"` ,
225224 )
226225 return
227226}
@@ -250,23 +249,6 @@ func (g *listerGenerator) GenerateType(c *generator.Context, t *types.Type, w io
250249 }
251250
252251 sw .Do (typeClusterListerInterface , m )
253- sw .Do (typeListerStruct , m )
254-
255- // no external interfaces provided, so we generate our own
256- if g .singleClusterListersPkg == "" {
257- sw .Do (typeListerInterface , m )
258- }
259-
260- if ! tags .NonNamespaced {
261- sw .Do (typeListerNamespaceLister , m )
262- sw .Do (namespaceListerStruct , m )
263-
264- if g .singleClusterListersPkg == "" {
265- sw .Do (namespaceListerInterface , m )
266- }
267-
268- sw .Do (namespaceListerConstructor , m )
269- }
270252
271253 sw .Do (scopedLister , m )
272254
@@ -289,7 +271,6 @@ type $.type|public$ClusterLister interface {
289271// $.type|private$ClusterLister implements the $.type|public$ClusterLister interface.
290272type $.type|private$ClusterLister struct {
291273 kcplisters.ResourceClusterIndexer[*$.type|raw$]
292- indexer cache.Indexer
293274}
294275
295276var _ $.type|public$ClusterLister = new($.type|private$ClusterLister)
@@ -302,124 +283,41 @@ var _ $.type|public$ClusterLister = new($.type|private$ClusterLister)
302283$if .namespaced -$
303284// - has the kcpcache.ClusterAndNamespaceIndex as an index
304285$end -$
305- func New$.type|public$ClusterLister(indexer cache.Indexer) * $.type|private $ClusterLister {
286+ func New$.type|public$ClusterLister(indexer cache.Indexer) $.type|public $ClusterLister {
306287 return &$.type|private$ClusterLister{
307288 kcplisters.NewCluster[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$")),
308- indexer,
309289 }
310290}
311291
312- // Cluster scopes the lister to one workspace, allowing users to list and get $.type|publicPlural$.
313292func (l *$.type|private$ClusterLister) Cluster(clusterName logicalcluster.Name) $.listerInterface|raw$ {
314293 return &$.type|private$Lister{
315- kcplisters.New[*$.type|raw$](l.indexer, clusterName, $.Resource|raw$("$.type|lowercaseSingular$")),
316- l.indexer,
317- clusterName,
294+ l.ResourceClusterIndexer.Cluster(clusterName),
318295 }
319296}
320297`
321298
322- var typeListerInterface = `
323- $if .namespaced -$
324- // $.listerInterface|raw$ can list $.type|publicPlural$ across all namespaces, or scope down to a $.namespaceListerInterface|raw$ for one namespace.
325- $else -$
326- // $.listerInterface|raw$ can list all $.type|publicPlural$, or get one in particular.
327- $end -$
328- // All objects returned here must be treated as read-only.
329- type $.listerInterface|raw$ interface {
330- // List lists all $.type|publicPlural$ in the indexer.
331- // Objects returned here must be treated as read-only.
332- List(selector labels.Selector) (ret []*$.type|raw$, err error)
333- $if .namespaced -$
334- // $.type|publicPlural$ returns a lister that can list and get $.type|publicPlural$ in one workspace and namespace.
335- $.type|publicPlural$(namespace string) $.namespaceListerInterface|raw$
336- $else -$
337- // Get retrieves the $.type|public$ from the indexer for a given workspace and name.
338- // Objects returned here must be treated as read-only.
339- Get(name string) (*$.type|raw$, error)
340- $end -$
341- $.type|public$ListerExpansion
342- }
343- `
299+ var scopedLister = `var _ $.listerInterface|raw$ = new($.type|private$Lister)
344300
345- var typeListerStruct = `
346301// $.type|private$Lister can list all $.type|publicPlural$ inside a workspace
347- // or scope down to a $.namespaceListerInterface|raw$ for one namespace.
302+ // or scope down to a $.namespaceListerInterface|raw$$if .namespaced$ for one namespace$end$ .
348303type $.type|private$Lister struct {
349304 kcplisters.ResourceIndexer[*$.type|raw$]
350- indexer cache.Indexer
351- clusterName logicalcluster.Name
352305}
353306
354- var _ $.listerInterface|raw$ = new($.type|private$Lister)
355- `
356-
357- var typeListerNamespaceLister = `
358- // $.type|publicPlural$ returns an object that can list and get $.type|publicPlural$ in one namespace.
359- func (l *$.type|private$Lister) $.type|publicPlural$(namespace string) $.namespaceListerInterface|raw$ {
360- return new$.type|public$NamespaceLister(l.ResourceIndexer, namespace)
361- }
362- `
363-
364- var namespaceListerInterface = `
365- // $.namespaceListerInterface|raw$ can list all $.type|publicPlural$, or get one in particular.
366- // All objects returned here must be treated as read-only.
367- type $.namespaceListerInterface|raw$ interface {
368- // List lists all $.type|publicPlural$ in the indexer.
369- // Objects returned here must be treated as read-only.
370- List(selector labels.Selector) (ret []*$.type|raw$, err error)
371- // Get retrieves the $.type|public$ from the indexer for a given workspace, namespace and name.
372- // Objects returned here must be treated as read-only.
373- Get(name string) (*$.type|raw$, error)
374- $.type|public$NamespaceListerExpansion
375- }
376- `
377-
378- var namespaceListerStruct = `
379- // $.type|private$NamespaceLister implements the $.namespaceListerInterface|raw$
380- // interface.
381- type $.type|private$NamespaceLister struct {
382- kcplisters.ResourceIndexer[*$.type|raw$]
383- }
384-
385- var _ $.namespaceListerInterface|raw$ = new($.type|private$NamespaceLister)
386- `
387-
388- var namespaceListerConstructor = `
389- // new$.type|public$NamespaceLister returns a new $.namespaceListerInterface|raw$.
390- func new$.type|public$NamespaceLister(indexer kcplisters.ResourceIndexer[*$.type|raw$], namespace string) $.namespaceListerInterface|raw$ {
391- return &$.type|private$NamespaceLister{
392- kcplisters.NewNamespaced(indexer, namespace),
393- }
394- }
395- `
396-
397- var scopedLister = `
398- // New$.type|public$Lister returns a new $.listerInterface|raw$.
399- // We assume that the indexer:
400- // - is fed by a workspace-scoped LIST+WATCH
401- // - uses cache.MetaNamespaceKeyFunc as the key function
402- $if .namespaced -$
403- // - has the cache.NamespaceIndex as an index
404- $end -$
405- func New$.type|public$Lister(indexer cache.Indexer) $.listerInterface|raw$ {
406- return &$.type|private$ScopedLister{
407- listers.New[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$")),
408- indexer,
307+ // Cluster returns an object that can list and get $.type|publicPlural$
308+ // in one cluster.
309+ func (l *$.type|private$Lister) Cluster(clusterName logicalcluster.Name) $.listerInterface|raw$ {
310+ return &$.type|private$Lister{
311+ l.ResourceIndexer.Cluster(clusterName),
409312 }
410313}
411314
412- // $.type|private$ScopedLister can list all $.type|publicPlural$ inside a workspace
413- // or scope down to a $.namespaceListerInterface|raw$$if .namespaced$ for one namespace$end$.
414- type $.type|private$ScopedLister struct {
415- listers.ResourceIndexer[*$.type|raw$]
416- indexer cache.Indexer
417- }
418-
419315$if .namespaced -$
420316// $.type|publicPlural$ returns an object that can list and get $.type|publicPlural$ in one namespace.
421- func (l *$.type|private$ScopedLister) $.type|publicPlural$(namespace string) $.namespaceListerInterface|raw$ {
422- return listers.NewNamespaced(l.ResourceIndexer, namespace)
317+ func (l *$.type|private$Lister) $.type|publicPlural$(namespace string) $.namespaceListerInterface|raw$ {
318+ return &$.type|private$Lister{
319+ l.ResourceIndexer.Namespace(namespace),
320+ }
423321}
424322$end -$
425323`
0 commit comments