mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
client-set: use clientset internal scheme
This commit is contained in:
parent
49c536baee
commit
92c36bed4a
@ -86,6 +86,7 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, cli
|
|||||||
OptionalName: strings.ToLower(c.Namers["private"].Name(t)),
|
OptionalName: strings.ToLower(c.Namers["private"].Name(t)),
|
||||||
},
|
},
|
||||||
outputPackage: groupVersionClientPackage,
|
outputPackage: groupVersionClientPackage,
|
||||||
|
clientsetPackage: clientsetPackage,
|
||||||
group: gv.Group.NonEmpty(),
|
group: gv.Group.NonEmpty(),
|
||||||
version: gv.Version.String(),
|
version: gv.Version.String(),
|
||||||
typeToMatch: t,
|
typeToMatch: t,
|
||||||
@ -99,6 +100,7 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, cli
|
|||||||
},
|
},
|
||||||
outputPackage: groupVersionClientPackage,
|
outputPackage: groupVersionClientPackage,
|
||||||
inputPackage: inputPackage,
|
inputPackage: inputPackage,
|
||||||
|
clientsetPackage: clientsetPackage,
|
||||||
group: gv.Group.NonEmpty(),
|
group: gv.Group.NonEmpty(),
|
||||||
version: gv.Version.String(),
|
version: gv.Version.String(),
|
||||||
apiPath: apiPath,
|
apiPath: apiPath,
|
||||||
@ -154,6 +156,39 @@ func packageForClientset(customArgs clientgenargs.Args, clientsetPackage string,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func packageForScheme(customArgs clientgenargs.Args, clientsetPackage string, srcTreePath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||||
|
schemePackage := filepath.Join(clientsetPackage, "scheme")
|
||||||
|
return &generator.DefaultPackage{
|
||||||
|
PackageName: "scheme",
|
||||||
|
PackagePath: schemePackage,
|
||||||
|
HeaderText: boilerplate,
|
||||||
|
PackageDocumentation: []byte(
|
||||||
|
generatedBy +
|
||||||
|
`// This package contains the scheme of the automatically generated clientset.
|
||||||
|
`),
|
||||||
|
// GeneratorFunc returns a list of generators. Each generator generates a
|
||||||
|
// single file.
|
||||||
|
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
|
||||||
|
generators = []generator.Generator{
|
||||||
|
// Always generate a "doc.go" file.
|
||||||
|
generator.DefaultGen{OptionalName: "doc"},
|
||||||
|
|
||||||
|
&genScheme{
|
||||||
|
DefaultGen: generator.DefaultGen{
|
||||||
|
OptionalName: "register",
|
||||||
|
},
|
||||||
|
inputPackages: customArgs.GroupVersionToInputPath,
|
||||||
|
outputPackage: schemePackage,
|
||||||
|
outputPath: filepath.Join(srcTreePath, schemePackage),
|
||||||
|
groups: customArgs.Groups,
|
||||||
|
imports: generator.NewImportTracker(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return generators
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Packages makes the client package definition.
|
// Packages makes the client package definition.
|
||||||
func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
|
func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
|
||||||
boilerplate, err := arguments.LoadGoBoilerplate()
|
boilerplate, err := arguments.LoadGoBoilerplate()
|
||||||
@ -204,6 +239,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
clientsetPackage := filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName)
|
clientsetPackage := filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName)
|
||||||
|
|
||||||
packageList = append(packageList, packageForClientset(customArgs, clientsetPackage, boilerplate, generatedBy))
|
packageList = append(packageList, packageForClientset(customArgs, clientsetPackage, boilerplate, generatedBy))
|
||||||
|
packageList = append(packageList, packageForScheme(customArgs, clientsetPackage, arguments.OutputBase, boilerplate, generatedBy))
|
||||||
if customArgs.FakeClient {
|
if customArgs.FakeClient {
|
||||||
packageList = append(packageList, fake.PackageForClientset(customArgs, clientsetPackage, boilerplate, generatedBy))
|
packageList = append(packageList, fake.PackageForClientset(customArgs, clientsetPackage, boilerplate, generatedBy))
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ package generators
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
"k8s.io/gengo/generator"
|
"k8s.io/gengo/generator"
|
||||||
"k8s.io/gengo/namer"
|
"k8s.io/gengo/namer"
|
||||||
@ -35,6 +36,7 @@ type genGroup struct {
|
|||||||
types []*types.Type
|
types []*types.Type
|
||||||
imports namer.ImportTracker
|
imports namer.ImportTracker
|
||||||
inputPackage string
|
inputPackage string
|
||||||
|
clientsetPackage string
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ generator.Generator = &genGroup{}
|
var _ generator.Generator = &genGroup{}
|
||||||
@ -52,6 +54,7 @@ func (g *genGroup) Namers(c *generator.Context) namer.NameSystems {
|
|||||||
|
|
||||||
func (g *genGroup) Imports(c *generator.Context) (imports []string) {
|
func (g *genGroup) Imports(c *generator.Context) (imports []string) {
|
||||||
imports = append(imports, g.imports.ImportLines()...)
|
imports = append(imports, g.imports.ImportLines()...)
|
||||||
|
imports = append(imports, filepath.Join(g.clientsetPackage, "scheme"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,17 +88,14 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
|||||||
"groupName": groupName,
|
"groupName": groupName,
|
||||||
"types": g.types,
|
"types": g.types,
|
||||||
"apiPath": apiPath(g.group),
|
"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"}),
|
"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"}),
|
"runtimeAPIVersionInternal": c.Universe.Variable(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "APIVersionInternal"}),
|
||||||
"serializerDirectCodecFactory": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/serializer", Name: "DirectCodecFactory"}),
|
"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"}),
|
"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"}),
|
"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"}),
|
"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"}),
|
"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"}),
|
"SchemeGroupVersion": c.Universe.Variable(types.Name{Package: g.inputPackage, Name: "SchemeGroupVersion"}),
|
||||||
"apiRegistry": c.Universe.Variable(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "Registry"}),
|
|
||||||
}
|
}
|
||||||
sw.Do(groupInterfaceTemplate, m)
|
sw.Do(groupInterfaceTemplate, m)
|
||||||
sw.Do(groupClientTemplate, m)
|
sw.Do(groupClientTemplate, m)
|
||||||
@ -198,8 +198,7 @@ func New(c $.restRESTClientInterface|raw$) *$.GroupVersion$Client {
|
|||||||
|
|
||||||
var setInternalVersionClientDefaultsTemplate = `
|
var setInternalVersionClientDefaultsTemplate = `
|
||||||
func setConfigDefaults(config *$.restConfig|raw$) error {
|
func setConfigDefaults(config *$.restConfig|raw$) error {
|
||||||
// if $.group$ group is not registered, return an error
|
g, err := scheme.Registry.Group("$.groupName$")
|
||||||
g, err := $.apiRegistry|raw$.Group("$.groupName$")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -209,10 +208,10 @@ func setConfigDefaults(config *$.restConfig|raw$) error {
|
|||||||
config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
|
config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
|
||||||
}
|
}
|
||||||
if config.GroupVersion == nil || config.GroupVersion.Group != g.GroupVersion.Group {
|
if config.GroupVersion == nil || config.GroupVersion.Group != g.GroupVersion.Group {
|
||||||
copyGroupVersion := g.GroupVersion
|
gv := g.GroupVersion
|
||||||
config.GroupVersion = ©GroupVersion
|
config.GroupVersion = &gv
|
||||||
}
|
}
|
||||||
config.NegotiatedSerializer = $.apiCodecs|raw$
|
config.NegotiatedSerializer = scheme.Codecs
|
||||||
|
|
||||||
if config.QPS == 0 {
|
if config.QPS == 0 {
|
||||||
config.QPS = 5
|
config.QPS = 5
|
||||||
@ -227,22 +226,14 @@ func setConfigDefaults(config *$.restConfig|raw$) error {
|
|||||||
|
|
||||||
var setClientDefaultsTemplate = `
|
var setClientDefaultsTemplate = `
|
||||||
func setConfigDefaults(config *$.restConfig|raw$) error {
|
func setConfigDefaults(config *$.restConfig|raw$) error {
|
||||||
gv, err := $.schemaParseGroupVersion|raw$("$.groupName$/$.version$")
|
gv := $.SchemeGroupVersion|raw$
|
||||||
if err != nil {
|
config.GroupVersion = &gv
|
||||||
return err
|
|
||||||
}
|
|
||||||
// if $.groupName$/$.version$ is not enabled, return an error
|
|
||||||
if ! $.apiRegistry|raw$.IsEnabledVersion(gv) {
|
|
||||||
return $.fmtErrorf|raw$("$.groupName$/$.version$ is not enabled")
|
|
||||||
}
|
|
||||||
config.APIPath = $.apiPath$
|
config.APIPath = $.apiPath$
|
||||||
|
config.NegotiatedSerializer = $.serializerDirectCodecFactory|raw${CodecFactory: scheme.Codecs}
|
||||||
|
|
||||||
if config.UserAgent == "" {
|
if config.UserAgent == "" {
|
||||||
config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
|
config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
|
||||||
}
|
}
|
||||||
copyGroupVersion := gv
|
|
||||||
config.GroupVersion = ©GroupVersion
|
|
||||||
|
|
||||||
config.NegotiatedSerializer = $.serializerDirectCodecFactory|raw${CodecFactory: $.apiCodecs|raw$}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
175
cmd/libs/go2idl/client-gen/generators/generator_for_scheme.go
Normal file
175
cmd/libs/go2idl/client-gen/generators/generator_for_scheme.go
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package generators
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"k8s.io/gengo/generator"
|
||||||
|
"k8s.io/gengo/namer"
|
||||||
|
"k8s.io/gengo/types"
|
||||||
|
clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// genScheme produces a package for a clientset with the scheme, codecs and parameter codecs.
|
||||||
|
type genScheme struct {
|
||||||
|
generator.DefaultGen
|
||||||
|
outputPackage string
|
||||||
|
groups []clientgentypes.GroupVersions
|
||||||
|
inputPackages map[clientgentypes.GroupVersion]string
|
||||||
|
outputPath string
|
||||||
|
imports namer.ImportTracker
|
||||||
|
schemeGenerated bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *genScheme) Namers(c *generator.Context) namer.NameSystems {
|
||||||
|
return namer.NameSystems{
|
||||||
|
"raw": namer.NewRawNamer(g.outputPackage, g.imports),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// We only want to call GenerateType() once.
|
||||||
|
func (g *genScheme) Filter(c *generator.Context, t *types.Type) bool {
|
||||||
|
ret := !g.schemeGenerated
|
||||||
|
g.schemeGenerated = true
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *genScheme) Imports(c *generator.Context) (imports []string) {
|
||||||
|
imports = append(imports, g.imports.ImportLines()...)
|
||||||
|
internal := g.internalClientset()
|
||||||
|
for _, group := range g.groups {
|
||||||
|
for _, version := range group.Versions {
|
||||||
|
packagePath := g.inputPackages[clientgentypes.GroupVersion{Group: group.Group, Version: version}]
|
||||||
|
if internal {
|
||||||
|
// import the install package for internal clientsets instead of the type package with register.go
|
||||||
|
if version != "" {
|
||||||
|
packagePath = filepath.Dir(packagePath)
|
||||||
|
}
|
||||||
|
packagePath = filepath.Join(packagePath, "install")
|
||||||
|
imports = append(imports, strings.ToLower(fmt.Sprintf("%s \"%s\"", group.Group.NonEmpty(), packagePath)))
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), packagePath)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *genScheme) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||||
|
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||||
|
|
||||||
|
allGroupVersions := clientgentypes.ToGroupVersionPackages(g.groups)
|
||||||
|
allInstallGroups := clientgentypes.ToGroupInstallPackages(g.groups)
|
||||||
|
|
||||||
|
m := map[string]interface{}{
|
||||||
|
"allGroupVersions": allGroupVersions,
|
||||||
|
"allInstallGroups": allInstallGroups,
|
||||||
|
"customRegister": false,
|
||||||
|
"osGetenv": c.Universe.Function(types.Name{Package: "os", Name: "Getenv"}),
|
||||||
|
"runtimeNewParameterCodec": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "NewParameterCodec"}),
|
||||||
|
"runtimeNewScheme": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "NewScheme"}),
|
||||||
|
"serializerNewCodecFactory": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/serializer", Name: "NewCodecFactory"}),
|
||||||
|
"runtimeScheme": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "Scheme"}),
|
||||||
|
"schemaGroupVersion": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "GroupVersion"}),
|
||||||
|
"metav1AddToGroupVersion": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "AddToGroupVersion"}),
|
||||||
|
"announcedAPIGroupFactoryRegistry": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apimachinery/announced", Name: "APIGroupFactoryRegistry"}),
|
||||||
|
"registeredNewOrDie": c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/apimachinery/registered", Name: "NewOrDie"}),
|
||||||
|
"registeredAPIRegistrationManager": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apimachinery/registered", Name: "APIRegistrationManager"}),
|
||||||
|
}
|
||||||
|
sw.Do(globalsTemplate, m)
|
||||||
|
|
||||||
|
if _, err := os.Stat(filepath.Join(g.outputPath, strings.ToLower("register_custom.go"))); err == nil {
|
||||||
|
m["customRegister"] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if g.internalClientset() {
|
||||||
|
sw.Do(internalRegistration, m)
|
||||||
|
} else {
|
||||||
|
sw.Do(registration, m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return sw.Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *genScheme) internalClientset() bool {
|
||||||
|
for _, group := range g.groups {
|
||||||
|
for _, v := range group.Versions {
|
||||||
|
if v == "" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var globalsTemplate = `
|
||||||
|
var Scheme = $.runtimeNewScheme|raw$()
|
||||||
|
var Codecs = $.serializerNewCodecFactory|raw$(Scheme)
|
||||||
|
var ParameterCodec = $.runtimeNewParameterCodec|raw$(Scheme)
|
||||||
|
`
|
||||||
|
|
||||||
|
var internalRegistration = `
|
||||||
|
var Registry = $.registeredNewOrDie|raw$($.osGetenv|raw$("KUBE_API_VERSIONS"))
|
||||||
|
var GroupFactoryRegistry = make($.announcedAPIGroupFactoryRegistry|raw$)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
$.metav1AddToGroupVersion|raw$(Scheme, $.schemaGroupVersion|raw${Version: "v1"})
|
||||||
|
Install(GroupFactoryRegistry, Registry, Scheme)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Install registers the API group and adds types to a scheme
|
||||||
|
func Install(groupFactoryRegistry $.announcedAPIGroupFactoryRegistry|raw$, registry *$.registeredAPIRegistrationManager|raw$, scheme *$.runtimeScheme|raw$) {
|
||||||
|
$range .allInstallGroups$ $.InstallPackageName$.Install(groupFactoryRegistry, registry, scheme)
|
||||||
|
$end$
|
||||||
|
$if .customRegister$ExtraInstall(groupFactoryRegistry, registry, scheme)$end$
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
var registration = `
|
||||||
|
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
$.metav1AddToGroupVersion|raw$(Scheme, $.schemaGroupVersion|raw${Version: "v1"})
|
||||||
|
AddToScheme(Scheme)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
||||||
|
// of clientsets, like in:
|
||||||
|
//
|
||||||
|
// import (
|
||||||
|
// "k8s.io/client-go/kubernetes"
|
||||||
|
// clientsetscheme "k8s.io/client-go/kuberentes/scheme"
|
||||||
|
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// kclientset, _ := kubernetes.NewForConfig(c)
|
||||||
|
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||||
|
//
|
||||||
|
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
||||||
|
// correctly.
|
||||||
|
func AddToScheme(scheme *$.runtimeScheme|raw$) {
|
||||||
|
$range .allGroupVersions$ $.PackageName$.AddToScheme(scheme)
|
||||||
|
$end$
|
||||||
|
$if .customRegister$ExtraAddToScheme(scheme)$end$
|
||||||
|
}
|
||||||
|
`
|
@ -30,6 +30,7 @@ import (
|
|||||||
type genClientForType struct {
|
type genClientForType struct {
|
||||||
generator.DefaultGen
|
generator.DefaultGen
|
||||||
outputPackage string
|
outputPackage string
|
||||||
|
clientsetPackage string
|
||||||
group string
|
group string
|
||||||
version string
|
version string
|
||||||
typeToMatch *types.Type
|
typeToMatch *types.Type
|
||||||
@ -90,7 +91,7 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
|
|||||||
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
|
"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"}),
|
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
|
||||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
||||||
"apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}),
|
"schemeParameterCodec": c.Universe.Variable(types.Name{Package: filepath.Join(g.clientsetPackage, "scheme"), Name: "ParameterCodec"}),
|
||||||
}
|
}
|
||||||
|
|
||||||
sw.Do(getterComment, m)
|
sw.Do(getterComment, m)
|
||||||
@ -224,7 +225,7 @@ func (c *$.type|privatePlural$) List(opts $.ListOptions|raw$) (result *$.type|ra
|
|||||||
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|allLowercasePlural$").
|
||||||
VersionedParams(&opts, $.apiParameterCodec|raw$).
|
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
||||||
Do().
|
Do().
|
||||||
Into(result)
|
Into(result)
|
||||||
return
|
return
|
||||||
@ -238,7 +239,7 @@ func (c *$.type|privatePlural$) Get(name string, options $.GetOptions|raw$) (res
|
|||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|allLowercasePlural$").
|
||||||
Name(name).
|
Name(name).
|
||||||
VersionedParams(&options, $.apiParameterCodec|raw$).
|
VersionedParams(&options, $.schemeParameterCodec|raw$).
|
||||||
Do().
|
Do().
|
||||||
Into(result)
|
Into(result)
|
||||||
return
|
return
|
||||||
@ -264,7 +265,7 @@ func (c *$.type|privatePlural$) DeleteCollection(options *$.DeleteOptions|raw$,
|
|||||||
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|allLowercasePlural$").
|
||||||
VersionedParams(&listOptions, $.apiParameterCodec|raw$).
|
VersionedParams(&listOptions, $.schemeParameterCodec|raw$).
|
||||||
Body(options).
|
Body(options).
|
||||||
Do().
|
Do().
|
||||||
Error()
|
Error()
|
||||||
@ -325,7 +326,7 @@ func (c *$.type|privatePlural$) Watch(opts $.ListOptions|raw$) ($.watchInterface
|
|||||||
Prefix("watch").
|
Prefix("watch").
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|allLowercasePlural$").
|
||||||
VersionedParams(&opts, $.apiParameterCodec|raw$).
|
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
||||||
Watch()
|
Watch()
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
@ -102,6 +102,17 @@ func ToGroupVersionPackages(groups []GroupVersions) []GroupVersionPackage {
|
|||||||
return groupVersionPackages
|
return groupVersionPackages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ToGroupInstallPackages(groups []GroupVersions) []GroupInstallPackage {
|
||||||
|
var groupInstallPackages []GroupInstallPackage
|
||||||
|
for _, group := range groups {
|
||||||
|
groupInstallPackages = append(groupInstallPackages, GroupInstallPackage{
|
||||||
|
Group: Group(namer.IC(group.Group.NonEmpty())),
|
||||||
|
InstallPackageName: strings.ToLower(group.Group.NonEmpty()),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return groupInstallPackages
|
||||||
|
}
|
||||||
|
|
||||||
// NormalizeGroupVersion calls normalizes the GroupVersion.
|
// NormalizeGroupVersion calls normalizes the GroupVersion.
|
||||||
//func NormalizeGroupVersion(gv GroupVersion) GroupVersion {
|
//func NormalizeGroupVersion(gv GroupVersion) GroupVersion {
|
||||||
// return GroupVersion{Group: gv.Group.NonEmpty(), Version: gv.Version, NonEmptyVersion: normalization.Version(gv.Version)}
|
// return GroupVersion{Group: gv.Group.NonEmpty(), Version: gv.Version, NonEmptyVersion: normalization.Version(gv.Version)}
|
||||||
|
@ -62,3 +62,8 @@ type GroupVersionPackage struct {
|
|||||||
GroupVersion string
|
GroupVersion string
|
||||||
PackageName string
|
PackageName string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GroupInstallPackage struct {
|
||||||
|
Group Group
|
||||||
|
InstallPackageName string
|
||||||
|
}
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2016 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package federation_internalclientset
|
|
||||||
|
|
||||||
// These imports are the API groups the client will support.
|
|
||||||
import (
|
|
||||||
_ "k8s.io/kubernetes/federation/apis/federation/install"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package internalclientset
|
|
||||||
|
|
||||||
// These imports are the API groups the client will support.
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
_ "k8s.io/kubernetes/pkg/api/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/apps/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/authentication/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/authorization/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/batch/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/certificates/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/policy/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/rbac/install"
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/storage/install"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
if missingVersions := api.Registry.ValidateEnvRequestedVersions(); len(missingVersions) != 0 {
|
|
||||||
panic(fmt.Sprintf("KUBE_API_VERSIONS contains versions that are not installed: %q.", missingVersions))
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package scheme
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
||||||
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
componentconfig "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExtraInstall(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
|
// componentconfig is an apigroup, but we don't have an API endpoint because its objects are just embedded in ConfigMaps.
|
||||||
|
componentconfig.Install(groupFactoryRegistry, registry, scheme)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user