mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
[client-gen] Allow overriding the resource name
This commit allows client-gen to generate clients where the resource name does not directly correspond to the type name. The tag `// +resourceName=<name>` can be used to override the resource name.
This commit is contained in:
parent
4e74c43e9a
commit
392b8da1d0
@ -39,13 +39,15 @@ func NameSystems() namer.NameSystems {
|
|||||||
pluralExceptions := map[string]string{
|
pluralExceptions := map[string]string{
|
||||||
"Endpoints": "Endpoints",
|
"Endpoints": "Endpoints",
|
||||||
}
|
}
|
||||||
|
lowercaseNamer := namer.NewAllLowercasePluralNamer(pluralExceptions)
|
||||||
return namer.NameSystems{
|
return namer.NameSystems{
|
||||||
"public": namer.NewPublicNamer(0),
|
"public": namer.NewPublicNamer(0),
|
||||||
"private": namer.NewPrivateNamer(0),
|
"private": namer.NewPrivateNamer(0),
|
||||||
"raw": namer.NewRawNamer("", nil),
|
"raw": namer.NewRawNamer("", nil),
|
||||||
"publicPlural": namer.NewPublicPluralNamer(pluralExceptions),
|
"publicPlural": namer.NewPublicPluralNamer(pluralExceptions),
|
||||||
"privatePlural": namer.NewPrivatePluralNamer(pluralExceptions),
|
"privatePlural": namer.NewPrivatePluralNamer(pluralExceptions),
|
||||||
"allLowercasePlural": namer.NewAllLowercasePluralNamer(pluralExceptions),
|
"allLowercasePlural": lowercaseNamer,
|
||||||
|
"resource": NewTagOverrideNamer("resourceName", lowercaseNamer),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,3 +281,27 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
|
|
||||||
return generator.Packages(packageList)
|
return generator.Packages(packageList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tagOverrideNamer is a namer which pulls names from a given tag, if specified,
|
||||||
|
// and otherwise falls back to a different namer.
|
||||||
|
type tagOverrideNamer struct {
|
||||||
|
tagName string
|
||||||
|
fallback namer.Namer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *tagOverrideNamer) Name(t *types.Type) string {
|
||||||
|
if nameOverride := extractTag(n.tagName, t.SecondClosestCommentLines); nameOverride != "" {
|
||||||
|
return nameOverride
|
||||||
|
}
|
||||||
|
|
||||||
|
return n.fallback.Name(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewTagOverrideNamer creates a namer.Namer which uses the contents of the given tag as
|
||||||
|
// the name, or falls back to another Namer if the tag is not present.
|
||||||
|
func NewTagOverrideNamer(tagName string, fallback namer.Namer) namer.Namer {
|
||||||
|
return &tagOverrideNamer{
|
||||||
|
tagName: tagName,
|
||||||
|
fallback: fallback,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -197,7 +197,7 @@ type Fake$.type|publicPlural$ struct {
|
|||||||
`
|
`
|
||||||
|
|
||||||
var resource = `
|
var resource = `
|
||||||
var $.type|allLowercasePlural$Resource = $.GroupVersionResource|raw${Group: "$.groupName$", Version: "$.version$", Resource: "$.type|allLowercasePlural$"}
|
var $.type|allLowercasePlural$Resource = $.GroupVersionResource|raw${Group: "$.groupName$", Version: "$.version$", Resource: "$.type|resource$"}
|
||||||
`
|
`
|
||||||
|
|
||||||
var kind = `
|
var kind = `
|
||||||
|
@ -224,7 +224,7 @@ func (c *$.type|privatePlural$) List(opts $.ListOptions|raw$) (result *$.type|ra
|
|||||||
result = &$.type|raw$List{}
|
result = &$.type|raw$List{}
|
||||||
err = c.client.Get().
|
err = c.client.Get().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
||||||
Do().
|
Do().
|
||||||
Into(result)
|
Into(result)
|
||||||
@ -237,7 +237,7 @@ func (c *$.type|privatePlural$) Get(name string, options $.GetOptions|raw$) (res
|
|||||||
result = &$.type|raw${}
|
result = &$.type|raw${}
|
||||||
err = c.client.Get().
|
err = c.client.Get().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
Name(name).
|
Name(name).
|
||||||
VersionedParams(&options, $.schemeParameterCodec|raw$).
|
VersionedParams(&options, $.schemeParameterCodec|raw$).
|
||||||
Do().
|
Do().
|
||||||
@ -251,7 +251,7 @@ var deleteTemplate = `
|
|||||||
func (c *$.type|privatePlural$) Delete(name string, options *$.DeleteOptions|raw$) error {
|
func (c *$.type|privatePlural$) Delete(name string, options *$.DeleteOptions|raw$) error {
|
||||||
return c.client.Delete().
|
return c.client.Delete().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
Name(name).
|
Name(name).
|
||||||
Body(options).
|
Body(options).
|
||||||
Do().
|
Do().
|
||||||
@ -264,7 +264,7 @@ var deleteCollectionTemplate = `
|
|||||||
func (c *$.type|privatePlural$) DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error {
|
func (c *$.type|privatePlural$) DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error {
|
||||||
return c.client.Delete().
|
return c.client.Delete().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
VersionedParams(&listOptions, $.schemeParameterCodec|raw$).
|
VersionedParams(&listOptions, $.schemeParameterCodec|raw$).
|
||||||
Body(options).
|
Body(options).
|
||||||
Do().
|
Do().
|
||||||
@ -278,7 +278,7 @@ func (c *$.type|privatePlural$) Create($.type|private$ *$.type|raw$) (result *$.
|
|||||||
result = &$.type|raw${}
|
result = &$.type|raw${}
|
||||||
err = c.client.Post().
|
err = c.client.Post().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
Body($.type|private$).
|
Body($.type|private$).
|
||||||
Do().
|
Do().
|
||||||
Into(result)
|
Into(result)
|
||||||
@ -292,7 +292,7 @@ func (c *$.type|privatePlural$) Update($.type|private$ *$.type|raw$) (result *$.
|
|||||||
result = &$.type|raw${}
|
result = &$.type|raw${}
|
||||||
err = c.client.Put().
|
err = c.client.Put().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
Name($.type|private$.Name).
|
Name($.type|private$.Name).
|
||||||
Body($.type|private$).
|
Body($.type|private$).
|
||||||
Do().
|
Do().
|
||||||
@ -309,7 +309,7 @@ func (c *$.type|privatePlural$) UpdateStatus($.type|private$ *$.type|raw$) (resu
|
|||||||
result = &$.type|raw${}
|
result = &$.type|raw${}
|
||||||
err = c.client.Put().
|
err = c.client.Put().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
Name($.type|private$.Name).
|
Name($.type|private$.Name).
|
||||||
SubResource("status").
|
SubResource("status").
|
||||||
Body($.type|private$).
|
Body($.type|private$).
|
||||||
@ -325,7 +325,7 @@ func (c *$.type|privatePlural$) Watch(opts $.ListOptions|raw$) ($.watchInterface
|
|||||||
opts.Watch = true
|
opts.Watch = true
|
||||||
return c.client.Get().
|
return c.client.Get().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
||||||
Watch()
|
Watch()
|
||||||
}
|
}
|
||||||
@ -337,7 +337,7 @@ func (c *$.type|privatePlural$) Patch(name string, pt $.PatchType|raw$, data []b
|
|||||||
result = &$.type|raw${}
|
result = &$.type|raw${}
|
||||||
err = c.client.Patch(pt).
|
err = c.client.Patch(pt).
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|resource$").
|
||||||
SubResource(subresources...).
|
SubResource(subresources...).
|
||||||
Name(name).
|
Name(name).
|
||||||
Body(data).
|
Body(data).
|
||||||
|
@ -31,3 +31,14 @@ func extractBoolTagOrDie(key string, lines []string) bool {
|
|||||||
}
|
}
|
||||||
return val
|
return val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// extractTag gets the comment-tags for the key. If the tag did not exist, it
|
||||||
|
// returns the empty string.
|
||||||
|
func extractTag(key string, lines []string) string {
|
||||||
|
val, present := types.ExtractCommentTags("+", lines)[key]
|
||||||
|
if !present || len(val) < 1 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return val[0]
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user