From 08fc35018af49b8afc0a1bda00a1000d1e5746eb Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Fri, 8 Apr 2016 10:39:21 -0700 Subject: [PATCH] Client-gen: handle dotted package name --- .../go2idl/client-gen/generators/client_generator.go | 4 ++-- .../generators/fake/fake_client_generator.go | 5 +++-- .../client-gen/generators/generator_for_clientset.go | 3 ++- .../client-gen/generators/generator_for_group.go | 7 ++++--- .../generators/normalization/normalization.go | 10 +++++++++- cmd/libs/go2idl/client-gen/main.go | 6 +++--- .../{testgroup => testgroup.k8s.io}/install/install.go | 8 ++++---- .../apis/{testgroup => testgroup.k8s.io}/register.go | 2 +- .../{testgroup => testgroup.k8s.io}/types.generated.go | 0 .../apis/{testgroup => testgroup.k8s.io}/types.go | 0 .../{testgroup => testgroup.k8s.io}/v1/register.go | 2 +- .../v1/types.generated.go | 0 .../apis/{testgroup => testgroup.k8s.io}/v1/types.go | 0 .../unversioned/testgroup_test.go | 6 +++--- examples/apiserver/apiserver.go | 4 ++-- examples/apiserver/apiserver_test.go | 6 +++--- examples/apiserver/rest/reststorage.go | 2 +- 17 files changed, 38 insertions(+), 27 deletions(-) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/install/install.go (97%) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/register.go (96%) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/types.generated.go (100%) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/types.go (100%) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/v1/register.go (98%) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/v1/types.generated.go (100%) rename cmd/libs/go2idl/client-gen/testdata/apis/{testgroup => testgroup.k8s.io}/v1/types.go (100%) rename cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/{testgroup => testgroup.k8s.io}/unversioned/testgroup_test.go (97%) diff --git a/cmd/libs/go2idl/client-gen/generators/client_generator.go b/cmd/libs/go2idl/client-gen/generators/client_generator.go index 1dc6d7e2f7a..3dde8f5323b 100644 --- a/cmd/libs/go2idl/client-gen/generators/client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/client_generator.go @@ -88,7 +88,7 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag OptionalName: strings.ToLower(c.Namers["private"].Name(t)), }, outputPackage: outputPackagePath, - group: gv.Group, + group: normalization.BeforeFirstDot(gv.Group), typeToMatch: t, imports: generator.NewImportTracker(), }) @@ -96,7 +96,7 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag generators = append(generators, &genGroup{ DefaultGen: generator.DefaultGen{ - OptionalName: gv.Group + "_client", + OptionalName: normalization.BeforeFirstDot(gv.Group) + "_client", }, outputPackage: outputPackagePath, group: gv.Group, diff --git a/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go b/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go index 54bcac045cb..bf7cc5c4bf8 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go @@ -21,6 +21,7 @@ import ( "strings" clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" "k8s.io/kubernetes/cmd/libs/go2idl/generator" "k8s.io/kubernetes/cmd/libs/go2idl/types" "k8s.io/kubernetes/pkg/api/unversioned" @@ -53,7 +54,7 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag OptionalName: "fake_" + strings.ToLower(c.Namers["private"].Name(t)), }, outputPackage: outputPackagePath, - group: gv.Group, + group: normalization.BeforeFirstDot(gv.Group), typeToMatch: t, imports: generator.NewImportTracker(), }) @@ -65,7 +66,7 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag }, outputPackage: outputPackagePath, realClientPath: realClientPath, - group: gv.Group, + group: normalization.BeforeFirstDot(gv.Group), types: typeList, imports: generator.NewImportTracker(), }) diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_clientset.go b/cmd/libs/go2idl/client-gen/generators/generator_for_clientset.go index 82db9fa903d..0ff91d82c2d 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_clientset.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_clientset.go @@ -59,6 +59,7 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) { group := normalization.Group(gv.Group) version := normalization.Version(gv.Version) typedClientPath := filepath.Join(g.typedClientPath, group, version) + group = normalization.BeforeFirstDot(group) imports = append(imports, fmt.Sprintf("%s%s \"%s\"", version, group, typedClientPath)) imports = append(imports, "github.com/golang/glog") } @@ -79,7 +80,7 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr allGroups := []arg{} for _, gv := range g.groupVersions { - group := normalization.Group(gv.Group) + group := normalization.BeforeFirstDot(normalization.Group(gv.Group)) version := normalization.Version(gv.Version) allGroups = append(allGroups, arg{namer.IC(group), version + group}) } diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go index 567cf136beb..2ec63030eec 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go @@ -19,6 +19,7 @@ package generators import ( "io" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" "k8s.io/kubernetes/cmd/libs/go2idl/generator" "k8s.io/kubernetes/cmd/libs/go2idl/namer" "k8s.io/kubernetes/cmd/libs/go2idl/types" @@ -71,8 +72,8 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer } m := map[string]interface{}{ - "group": g.group, - "Group": namer.IC(g.group), + "group": normalization.BeforeFirstDot(g.group), + "Group": namer.IC(normalization.BeforeFirstDot(g.group)), "canonicalGroup": canonize(g.group), "types": g.types, "Config": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}), @@ -89,7 +90,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer for _, t := range g.types { wrapper := map[string]interface{}{ "type": t, - "Group": namer.IC(g.group), + "Group": namer.IC(normalization.BeforeFirstDot(g.group)), } namespaced := !(types.ExtractCommentTags("+", t.SecondClosestCommentLines)["nonNamespaced"] == "true") if namespaced { diff --git a/cmd/libs/go2idl/client-gen/generators/normalization/normalization.go b/cmd/libs/go2idl/client-gen/generators/normalization/normalization.go index ba04cf0359f..51d4e7a2b88 100644 --- a/cmd/libs/go2idl/client-gen/generators/normalization/normalization.go +++ b/cmd/libs/go2idl/client-gen/generators/normalization/normalization.go @@ -16,7 +16,11 @@ limitations under the License. package normalization -import "k8s.io/kubernetes/pkg/api/unversioned" +import ( + "strings" + + "k8s.io/kubernetes/pkg/api/unversioned" +) func Group(group string) string { if group == "api" { @@ -35,3 +39,7 @@ func Version(version string) string { func GroupVersion(gv unversioned.GroupVersion) unversioned.GroupVersion { return unversioned.GroupVersion{Group: Group(gv.Group), Version: Version(gv.Version)} } + +func BeforeFirstDot(dotted string) string { + return strings.Split(dotted, ".")[0] +} diff --git a/cmd/libs/go2idl/client-gen/main.go b/cmd/libs/go2idl/client-gen/main.go index 11f95a599d0..d51575a97c4 100644 --- a/cmd/libs/go2idl/client-gen/main.go +++ b/cmd/libs/go2idl/client-gen/main.go @@ -92,12 +92,12 @@ func main() { if *test { arguments.InputDirs = append(dependencies, []string{ - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup", + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io", }...) arguments.CustomArgs = clientgenargs.Args{ - GroupVersions: []unversioned.GroupVersion{{Group: "testgroup", Version: ""}}, + GroupVersions: []unversioned.GroupVersion{{Group: "testgroup.k8s.io", Version: ""}}, GroupVersionToInputPath: map[unversioned.GroupVersion]string{ - unversioned.GroupVersion{Group: "testgroup", Version: ""}: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup", + unversioned.GroupVersion{Group: "testgroup.k8s.io", Version: ""}: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io", }, ClientsetName: "test_internalclientset", ClientsetOutputPath: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/", diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/install/install.go similarity index 97% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/install/install.go index 90f76a025e5..43febdfc521 100644 --- a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install/install.go +++ b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/install/install.go @@ -23,8 +23,8 @@ import ( "github.com/golang/glog" - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup" - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/meta" "k8s.io/kubernetes/pkg/api/unversioned" @@ -34,11 +34,11 @@ import ( "k8s.io/kubernetes/pkg/util/sets" ) -const importPrefix = "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup" +const importPrefix = "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io" var accessor = meta.NewAccessor() -const groupName = "testgroup" +const groupName = "testgroup.k8s.io" // availableVersions lists all known external versions for this group from most preferred to least preferred var availableVersions = []unversioned.GroupVersion{{Group: groupName, Version: "v1"}} diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/register.go similarity index 96% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/register.go index f5f7b3192b1..efecd5ba2bd 100644 --- a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/register.go +++ b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/register.go @@ -22,7 +22,7 @@ import ( "k8s.io/kubernetes/pkg/runtime" ) -var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: runtime.APIVersionInternal} +var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup.k8s.io", Version: runtime.APIVersionInternal} func AddToScheme(scheme *runtime.Scheme) { // Add the API to Scheme. diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/types.generated.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/types.generated.go similarity index 100% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/types.generated.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/types.generated.go diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/types.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/types.go similarity index 100% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/types.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/types.go diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/register.go similarity index 98% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/register.go index a540d357b19..cee3c12e99a 100644 --- a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/register.go +++ b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/register.go @@ -23,7 +23,7 @@ import ( versionedwatch "k8s.io/kubernetes/pkg/watch/versioned" ) -var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: "v1"} +var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup.k8s.io", Version: "v1"} func AddToScheme(scheme *runtime.Scheme) { // Add the API to Scheme. diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/types.generated.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/types.generated.go similarity index 100% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/types.generated.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/types.generated.go diff --git a/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/types.go b/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/types.go similarity index 100% rename from cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1/types.go rename to cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1/types.go diff --git a/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/unversioned/testgroup_test.go b/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/testgroup_test.go similarity index 97% rename from cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/unversioned/testgroup_test.go rename to cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/testgroup_test.go index 2be7a435d2d..0e55bc92573 100644 --- a/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/unversioned/testgroup_test.go +++ b/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/testgroup_test.go @@ -21,9 +21,9 @@ import ( "net/url" "testing" - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup" - _ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install" - . "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/unversioned" + testgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io" + _ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/install" + . "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/unversioned" diff --git a/examples/apiserver/apiserver.go b/examples/apiserver/apiserver.go index e6f12c87297..3d851c1fc9d 100644 --- a/examples/apiserver/apiserver.go +++ b/examples/apiserver/apiserver.go @@ -19,7 +19,7 @@ package apiserver import ( "fmt" - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1" testgroupetcd "k8s.io/kubernetes/examples/apiserver/rest" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/rest" @@ -29,7 +29,7 @@ import ( etcdstorage "k8s.io/kubernetes/pkg/storage/etcd" // Install the testgroup API - _ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/install" + _ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/install" ) const ( diff --git a/examples/apiserver/apiserver_test.go b/examples/apiserver/apiserver_test.go index e36b359c24c..5e5ab8140b8 100644 --- a/examples/apiserver/apiserver_test.go +++ b/examples/apiserver/apiserver_test.go @@ -24,7 +24,7 @@ import ( "testing" "time" - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io/v1" "github.com/stretchr/testify/assert" "k8s.io/kubernetes/pkg/api/unversioned" @@ -107,7 +107,7 @@ func testAPIGroupList(t *testing.T) { } func testAPIGroup(t *testing.T) { - serverURL := serverIP + "/apis/testgroup" + serverURL := serverIP + "/apis/testgroup.k8s.io" contents, err := readResponse(serverURL) if err != nil { t.Fatalf("%v", err) @@ -126,7 +126,7 @@ func testAPIGroup(t *testing.T) { } func testAPIResourceList(t *testing.T) { - serverURL := serverIP + "/apis/testgroup/v1" + serverURL := serverIP + "/apis/testgroup.k8s.io/v1" contents, err := readResponse(serverURL) if err != nil { t.Fatalf("%v", err) diff --git a/examples/apiserver/rest/reststorage.go b/examples/apiserver/rest/reststorage.go index 5f2c575a732..695c9e440bd 100644 --- a/examples/apiserver/rest/reststorage.go +++ b/examples/apiserver/rest/reststorage.go @@ -17,7 +17,7 @@ limitations under the License. package rest import ( - "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup" + "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup.k8s.io" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels"