mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
client-gen: general cleanup
This commit is contained in:
parent
0834ff7943
commit
49c536baee
@ -61,11 +61,11 @@ func generatedBy(customArgs clientgenargs.Args) string {
|
||||
return fmt.Sprintf("\n// This package is generated by client-gen with the default arguments.\n\n")
|
||||
}
|
||||
|
||||
func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, packageBasePath string, apiPath string, srcTreePath string, inputPath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
outputPackagePath := strings.ToLower(filepath.Join(packageBasePath, gv.Group.NonEmpty(), gv.Version.NonEmpty()))
|
||||
func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, clientsetPackage string, apiPath string, srcTreePath string, inputPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
groupVersionClientPackage := strings.ToLower(filepath.Join(clientsetPackage, "typed", gv.Group.NonEmpty(), gv.Version.NonEmpty()))
|
||||
return &generator.DefaultPackage{
|
||||
PackageName: strings.ToLower(gv.Version.NonEmpty()),
|
||||
PackagePath: outputPackagePath,
|
||||
PackagePath: groupVersionClientPackage,
|
||||
HeaderText: boilerplate,
|
||||
PackageDocumentation: []byte(
|
||||
generatedBy +
|
||||
@ -85,7 +85,7 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, pac
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: strings.ToLower(c.Namers["private"].Name(t)),
|
||||
},
|
||||
outputPackage: outputPackagePath,
|
||||
outputPackage: groupVersionClientPackage,
|
||||
group: gv.Group.NonEmpty(),
|
||||
version: gv.Version.String(),
|
||||
typeToMatch: t,
|
||||
@ -97,8 +97,8 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, pac
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: gv.Group.NonEmpty() + "_client",
|
||||
},
|
||||
outputPackage: outputPackagePath,
|
||||
inputPacakge: inputPath,
|
||||
outputPackage: groupVersionClientPackage,
|
||||
inputPackage: inputPackage,
|
||||
group: gv.Group.NonEmpty(),
|
||||
version: gv.Version.String(),
|
||||
apiPath: apiPath,
|
||||
@ -108,7 +108,7 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, pac
|
||||
|
||||
expansionFileName := "generated_expansion"
|
||||
generators = append(generators, &genExpansion{
|
||||
groupPath: filepath.Join(srcTreePath, outputPackagePath),
|
||||
groupPackagePath: filepath.Join(srcTreePath, groupVersionClientPackage),
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: expansionFileName,
|
||||
},
|
||||
@ -123,10 +123,10 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, pac
|
||||
}
|
||||
}
|
||||
|
||||
func packageForClientset(customArgs clientgenargs.Args, typedClientBasePath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
func packageForClientset(customArgs clientgenargs.Args, clientsetPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
return &generator.DefaultPackage{
|
||||
PackageName: customArgs.ClientsetName,
|
||||
PackagePath: filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName),
|
||||
PackagePath: clientsetPackage,
|
||||
HeaderText: boilerplate,
|
||||
PackageDocumentation: []byte(
|
||||
generatedBy +
|
||||
@ -143,10 +143,10 @@ func packageForClientset(customArgs clientgenargs.Args, typedClientBasePath stri
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: "clientset",
|
||||
},
|
||||
groups: customArgs.Groups,
|
||||
typedClientPath: typedClientBasePath,
|
||||
outputPackage: customArgs.ClientsetName,
|
||||
imports: generator.NewImportTracker(),
|
||||
groups: customArgs.Groups,
|
||||
clientsetPackage: clientsetPackage,
|
||||
outputPackage: customArgs.ClientsetName,
|
||||
imports: generator.NewImportTracker(),
|
||||
},
|
||||
}
|
||||
return generators
|
||||
@ -201,11 +201,11 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
||||
}
|
||||
|
||||
var packageList []generator.Package
|
||||
typedClientBasePath := filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName, "typed")
|
||||
clientsetPackage := filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName)
|
||||
|
||||
packageList = append(packageList, packageForClientset(customArgs, typedClientBasePath, boilerplate, generatedBy))
|
||||
packageList = append(packageList, packageForClientset(customArgs, clientsetPackage, boilerplate, generatedBy))
|
||||
if customArgs.FakeClient {
|
||||
packageList = append(packageList, fake.PackageForClientset(customArgs, typedClientBasePath, boilerplate, generatedBy))
|
||||
packageList = append(packageList, fake.PackageForClientset(customArgs, clientsetPackage, boilerplate, generatedBy))
|
||||
}
|
||||
|
||||
// If --clientset-only=true, we don't regenerate the individual typed clients.
|
||||
@ -219,9 +219,9 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
||||
gv := clientgentypes.GroupVersion{Group: group.Group, Version: version}
|
||||
types := gvToTypes[gv]
|
||||
inputPath := customArgs.GroupVersionToInputPath[gv]
|
||||
packageList = append(packageList, packageForGroup(gv, orderer.OrderTypes(types), typedClientBasePath, customArgs.ClientsetAPIPath, arguments.OutputBase, inputPath, boilerplate, generatedBy))
|
||||
packageList = append(packageList, packageForGroup(gv, orderer.OrderTypes(types), clientsetPackage, customArgs.ClientsetAPIPath, arguments.OutputBase, inputPath, boilerplate, generatedBy))
|
||||
if customArgs.FakeClient {
|
||||
packageList = append(packageList, fake.PackageForGroup(gv, orderer.OrderTypes(types), typedClientBasePath, arguments.OutputBase, inputPath, boilerplate, generatedBy))
|
||||
packageList = append(packageList, fake.PackageForGroup(gv, orderer.OrderTypes(types), clientsetPackage, inputPath, boilerplate, generatedBy))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,13 +28,13 @@ import (
|
||||
clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
|
||||
)
|
||||
|
||||
func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, inputPath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
outputPackagePath := strings.ToLower(filepath.Join(packageBasePath, gv.Group.NonEmpty(), gv.Version.NonEmpty(), "fake"))
|
||||
func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, clientsetPackage string, inputPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
outputPackage := strings.ToLower(filepath.Join(clientsetPackage, "typed", gv.Group.NonEmpty(), gv.Version.NonEmpty(), "fake"))
|
||||
// TODO: should make this a function, called by here and in client-generator.go
|
||||
realClientPath := filepath.Join(packageBasePath, gv.Group.NonEmpty(), gv.Version.NonEmpty())
|
||||
realClientPackage := filepath.Join(clientsetPackage, "typed", gv.Group.NonEmpty(), gv.Version.NonEmpty())
|
||||
return &generator.DefaultPackage{
|
||||
PackageName: "fake",
|
||||
PackagePath: outputPackagePath,
|
||||
PackagePath: outputPackage,
|
||||
HeaderText: boilerplate,
|
||||
PackageDocumentation: []byte(
|
||||
generatedBy +
|
||||
@ -54,10 +54,10 @@ func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, pac
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: "fake_" + strings.ToLower(c.Namers["private"].Name(t)),
|
||||
},
|
||||
outputPackage: outputPackagePath,
|
||||
outputPackage: outputPackage,
|
||||
inputPackage: inputPackage,
|
||||
group: gv.Group.NonEmpty(),
|
||||
version: gv.Version.String(),
|
||||
inputPackage: inputPath,
|
||||
typeToMatch: t,
|
||||
imports: generator.NewImportTracker(),
|
||||
})
|
||||
@ -67,12 +67,12 @@ func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, pac
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: "fake_" + gv.Group.NonEmpty() + "_client",
|
||||
},
|
||||
outputPackage: outputPackagePath,
|
||||
realClientPath: realClientPath,
|
||||
group: gv.Group.NonEmpty(),
|
||||
version: gv.Version.String(),
|
||||
types: typeList,
|
||||
imports: generator.NewImportTracker(),
|
||||
outputPackage: outputPackage,
|
||||
realClientPackage: realClientPackage,
|
||||
group: gv.Group.NonEmpty(),
|
||||
version: gv.Version.String(),
|
||||
types: typeList,
|
||||
imports: generator.NewImportTracker(),
|
||||
})
|
||||
return generators
|
||||
},
|
||||
@ -90,12 +90,12 @@ func extractBoolTagOrDie(key string, lines []string) bool {
|
||||
return val
|
||||
}
|
||||
|
||||
func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
func PackageForClientset(customArgs clientgenargs.Args, fakeClientsetPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
return &generator.DefaultPackage{
|
||||
// TODO: we'll generate fake clientset for different release in the future.
|
||||
// Package name and path are hard coded for now.
|
||||
PackageName: "fake",
|
||||
PackagePath: filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName, "fake"),
|
||||
PackagePath: filepath.Join(fakeClientsetPackage, "fake"),
|
||||
HeaderText: boilerplate,
|
||||
PackageDocumentation: []byte(
|
||||
generatedBy +
|
||||
@ -112,11 +112,11 @@ func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath stri
|
||||
DefaultGen: generator.DefaultGen{
|
||||
OptionalName: "clientset_generated",
|
||||
},
|
||||
groups: customArgs.Groups,
|
||||
typedClientPath: typedClientBasePath,
|
||||
outputPackage: "fake",
|
||||
imports: generator.NewImportTracker(),
|
||||
clientsetPath: filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName),
|
||||
groups: customArgs.Groups,
|
||||
fakeClientsetPackage: fakeClientsetPackage,
|
||||
outputPackage: "fake",
|
||||
imports: generator.NewImportTracker(),
|
||||
realClientsetPackage: filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName),
|
||||
},
|
||||
}
|
||||
return generators
|
||||
|
@ -31,13 +31,13 @@ import (
|
||||
// genClientset generates a package for a clientset.
|
||||
type genClientset struct {
|
||||
generator.DefaultGen
|
||||
groups []clientgentypes.GroupVersions
|
||||
typedClientPath string
|
||||
outputPackage string
|
||||
imports namer.ImportTracker
|
||||
clientsetGenerated bool
|
||||
groups []clientgentypes.GroupVersions
|
||||
fakeClientsetPackage string
|
||||
outputPackage string
|
||||
imports namer.ImportTracker
|
||||
clientsetGenerated bool
|
||||
// the import path of the generated real clientset.
|
||||
clientsetPath string
|
||||
realClientsetPackage string
|
||||
}
|
||||
|
||||
var _ generator.Generator = &genClientset{}
|
||||
@ -59,14 +59,15 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
|
||||
imports = append(imports, g.imports.ImportLines()...)
|
||||
for _, group := range g.groups {
|
||||
for _, version := range group.Versions {
|
||||
typedClientPath := filepath.Join(g.typedClientPath, group.Group.NonEmpty(), version.NonEmpty())
|
||||
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", version.NonEmpty(), group.Group.NonEmpty(), typedClientPath)))
|
||||
fakeTypedClientPath := filepath.Join(typedClientPath, "fake")
|
||||
imports = append(imports, strings.ToLower(fmt.Sprintf("fake%s%s \"%s\"", version.NonEmpty(), group.Group.NonEmpty(), fakeTypedClientPath)))
|
||||
groupClientPackage := filepath.Join(g.fakeClientsetPackage, "typed", group.Group.NonEmpty(), version.NonEmpty())
|
||||
fakeGroupClientPackage := filepath.Join(groupClientPackage, "fake")
|
||||
|
||||
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), groupClientPackage)))
|
||||
imports = append(imports, strings.ToLower(fmt.Sprintf("fake%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), fakeGroupClientPackage)))
|
||||
}
|
||||
}
|
||||
// the package that has the clientset Interface
|
||||
imports = append(imports, fmt.Sprintf("clientset \"%s\"", g.clientsetPath))
|
||||
imports = append(imports, fmt.Sprintf("clientset \"%s\"", g.realClientsetPackage))
|
||||
// imports for the code in commonTemplate
|
||||
imports = append(imports,
|
||||
"k8s.io/kubernetes/pkg/api",
|
||||
@ -85,12 +86,11 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
|
||||
// perhaps we can adapt the go2ild framework to this kind of usage.
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
|
||||
sw.Do(common, nil)
|
||||
|
||||
sw.Do(checkImpl, nil)
|
||||
|
||||
allGroups := clientgentypes.ToGroupVersionPackages(g.groups)
|
||||
|
||||
sw.Do(common, nil)
|
||||
sw.Do(checkImpl, nil)
|
||||
|
||||
for _, g := range allGroups {
|
||||
sw.Do(clientsetInterfaceImplTemplate, g)
|
||||
// don't generated the default method if generating internalversion clientset
|
||||
|
@ -30,10 +30,10 @@ import (
|
||||
// genFakeForGroup produces a file for a group client, e.g. ExtensionsClient for the extension group.
|
||||
type genFakeForGroup struct {
|
||||
generator.DefaultGen
|
||||
outputPackage string
|
||||
realClientPath string
|
||||
group string
|
||||
version string
|
||||
outputPackage string
|
||||
realClientPackage string
|
||||
group string
|
||||
version string
|
||||
// types in this group
|
||||
types []*types.Type
|
||||
imports namer.ImportTracker
|
||||
@ -53,27 +53,27 @@ func (g *genFakeForGroup) Namers(c *generator.Context) namer.NameSystems {
|
||||
}
|
||||
|
||||
func (g *genFakeForGroup) Imports(c *generator.Context) (imports []string) {
|
||||
imports = append(g.imports.ImportLines(), strings.ToLower(fmt.Sprintf("%s \"%s\"", filepath.Base(g.realClientPath), g.realClientPath)))
|
||||
imports = append(g.imports.ImportLines(), strings.ToLower(fmt.Sprintf("%s \"%s\"", filepath.Base(g.realClientPackage), g.realClientPackage)))
|
||||
return imports
|
||||
}
|
||||
|
||||
func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
const pkgTestingCore = "k8s.io/client-go/testing"
|
||||
const pkgRESTClient = "k8s.io/client-go/rest"
|
||||
|
||||
m := map[string]interface{}{
|
||||
"group": g.group,
|
||||
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
|
||||
"Fake": c.Universe.Type(types.Name{Package: pkgTestingCore, Name: "Fake"}),
|
||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}),
|
||||
"RESTClient": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "RESTClient"}),
|
||||
"Fake": c.Universe.Type(types.Name{Package: "k8s.io/client-go/testing", Name: "Fake"}),
|
||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
||||
"RESTClient": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClient"}),
|
||||
}
|
||||
|
||||
sw.Do(groupClientTemplate, m)
|
||||
for _, t := range g.types {
|
||||
wrapper := map[string]interface{}{
|
||||
"type": t,
|
||||
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
|
||||
"realClientPackage": strings.ToLower(filepath.Base(g.realClientPath)),
|
||||
"realClientPackage": strings.ToLower(filepath.Base(g.realClientPackage)),
|
||||
}
|
||||
namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines)
|
||||
if namespaced {
|
||||
|
@ -87,7 +87,6 @@ func hasObjectMeta(t *types.Type) bool {
|
||||
func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
pkg := filepath.Base(t.Name.Package)
|
||||
const pkgTestingCore = "k8s.io/client-go/testing"
|
||||
namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines)
|
||||
canonicalGroup := g.group
|
||||
if canonicalGroup == "core" {
|
||||
@ -105,6 +104,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
|
||||
groupName = override[0]
|
||||
}
|
||||
|
||||
const pkgClientGoTesting = "k8s.io/client-go/testing"
|
||||
m := map[string]interface{}{
|
||||
"type": t,
|
||||
"package": pkg,
|
||||
@ -123,27 +123,27 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
|
||||
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
|
||||
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
|
||||
|
||||
"NewRootListAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootListAction"}),
|
||||
"NewListAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewListAction"}),
|
||||
"NewRootGetAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootGetAction"}),
|
||||
"NewGetAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewGetAction"}),
|
||||
"NewRootDeleteAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootDeleteAction"}),
|
||||
"NewDeleteAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewDeleteAction"}),
|
||||
"NewRootDeleteCollectionAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootDeleteCollectionAction"}),
|
||||
"NewDeleteCollectionAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewDeleteCollectionAction"}),
|
||||
"NewRootUpdateAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootUpdateAction"}),
|
||||
"NewUpdateAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewUpdateAction"}),
|
||||
"NewRootCreateAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootCreateAction"}),
|
||||
"NewCreateAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewCreateAction"}),
|
||||
"NewRootWatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootWatchAction"}),
|
||||
"NewWatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewWatchAction"}),
|
||||
"NewUpdateSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewUpdateSubresourceAction"}),
|
||||
"NewRootUpdateSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootUpdateSubresourceAction"}),
|
||||
"NewRootPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchAction"}),
|
||||
"NewPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchAction"}),
|
||||
"NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchSubresourceAction"}),
|
||||
"NewPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchSubresourceAction"}),
|
||||
"ExtractFromListOptions": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "ExtractFromListOptions"}),
|
||||
"NewRootListAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootListAction"}),
|
||||
"NewListAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewListAction"}),
|
||||
"NewRootGetAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootGetAction"}),
|
||||
"NewGetAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewGetAction"}),
|
||||
"NewRootDeleteAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootDeleteAction"}),
|
||||
"NewDeleteAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewDeleteAction"}),
|
||||
"NewRootDeleteCollectionAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootDeleteCollectionAction"}),
|
||||
"NewDeleteCollectionAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewDeleteCollectionAction"}),
|
||||
"NewRootUpdateAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootUpdateAction"}),
|
||||
"NewUpdateAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewUpdateAction"}),
|
||||
"NewRootCreateAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootCreateAction"}),
|
||||
"NewCreateAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewCreateAction"}),
|
||||
"NewRootWatchAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootWatchAction"}),
|
||||
"NewWatchAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewWatchAction"}),
|
||||
"NewUpdateSubresourceAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewUpdateSubresourceAction"}),
|
||||
"NewRootUpdateSubresourceAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootUpdateSubresourceAction"}),
|
||||
"NewRootPatchAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootPatchAction"}),
|
||||
"NewPatchAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewPatchAction"}),
|
||||
"NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootPatchSubresourceAction"}),
|
||||
"NewPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewPatchSubresourceAction"}),
|
||||
"ExtractFromListOptions": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "ExtractFromListOptions"}),
|
||||
}
|
||||
|
||||
noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true
|
||||
|
@ -32,7 +32,7 @@ import (
|
||||
type genClientset struct {
|
||||
generator.DefaultGen
|
||||
groups []clientgentypes.GroupVersions
|
||||
typedClientPath string
|
||||
clientsetPackage string
|
||||
outputPackage string
|
||||
imports namer.ImportTracker
|
||||
clientsetGenerated bool
|
||||
@ -57,12 +57,10 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
|
||||
imports = append(imports, g.imports.ImportLines()...)
|
||||
for _, group := range g.groups {
|
||||
for _, version := range group.Versions {
|
||||
typedClientPath := filepath.Join(g.typedClientPath, group.Group.NonEmpty(), version.NonEmpty())
|
||||
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", version.NonEmpty(), group.Group.NonEmpty(), typedClientPath)))
|
||||
typedClientPath := filepath.Join(g.clientsetPackage, "typed", group.Group.NonEmpty(), version.NonEmpty())
|
||||
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), typedClientPath)))
|
||||
}
|
||||
}
|
||||
imports = append(imports, "github.com/golang/glog")
|
||||
imports = append(imports, "k8s.io/client-go/util/flowcontrol")
|
||||
return
|
||||
}
|
||||
|
||||
@ -70,21 +68,21 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
|
||||
// TODO: We actually don't need any type information to generate the clientset,
|
||||
// perhaps we can adapt the go2ild framework to this kind of usage.
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
const pkgDiscovery = "k8s.io/client-go/discovery"
|
||||
const pkgRESTClient = "k8s.io/client-go/rest"
|
||||
|
||||
allGroups := clientgentypes.ToGroupVersionPackages(g.groups)
|
||||
|
||||
m := map[string]interface{}{
|
||||
"allGroups": allGroups,
|
||||
"Config": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}),
|
||||
"DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}),
|
||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}),
|
||||
"DiscoveryInterface": c.Universe.Type(types.Name{Package: pkgDiscovery, Name: "DiscoveryInterface"}),
|
||||
"DiscoveryClient": c.Universe.Type(types.Name{Package: pkgDiscovery, Name: "DiscoveryClient"}),
|
||||
"NewDiscoveryClientForConfig": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClientForConfig"}),
|
||||
"NewDiscoveryClientForConfigOrDie": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClientForConfigOrDie"}),
|
||||
"NewDiscoveryClient": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClient"}),
|
||||
"allGroups": allGroups,
|
||||
"Config": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Config"}),
|
||||
"DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
|
||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
||||
"DiscoveryInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/discovery", Name: "DiscoveryInterface"}),
|
||||
"DiscoveryClient": c.Universe.Type(types.Name{Package: "k8s.io/client-go/discovery", Name: "DiscoveryClient"}),
|
||||
"NewDiscoveryClientForConfig": c.Universe.Function(types.Name{Package: "k8s.io/client-go/discovery", Name: "NewDiscoveryClientForConfig"}),
|
||||
"NewDiscoveryClientForConfigOrDie": c.Universe.Function(types.Name{Package: "k8s.io/client-go/discovery", Name: "NewDiscoveryClientForConfigOrDie"}),
|
||||
"NewDiscoveryClient": c.Universe.Function(types.Name{Package: "k8s.io/client-go/discovery", Name: "NewDiscoveryClient"}),
|
||||
"flowcontrolNewTokenBucketRateLimiter": c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/flowcontrol", Name: "NewTokenBucketRateLimiter"}),
|
||||
"glogErrorf": c.Universe.Function(types.Name{Package: "github.com/golang/glog", Name: "Errorf"}),
|
||||
}
|
||||
sw.Do(clientsetInterface, m)
|
||||
sw.Do(clientsetTemplate, m)
|
||||
@ -108,8 +106,8 @@ type Interface interface {
|
||||
Discovery() $.DiscoveryInterface|raw$
|
||||
$range .allGroups$$.GroupVersion$() $.PackageName$.$.GroupVersion$Interface
|
||||
$if .IsDefaultVersion$// Deprecated: please explicitly pick a version if possible.
|
||||
$.Group$() $.PackageName$.$.GroupVersion$Interface$end$
|
||||
$end$
|
||||
$.Group$() $.PackageName$.$.GroupVersion$Interface
|
||||
$end$$end$
|
||||
}
|
||||
`
|
||||
|
||||
@ -159,7 +157,7 @@ var newClientsetForConfigTemplate = `
|
||||
func NewForConfig(c *$.Config|raw$) (*Clientset, error) {
|
||||
configShallowCopy := *c
|
||||
if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 {
|
||||
configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst)
|
||||
configShallowCopy.RateLimiter = $.flowcontrolNewTokenBucketRateLimiter|raw$(configShallowCopy.QPS, configShallowCopy.Burst)
|
||||
}
|
||||
var cs Clientset
|
||||
var err error
|
||||
@ -170,7 +168,7 @@ $range .allGroups$ cs.$.GroupVersion$Client, err =$.PackageName$.NewForConfig
|
||||
$end$
|
||||
cs.DiscoveryClient, err = $.NewDiscoveryClientForConfig|raw$(&configShallowCopy)
|
||||
if err!=nil {
|
||||
glog.Errorf("failed to create the DiscoveryClient: %v", err)
|
||||
$.glogErrorf|raw$("failed to create the DiscoveryClient: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
return &cs, nil
|
||||
|
@ -29,7 +29,7 @@ import (
|
||||
// genExpansion produces a file for a group client, e.g. ExtensionsClient for the extension group.
|
||||
type genExpansion struct {
|
||||
generator.DefaultGen
|
||||
groupPath string
|
||||
groupPackagePath string
|
||||
// types in a group
|
||||
types []*types.Type
|
||||
}
|
||||
@ -42,7 +42,7 @@ func (g *genExpansion) Filter(c *generator.Context, t *types.Type) bool {
|
||||
func (g *genExpansion) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
for _, t := range g.types {
|
||||
if _, err := os.Stat(filepath.Join(g.groupPath, strings.ToLower(t.Name.Name+"_expansion.go"))); os.IsNotExist(err) {
|
||||
if _, err := os.Stat(filepath.Join(g.groupPackagePath, strings.ToLower(t.Name.Name+"_expansion.go"))); os.IsNotExist(err) {
|
||||
sw.Do(expansionInterfaceTemplate, t)
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ type genGroup struct {
|
||||
// types in this group
|
||||
types []*types.Type
|
||||
imports namer.ImportTracker
|
||||
inputPacakge string
|
||||
inputPackage string
|
||||
}
|
||||
|
||||
var _ generator.Generator = &genGroup{}
|
||||
@ -57,11 +57,6 @@ 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, "$", "$")
|
||||
const pkgRESTClient = "k8s.io/client-go/rest"
|
||||
const pkgAPI = "k8s.io/kubernetes/pkg/api"
|
||||
const pkgSerializer = "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
const pkgUnversioned = "k8s.io/kubernetes/pkg/api/unversioned"
|
||||
const pkgSchema = "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
||||
apiPath := func(group string) string {
|
||||
if len(g.apiPath) > 0 {
|
||||
@ -78,27 +73,29 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
||||
groupName = ""
|
||||
}
|
||||
// allow user to define a group name that's different from the one parsed from the directory.
|
||||
p := c.Universe.Package(g.inputPacakge)
|
||||
p := c.Universe.Package(g.inputPackage)
|
||||
if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil {
|
||||
groupName = override[0]
|
||||
}
|
||||
|
||||
m := map[string]interface{}{
|
||||
"group": g.group,
|
||||
"version": g.version,
|
||||
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
|
||||
"groupName": groupName,
|
||||
"types": g.types,
|
||||
"Config": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}),
|
||||
"DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}),
|
||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}),
|
||||
"RESTClientFor": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "RESTClientFor"}),
|
||||
"ParseGroupVersion": c.Universe.Function(types.Name{Package: pkgSchema, Name: "ParseGroupVersion"}),
|
||||
"apiPath": apiPath(g.group),
|
||||
"apiRegistry": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Registry"}),
|
||||
"codecs": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Codecs"}),
|
||||
"directCodecFactory": c.Universe.Variable(types.Name{Package: pkgSerializer, Name: "DirectCodecFactory"}),
|
||||
"Errorf": c.Universe.Variable(types.Name{Package: "fmt", Name: "Errorf"}),
|
||||
"group": g.group,
|
||||
"version": g.version,
|
||||
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
|
||||
"groupName": groupName,
|
||||
"types": g.types,
|
||||
"apiPath": apiPath(g.group),
|
||||
"fmtErrorf": c.Universe.Function(types.Name{Package: "fmt", Name: "Errorf"}),
|
||||
"runtimeAPIVersionInternal": c.Universe.Variable(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "APIVersionInternal"}),
|
||||
"schemaGroupVersion": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "GroupVersion"}),
|
||||
"schemaParseGroupVersion": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "ParseGroupVersion"}),
|
||||
"serializerDirectCodecFactory": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/serializer", Name: "DirectCodecFactory"}),
|
||||
"restConfig": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Config"}),
|
||||
"restDefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
|
||||
"restRESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
||||
"restRESTClientFor": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientFor"}),
|
||||
"apiCodecs": c.Universe.Variable(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "Codecs"}),
|
||||
"apiRegistry": c.Universe.Variable(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "Registry"}),
|
||||
}
|
||||
sw.Do(groupInterfaceTemplate, m)
|
||||
sw.Do(groupClientTemplate, m)
|
||||
@ -112,7 +109,6 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
||||
sw.Do(getterImplNamespaced, wrapper)
|
||||
} else {
|
||||
sw.Do(getterImplNonNamespaced, wrapper)
|
||||
|
||||
}
|
||||
}
|
||||
sw.Do(newClientForConfigTemplate, m)
|
||||
@ -130,7 +126,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
||||
|
||||
var groupInterfaceTemplate = `
|
||||
type $.GroupVersion$Interface interface {
|
||||
RESTClient() $.RESTClientInterface|raw$
|
||||
RESTClient() $.restRESTClientInterface|raw$
|
||||
$range .types$ $.|publicPlural$Getter
|
||||
$end$
|
||||
}
|
||||
@ -139,7 +135,7 @@ type $.GroupVersion$Interface interface {
|
||||
var groupClientTemplate = `
|
||||
// $.GroupVersion$Client is used to interact with features provided by the $.groupName$ group.
|
||||
type $.GroupVersion$Client struct {
|
||||
restClient $.RESTClientInterface|raw$
|
||||
restClient $.restRESTClientInterface|raw$
|
||||
}
|
||||
`
|
||||
|
||||
@ -157,12 +153,12 @@ func (c *$.GroupVersion$Client) $.type|publicPlural$() $.type|public$Interface {
|
||||
|
||||
var newClientForConfigTemplate = `
|
||||
// NewForConfig creates a new $.GroupVersion$Client for the given config.
|
||||
func NewForConfig(c *$.Config|raw$) (*$.GroupVersion$Client, error) {
|
||||
func NewForConfig(c *$.restConfig|raw$) (*$.GroupVersion$Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := $.RESTClientFor|raw$(&config)
|
||||
client, err := $.restRESTClientFor|raw$(&config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -173,7 +169,7 @@ func NewForConfig(c *$.Config|raw$) (*$.GroupVersion$Client, error) {
|
||||
var newClientForConfigOrDieTemplate = `
|
||||
// NewForConfigOrDie creates a new $.GroupVersion$Client for the given config and
|
||||
// panics if there is an error in the config.
|
||||
func NewForConfigOrDie(c *$.Config|raw$) *$.GroupVersion$Client {
|
||||
func NewForConfigOrDie(c *$.restConfig|raw$) *$.GroupVersion$Client {
|
||||
client, err := NewForConfig(c)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -185,7 +181,7 @@ func NewForConfigOrDie(c *$.Config|raw$) *$.GroupVersion$Client {
|
||||
var getRESTClient = `
|
||||
// RESTClient returns a RESTClient that is used to communicate
|
||||
// with API server by this client implementation.
|
||||
func (c *$.GroupVersion$Client) RESTClient() $.RESTClientInterface|raw$ {
|
||||
func (c *$.GroupVersion$Client) RESTClient() $.restRESTClientInterface|raw$ {
|
||||
if c == nil {
|
||||
return nil
|
||||
}
|
||||
@ -195,26 +191,28 @@ func (c *$.GroupVersion$Client) RESTClient() $.RESTClientInterface|raw$ {
|
||||
|
||||
var newClientForRESTClientTemplate = `
|
||||
// New creates a new $.GroupVersion$Client for the given RESTClient.
|
||||
func New(c $.RESTClientInterface|raw$) *$.GroupVersion$Client {
|
||||
func New(c $.restRESTClientInterface|raw$) *$.GroupVersion$Client {
|
||||
return &$.GroupVersion$Client{c}
|
||||
}
|
||||
`
|
||||
|
||||
var setInternalVersionClientDefaultsTemplate = `
|
||||
func setConfigDefaults(config *$.Config|raw$) error {
|
||||
func setConfigDefaults(config *$.restConfig|raw$) error {
|
||||
// if $.group$ group is not registered, return an error
|
||||
g, err := $.apiRegistry|raw$.Group("$.groupName$")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
config.APIPath = $.apiPath$
|
||||
if config.UserAgent == "" {
|
||||
config.UserAgent = $.DefaultKubernetesUserAgent|raw$()
|
||||
config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
|
||||
}
|
||||
if config.GroupVersion == nil || config.GroupVersion.Group != g.GroupVersion.Group {
|
||||
copyGroupVersion := g.GroupVersion
|
||||
config.GroupVersion = ©GroupVersion
|
||||
}
|
||||
config.NegotiatedSerializer = $.codecs|raw$
|
||||
config.NegotiatedSerializer = $.apiCodecs|raw$
|
||||
|
||||
if config.QPS == 0 {
|
||||
config.QPS = 5
|
||||
@ -222,28 +220,29 @@ func setConfigDefaults(config *$.Config|raw$) error {
|
||||
if config.Burst == 0 {
|
||||
config.Burst = 10
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
`
|
||||
|
||||
var setClientDefaultsTemplate = `
|
||||
func setConfigDefaults(config *$.Config|raw$) error {
|
||||
gv, err := $.ParseGroupVersion|raw$("$.groupName$/$.version$")
|
||||
func setConfigDefaults(config *$.restConfig|raw$) error {
|
||||
gv, err := $.schemaParseGroupVersion|raw$("$.groupName$/$.version$")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// if $.groupName$/$.version$ is not enabled, return an error
|
||||
if ! $.apiRegistry|raw$.IsEnabledVersion(gv) {
|
||||
return $.Errorf|raw$("$.groupName$/$.version$ is not enabled")
|
||||
return $.fmtErrorf|raw$("$.groupName$/$.version$ is not enabled")
|
||||
}
|
||||
config.APIPath = $.apiPath$
|
||||
if config.UserAgent == "" {
|
||||
config.UserAgent = $.DefaultKubernetesUserAgent|raw$()
|
||||
config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
|
||||
}
|
||||
copyGroupVersion := gv
|
||||
config.GroupVersion = ©GroupVersion
|
||||
|
||||
config.NegotiatedSerializer = $.directCodecFactory|raw${CodecFactory: $.codecs|raw$}
|
||||
config.NegotiatedSerializer = $.serializerDirectCodecFactory|raw${CodecFactory: $.apiCodecs|raw$}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ func ToGroupVersionPackages(groups []GroupVersions) []GroupVersionPackage {
|
||||
Group: Group(namer.IC(group.Group.NonEmpty())),
|
||||
Version: Version(namer.IC(version.String())),
|
||||
GroupVersion: namer.IC(group.Group.NonEmpty()) + namer.IC(version.String()),
|
||||
PackageName: strings.ToLower(version.NonEmpty() + group.Group.NonEmpty()),
|
||||
PackageName: strings.ToLower(group.Group.NonEmpty() + version.NonEmpty()),
|
||||
IsDefaultVersion: version == defaultVersion && version != "",
|
||||
})
|
||||
}
|
||||
|
@ -20,12 +20,12 @@ import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/kubernetes/federation/apis/federation"
|
||||
"k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
)
|
||||
|
||||
func TestResourceVersioner(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user