Skip to content

Commit 0663593

Browse files
committed
simplify / cleanup cluster-lister-gen
On-behalf-of: @SAP [email protected]
1 parent 7ca4fc7 commit 0663593

File tree

1 file changed

+32
-52
lines changed

1 file changed

+32
-52
lines changed

cmd/cluster-lister-gen/generators/lister.go

+32-52
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,11 @@ import (
3838
// NameSystems returns the name system used by the generators in this package.
3939
func NameSystems(pluralExceptions map[string]string) namer.NameSystems {
4040
return namer.NameSystems{
41-
"public": namer.NewPublicNamer(0),
42-
"private": namer.NewPrivateNamer(0),
43-
"raw": namer.NewRawNamer("", nil),
44-
"publicPlural": namer.NewPublicPluralNamer(pluralExceptions),
45-
"allLowercasePlural": namer.NewAllLowercasePluralNamer(pluralExceptions),
46-
"lowercaseSingular": &lowercaseSingularNamer{},
41+
"public": namer.NewPublicNamer(0),
42+
"private": namer.NewPrivateNamer(0),
43+
"raw": namer.NewRawNamer("", nil),
44+
"publicPlural": namer.NewPublicPluralNamer(pluralExceptions),
45+
"lowercaseSingular": &lowercaseSingularNamer{},
4746
}
4847
}
4948

@@ -82,21 +81,17 @@ func GetTargets(context *generator.Context, args *args.Args) []generator.Target
8281
}
8382

8483
var gv clientgentypes.GroupVersion
85-
var internalGVPkg string
8684

8785
if internal {
8886
lastSlash := strings.LastIndex(p.Path, "/")
8987
if lastSlash == -1 {
9088
klog.Fatalf("error constructing internal group version for package %q", p.Path)
9189
}
9290
gv.Group = clientgentypes.Group(p.Path[lastSlash+1:])
93-
internalGVPkg = p.Path
9491
} else {
9592
parts := strings.Split(p.Path, "/")
9693
gv.Group = clientgentypes.Group(parts[len(parts)-2])
9794
gv.Version = clientgentypes.Version(parts[len(parts)-1])
98-
99-
internalGVPkg = strings.Join(parts[0:len(parts)-1], "/")
10095
}
10196
groupPackageName := strings.ToLower(gv.Group.NonEmpty())
10297

@@ -124,6 +119,7 @@ func GetTargets(context *generator.Context, args *args.Args) []generator.Target
124119
subdir := []string{groupPackageName, strings.ToLower(gv.Version.NonEmpty())}
125120
outputDir := filepath.Join(args.OutputDir, filepath.Join(subdir...))
126121
outputPkg := path.Join(args.OutputPkg, path.Join(subdir...))
122+
127123
targetList = append(targetList, &generator.SimpleTarget{
128124
PkgName: strings.ToLower(gv.Version.NonEmpty()),
129125
PkgPath: outputPkg,
@@ -155,13 +151,12 @@ func GetTargets(context *generator.Context, args *args.Args) []generator.Target
155151
},
156152
outputPackage: outputPkg,
157153
groupVersion: gv,
158-
internalGVPkg: internalGVPkg,
159154
typeToGenerate: t,
160155
imports: imports.NewImportTrackerForPackage(outputPkg),
161-
objectMeta: objectMeta,
162156
singleClusterListersPkg: singleClusterListersPkg,
163157
})
164158
}
159+
165160
return generators
166161
},
167162
})
@@ -196,16 +191,13 @@ func isInternal(m types.Member) bool {
196191
return !strings.Contains(m.Tags, "json")
197192
}
198193

199-
// listerGenerator produces a file of listers for a given GroupVersion and
200-
// type.
194+
// listerGenerator produces a file of listers for a given GroupVersion and type.
201195
type listerGenerator struct {
202196
generator.GoGenerator
203197
outputPackage string
204198
groupVersion clientgentypes.GroupVersion
205-
internalGVPkg string
206199
typeToGenerate *types.Type
207200
imports namer.ImportTracker
208-
objectMeta *types.Type
209201
singleClusterListersPkg string
210202
}
211203

@@ -222,12 +214,13 @@ func (g *listerGenerator) Namers(c *generator.Context) namer.NameSystems {
222214
}
223215

224216
func (g *listerGenerator) Imports(c *generator.Context) (imports []string) {
225-
// gvAlias := util.GroupVersionAliasFromPackage(g.singleClusterListersPkg)
226-
227217
imports = append(imports, g.imports.ImportLines()...)
228218
imports = append(imports,
229219
`"github.com/kcp-dev/logicalcluster/v3"`,
230220
`kcplisters "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers"`,
221+
`"k8s.io/apimachinery/pkg/labels"`,
222+
`"k8s.io/client-go/tools/cache"`,
223+
`"k8s.io/client-go/listers"`,
231224
)
232225
return
233226
}
@@ -248,27 +241,14 @@ func (g *listerGenerator) GenerateType(c *generator.Context, t *types.Type, w io
248241

249242
klog.V(5).Infof("processing type %v", t)
250243
m := map[string]interface{}{
251-
"namespaced": !tags.NonNamespaced,
252-
"Resource": c.Universe.Function(types.Name{Package: t.Name.Package, Name: "Resource"}),
253-
"labelsSelector": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/labels", Name: "Selector"}),
254-
"listersResourceClusterIndexer": c.Universe.Function(types.Name{Package: "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers", Name: "ResourceClusterIndexer"}),
255-
"listersResourceIndexer": c.Universe.Function(types.Name{Package: "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers", Name: "ResourceIndexer"}),
256-
"kubeListersResourceIndexer": c.Universe.Function(types.Name{Package: "k8s.io/client-go/listers", Name: "ResourceIndexer"}),
257-
"kubeListersNew": c.Universe.Function(types.Name{Package: "k8s.io/client-go/listers", Name: "New"}),
258-
"kubeListersNewNamespaced": c.Universe.Function(types.Name{Package: "k8s.io/client-go/listers", Name: "NewNamespaced"}),
259-
"listersNew": c.Universe.Function(types.Name{Package: "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers", Name: "New"}),
260-
"listersNewCluster": c.Universe.Function(types.Name{Package: "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers", Name: "NewCluster"}),
261-
"listersNewNamespaced": c.Universe.Function(types.Name{Package: "github.com/kcp-dev/client-go/third_party/k8s.io/client-go/listers", Name: "NewNamespaced"}),
262-
"cacheIndexer": c.Universe.Type(types.Name{Package: "k8s.io/client-go/tools/cache", Name: "Indexer"}),
263-
"type": t,
264-
"listerInterface": c.Universe.Type(types.Name{Package: interfacesPkg, Name: t.Name.Name + "Lister"}),
265-
"namespaceListerInterface": c.Universe.Type(types.Name{Package: interfacesPkg, Name: t.Name.Name + "NamespaceLister"}),
266-
"objectMeta": g.objectMeta,
267-
"groupVersion": util.GroupVersionAliasFromPackage(g.singleClusterListersPkg),
244+
"type": t,
245+
"namespaced": !tags.NonNamespaced,
246+
"Resource": c.Universe.Function(types.Name{Package: t.Name.Package, Name: "Resource"}),
247+
"listerInterface": c.Universe.Type(types.Name{Package: interfacesPkg, Name: t.Name.Name + "Lister"}),
248+
"namespaceListerInterface": c.Universe.Type(types.Name{Package: interfacesPkg, Name: t.Name.Name + "NamespaceLister"}),
268249
}
269250

270251
sw.Do(typeClusterListerInterface, m)
271-
272252
sw.Do(typeListerStruct, m)
273253

274254
// no external interfaces provided, so we generate our own
@@ -299,7 +279,7 @@ var typeClusterListerInterface = `
299279
type $.type|public$ClusterLister interface {
300280
// List lists all $.type|publicPlural$ in the indexer.
301281
// Objects returned here must be treated as read-only.
302-
List(selector $.labelsSelector|raw$) (ret []*$.type|raw$, err error)
282+
List(selector labels.Selector) (ret []*$.type|raw$, err error)
303283
// Cluster returns a lister that can list and get $.type|publicPlural$ in one workspace.
304284
Cluster(clusterName logicalcluster.Name) $.listerInterface|raw$
305285
$.type|public$ClusterListerExpansion
@@ -308,7 +288,7 @@ type $.type|public$ClusterLister interface {
308288
// $.type|private$ClusterLister implements the $.type|public$ClusterLister interface.
309289
type $.type|private$ClusterLister struct {
310290
kcplisters.ResourceClusterIndexer[*$.type|raw$]
311-
indexer $.cacheIndexer|raw$
291+
indexer cache.Indexer
312292
}
313293
314294
var _ $.type|public$ClusterLister = new($.type|private$ClusterLister)
@@ -323,18 +303,18 @@ $if .namespaced -$
323303
$end -$
324304
func New$.type|public$ClusterLister(indexer cache.Indexer) *$.type|private$ClusterLister {
325305
return &$.type|private$ClusterLister{
326-
$.listersNewCluster|raw$[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$")),
306+
kcplisters.NewCluster[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$")),
327307
indexer,
328308
}
329309
}
330310
331311
// Cluster scopes the lister to one workspace, allowing users to list and get $.type|publicPlural$.
332312
func (l *$.type|private$ClusterLister) Cluster(clusterName logicalcluster.Name) $.listerInterface|raw$ {
333313
return &$.type|private$Lister{
334-
$.listersNew|raw$[*$.type|raw$](l.indexer, clusterName, $.Resource|raw$("$.type|lowercaseSingular$")),
335-
l.indexer,
314+
kcplisters.New[*$.type|raw$](l.indexer, clusterName, $.Resource|raw$("$.type|lowercaseSingular$")),
315+
l.indexer,
336316
clusterName,
337-
}
317+
}
338318
}
339319
`
340320

@@ -348,7 +328,7 @@ $end -$
348328
type $.listerInterface|raw$ interface {
349329
// List lists all $.type|publicPlural$ in the indexer.
350330
// Objects returned here must be treated as read-only.
351-
List(selector $.labelsSelector|raw$) (ret []*$.type|raw$, err error)
331+
List(selector labels.Selector) (ret []*$.type|raw$, err error)
352332
$if .namespaced -$
353333
// $.type|publicPlural$ returns a lister that can list and get $.type|publicPlural$ in one workspace and namespace.
354334
$.type|publicPlural$(namespace string) $.namespaceListerInterface|raw$
@@ -366,7 +346,7 @@ var typeListerStruct = `
366346
// or scope down to a $.namespaceListerInterface|raw$ for one namespace.
367347
type $.type|private$Lister struct {
368348
kcplisters.ResourceIndexer[*$.type|raw$]
369-
indexer $.cacheIndexer|raw$
349+
indexer cache.Indexer
370350
clusterName logicalcluster.Name
371351
}
372352
@@ -386,7 +366,7 @@ var namespaceListerInterface = `
386366
type $.namespaceListerInterface|raw$ interface {
387367
// List lists all $.type|publicPlural$ in the indexer.
388368
// Objects returned here must be treated as read-only.
389-
List(selector $.labelsSelector|raw$) (ret []*$.type|raw$, err error)
369+
List(selector labels.Selector) (ret []*$.type|raw$, err error)
390370
// Get retrieves the $.type|public$ from the indexer for a given workspace, namespace and name.
391371
// Objects returned here must be treated as read-only.
392372
Get(name string) (*$.type|raw$, error)
@@ -398,17 +378,17 @@ var namespaceListerStruct = `
398378
// $.type|private$NamespaceLister implements the $.namespaceListerInterface|raw$
399379
// interface.
400380
type $.type|private$NamespaceLister struct {
401-
$.listersResourceIndexer|raw$[*$.type|raw$]
381+
kcplisters.ResourceIndexer[*$.type|raw$]
402382
}
403383
404384
var _ $.namespaceListerInterface|raw$ = new($.type|private$NamespaceLister)
405385
`
406386

407387
var namespaceListerConstructor = `
408388
// new$.type|public$NamespaceLister returns a new $.namespaceListerInterface|raw$.
409-
func new$.type|public$NamespaceLister(indexer $.listersResourceIndexer|raw$[*$.type|raw$], namespace string) $.namespaceListerInterface|raw$ {
389+
func new$.type|public$NamespaceLister(indexer kcplisters.ResourceIndexer[*$.type|raw$], namespace string) $.namespaceListerInterface|raw$ {
410390
return &$.type|private$NamespaceLister{
411-
$.listersNewNamespaced|raw$(indexer, namespace),
391+
kcplisters.NewNamespaced(indexer, namespace),
412392
}
413393
}
414394
`
@@ -423,22 +403,22 @@ $if .namespaced -$
423403
$end -$
424404
func New$.type|public$Lister(indexer cache.Indexer) $.listerInterface|raw$ {
425405
return &$.type|private$ScopedLister{
426-
$.kubeListersNew|raw$[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$")),
406+
listers.New[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$")),
427407
indexer,
428408
}
429409
}
430410
431411
// $.type|private$ScopedLister can list all $.type|publicPlural$ inside a workspace
432412
// or scope down to a $.namespaceListerInterface|raw$$if .namespaced$ for one namespace$end$.
433413
type $.type|private$ScopedLister struct {
434-
$.kubeListersResourceIndexer|raw$[*$.type|raw$]
435-
indexer $.cacheIndexer|raw$
414+
listers.ResourceIndexer[*$.type|raw$]
415+
indexer cache.Indexer
436416
}
437417
438418
$if .namespaced -$
439419
// $.type|publicPlural$ returns an object that can list and get $.type|publicPlural$ in one namespace.
440420
func (l *$.type|private$ScopedLister) $.type|publicPlural$(namespace string) $.namespaceListerInterface|raw$ {
441-
return $.kubeListersNewNamespaced|raw$(l.ResourceIndexer, namespace)
421+
return listers.NewNamespaced(l.ResourceIndexer, namespace)
442422
}
443423
$end -$
444424
`

0 commit comments

Comments
 (0)