From 6b2f779bd40bf78b8b54617f4e092334eb659654 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 28 May 2024 09:03:04 +0200 Subject: [PATCH] code-generator/client-gen: decouple core group from package name 'api' Signed-off-by: Dr. Stefan Schimanski --- pkg/apis/core/doc.go | 1 + staging/src/k8s.io/api/core/v1/doc.go | 1 + .../cmd/client-gen/args/gvpackages_test.go | 6 +++--- .../generators/generator_for_group.go | 20 +++++++------------ .../cmd/client-gen/types/types.go | 4 ++-- .../examples/apiserver/apis/core/doc.go | 1 + .../examples/apiserver/apis/core/v1/doc.go | 1 + 7 files changed, 16 insertions(+), 18 deletions(-) diff --git a/pkg/apis/core/doc.go b/pkg/apis/core/doc.go index 6475fdab1de..79ef0e05d56 100644 --- a/pkg/apis/core/doc.go +++ b/pkg/apis/core/doc.go @@ -15,6 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package +// +groupName= // Package core contains the latest (or "internal") version of the // Kubernetes API objects. This is the API objects as represented in memory. diff --git a/staging/src/k8s.io/api/core/v1/doc.go b/staging/src/k8s.io/api/core/v1/doc.go index dc1f946fc28..bc0041b331a 100644 --- a/staging/src/k8s.io/api/core/v1/doc.go +++ b/staging/src/k8s.io/api/core/v1/doc.go @@ -18,6 +18,7 @@ limitations under the License. // +k8s:deepcopy-gen=package // +k8s:protobuf-gen=package // +k8s:prerelease-lifecycle-gen=true +// +groupName= // Package v1 is the v1 version of the core API. package v1 // import "k8s.io/api/core/v1" diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go b/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go index f8891bec87a..3f7eb8902ed 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/args/gvpackages_test.go @@ -71,9 +71,9 @@ func TestGVPackageFlag(t *testing.T) { { args: []string{"api/v1", "api"}, expectedGroups: []types.GroupVersions{ - {PackageName: "core", Group: types.Group("api"), Versions: []types.PackageVersion{ - {Version: "v1", Package: "core/v1"}, - {Version: "", Package: "core"}, + {PackageName: "api", Group: types.Group("api"), Versions: []types.PackageVersion{ + {Version: "v1", Package: "api/v1"}, + {Version: "", Package: "api"}, }}, }, }, diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go index 2a7ac1e9a49..83b13b11cdc 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go @@ -71,31 +71,25 @@ func (g *genGroup) Imports(c *generator.Context) (imports []string) { func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { sw := generator.NewSnippetWriter(w, c, "$", "$") - apiPath := func(group string) string { - if group == "core" { - return `"/api"` - } - return `"` + g.apiPath + `"` - } - - groupName := g.group - if g.group == "core" { - groupName = "" - } // allow user to define a group name that's different from the one parsed from the directory. p := c.Universe.Package(g.inputPackage) + groupName := g.group if override := gengo.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil { groupName = override[0] } + apiPath := `"` + g.apiPath + `"` + if groupName == "" { + apiPath = `"/api"` + } + m := map[string]interface{}{ - "group": g.group, "version": g.version, "groupName": groupName, "GroupGoName": g.groupGoName, "Version": namer.IC(g.version), "types": g.types, - "apiPath": apiPath(g.group), + "apiPath": apiPath, "schemaGroupVersion": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "GroupVersion"}), "runtimeAPIVersionInternal": c.Universe.Variable(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "APIVersionInternal"}), "restConfig": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Config"}), diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/types/types.go b/staging/src/k8s.io/code-generator/cmd/client-gen/types/types.go index 2c0a5347fcd..df030e8459c 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/types/types.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/types/types.go @@ -42,7 +42,7 @@ func (g Group) String() string { } func (g Group) NonEmpty() string { - if g == "api" { + if g == "" { return "core" } return string(g) @@ -76,7 +76,7 @@ type GroupVersionKind struct { } func (gv GroupVersion) ToAPIVersion() string { - if len(gv.Group) > 0 && gv.Group.NonEmpty() != "core" { + if len(gv.Group) > 0 && gv.Group != "" { return gv.Group.String() + "/" + gv.Version.String() } else { return gv.Version.String() diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/doc.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/doc.go index bc03c4655e0..da76737808c 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/doc.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/doc.go @@ -15,5 +15,6 @@ limitations under the License. */ // +k8s:deepcopy-gen=package +// +groupName= package core // import "k8s.io/code-generator/examples/apiserver/apis/core" diff --git a/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/v1/doc.go b/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/v1/doc.go index 6af4ff739ce..0de0bdda64e 100644 --- a/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/v1/doc.go +++ b/staging/src/k8s.io/code-generator/examples/apiserver/apis/core/v1/doc.go @@ -18,5 +18,6 @@ limitations under the License. // +k8s:deepcopy-gen=package // +k8s:defaulter-gen=TypeMeta // +k8s:conversion-gen=k8s.io/code-generator/examples/apiserver/apis/core +// +groupName= package v1 // import "k8s.io/code-generator/examples/apiserver/apis/core/v1"