include multiple versions in clientset

update client-gen to use the term "internalversion" rather than "unversioned";
leave internal one unqualified;
cleanup client-gen
This commit is contained in:
Chao Xu 2016-10-21 15:24:05 -07:00
parent 3bda6884b8
commit 850729bfaf
581 changed files with 3197 additions and 2087 deletions

View File

@ -25,7 +25,7 @@ go_library(
"//pkg/apis/batch:go_default_library", "//pkg/apis/batch:go_default_library",
"//pkg/apis/componentconfig:go_default_library", "//pkg/apis/componentconfig:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/leaderelection:go_default_library", "//pkg/client/leaderelection:go_default_library",
"//pkg/client/leaderelection/resourcelock:go_default_library", "//pkg/client/leaderelection/resourcelock:go_default_library",
"//pkg/client/record:go_default_library", "//pkg/client/record:go_default_library",

View File

@ -37,7 +37,7 @@ import (
"k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/batch"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned" unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/leaderelection" "k8s.io/kubernetes/pkg/client/leaderelection"
"k8s.io/kubernetes/pkg/client/leaderelection/resourcelock" "k8s.io/kubernetes/pkg/client/leaderelection/resourcelock"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"

View File

@ -21,7 +21,7 @@ go_library(
"//cmd/kube-proxy/app/options:go_default_library", "//cmd/kube-proxy/app/options:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/record:go_default_library", "//pkg/client/record:go_default_library",
"//pkg/client/unversioned/clientcmd:go_default_library", "//pkg/client/unversioned/clientcmd:go_default_library",
"//pkg/client/unversioned/clientcmd/api:go_default_library", "//pkg/client/unversioned/clientcmd/api:go_default_library",

View File

@ -31,7 +31,7 @@ import (
"k8s.io/kubernetes/cmd/kube-proxy/app/options" "k8s.io/kubernetes/cmd/kube-proxy/app/options"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned" unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"

View File

@ -23,7 +23,7 @@ go_library(
"//cmd/kubeadm/app/util:go_default_library", "//cmd/kubeadm/app/util:go_default_library",
"//pkg/apis/certificates:go_default_library", "//pkg/apis/certificates:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion:go_default_library",
"//pkg/client/unversioned/clientcmd:go_default_library", "//pkg/client/unversioned/clientcmd:go_default_library",
"//pkg/client/unversioned/clientcmd/api:go_default_library", "//pkg/client/unversioned/clientcmd/api:go_default_library",
"//pkg/kubelet/util/csr:go_default_library", "//pkg/kubelet/util/csr:go_default_library",

View File

@ -26,7 +26,7 @@ import (
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
"k8s.io/kubernetes/pkg/apis/certificates" "k8s.io/kubernetes/pkg/apis/certificates"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
certclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned" certclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"

View File

@ -32,10 +32,10 @@ go_library(
"//pkg/capabilities:go_default_library", "//pkg/capabilities:go_default_library",
"//pkg/client/chaosclient:go_default_library", "//pkg/client/chaosclient:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/unversioned:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/record:go_default_library", "//pkg/client/record:go_default_library",
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",
"//pkg/client/unversioned/auth:go_default_library", "//pkg/client/unversioned/auth:go_default_library",

View File

@ -27,8 +27,8 @@ import (
"k8s.io/kubernetes/pkg/auth/authorizer" "k8s.io/kubernetes/pkg/auth/authorizer"
"k8s.io/kubernetes/pkg/auth/group" "k8s.io/kubernetes/pkg/auth/group"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
authenticationclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned" authenticationclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion"
authorizationclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned" authorizationclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion"
alwaysallowauthorizer "k8s.io/kubernetes/pkg/genericapiserver/authorizer" alwaysallowauthorizer "k8s.io/kubernetes/pkg/genericapiserver/authorizer"
"k8s.io/kubernetes/pkg/kubelet/server" "k8s.io/kubernetes/pkg/kubelet/server"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"

View File

@ -25,7 +25,7 @@ import (
"github.com/golang/glog" "github.com/golang/glog"
unversionedcertificates "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned" unversionedcertificates "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion"
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"

View File

@ -43,7 +43,7 @@ import (
"k8s.io/kubernetes/pkg/capabilities" "k8s.io/kubernetes/pkg/capabilities"
"k8s.io/kubernetes/pkg/client/chaosclient" "k8s.io/kubernetes/pkg/client/chaosclient"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/unversioned" unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
clientauth "k8s.io/kubernetes/pkg/client/unversioned/auth" clientauth "k8s.io/kubernetes/pkg/client/unversioned/auth"

View File

@ -17,7 +17,7 @@ go_binary(
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/args:go_default_library", "//cmd/libs/go2idl/client-gen/args:go_default_library",
"//cmd/libs/go2idl/client-gen/generators:go_default_library", "//cmd/libs/go2idl/client-gen/generators:go_default_library",
"//pkg/api/unversioned:go_default_library", "//cmd/libs/go2idl/client-gen/types:go_default_library",
"//vendor:github.com/golang/glog", "//vendor:github.com/golang/glog",
"//vendor:github.com/spf13/pflag", "//vendor:github.com/spf13/pflag",
"//vendor:k8s.io/gengo/args", "//vendor:k8s.io/gengo/args",

View File

@ -14,5 +14,5 @@ go_library(
name = "go_default_library", name = "go_default_library",
srcs = ["args.go"], srcs = ["args.go"],
tags = ["automanaged"], tags = ["automanaged"],
deps = ["//pkg/api/unversioned:go_default_library"], deps = ["//cmd/libs/go2idl/client-gen/types:go_default_library"],
) )

View File

@ -16,22 +16,19 @@ limitations under the License.
package args package args
import "k8s.io/kubernetes/pkg/api/unversioned" import "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
// ClientGenArgs is a wrapper for arguments to client-gen. // ClientGenArgs is a wrapper for arguments to client-gen.
type Args struct { type Args struct {
// TODO: we should make another type declaration of GroupVersion out of the Groups []types.GroupVersions
// unversioned package, which is part of our API. Tools like client-gen
// shouldn't depend on an API.
GroupVersions []unversioned.GroupVersion
// GroupVersionToInputPath is a map between GroupVersion and the path to // GroupVersionToInputPath is a map between GroupVersion and the path to
// the respective types.go. We still need GroupVersions in the struct because // the respective types.go. We still need GroupVersions in the struct because
// we need an order. // we need an order.
GroupVersionToInputPath map[unversioned.GroupVersion]string GroupVersionToInputPath map[types.GroupVersion]string
// Overrides for which types should be included in the client. // Overrides for which types should be included in the client.
IncludedTypesOverrides map[unversioned.GroupVersion][]string IncludedTypesOverrides map[types.GroupVersion][]string
// ClientsetName is the name of the clientset to be generated. It's // ClientsetName is the name of the clientset to be generated. It's
// populated from command-line arguments. // populated from command-line arguments.

View File

@ -24,8 +24,7 @@ go_library(
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/args:go_default_library", "//cmd/libs/go2idl/client-gen/args:go_default_library",
"//cmd/libs/go2idl/client-gen/generators/fake:go_default_library", "//cmd/libs/go2idl/client-gen/generators/fake:go_default_library",
"//cmd/libs/go2idl/client-gen/generators/normalization:go_default_library", "//cmd/libs/go2idl/client-gen/types:go_default_library",
"//pkg/api/unversioned:go_default_library",
"//vendor:github.com/golang/glog", "//vendor:github.com/golang/glog",
"//vendor:k8s.io/gengo/args", "//vendor:k8s.io/gengo/args",
"//vendor:k8s.io/gengo/generator", "//vendor:k8s.io/gengo/generator",

View File

@ -28,8 +28,7 @@ import (
"k8s.io/gengo/types" "k8s.io/gengo/types"
clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args" clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/fake" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/fake"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
"k8s.io/kubernetes/pkg/api/unversioned"
"github.com/golang/glog" "github.com/golang/glog"
) )
@ -62,10 +61,10 @@ func generatedBy(customArgs clientgenargs.Args) string {
return fmt.Sprintf("\n// This package is generated by client-gen with the default arguments.\n\n") return fmt.Sprintf("\n// This package is generated by client-gen with the default arguments.\n\n")
} }
func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packageBasePath string, apiPath string, srcTreePath string, inputPath string, boilerplate []byte, generatedBy string) generator.Package { func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, packageBasePath string, apiPath string, srcTreePath string, inputPath string, boilerplate []byte, generatedBy string) generator.Package {
outputPackagePath := filepath.Join(packageBasePath, gv.Group, gv.Version) outputPackagePath := strings.ToLower(filepath.Join(packageBasePath, gv.Group.NonEmpty(), gv.Version.NonEmpty()))
return &generator.DefaultPackage{ return &generator.DefaultPackage{
PackageName: gv.Version, PackageName: strings.ToLower(gv.Version.NonEmpty()),
PackagePath: outputPackagePath, PackagePath: outputPackagePath,
HeaderText: boilerplate, HeaderText: boilerplate,
PackageDocumentation: []byte( PackageDocumentation: []byte(
@ -87,8 +86,8 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag
OptionalName: strings.ToLower(c.Namers["private"].Name(t)), OptionalName: strings.ToLower(c.Namers["private"].Name(t)),
}, },
outputPackage: outputPackagePath, outputPackage: outputPackagePath,
group: normalization.BeforeFirstDot(gv.Group), group: gv.Group.NonEmpty(),
version: gv.Version, version: gv.Version.String(),
typeToMatch: t, typeToMatch: t,
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),
}) })
@ -96,12 +95,12 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag
generators = append(generators, &genGroup{ generators = append(generators, &genGroup{
DefaultGen: generator.DefaultGen{ DefaultGen: generator.DefaultGen{
OptionalName: normalization.BeforeFirstDot(gv.Group) + "_client", OptionalName: gv.Group.NonEmpty() + "_client",
}, },
outputPackage: outputPackagePath, outputPackage: outputPackagePath,
inputPacakge: inputPath, inputPacakge: inputPath,
group: gv.Group, group: gv.Group.NonEmpty(),
version: gv.Version, version: gv.Version.String(),
apiPath: apiPath, apiPath: apiPath,
types: typeList, types: typeList,
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),
@ -144,7 +143,7 @@ func packageForClientset(customArgs clientgenargs.Args, typedClientBasePath stri
DefaultGen: generator.DefaultGen{ DefaultGen: generator.DefaultGen{
OptionalName: "clientset", OptionalName: "clientset",
}, },
groupVersions: customArgs.GroupVersions, groups: customArgs.Groups,
typedClientPath: typedClientBasePath, typedClientPath: typedClientBasePath,
outputPackage: customArgs.ClientsetName, outputPackage: customArgs.ClientsetName,
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),
@ -170,7 +169,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
generatedBy := generatedBy(customArgs) generatedBy := generatedBy(customArgs)
gvToTypes := map[unversioned.GroupVersion][]*types.Type{} gvToTypes := map[clientgentypes.GroupVersion][]*types.Type{}
for gv, inputDir := range customArgs.GroupVersionToInputPath { for gv, inputDir := range customArgs.GroupVersionToInputPath {
p := context.Universe.Package(inputDir) p := context.Universe.Package(inputDir)
for n, t := range p.Types { for n, t := range p.Types {
@ -215,12 +214,15 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
} }
orderer := namer.Orderer{Namer: namer.NewPrivateNamer(0)} orderer := namer.Orderer{Namer: namer.NewPrivateNamer(0)}
for _, gv := range customArgs.GroupVersions { for _, group := range customArgs.Groups {
types := gvToTypes[gv] for _, version := range group.Versions {
inputPath := customArgs.GroupVersionToInputPath[gv] gv := clientgentypes.GroupVersion{Group: group.Group, Version: version}
packageList = append(packageList, packageForGroup(normalization.GroupVersion(gv), orderer.OrderTypes(types), typedClientBasePath, customArgs.ClientsetAPIPath, arguments.OutputBase, inputPath, boilerplate, generatedBy)) types := gvToTypes[gv]
if customArgs.FakeClient { inputPath := customArgs.GroupVersionToInputPath[gv]
packageList = append(packageList, fake.PackageForGroup(normalization.GroupVersion(gv), orderer.OrderTypes(types), typedClientBasePath, arguments.OutputBase, inputPath, boilerplate, generatedBy)) packageList = append(packageList, packageForGroup(gv, orderer.OrderTypes(types), typedClientBasePath, 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))
}
} }
} }

View File

@ -21,8 +21,7 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/args:go_default_library", "//cmd/libs/go2idl/client-gen/args:go_default_library",
"//cmd/libs/go2idl/client-gen/generators/normalization:go_default_library", "//cmd/libs/go2idl/client-gen/types:go_default_library",
"//pkg/api/unversioned:go_default_library",
"//vendor:github.com/golang/glog", "//vendor:github.com/golang/glog",
"//vendor:k8s.io/gengo/generator", "//vendor:k8s.io/gengo/generator",
"//vendor:k8s.io/gengo/namer", "//vendor:k8s.io/gengo/namer",

View File

@ -25,14 +25,13 @@ import (
"k8s.io/gengo/generator" "k8s.io/gengo/generator"
"k8s.io/gengo/types" "k8s.io/gengo/types"
clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args" clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
"k8s.io/kubernetes/pkg/api/unversioned"
) )
func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, inputPath string, boilerplate []byte, generatedBy string) generator.Package { func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, inputPath string, boilerplate []byte, generatedBy string) generator.Package {
outputPackagePath := filepath.Join(packageBasePath, gv.Group, gv.Version, "fake") outputPackagePath := strings.ToLower(filepath.Join(packageBasePath, gv.Group.NonEmpty(), gv.Version.NonEmpty(), "fake"))
// TODO: should make this a function, called by here and in client-generator.go // TODO: should make this a function, called by here and in client-generator.go
realClientPath := filepath.Join(packageBasePath, gv.Group, gv.Version) realClientPath := filepath.Join(packageBasePath, gv.Group.NonEmpty(), gv.Version.NonEmpty())
return &generator.DefaultPackage{ return &generator.DefaultPackage{
PackageName: "fake", PackageName: "fake",
PackagePath: outputPackagePath, PackagePath: outputPackagePath,
@ -56,9 +55,9 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag
OptionalName: "fake_" + strings.ToLower(c.Namers["private"].Name(t)), OptionalName: "fake_" + strings.ToLower(c.Namers["private"].Name(t)),
}, },
outputPackage: outputPackagePath, outputPackage: outputPackagePath,
group: normalization.BeforeFirstDot(gv.Group), group: gv.Group.NonEmpty(),
version: gv.Version.String(),
inputPackage: inputPath, inputPackage: inputPath,
version: gv.Version,
typeToMatch: t, typeToMatch: t,
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),
}) })
@ -66,11 +65,12 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag
generators = append(generators, &genFakeForGroup{ generators = append(generators, &genFakeForGroup{
DefaultGen: generator.DefaultGen{ DefaultGen: generator.DefaultGen{
OptionalName: "fake_" + normalization.BeforeFirstDot(gv.Group) + "_client", OptionalName: "fake_" + gv.Group.NonEmpty() + "_client",
}, },
outputPackage: outputPackagePath, outputPackage: outputPackagePath,
realClientPath: realClientPath, realClientPath: realClientPath,
group: normalization.BeforeFirstDot(gv.Group), group: gv.Group.NonEmpty(),
version: gv.Version.String(),
types: typeList, types: typeList,
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),
}) })
@ -112,7 +112,7 @@ func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath stri
DefaultGen: generator.DefaultGen{ DefaultGen: generator.DefaultGen{
OptionalName: "clientset_generated", OptionalName: "clientset_generated",
}, },
groupVersions: customArgs.GroupVersions, groups: customArgs.Groups,
typedClientPath: typedClientBasePath, typedClientPath: typedClientBasePath,
outputPackage: "fake", outputPackage: "fake",
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),

View File

@ -20,18 +20,18 @@ import (
"fmt" "fmt"
"io" "io"
"path/filepath" "path/filepath"
"strings"
"k8s.io/gengo/generator" "k8s.io/gengo/generator"
"k8s.io/gengo/namer" "k8s.io/gengo/namer"
"k8s.io/gengo/types" "k8s.io/gengo/types"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
"k8s.io/kubernetes/pkg/api/unversioned"
) )
// genClientset generates a package for a clientset. // genClientset generates a package for a clientset.
type genClientset struct { type genClientset struct {
generator.DefaultGen generator.DefaultGen
groupVersions []unversioned.GroupVersion groups []clientgentypes.GroupVersions
typedClientPath string typedClientPath string
outputPackage string outputPackage string
imports namer.ImportTracker imports namer.ImportTracker
@ -57,14 +57,13 @@ func (g *genClientset) Filter(c *generator.Context, t *types.Type) bool {
func (g *genClientset) Imports(c *generator.Context) (imports []string) { func (g *genClientset) Imports(c *generator.Context) (imports []string) {
imports = append(imports, g.imports.ImportLines()...) imports = append(imports, g.imports.ImportLines()...)
for _, gv := range g.groupVersions { for _, group := range g.groups {
group := normalization.Group(gv.Group) for _, version := range group.Versions {
version := normalization.Version(gv.Version) typedClientPath := filepath.Join(g.typedClientPath, group.Group.NonEmpty(), version.NonEmpty())
undotted_group := normalization.BeforeFirstDot(group) imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", version.NonEmpty(), group.Group.NonEmpty(), typedClientPath)))
typedClientPath := filepath.Join(g.typedClientPath, group, version) fakeTypedClientPath := filepath.Join(typedClientPath, "fake")
imports = append(imports, fmt.Sprintf("%s%s \"%s\"", version, undotted_group, typedClientPath)) imports = append(imports, strings.ToLower(fmt.Sprintf("fake%s%s \"%s\"", version.NonEmpty(), group.Group.NonEmpty(), fakeTypedClientPath)))
fakeTypedClientPath := filepath.Join(typedClientPath, "fake") }
imports = append(imports, fmt.Sprintf("fake%s%s \"%s\"", version, undotted_group, fakeTypedClientPath))
} }
// the package that has the clientset Interface // the package that has the clientset Interface
imports = append(imports, fmt.Sprintf("clientset \"%s\"", g.clientsetPath)) imports = append(imports, fmt.Sprintf("clientset \"%s\"", g.clientsetPath))
@ -91,19 +90,14 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
sw.Do(checkImpl, nil) sw.Do(checkImpl, nil)
type arg struct { allGroups := clientgentypes.ToGroupVersionPackages(g.groups)
Group string
PackageName string
}
allGroups := []arg{}
for _, gv := range g.groupVersions {
group := normalization.BeforeFirstDot(normalization.Group(gv.Group))
version := normalization.Version(gv.Version)
allGroups = append(allGroups, arg{namer.IC(group), version + group})
}
for _, g := range allGroups { for _, g := range allGroups {
sw.Do(clientsetInterfaceImplTemplate, g) sw.Do(clientsetInterfaceImplTemplate, g)
// don't generated the default method if generating internalversion clientset
if g.IsDefaultVersion && g.Version != "" {
sw.Do(clientsetInterfaceDefaultVersionImpl, g)
}
} }
return sw.Error() return sw.Error()
@ -148,8 +142,15 @@ var _ clientset.Interface = &Clientset{}
` `
var clientsetInterfaceImplTemplate = ` var clientsetInterfaceImplTemplate = `
// $.Group$ retrieves the $.Group$Client // $.GroupVersion$ retrieves the $.GroupVersion$Client
func (c *Clientset) $.Group$() $.PackageName$.$.Group$Interface { func (c *Clientset) $.GroupVersion$() $.PackageName$.$.GroupVersion$Interface {
return &fake$.PackageName$.Fake$.Group${Fake: &c.Fake} return &fake$.PackageName$.Fake$.GroupVersion${Fake: &c.Fake}
}
`
var clientsetInterfaceDefaultVersionImpl = `
// $.Group$ retrieves the $.GroupVersion$Client
func (c *Clientset) $.Group$() $.PackageName$.$.GroupVersion$Interface {
return &fake$.PackageName$.Fake$.GroupVersion${Fake: &c.Fake}
} }
` `

View File

@ -20,6 +20,7 @@ import (
"fmt" "fmt"
"io" "io"
"path/filepath" "path/filepath"
"strings"
"k8s.io/gengo/generator" "k8s.io/gengo/generator"
"k8s.io/gengo/namer" "k8s.io/gengo/namer"
@ -32,6 +33,7 @@ type genFakeForGroup struct {
outputPackage string outputPackage string
realClientPath string realClientPath string
group string group string
version string
// types in this group // types in this group
types []*types.Type types []*types.Type
imports namer.ImportTracker imports namer.ImportTracker
@ -51,7 +53,7 @@ func (g *genFakeForGroup) Namers(c *generator.Context) namer.NameSystems {
} }
func (g *genFakeForGroup) Imports(c *generator.Context) (imports []string) { func (g *genFakeForGroup) Imports(c *generator.Context) (imports []string) {
imports = append(g.imports.ImportLines(), fmt.Sprintf("%s \"%s\"", filepath.Base(g.realClientPath), g.realClientPath)) imports = append(g.imports.ImportLines(), strings.ToLower(fmt.Sprintf("%s \"%s\"", filepath.Base(g.realClientPath), g.realClientPath)))
return imports return imports
} }
@ -61,7 +63,7 @@ func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io
const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient" const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient"
m := map[string]interface{}{ m := map[string]interface{}{
"group": g.group, "group": g.group,
"Group": namer.IC(g.group), "GroupVersion": namer.IC(g.group) + namer.IC(g.version),
"Fake": c.Universe.Type(types.Name{Package: pkgTestingCore, Name: "Fake"}), "Fake": c.Universe.Type(types.Name{Package: pkgTestingCore, Name: "Fake"}),
"RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}), "RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}),
"RESTClient": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "RESTClient"}), "RESTClient": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "RESTClient"}),
@ -70,8 +72,8 @@ func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io
for _, t := range g.types { for _, t := range g.types {
wrapper := map[string]interface{}{ wrapper := map[string]interface{}{
"type": t, "type": t,
"Group": namer.IC(g.group), "GroupVersion": namer.IC(g.group) + namer.IC(g.version),
"realClientPackage": filepath.Base(g.realClientPath), "realClientPackage": strings.ToLower(filepath.Base(g.realClientPath)),
} }
namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines) namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines)
if namespaced { if namespaced {
@ -86,19 +88,19 @@ func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io
} }
var groupClientTemplate = ` var groupClientTemplate = `
type Fake$.Group$ struct { type Fake$.GroupVersion$ struct {
*$.Fake|raw$ *$.Fake|raw$
} }
` `
var getterImplNamespaced = ` var getterImplNamespaced = `
func (c *Fake$.Group$) $.type|publicPlural$(namespace string) $.realClientPackage$.$.type|public$Interface { func (c *Fake$.GroupVersion$) $.type|publicPlural$(namespace string) $.realClientPackage$.$.type|public$Interface {
return &Fake$.type|publicPlural${c, namespace} return &Fake$.type|publicPlural${c, namespace}
} }
` `
var getterImplNonNamespaced = ` var getterImplNonNamespaced = `
func (c *Fake$.Group$) $.type|publicPlural$() $.realClientPackage$.$.type|public$Interface { func (c *Fake$.GroupVersion$) $.type|publicPlural$() $.realClientPackage$.$.type|public$Interface {
return &Fake$.type|publicPlural${c} return &Fake$.type|publicPlural${c}
} }
` `
@ -106,7 +108,7 @@ func (c *Fake$.Group$) $.type|publicPlural$() $.realClientPackage$.$.type|public
var getRESTClient = ` var getRESTClient = `
// RESTClient returns a RESTClient that is used to communicate // RESTClient returns a RESTClient that is used to communicate
// with API server by this client implementation. // with API server by this client implementation.
func (c *Fake$.Group$) RESTClient() $.RESTClientInterface|raw$ { func (c *Fake$.GroupVersion$) RESTClient() $.RESTClientInterface|raw$ {
var ret *$.RESTClient|raw$ var ret *$.RESTClient|raw$
return ret return ret
} }

View File

@ -31,8 +31,8 @@ type genFakeForType struct {
generator.DefaultGen generator.DefaultGen
outputPackage string outputPackage string
group string group string
inputPackage string
version string version string
inputPackage string
typeToMatch *types.Type typeToMatch *types.Type
imports namer.ImportTracker imports namer.ImportTracker
} }
@ -84,10 +84,6 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
if canonicalGroup == "core" { if canonicalGroup == "core" {
canonicalGroup = "" canonicalGroup = ""
} }
canonicalVersion := g.version
if canonicalVersion == "unversioned" {
canonicalVersion = ""
}
groupName := g.group groupName := g.group
if g.group == "core" { if g.group == "core" {
@ -106,9 +102,10 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
"Package": namer.IC(pkg), "Package": namer.IC(pkg),
"namespaced": namespaced, "namespaced": namespaced,
"Group": namer.IC(g.group), "Group": namer.IC(g.group),
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
"group": canonicalGroup, "group": canonicalGroup,
"groupName": groupName, "groupName": groupName,
"version": canonicalVersion, "version": g.version,
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}), "watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
"GroupVersionResource": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/unversioned", Name: "GroupVersionResource"}), "GroupVersionResource": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/unversioned", Name: "GroupVersionResource"}),
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}), "PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
@ -137,7 +134,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
"ExtractFromListOptions": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "ExtractFromListOptions"}), "ExtractFromListOptions": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "ExtractFromListOptions"}),
} }
if g.version == "unversioned" { if g.version == "" {
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"}) m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"})
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}) m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"})
} else { } else {
@ -180,7 +177,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
var structNamespaced = ` var structNamespaced = `
// Fake$.type|publicPlural$ implements $.type|public$Interface // Fake$.type|publicPlural$ implements $.type|public$Interface
type Fake$.type|publicPlural$ struct { type Fake$.type|publicPlural$ struct {
Fake *Fake$.Group$ Fake *Fake$.GroupVersion$
ns string ns string
} }
` `
@ -189,7 +186,7 @@ type Fake$.type|publicPlural$ struct {
var structNonNamespaced = ` var structNonNamespaced = `
// Fake$.type|publicPlural$ implements $.type|public$Interface // Fake$.type|publicPlural$ implements $.type|public$Interface
type Fake$.type|publicPlural$ struct { type Fake$.type|publicPlural$ struct {
Fake *Fake$.Group$ Fake *Fake$.GroupVersion$
} }
` `

View File

@ -20,18 +20,18 @@ import (
"fmt" "fmt"
"io" "io"
"path/filepath" "path/filepath"
"strings"
"k8s.io/gengo/generator" "k8s.io/gengo/generator"
"k8s.io/gengo/namer" "k8s.io/gengo/namer"
"k8s.io/gengo/types" "k8s.io/gengo/types"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization" clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
"k8s.io/kubernetes/pkg/api/unversioned"
) )
// genClientset generates a package for a clientset. // genClientset generates a package for a clientset.
type genClientset struct { type genClientset struct {
generator.DefaultGen generator.DefaultGen
groupVersions []unversioned.GroupVersion groups []clientgentypes.GroupVersions
typedClientPath string typedClientPath string
outputPackage string outputPackage string
imports namer.ImportTracker imports namer.ImportTracker
@ -55,12 +55,11 @@ func (g *genClientset) Filter(c *generator.Context, t *types.Type) bool {
func (g *genClientset) Imports(c *generator.Context) (imports []string) { func (g *genClientset) Imports(c *generator.Context) (imports []string) {
imports = append(imports, g.imports.ImportLines()...) imports = append(imports, g.imports.ImportLines()...)
for _, gv := range g.groupVersions { for _, group := range g.groups {
group := normalization.Group(gv.Group) for _, version := range group.Versions {
version := normalization.Version(gv.Version) typedClientPath := filepath.Join(g.typedClientPath, group.Group.NonEmpty(), version.NonEmpty())
typedClientPath := filepath.Join(g.typedClientPath, group, version) imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", version.NonEmpty(), group.Group.NonEmpty(), typedClientPath)))
group = normalization.BeforeFirstDot(group) }
imports = append(imports, fmt.Sprintf("%s%s \"%s\"", version, group, typedClientPath))
} }
imports = append(imports, "github.com/golang/glog") imports = append(imports, "github.com/golang/glog")
imports = append(imports, "k8s.io/kubernetes/pkg/util/flowcontrol") imports = append(imports, "k8s.io/kubernetes/pkg/util/flowcontrol")
@ -76,17 +75,7 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
const pkgDiscovery = "k8s.io/kubernetes/pkg/client/typed/discovery" const pkgDiscovery = "k8s.io/kubernetes/pkg/client/typed/discovery"
const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient" const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient"
type arg struct { allGroups := clientgentypes.ToGroupVersionPackages(g.groups)
Group string
PackageName string
}
allGroups := []arg{}
for _, gv := range g.groupVersions {
group := normalization.BeforeFirstDot(normalization.Group(gv.Group))
version := normalization.Version(gv.Version)
allGroups = append(allGroups, arg{namer.IC(group), version + group})
}
m := map[string]interface{}{ m := map[string]interface{}{
"allGroups": allGroups, "allGroups": allGroups,
@ -99,10 +88,14 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
"NewDiscoveryClientForConfigOrDie": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClientForConfigOrDie"}), "NewDiscoveryClientForConfigOrDie": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClientForConfigOrDie"}),
"NewDiscoveryClient": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClient"}), "NewDiscoveryClient": c.Universe.Function(types.Name{Package: pkgDiscovery, Name: "NewDiscoveryClient"}),
} }
sw.Do(clientsetInterfaceTemplate, m) sw.Do(clientsetInterface, m)
sw.Do(clientsetTemplate, m) sw.Do(clientsetTemplate, m)
for _, g := range allGroups { for _, g := range allGroups {
sw.Do(clientsetInterfaceImplTemplate, g) sw.Do(clientsetInterfaceImplTemplate, g)
// don't generated the default method if generating internalversion clientset
if g.IsDefaultVersion && g.Version != "" {
sw.Do(clientsetInterfaceDefaultVersionImpl, g)
}
} }
sw.Do(getDiscoveryTemplate, m) sw.Do(getDiscoveryTemplate, m)
sw.Do(newClientsetForConfigTemplate, m) sw.Do(newClientsetForConfigTemplate, m)
@ -112,10 +105,12 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
return sw.Error() return sw.Error()
} }
var clientsetInterfaceTemplate = ` var clientsetInterface = `
type Interface interface { type Interface interface {
Discovery() $.DiscoveryInterface|raw$ Discovery() $.DiscoveryInterface|raw$
$range .allGroups$$.Group$() $.PackageName$.$.Group$Interface $range .allGroups$$.GroupVersion$() $.PackageName$.$.GroupVersion$Interface
$if .IsDefaultVersion$// Deprecated: please explicitly pick a version if possible.
$.Group$() $.PackageName$.$.GroupVersion$Interface$end$
$end$ $end$
} }
` `
@ -125,20 +120,32 @@ var clientsetTemplate = `
// version included in a Clientset. // version included in a Clientset.
type Clientset struct { type Clientset struct {
*$.DiscoveryClient|raw$ *$.DiscoveryClient|raw$
$range .allGroups$*$.PackageName$.$.Group$Client $range .allGroups$*$.PackageName$.$.GroupVersion$Client
$end$ $end$
} }
` `
var clientsetInterfaceImplTemplate = ` var clientsetInterfaceImplTemplate = `
// $.Group$ retrieves the $.Group$Client // $.GroupVersion$ retrieves the $.GroupVersion$Client
func (c *Clientset) $.Group$() $.PackageName$.$.Group$Interface { func (c *Clientset) $.GroupVersion$() $.PackageName$.$.GroupVersion$Interface {
if c == nil { if c == nil {
return nil return nil
} }
return c.$.Group$Client return c.$.GroupVersion$Client
} }
` `
var clientsetInterfaceDefaultVersionImpl = `
// Deprecated: $.Group$ retrieves the default version of $.Group$Client.
// Please explicitly pick a version.
func (c *Clientset) $.Group$() $.PackageName$.$.GroupVersion$Interface {
if c == nil {
return nil
}
return c.$.GroupVersion$Client
}
`
var getDiscoveryTemplate = ` var getDiscoveryTemplate = `
// Discovery retrieves the DiscoveryClient // Discovery retrieves the DiscoveryClient
func (c *Clientset) Discovery() $.DiscoveryInterface|raw$ { func (c *Clientset) Discovery() $.DiscoveryInterface|raw$ {
@ -155,7 +162,7 @@ func NewForConfig(c *$.Config|raw$) (*Clientset, error) {
} }
var clientset Clientset var clientset Clientset
var err error var err error
$range .allGroups$ clientset.$.Group$Client, err =$.PackageName$.NewForConfig(&configShallowCopy) $range .allGroups$ clientset.$.GroupVersion$Client, err =$.PackageName$.NewForConfig(&configShallowCopy)
if err!=nil { if err!=nil {
return nil, err return nil, err
} }
@ -174,7 +181,7 @@ var newClientsetForConfigOrDieTemplate = `
// panics if there is an error in the config. // panics if there is an error in the config.
func NewForConfigOrDie(c *$.Config|raw$) *Clientset { func NewForConfigOrDie(c *$.Config|raw$) *Clientset {
var clientset Clientset var clientset Clientset
$range .allGroups$ clientset.$.Group$Client =$.PackageName$.NewForConfigOrDie(c) $range .allGroups$ clientset.$.GroupVersion$Client =$.PackageName$.NewForConfigOrDie(c)
$end$ $end$
clientset.DiscoveryClient = $.NewDiscoveryClientForConfigOrDie|raw$(c) clientset.DiscoveryClient = $.NewDiscoveryClientForConfigOrDie|raw$(c)
return &clientset return &clientset
@ -185,7 +192,7 @@ var newClientsetForRESTClientTemplate = `
// New creates a new Clientset for the given RESTClient. // New creates a new Clientset for the given RESTClient.
func New(c $.RESTClientInterface|raw$) *Clientset { func New(c $.RESTClientInterface|raw$) *Clientset {
var clientset Clientset var clientset Clientset
$range .allGroups$ clientset.$.Group$Client =$.PackageName$.New(c) $range .allGroups$ clientset.$.GroupVersion$Client =$.PackageName$.New(c)
$end$ $end$
clientset.DiscoveryClient = $.NewDiscoveryClient|raw$(c) clientset.DiscoveryClient = $.NewDiscoveryClient|raw$(c)
return &clientset return &clientset

View File

@ -22,7 +22,6 @@ import (
"k8s.io/gengo/generator" "k8s.io/gengo/generator"
"k8s.io/gengo/namer" "k8s.io/gengo/namer"
"k8s.io/gengo/types" "k8s.io/gengo/types"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/normalization"
) )
// genGroup produces a file for a group client, e.g. ExtensionsClient for the extension group. // genGroup produces a file for a group client, e.g. ExtensionsClient for the extension group.
@ -62,6 +61,8 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
const pkgRegistered = "k8s.io/kubernetes/pkg/apimachinery/registered" const pkgRegistered = "k8s.io/kubernetes/pkg/apimachinery/registered"
const pkgAPI = "k8s.io/kubernetes/pkg/api" const pkgAPI = "k8s.io/kubernetes/pkg/api"
const pkgSerializer = "k8s.io/kubernetes/pkg/runtime/serializer" const pkgSerializer = "k8s.io/kubernetes/pkg/runtime/serializer"
const pkgUnversioned = "k8s.io/kubernetes/pkg/api/unversioned"
apiPath := func(group string) string { apiPath := func(group string) string {
if len(g.apiPath) > 0 { if len(g.apiPath) > 0 {
return `"` + g.apiPath + `"` return `"` + g.apiPath + `"`
@ -83,16 +84,19 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
} }
m := map[string]interface{}{ m := map[string]interface{}{
"group": normalization.BeforeFirstDot(g.group), "group": g.group,
"Group": namer.IC(normalization.BeforeFirstDot(g.group)), "version": g.version,
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
"groupName": groupName, "groupName": groupName,
"types": g.types, "types": g.types,
"Config": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}), "Config": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}),
"DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}), "DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}),
"RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}), "RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}),
"RESTClientFor": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "RESTClientFor"}), "RESTClientFor": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "RESTClientFor"}),
"latestGroup": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}), "Group": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}),
"GroupOrDie": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "GroupOrDie"}), "GroupOrDie": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "GroupOrDie"}),
"IsEnabledVersion": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "IsEnabledVersion"}),
"ParseGroupVersion": c.Universe.Function(types.Name{Package: pkgUnversioned, Name: "ParseGroupVersion"}),
"apiPath": apiPath(g.group), "apiPath": apiPath(g.group),
"codecs": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Codecs"}), "codecs": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Codecs"}),
"directCodecFactory": c.Universe.Variable(types.Name{Package: pkgSerializer, Name: "DirectCodecFactory"}), "directCodecFactory": c.Universe.Variable(types.Name{Package: pkgSerializer, Name: "DirectCodecFactory"}),
@ -102,8 +106,8 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
sw.Do(groupClientTemplate, m) sw.Do(groupClientTemplate, m)
for _, t := range g.types { for _, t := range g.types {
wrapper := map[string]interface{}{ wrapper := map[string]interface{}{
"type": t, "type": t,
"Group": namer.IC(normalization.BeforeFirstDot(g.group)), "GroupVersion": namer.IC(g.group) + namer.IC(g.version),
} }
namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines) namespaced := !extractBoolTagOrDie("nonNamespaced", t.SecondClosestCommentLines)
if namespaced { if namespaced {
@ -116,7 +120,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
sw.Do(newClientForConfigTemplate, m) sw.Do(newClientForConfigTemplate, m)
sw.Do(newClientForConfigOrDieTemplate, m) sw.Do(newClientForConfigOrDieTemplate, m)
sw.Do(newClientForRESTClientTemplate, m) sw.Do(newClientForRESTClientTemplate, m)
if g.version == "unversioned" { if g.version == "" {
sw.Do(setInternalVersionClientDefaultsTemplate, m) sw.Do(setInternalVersionClientDefaultsTemplate, m)
} else { } else {
sw.Do(setClientDefaultsTemplate, m) sw.Do(setClientDefaultsTemplate, m)
@ -127,7 +131,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
} }
var groupInterfaceTemplate = ` var groupInterfaceTemplate = `
type $.Group$Interface interface { type $.GroupVersion$Interface interface {
RESTClient() $.RESTClientInterface|raw$ RESTClient() $.RESTClientInterface|raw$
$range .types$ $.|publicPlural$Getter $range .types$ $.|publicPlural$Getter
$end$ $end$
@ -135,27 +139,27 @@ type $.Group$Interface interface {
` `
var groupClientTemplate = ` var groupClientTemplate = `
// $.Group$Client is used to interact with features provided by the $.Group$ group. // $.GroupVersion$Client is used to interact with features provided by the $.Group$ group.
type $.Group$Client struct { type $.GroupVersion$Client struct {
restClient $.RESTClientInterface|raw$ restClient $.RESTClientInterface|raw$
} }
` `
var getterImplNamespaced = ` var getterImplNamespaced = `
func (c *$.Group$Client) $.type|publicPlural$(namespace string) $.type|public$Interface { func (c *$.GroupVersion$Client) $.type|publicPlural$(namespace string) $.type|public$Interface {
return new$.type|publicPlural$(c, namespace) return new$.type|publicPlural$(c, namespace)
} }
` `
var getterImplNonNamespaced = ` var getterImplNonNamespaced = `
func (c *$.Group$Client) $.type|publicPlural$() $.type|public$Interface { func (c *$.GroupVersion$Client) $.type|publicPlural$() $.type|public$Interface {
return new$.type|publicPlural$(c) return new$.type|publicPlural$(c)
} }
` `
var newClientForConfigTemplate = ` var newClientForConfigTemplate = `
// NewForConfig creates a new $.Group$Client for the given config. // NewForConfig creates a new $.GroupVersion$Client for the given config.
func NewForConfig(c *$.Config|raw$) (*$.Group$Client, error) { func NewForConfig(c *$.Config|raw$) (*$.GroupVersion$Client, error) {
config := *c config := *c
if err := setConfigDefaults(&config); err != nil { if err := setConfigDefaults(&config); err != nil {
return nil, err return nil, err
@ -164,14 +168,14 @@ func NewForConfig(c *$.Config|raw$) (*$.Group$Client, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &$.Group$Client{client}, nil return &$.GroupVersion$Client{client}, nil
} }
` `
var newClientForConfigOrDieTemplate = ` var newClientForConfigOrDieTemplate = `
// NewForConfigOrDie creates a new $.Group$Client for the given config and // NewForConfigOrDie creates a new $.GroupVersion$Client for the given config and
// panics if there is an error in the config. // panics if there is an error in the config.
func NewForConfigOrDie(c *$.Config|raw$) *$.Group$Client { func NewForConfigOrDie(c *$.Config|raw$) *$.GroupVersion$Client {
client, err := NewForConfig(c) client, err := NewForConfig(c)
if err != nil { if err != nil {
panic(err) panic(err)
@ -183,7 +187,7 @@ func NewForConfigOrDie(c *$.Config|raw$) *$.Group$Client {
var getRESTClient = ` var getRESTClient = `
// RESTClient returns a RESTClient that is used to communicate // RESTClient returns a RESTClient that is used to communicate
// with API server by this client implementation. // with API server by this client implementation.
func (c *$.Group$Client) RESTClient() $.RESTClientInterface|raw$ { func (c *$.GroupVersion$Client) RESTClient() $.RESTClientInterface|raw$ {
if c == nil { if c == nil {
return nil return nil
} }
@ -192,15 +196,15 @@ func (c *$.Group$Client) RESTClient() $.RESTClientInterface|raw$ {
` `
var newClientForRESTClientTemplate = ` var newClientForRESTClientTemplate = `
// New creates a new $.Group$Client for the given RESTClient. // New creates a new $.GroupVersion$Client for the given RESTClient.
func New(c $.RESTClientInterface|raw$) *$.Group$Client { func New(c $.RESTClientInterface|raw$) *$.GroupVersion$Client {
return &$.Group$Client{c} return &$.GroupVersion$Client{c}
} }
` `
var setInternalVersionClientDefaultsTemplate = ` var setInternalVersionClientDefaultsTemplate = `
func setConfigDefaults(config *$.Config|raw$) error { func setConfigDefaults(config *$.Config|raw$) error {
// if $.group$ group is not registered, return an error // if $.group$ group is not registered, return an error
g, err := $.latestGroup|raw$("$.groupName$") g, err := $.Group|raw$("$.groupName$")
if err != nil { if err != nil {
return err return err
} }
@ -226,20 +230,20 @@ func setConfigDefaults(config *$.Config|raw$) error {
var setClientDefaultsTemplate = ` var setClientDefaultsTemplate = `
func setConfigDefaults(config *$.Config|raw$) error { func setConfigDefaults(config *$.Config|raw$) error {
// if $.group$ group is not registered, return an error gv, err := $.ParseGroupVersion|raw$("$.groupName$/$.version$")
g, err := $.latestGroup|raw$("$.groupName$")
if err != nil { if err != nil {
return err return err
} }
// if $.groupName$/$.version$ is not enabled, return an error
if ! $.IsEnabledVersion|raw$(gv) {
return $.Errorf|raw$("$.groupName$/$.version$ is not enabled")
}
config.APIPath = $.apiPath$ config.APIPath = $.apiPath$
if config.UserAgent == "" { if config.UserAgent == "" {
config.UserAgent = $.DefaultKubernetesUserAgent|raw$() config.UserAgent = $.DefaultKubernetesUserAgent|raw$()
} }
// TODO: Unconditionally set the config.Version, until we fix the config. copyGroupVersion := gv
//if config.Version == "" {
copyGroupVersion := g.GroupVersion
config.GroupVersion = &copyGroupVersion config.GroupVersion = &copyGroupVersion
//}
config.NegotiatedSerializer = $.directCodecFactory|raw${CodecFactory: $.codecs|raw$} config.NegotiatedSerializer = $.directCodecFactory|raw${CodecFactory: $.codecs|raw$}

View File

@ -73,6 +73,7 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
"package": pkg, "package": pkg,
"Package": namer.IC(pkg), "Package": namer.IC(pkg),
"Group": namer.IC(g.group), "Group": namer.IC(g.group),
"GroupVersion": namer.IC(g.group) + namer.IC(g.version),
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}), "watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/client/restclient", Name: "Interface"}), "RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/client/restclient", Name: "Interface"}),
"apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}), "apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}),
@ -80,7 +81,7 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
"namespaced": namespaced, "namespaced": namespaced,
} }
if g.version == "unversioned" { if g.version == "" {
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"}) m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"})
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}) m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"})
} else { } else {
@ -195,7 +196,7 @@ type $.type|privatePlural$ struct {
var newStructNamespaced = ` var newStructNamespaced = `
// new$.type|publicPlural$ returns a $.type|publicPlural$ // new$.type|publicPlural$ returns a $.type|publicPlural$
func new$.type|publicPlural$(c *$.Group$Client, namespace string) *$.type|privatePlural$ { func new$.type|publicPlural$(c *$.GroupVersion$Client, namespace string) *$.type|privatePlural$ {
return &$.type|privatePlural${ return &$.type|privatePlural${
client: c.RESTClient(), client: c.RESTClient(),
ns: namespace, ns: namespace,
@ -205,7 +206,7 @@ func new$.type|publicPlural$(c *$.Group$Client, namespace string) *$.type|privat
var newStructNonNamespaced = ` var newStructNonNamespaced = `
// new$.type|publicPlural$ returns a $.type|publicPlural$ // new$.type|publicPlural$ returns a $.type|publicPlural$
func new$.type|publicPlural$(c *$.Group$Client) *$.type|privatePlural$ { func new$.type|publicPlural$(c *$.GroupVersion$Client) *$.type|privatePlural$ {
return &$.type|privatePlural${ return &$.type|privatePlural${
client: c.RESTClient(), client: c.RESTClient(),
} }

View File

@ -1,45 +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 normalization
import (
"strings"
"k8s.io/kubernetes/pkg/api/unversioned"
)
func Group(group string) string {
if group == "api" {
return "core"
}
return group
}
func Version(version string) string {
if version == "" {
return "unversioned"
}
return version
}
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]
}

View File

@ -20,12 +20,13 @@ package main
import ( import (
"fmt" "fmt"
"path/filepath" "path/filepath"
"sort"
"strings" "strings"
"k8s.io/gengo/args" "k8s.io/gengo/args"
clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args" clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
"github.com/golang/glog" "github.com/golang/glog"
flag "github.com/spf13/pflag" flag "github.com/spf13/pflag"
@ -91,36 +92,48 @@ func parsePathGroupVersion(pgvString string) (gvPath string, gvString string) {
} }
} }
func parseInputVersions() (paths []string, groupVersions []unversioned.GroupVersion, gvToPath map[unversioned.GroupVersion]string, err error) { func parseInputVersions() (paths []string, groups []types.GroupVersions, gvToPath map[types.GroupVersion]string, err error) {
var visitedGroups = make(map[string]struct{}) var seenGroups = make(map[types.Group]*types.GroupVersions)
gvToPath = make(map[unversioned.GroupVersion]string) gvToPath = make(map[types.GroupVersion]string)
for _, input := range *inputVersions { for _, input := range *inputVersions {
gvPath, gvString := parsePathGroupVersion(input) gvPath, gvString := parsePathGroupVersion(input)
gv, err := unversioned.ParseGroupVersion(gvString) gv, err := types.ToGroupVersion(gvString)
if err != nil { if err != nil {
return nil, nil, nil, err return nil, nil, nil, err
} }
if group, ok := seenGroups[gv.Group]; ok {
if _, found := visitedGroups[gv.Group]; found { (*seenGroups[gv.Group]).Versions = append(group.Versions, gv.Version)
return nil, nil, nil, fmt.Errorf("group %q appeared more than once in the input. At most one version is allowed for each group.", gv.Group) } else {
seenGroups[gv.Group] = &types.GroupVersions{
Group: gv.Group,
Versions: []types.Version{gv.Version},
}
} }
visitedGroups[gv.Group] = struct{}{}
groupVersions = append(groupVersions, gv) path := versionToPath(gvPath, gv.Group.String(), gv.Version.String())
path := versionToPath(gvPath, gv.Group, gv.Version)
paths = append(paths, path) paths = append(paths, path)
gvToPath[gv] = path gvToPath[gv] = path
} }
return paths, groupVersions, gvToPath, nil var groupNames []string
for groupName := range seenGroups {
groupNames = append(groupNames, groupName.String())
}
sort.Strings(groupNames)
for _, groupName := range groupNames {
groups = append(groups, *seenGroups[types.Group(groupName)])
}
return paths, groups, gvToPath, nil
} }
func parseIncludedTypesOverrides() (map[unversioned.GroupVersion][]string, error) { func parseIncludedTypesOverrides() (map[types.GroupVersion][]string, error) {
overrides := make(map[unversioned.GroupVersion][]string) overrides := make(map[types.GroupVersion][]string)
for _, input := range *includedTypesOverrides { for _, input := range *includedTypesOverrides {
gvString, typeStr, err := parseGroupVersionType(input) gvString, typeStr, err := parseGroupVersionType(input)
if err != nil { if err != nil {
return nil, err return nil, err
} }
gv, err := unversioned.ParseGroupVersion(gvString) gv, err := types.ToGroupVersion(gvString)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -155,12 +168,12 @@ func main() {
if *test { if *test {
arguments.InputDirs = append(dependencies, []string{ arguments.InputDirs = append(dependencies, []string{
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io", "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup",
}...) }...)
arguments.CustomArgs = clientgenargs.Args{ arguments.CustomArgs = clientgenargs.Args{
GroupVersions: []unversioned.GroupVersion{{Group: "testgroup.k8s.io", Version: ""}}, Groups: []types.GroupVersions{{Group: "testgroup", Versions: []types.Version{""}}},
GroupVersionToInputPath: map[unversioned.GroupVersion]string{ GroupVersionToInputPath: map[types.GroupVersion]string{
unversioned.GroupVersion{Group: "testgroup.k8s.io", Version: ""}: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io", types.GroupVersion{Group: "testgroup", Version: ""}: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup",
}, },
ClientsetName: "test_internalclientset", ClientsetName: "test_internalclientset",
ClientsetOutputPath: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/", ClientsetOutputPath: "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/",
@ -169,7 +182,7 @@ func main() {
CmdArgs: cmdArgs, CmdArgs: cmdArgs,
} }
} else { } else {
inputPath, groupVersions, gvToPath, err := parseInputVersions() inputPath, groups, gvToPath, err := parseInputVersions()
if err != nil { if err != nil {
glog.Fatalf("Error: %v", err) glog.Fatalf("Error: %v", err)
} }
@ -181,7 +194,7 @@ func main() {
arguments.InputDirs = append(inputPath, dependencies...) arguments.InputDirs = append(inputPath, dependencies...)
arguments.CustomArgs = clientgenargs.Args{ arguments.CustomArgs = clientgenargs.Args{
GroupVersions: groupVersions, Groups: groups,
GroupVersionToInputPath: gvToPath, GroupVersionToInputPath: gvToPath,
ClientsetName: *clientsetName, ClientsetName: *clientsetName,
ClientsetAPIPath: *clientsetAPIPath, ClientsetAPIPath: *clientsetAPIPath,

View File

@ -15,4 +15,4 @@ limitations under the License.
*/ */
// +groupName=testgroup.k8s.io // +groupName=testgroup.k8s.io
package testgroup // import "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io" package testgroup // import "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"

View File

@ -15,8 +15,8 @@ go_library(
srcs = ["install.go"], srcs = ["install.go"],
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io:go_default_library", "//cmd/libs/go2idl/client-gen/test_apis/testgroup:go_default_library",
"//cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1:go_default_library", "//cmd/libs/go2idl/client-gen/test_apis/testgroup/v1:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/api/meta:go_default_library", "//pkg/api/meta:go_default_library",
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",

View File

@ -23,8 +23,8 @@ import (
"github.com/golang/glog" "github.com/golang/glog"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup/v1"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta" "k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
@ -34,7 +34,7 @@ import (
"k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/util/sets"
) )
const importPrefix = "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io" const importPrefix = "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"
var accessor = meta.NewAccessor() var accessor = meta.NewAccessor()

View File

@ -15,4 +15,5 @@ limitations under the License.
*/ */
// +k8s:openapi-gen=true // +k8s:openapi-gen=true
// +groupName=testgroup.k8s.io
package v1 package v1

View File

@ -18,7 +18,7 @@ go_library(
], ],
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned:go_default_library", "//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion:go_default_library",
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",
"//pkg/client/typed/discovery:go_default_library", "//pkg/client/typed/discovery:go_default_library",
"//pkg/util/flowcontrol:go_default_library", "//pkg/util/flowcontrol:go_default_library",

View File

@ -18,7 +18,7 @@ package test_internalclientset
import ( import (
"github.com/golang/glog" "github.com/golang/glog"
unversionedtestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned" internalversiontestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
restclient "k8s.io/kubernetes/pkg/client/restclient" restclient "k8s.io/kubernetes/pkg/client/restclient"
discovery "k8s.io/kubernetes/pkg/client/typed/discovery" discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/util/flowcontrol" "k8s.io/kubernetes/pkg/util/flowcontrol"
@ -27,18 +27,18 @@ import (
type Interface interface { type Interface interface {
Discovery() discovery.DiscoveryInterface Discovery() discovery.DiscoveryInterface
Testgroup() unversionedtestgroup.TestgroupInterface Testgroup() internalversiontestgroup.TestgroupInterface
} }
// Clientset contains the clients for groups. Each group has exactly one // Clientset contains the clients for groups. Each group has exactly one
// version included in a Clientset. // version included in a Clientset.
type Clientset struct { type Clientset struct {
*discovery.DiscoveryClient *discovery.DiscoveryClient
*unversionedtestgroup.TestgroupClient *internalversiontestgroup.TestgroupClient
} }
// Testgroup retrieves the TestgroupClient // Testgroup retrieves the TestgroupClient
func (c *Clientset) Testgroup() unversionedtestgroup.TestgroupInterface { func (c *Clientset) Testgroup() internalversiontestgroup.TestgroupInterface {
if c == nil { if c == nil {
return nil return nil
} }
@ -58,7 +58,7 @@ func NewForConfig(c *restclient.Config) (*Clientset, error) {
} }
var clientset Clientset var clientset Clientset
var err error var err error
clientset.TestgroupClient, err = unversionedtestgroup.NewForConfig(&configShallowCopy) clientset.TestgroupClient, err = internalversiontestgroup.NewForConfig(&configShallowCopy)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -75,7 +75,7 @@ func NewForConfig(c *restclient.Config) (*Clientset, error) {
// panics if there is an error in the config. // panics if there is an error in the config.
func NewForConfigOrDie(c *restclient.Config) *Clientset { func NewForConfigOrDie(c *restclient.Config) *Clientset {
var clientset Clientset var clientset Clientset
clientset.TestgroupClient = unversionedtestgroup.NewForConfigOrDie(c) clientset.TestgroupClient = internalversiontestgroup.NewForConfigOrDie(c)
clientset.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) clientset.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
return &clientset return &clientset
@ -84,7 +84,7 @@ func NewForConfigOrDie(c *restclient.Config) *Clientset {
// New creates a new Clientset for the given RESTClient. // New creates a new Clientset for the given RESTClient.
func New(c restclient.Interface) *Clientset { func New(c restclient.Interface) *Clientset {
var clientset Clientset var clientset Clientset
clientset.TestgroupClient = unversionedtestgroup.New(c) clientset.TestgroupClient = internalversiontestgroup.New(c)
clientset.DiscoveryClient = discovery.NewDiscoveryClient(c) clientset.DiscoveryClient = discovery.NewDiscoveryClient(c)
return &clientset return &clientset

View File

@ -19,8 +19,8 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset:go_default_library", "//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset:go_default_library",
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned:go_default_library", "//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion:go_default_library",
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake:go_default_library", "//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion/fake:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/apimachinery/registered:go_default_library", "//pkg/apimachinery/registered:go_default_library",
"//pkg/client/testing/core:go_default_library", "//pkg/client/testing/core:go_default_library",

View File

@ -18,8 +18,8 @@ package fake
import ( import (
clientset "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset" clientset "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset"
unversionedtestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned" internalversiontestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
fakeunversionedtestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake" fakeinternalversiontestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/client/testing/core" "k8s.io/kubernetes/pkg/client/testing/core"
@ -63,6 +63,6 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface {
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// Testgroup retrieves the TestgroupClient // Testgroup retrieves the TestgroupClient
func (c *Clientset) Testgroup() unversionedtestgroup.TestgroupInterface { func (c *Clientset) Testgroup() internalversiontestgroup.TestgroupInterface {
return &fakeunversionedtestgroup.FakeTestgroup{Fake: &c.Fake} return &fakeinternalversiontestgroup.FakeTestgroup{Fake: &c.Fake}
} }

View File

@ -1,48 +0,0 @@
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_binary",
"go_library",
"go_test",
"cgo_library",
)
go_library(
name = "go_default_library",
srcs = [
"doc.go",
"generated_expansion.go",
"testgroup_client.go",
"testtype.go",
"testtype_expansion.go",
],
tags = ["automanaged"],
deps = [
"//cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io:go_default_library",
"//pkg/api:go_default_library",
"//pkg/apimachinery/registered:go_default_library",
"//pkg/client/restclient:go_default_library",
"//pkg/watch:go_default_library",
],
)
go_test(
name = "go_default_xtest",
srcs = ["testgroup_test.go"],
tags = ["automanaged"],
deps = [
"//cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io:go_default_library",
"//cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install:go_default_library",
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned:go_default_library",
"//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/unversioned:go_default_library",
"//pkg/apimachinery/registered:go_default_library",
"//pkg/client/restclient:go_default_library",
"//pkg/client/unversioned/testclient/simple:go_default_library",
"//pkg/labels:go_default_library",
],
)

View File

@ -1,293 +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 unversioned_test
import (
"net/http"
"net/url"
"testing"
testgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io"
_ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_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"
"k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
"k8s.io/kubernetes/pkg/labels"
)
var testHelper testapi.TestGroup
func init() {
if _, found := testapi.Groups[testgroup.SchemeGroupVersion.Group]; found {
return
}
externalGroupVersion := registered.GroupOrDie(testgroup.SchemeGroupVersion.Group).GroupVersion
testapi.Groups[testgroup.SchemeGroupVersion.Group] = testapi.NewTestGroup(
externalGroupVersion,
testgroup.SchemeGroupVersion,
api.Scheme.KnownTypes(testgroup.SchemeGroupVersion),
api.Scheme.KnownTypes(externalGroupVersion))
testHelper = testapi.Groups[testgroup.SchemeGroupVersion.Group]
}
type DecoratedSimpleClient struct {
*TestgroupClient
simpleClient simple.Client
}
func (c *DecoratedSimpleClient) Setup(t *testing.T) *DecoratedSimpleClient {
c.simpleClient.Setup(t)
url := c.simpleClient.ServerURL()
c.TestgroupClient = NewForConfigOrDie(&restclient.Config{
Host: url,
})
return c
}
func TestCreateTestTypes(t *testing.T) {
ns := api.NamespaceDefault
requestTestType := &testgroup.TestType{}
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "POST", Path: testHelper.ResourcePath("testtypes", ns, ""), Query: simple.BuildQueryValues(nil), Body: requestTestType},
Response: simple.Response{
StatusCode: http.StatusOK,
Body: requestTestType,
},
},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Create(requestTestType)
c.simpleClient.Validate(t, receivedTestType, err)
}
func TestUpdateTestType(t *testing.T) {
ns := api.NamespaceDefault
requestTestType := &testgroup.TestType{
ObjectMeta: api.ObjectMeta{
Name: "foo",
ResourceVersion: "1",
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
}
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "PUT", Path: testHelper.ResourcePath("testtypes", ns, "foo"), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK, Body: requestTestType},
},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Update(requestTestType)
c.simpleClient.Validate(t, receivedTestType, err)
}
func TestUpdateStatusTestType(t *testing.T) {
ns := api.NamespaceDefault
requestTestType := &testgroup.TestType{
ObjectMeta: api.ObjectMeta{
Name: "foo",
ResourceVersion: "1",
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
Status: testgroup.TestTypeStatus{Blah: "I'm in good status"},
}
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "PUT", Path: testHelper.ResourcePath("testtypes", ns, "foo"), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK, Body: requestTestType},
},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Update(requestTestType)
c.simpleClient.Validate(t, receivedTestType, err)
}
func TestDeleteTestType(t *testing.T) {
ns := api.NamespaceDefault
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "DELETE", Path: testHelper.ResourcePath("testtypes", ns, "foo"), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK},
},
}
err := c.Setup(t).TestTypes(ns).Delete("foo", nil)
c.simpleClient.Validate(t, nil, err)
}
func TestGetTestType(t *testing.T) {
ns := api.NamespaceDefault
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "GET", Path: testHelper.ResourcePath("testtypes", ns, "foo"), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{
StatusCode: http.StatusOK,
Body: &testgroup.TestType{
ObjectMeta: api.ObjectMeta{
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
},
},
},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Get("foo")
c.simpleClient.Validate(t, receivedTestType, err)
}
func TestGetTestTypeWithNoName(t *testing.T) {
ns := api.NamespaceDefault
c := DecoratedSimpleClient{
simpleClient: simple.Client{Error: true},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Get("")
if (err != nil) && (err.Error() != simple.NameRequiredError) {
t.Errorf("Expected error: %v, but got %v", simple.NameRequiredError, err)
}
c.simpleClient.Validate(t, receivedTestType, err)
}
func TestListEmptyTestTypes(t *testing.T) {
ns := api.NamespaceDefault
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "GET", Path: testHelper.ResourcePath("testtypes", ns, ""), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK, Body: &testgroup.TestTypeList{}},
},
}
podList, err := c.Setup(t).TestTypes(ns).List(api.ListOptions{})
c.simpleClient.Validate(t, podList, err)
}
func TestListTestTypes(t *testing.T) {
ns := api.NamespaceDefault
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "GET", Path: testHelper.ResourcePath("testtypes", ns, ""), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK,
Body: &testgroup.TestTypeList{
Items: []testgroup.TestType{
{
ObjectMeta: api.ObjectMeta{
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
},
},
},
},
},
}
receivedTestTypeList, err := c.Setup(t).TestTypes(ns).List(api.ListOptions{})
c.simpleClient.Validate(t, receivedTestTypeList, err)
}
func TestListTestTypesLabels(t *testing.T) {
ns := api.NamespaceDefault
labelSelectorQueryParamName := unversioned.LabelSelectorQueryParam(testHelper.GroupVersion().String())
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{
Method: "GET",
Path: testHelper.ResourcePath("testtypes", ns, ""),
Query: simple.BuildQueryValues(url.Values{labelSelectorQueryParamName: []string{"foo=bar,name=baz"}})},
Response: simple.Response{
StatusCode: http.StatusOK,
Body: &testgroup.TestTypeList{
Items: []testgroup.TestType{
{
ObjectMeta: api.ObjectMeta{
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
},
},
},
},
},
}
c.Setup(t)
c.simpleClient.QueryValidator[labelSelectorQueryParamName] = simple.ValidateLabels
selector := labels.Set{"foo": "bar", "name": "baz"}.AsSelector()
options := api.ListOptions{LabelSelector: selector}
receivedTestTypeList, err := c.TestTypes(ns).List(options)
c.simpleClient.Validate(t, receivedTestTypeList, err)
}
func TestExpansionInterface(t *testing.T) {
c := New(nil)
if e, a := "hello!", c.TestTypes("").Hello(); e != a {
t.Errorf("expansion failed")
}
}
func TestPatchTestType(t *testing.T) {
ns := api.NamespaceDefault
requestTestType := &testgroup.TestType{
ObjectMeta: api.ObjectMeta{
Name: "foo",
ResourceVersion: "1",
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
}
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "PATCH", Path: testHelper.ResourcePath("testtypes", ns, "foo"), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK, Body: requestTestType},
},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Patch(requestTestType.Name, api.StrategicMergePatchType, []byte{})
c.simpleClient.Validate(t, receivedTestType, err)
}
func TestPatchSubresourcesTestType(t *testing.T) {
ns := api.NamespaceDefault
requestTestType := &testgroup.TestType{
ObjectMeta: api.ObjectMeta{
Name: "foo",
ResourceVersion: "1",
Labels: map[string]string{
"foo": "bar",
"name": "baz",
},
},
}
c := DecoratedSimpleClient{
simpleClient: simple.Client{
Request: simple.Request{Method: "PATCH", Path: testHelper.ResourcePath("testtypes", ns, "foo/status"), Query: simple.BuildQueryValues(nil)},
Response: simple.Response{StatusCode: http.StatusOK, Body: requestTestType},
},
}
receivedTestType, err := c.Setup(t).TestTypes(ns).Patch(requestTestType.Name, api.StrategicMergePatchType, []byte{}, "status")
c.simpleClient.Validate(t, receivedTestType, err)
}

View File

@ -0,0 +1,29 @@
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_binary",
"go_library",
"go_test",
"cgo_library",
)
go_library(
name = "go_default_library",
srcs = [
"doc.go",
"generated_expansion.go",
"testgroup_client.go",
"testtype.go",
],
tags = ["automanaged"],
deps = [
"//cmd/libs/go2idl/client-gen/test_apis/testgroup:go_default_library",
"//pkg/api:go_default_library",
"//pkg/apimachinery/registered:go_default_library",
"//pkg/client/restclient:go_default_library",
"//pkg/watch:go_default_library",
],
)

View File

@ -17,4 +17,4 @@ limitations under the License.
// This package is generated by client-gen with arguments: --test=true // This package is generated by client-gen with arguments: --test=true
// This package has the automatically generated typed clients. // This package has the automatically generated typed clients.
package unversioned package internalversion

View File

@ -16,12 +16,11 @@ go_library(
"doc.go", "doc.go",
"fake_testgroup_client.go", "fake_testgroup_client.go",
"fake_testtype.go", "fake_testtype.go",
"fake_testtype_expansion.go",
], ],
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io:go_default_library", "//cmd/libs/go2idl/client-gen/test_apis/testgroup:go_default_library",
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned:go_default_library", "//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",

View File

@ -17,7 +17,7 @@ limitations under the License.
package fake package fake
import ( import (
unversioned "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned" internalversion "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
restclient "k8s.io/kubernetes/pkg/client/restclient" restclient "k8s.io/kubernetes/pkg/client/restclient"
core "k8s.io/kubernetes/pkg/client/testing/core" core "k8s.io/kubernetes/pkg/client/testing/core"
) )
@ -26,7 +26,7 @@ type FakeTestgroup struct {
*core.Fake *core.Fake
} }
func (c *FakeTestgroup) TestTypes(namespace string) unversioned.TestTypeInterface { func (c *FakeTestgroup) TestTypes(namespace string) internalversion.TestTypeInterface {
return &FakeTestTypes{c, namespace} return &FakeTestTypes{c, namespace}
} }

View File

@ -17,7 +17,7 @@ limitations under the License.
package fake package fake
import ( import (
testgroup_k8s_io "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io" testgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
unversioned "k8s.io/kubernetes/pkg/api/unversioned" unversioned "k8s.io/kubernetes/pkg/api/unversioned"
core "k8s.io/kubernetes/pkg/client/testing/core" core "k8s.io/kubernetes/pkg/client/testing/core"
@ -33,39 +33,39 @@ type FakeTestTypes struct {
var testtypesResource = unversioned.GroupVersionResource{Group: "testgroup.k8s.io", Version: "", Resource: "testtypes"} var testtypesResource = unversioned.GroupVersionResource{Group: "testgroup.k8s.io", Version: "", Resource: "testtypes"}
func (c *FakeTestTypes) Create(testType *testgroup_k8s_io.TestType) (result *testgroup_k8s_io.TestType, err error) { func (c *FakeTestTypes) Create(testType *testgroup.TestType) (result *testgroup.TestType, err error) {
obj, err := c.Fake. obj, err := c.Fake.
Invokes(core.NewCreateAction(testtypesResource, c.ns, testType), &testgroup_k8s_io.TestType{}) Invokes(core.NewCreateAction(testtypesResource, c.ns, testType), &testgroup.TestType{})
if obj == nil { if obj == nil {
return nil, err return nil, err
} }
return obj.(*testgroup_k8s_io.TestType), err return obj.(*testgroup.TestType), err
} }
func (c *FakeTestTypes) Update(testType *testgroup_k8s_io.TestType) (result *testgroup_k8s_io.TestType, err error) { func (c *FakeTestTypes) Update(testType *testgroup.TestType) (result *testgroup.TestType, err error) {
obj, err := c.Fake. obj, err := c.Fake.
Invokes(core.NewUpdateAction(testtypesResource, c.ns, testType), &testgroup_k8s_io.TestType{}) Invokes(core.NewUpdateAction(testtypesResource, c.ns, testType), &testgroup.TestType{})
if obj == nil { if obj == nil {
return nil, err return nil, err
} }
return obj.(*testgroup_k8s_io.TestType), err return obj.(*testgroup.TestType), err
} }
func (c *FakeTestTypes) UpdateStatus(testType *testgroup_k8s_io.TestType) (*testgroup_k8s_io.TestType, error) { func (c *FakeTestTypes) UpdateStatus(testType *testgroup.TestType) (*testgroup.TestType, error) {
obj, err := c.Fake. obj, err := c.Fake.
Invokes(core.NewUpdateSubresourceAction(testtypesResource, "status", c.ns, testType), &testgroup_k8s_io.TestType{}) Invokes(core.NewUpdateSubresourceAction(testtypesResource, "status", c.ns, testType), &testgroup.TestType{})
if obj == nil { if obj == nil {
return nil, err return nil, err
} }
return obj.(*testgroup_k8s_io.TestType), err return obj.(*testgroup.TestType), err
} }
func (c *FakeTestTypes) Delete(name string, options *api.DeleteOptions) error { func (c *FakeTestTypes) Delete(name string, options *api.DeleteOptions) error {
_, err := c.Fake. _, err := c.Fake.
Invokes(core.NewDeleteAction(testtypesResource, c.ns, name), &testgroup_k8s_io.TestType{}) Invokes(core.NewDeleteAction(testtypesResource, c.ns, name), &testgroup.TestType{})
return err return err
} }
@ -73,23 +73,23 @@ func (c *FakeTestTypes) Delete(name string, options *api.DeleteOptions) error {
func (c *FakeTestTypes) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { func (c *FakeTestTypes) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error {
action := core.NewDeleteCollectionAction(testtypesResource, c.ns, listOptions) action := core.NewDeleteCollectionAction(testtypesResource, c.ns, listOptions)
_, err := c.Fake.Invokes(action, &testgroup_k8s_io.TestTypeList{}) _, err := c.Fake.Invokes(action, &testgroup.TestTypeList{})
return err return err
} }
func (c *FakeTestTypes) Get(name string) (result *testgroup_k8s_io.TestType, err error) { func (c *FakeTestTypes) Get(name string) (result *testgroup.TestType, err error) {
obj, err := c.Fake. obj, err := c.Fake.
Invokes(core.NewGetAction(testtypesResource, c.ns, name), &testgroup_k8s_io.TestType{}) Invokes(core.NewGetAction(testtypesResource, c.ns, name), &testgroup.TestType{})
if obj == nil { if obj == nil {
return nil, err return nil, err
} }
return obj.(*testgroup_k8s_io.TestType), err return obj.(*testgroup.TestType), err
} }
func (c *FakeTestTypes) List(opts api.ListOptions) (result *testgroup_k8s_io.TestTypeList, err error) { func (c *FakeTestTypes) List(opts api.ListOptions) (result *testgroup.TestTypeList, err error) {
obj, err := c.Fake. obj, err := c.Fake.
Invokes(core.NewListAction(testtypesResource, c.ns, opts), &testgroup_k8s_io.TestTypeList{}) Invokes(core.NewListAction(testtypesResource, c.ns, opts), &testgroup.TestTypeList{})
if obj == nil { if obj == nil {
return nil, err return nil, err
@ -99,8 +99,8 @@ func (c *FakeTestTypes) List(opts api.ListOptions) (result *testgroup_k8s_io.Tes
if label == nil { if label == nil {
label = labels.Everything() label = labels.Everything()
} }
list := &testgroup_k8s_io.TestTypeList{} list := &testgroup.TestTypeList{}
for _, item := range obj.(*testgroup_k8s_io.TestTypeList).Items { for _, item := range obj.(*testgroup.TestTypeList).Items {
if label.Matches(labels.Set(item.Labels)) { if label.Matches(labels.Set(item.Labels)) {
list.Items = append(list.Items, item) list.Items = append(list.Items, item)
} }
@ -116,12 +116,12 @@ func (c *FakeTestTypes) Watch(opts api.ListOptions) (watch.Interface, error) {
} }
// Patch applies the patch and returns the patched testType. // Patch applies the patch and returns the patched testType.
func (c *FakeTestTypes) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *testgroup_k8s_io.TestType, err error) { func (c *FakeTestTypes) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *testgroup.TestType, err error) {
obj, err := c.Fake. obj, err := c.Fake.
Invokes(core.NewPatchSubresourceAction(testtypesResource, c.ns, name, data, subresources...), &testgroup_k8s_io.TestType{}) Invokes(core.NewPatchSubresourceAction(testtypesResource, c.ns, name, data, subresources...), &testgroup.TestType{})
if obj == nil { if obj == nil {
return nil, err return nil, err
} }
return obj.(*testgroup_k8s_io.TestType), err return obj.(*testgroup.TestType), err
} }

View File

@ -0,0 +1,19 @@
/*
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 internalversion
type TestTypeExpansion interface{}

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
@ -27,7 +27,7 @@ type TestgroupInterface interface {
TestTypesGetter TestTypesGetter
} }
// TestgroupClient is used to interact with features provided by the Testgroup group. // TestgroupClient is used to interact with features provided by the k8s.io/kubernetes/pkg/apimachinery/registered.Group group.
type TestgroupClient struct { type TestgroupClient struct {
restClient restclient.Interface restClient restclient.Interface
} }

View File

@ -14,10 +14,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
testgroup_k8s_io "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io" testgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
restclient "k8s.io/kubernetes/pkg/client/restclient" restclient "k8s.io/kubernetes/pkg/client/restclient"
watch "k8s.io/kubernetes/pkg/watch" watch "k8s.io/kubernetes/pkg/watch"
@ -31,15 +31,15 @@ type TestTypesGetter interface {
// TestTypeInterface has methods to work with TestType resources. // TestTypeInterface has methods to work with TestType resources.
type TestTypeInterface interface { type TestTypeInterface interface {
Create(*testgroup_k8s_io.TestType) (*testgroup_k8s_io.TestType, error) Create(*testgroup.TestType) (*testgroup.TestType, error)
Update(*testgroup_k8s_io.TestType) (*testgroup_k8s_io.TestType, error) Update(*testgroup.TestType) (*testgroup.TestType, error)
UpdateStatus(*testgroup_k8s_io.TestType) (*testgroup_k8s_io.TestType, error) UpdateStatus(*testgroup.TestType) (*testgroup.TestType, error)
Delete(name string, options *api.DeleteOptions) error Delete(name string, options *api.DeleteOptions) error
DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error
Get(name string) (*testgroup_k8s_io.TestType, error) Get(name string) (*testgroup.TestType, error)
List(opts api.ListOptions) (*testgroup_k8s_io.TestTypeList, error) List(opts api.ListOptions) (*testgroup.TestTypeList, error)
Watch(opts api.ListOptions) (watch.Interface, error) Watch(opts api.ListOptions) (watch.Interface, error)
Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *testgroup_k8s_io.TestType, err error) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *testgroup.TestType, err error)
TestTypeExpansion TestTypeExpansion
} }
@ -58,8 +58,8 @@ func newTestTypes(c *TestgroupClient, namespace string) *testTypes {
} }
// Create takes the representation of a testType and creates it. Returns the server's representation of the testType, and an error, if there is any. // Create takes the representation of a testType and creates it. Returns the server's representation of the testType, and an error, if there is any.
func (c *testTypes) Create(testType *testgroup_k8s_io.TestType) (result *testgroup_k8s_io.TestType, err error) { func (c *testTypes) Create(testType *testgroup.TestType) (result *testgroup.TestType, err error) {
result = &testgroup_k8s_io.TestType{} result = &testgroup.TestType{}
err = c.client.Post(). err = c.client.Post().
Namespace(c.ns). Namespace(c.ns).
Resource("testtypes"). Resource("testtypes").
@ -70,8 +70,8 @@ func (c *testTypes) Create(testType *testgroup_k8s_io.TestType) (result *testgro
} }
// Update takes the representation of a testType and updates it. Returns the server's representation of the testType, and an error, if there is any. // Update takes the representation of a testType and updates it. Returns the server's representation of the testType, and an error, if there is any.
func (c *testTypes) Update(testType *testgroup_k8s_io.TestType) (result *testgroup_k8s_io.TestType, err error) { func (c *testTypes) Update(testType *testgroup.TestType) (result *testgroup.TestType, err error) {
result = &testgroup_k8s_io.TestType{} result = &testgroup.TestType{}
err = c.client.Put(). err = c.client.Put().
Namespace(c.ns). Namespace(c.ns).
Resource("testtypes"). Resource("testtypes").
@ -82,8 +82,8 @@ func (c *testTypes) Update(testType *testgroup_k8s_io.TestType) (result *testgro
return return
} }
func (c *testTypes) UpdateStatus(testType *testgroup_k8s_io.TestType) (result *testgroup_k8s_io.TestType, err error) { func (c *testTypes) UpdateStatus(testType *testgroup.TestType) (result *testgroup.TestType, err error) {
result = &testgroup_k8s_io.TestType{} result = &testgroup.TestType{}
err = c.client.Put(). err = c.client.Put().
Namespace(c.ns). Namespace(c.ns).
Resource("testtypes"). Resource("testtypes").
@ -118,8 +118,8 @@ func (c *testTypes) DeleteCollection(options *api.DeleteOptions, listOptions api
} }
// Get takes name of the testType, and returns the corresponding testType object, and an error if there is any. // Get takes name of the testType, and returns the corresponding testType object, and an error if there is any.
func (c *testTypes) Get(name string) (result *testgroup_k8s_io.TestType, err error) { func (c *testTypes) Get(name string) (result *testgroup.TestType, err error) {
result = &testgroup_k8s_io.TestType{} result = &testgroup.TestType{}
err = c.client.Get(). err = c.client.Get().
Namespace(c.ns). Namespace(c.ns).
Resource("testtypes"). Resource("testtypes").
@ -130,8 +130,8 @@ func (c *testTypes) Get(name string) (result *testgroup_k8s_io.TestType, err err
} }
// List takes label and field selectors, and returns the list of TestTypes that match those selectors. // List takes label and field selectors, and returns the list of TestTypes that match those selectors.
func (c *testTypes) List(opts api.ListOptions) (result *testgroup_k8s_io.TestTypeList, err error) { func (c *testTypes) List(opts api.ListOptions) (result *testgroup.TestTypeList, err error) {
result = &testgroup_k8s_io.TestTypeList{} result = &testgroup.TestTypeList{}
err = c.client.Get(). err = c.client.Get().
Namespace(c.ns). Namespace(c.ns).
Resource("testtypes"). Resource("testtypes").
@ -152,8 +152,8 @@ func (c *testTypes) Watch(opts api.ListOptions) (watch.Interface, error) {
} }
// Patch applies the patch and returns the patched testType. // Patch applies the patch and returns the patched testType.
func (c *testTypes) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *testgroup_k8s_io.TestType, err error) { func (c *testTypes) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *testgroup.TestType, err error) {
result = &testgroup_k8s_io.TestType{} result = &testgroup.TestType{}
err = c.client.Patch(pt). err = c.client.Patch(pt).
Namespace(c.ns). Namespace(c.ns).
Resource("testtypes"). Resource("testtypes").

View File

@ -12,7 +12,18 @@ load(
go_library( go_library(
name = "go_default_library", name = "go_default_library",
srcs = ["normalization.go"], srcs = [
"helpers.go",
"types.go",
],
tags = ["automanaged"], tags = ["automanaged"],
deps = ["//pkg/api/unversioned:go_default_library"], deps = ["//vendor:k8s.io/gengo/namer"],
)
go_test(
name = "go_default_test",
srcs = ["helpers_test.go"],
library = "go_default_library",
tags = ["automanaged"],
deps = [],
) )

View File

@ -0,0 +1,108 @@
/*
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 types
import (
"fmt"
"regexp"
"sort"
"strings"
"k8s.io/gengo/namer"
)
// ToGroupVersion turns "group/version" string into a GroupVersion struct. It reports error
// if it cannot parse the string.
func ToGroupVersion(gv string) (GroupVersion, error) {
// this can be the internal version for the legacy kube types
// TODO once we've cleared the last uses as strings, this special case should be removed.
if (len(gv) == 0) || (gv == "/") {
return GroupVersion{}, nil
}
switch strings.Count(gv, "/") {
case 0:
return GroupVersion{"", Version(gv)}, nil
case 1:
i := strings.Index(gv, "/")
return GroupVersion{Group(gv[:i]), Version(gv[i+1:])}, nil
default:
return GroupVersion{}, fmt.Errorf("unexpected GroupVersion string: %v", gv)
}
}
type sortableSliceOfVersions []string
func (a sortableSliceOfVersions) Len() int { return len(a) }
func (a sortableSliceOfVersions) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a sortableSliceOfVersions) Less(i, j int) bool {
vi, vj := strings.TrimLeft(a[i], "v"), strings.TrimLeft(a[j], "v")
major := regexp.MustCompile("^[0-9]+")
viMajor, vjMajor := major.FindString(vi), major.FindString(vj)
viRemaining, vjRemaining := strings.TrimLeft(vi, viMajor), strings.TrimLeft(vj, vjMajor)
switch {
case len(viRemaining) == 0 && len(vjRemaining) == 0:
return viMajor < vjMajor
case len(viRemaining) == 0 && len(vjRemaining) != 0:
// stable version is greater than unstable version
return false
case len(viRemaining) != 0 && len(vjRemaining) == 0:
// stable version is greater than unstable version
return true
}
// neither are stable versions
if viMajor != vjMajor {
return viMajor < vjMajor
}
// assuming at most we have one alpha or one beta version, so if vi contains "alpha", it's the lesser one.
return strings.Contains(viRemaining, "alpha")
}
// Determine the default version among versions. If a user calls a group client
// without specifying the version (e.g., c.Core(), instead of c.CoreV1()), the
// default version will be returned.
func defaultVersion(versions []Version) Version {
var versionStrings []string
for _, version := range versions {
versionStrings = append(versionStrings, string(version))
}
sort.Sort(sortableSliceOfVersions(versionStrings))
return Version(versionStrings[len(versionStrings)-1])
}
// ToGroupVersionPackages is a helper function used by generators for groups.
func ToGroupVersionPackages(groups []GroupVersions) []GroupVersionPackage {
var groupVersionPackages []GroupVersionPackage
for _, group := range groups {
defaultVersion := defaultVersion(group.Versions)
for _, version := range group.Versions {
groupVersionPackages = append(groupVersionPackages, 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()),
IsDefaultVersion: version == defaultVersion && version != "",
})
}
}
return groupVersionPackages
}
// NormalizeGroupVersion calls normalizes the GroupVersion.
//func NormalizeGroupVersion(gv GroupVersion) GroupVersion {
// return GroupVersion{Group: gv.Group.NonEmpty(), Version: gv.Version, NonEmptyVersion: normalization.Version(gv.Version)}
//}

View File

@ -14,12 +14,19 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package types
type TestTypeExpansion interface { import (
Hello() string "reflect"
} "sort"
"testing"
)
func (c *testTypes) Hello() string { func TestVersionSort(t *testing.T) {
return "hello!" unsortedVersions := []string{"v4beta1", "v2beta1", "v2alpha1", "v3", "v1"}
expected := []string{"v2alpha1", "v2beta1", "v4beta1", "v1", "v3"}
sort.Sort(sortableSliceOfVersions(unsortedVersions))
if !reflect.DeepEqual(unsortedVersions, expected) {
t.Errorf("expected %#v\ngot %#v", expected, unsortedVersions)
}
} }

View File

@ -0,0 +1,64 @@
/*
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 types
type Version string
func (v Version) String() string {
return string(v)
}
func (v Version) NonEmpty() string {
if v == "" {
return "internalVersion"
}
return v.String()
}
type Group string
func (g Group) String() string {
return string(g)
}
func (g Group) NonEmpty() string {
if g == "api" {
return "core"
}
return string(g)
}
type GroupVersion struct {
Group Group
Version Version
}
type GroupVersions struct {
Group Group
Versions []Version
}
// GroupVersionPackage contains group name, version name, and the package name client-gen will generate for this group version.
type GroupVersionPackage struct {
Group Group
Version Version
// If a user calls a group client without specifying the version (e.g.,
// c.Core(), instead of c.CoreV1()), the default version will be returned.
IsDefaultVersion bool
GroupVersion string
PackageName string
}

View File

@ -20,7 +20,7 @@ import (
"fmt" "fmt"
"net" "net"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup/v1"
testgroupetcd "k8s.io/kubernetes/examples/apiserver/rest" testgroupetcd "k8s.io/kubernetes/examples/apiserver/rest"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/rest" "k8s.io/kubernetes/pkg/api/rest"
@ -34,7 +34,7 @@ import (
"k8s.io/kubernetes/pkg/storage/storagebackend" "k8s.io/kubernetes/pkg/storage/storagebackend"
// Install the testgroup API // Install the testgroup API
_ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install" _ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup/install"
) )
const ( const (

View File

@ -19,7 +19,7 @@ package rest
import ( import (
"fmt" "fmt"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io" "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"

View File

@ -20,9 +20,9 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//federation/apis/federation/install:go_default_library", "//federation/apis/federation/install:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion:go_default_library",
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",
"//pkg/client/typed/discovery:go_default_library", "//pkg/client/typed/discovery:go_default_library",
"//pkg/util/flowcontrol:go_default_library", "//pkg/util/flowcontrol:go_default_library",

View File

@ -18,9 +18,9 @@ package federation_internalclientset
import ( import (
"github.com/golang/glog" "github.com/golang/glog"
unversionedcore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned" internalversioncore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion"
unversionedextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned" internalversionextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion"
unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned" internalversionfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion"
restclient "k8s.io/kubernetes/pkg/client/restclient" restclient "k8s.io/kubernetes/pkg/client/restclient"
discovery "k8s.io/kubernetes/pkg/client/typed/discovery" discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/util/flowcontrol" "k8s.io/kubernetes/pkg/util/flowcontrol"
@ -29,30 +29,24 @@ import (
type Interface interface { type Interface interface {
Discovery() discovery.DiscoveryInterface Discovery() discovery.DiscoveryInterface
Federation() unversionedfederation.FederationInterface Core() internalversioncore.CoreInterface
Core() unversionedcore.CoreInterface
Extensions() unversionedextensions.ExtensionsInterface Extensions() internalversionextensions.ExtensionsInterface
Federation() internalversionfederation.FederationInterface
} }
// Clientset contains the clients for groups. Each group has exactly one // Clientset contains the clients for groups. Each group has exactly one
// version included in a Clientset. // version included in a Clientset.
type Clientset struct { type Clientset struct {
*discovery.DiscoveryClient *discovery.DiscoveryClient
*unversionedfederation.FederationClient *internalversioncore.CoreClient
*unversionedcore.CoreClient *internalversionextensions.ExtensionsClient
*unversionedextensions.ExtensionsClient *internalversionfederation.FederationClient
}
// Federation retrieves the FederationClient
func (c *Clientset) Federation() unversionedfederation.FederationInterface {
if c == nil {
return nil
}
return c.FederationClient
} }
// Core retrieves the CoreClient // Core retrieves the CoreClient
func (c *Clientset) Core() unversionedcore.CoreInterface { func (c *Clientset) Core() internalversioncore.CoreInterface {
if c == nil { if c == nil {
return nil return nil
} }
@ -60,13 +54,21 @@ func (c *Clientset) Core() unversionedcore.CoreInterface {
} }
// Extensions retrieves the ExtensionsClient // Extensions retrieves the ExtensionsClient
func (c *Clientset) Extensions() unversionedextensions.ExtensionsInterface { func (c *Clientset) Extensions() internalversionextensions.ExtensionsInterface {
if c == nil { if c == nil {
return nil return nil
} }
return c.ExtensionsClient return c.ExtensionsClient
} }
// Federation retrieves the FederationClient
func (c *Clientset) Federation() internalversionfederation.FederationInterface {
if c == nil {
return nil
}
return c.FederationClient
}
// Discovery retrieves the DiscoveryClient // Discovery retrieves the DiscoveryClient
func (c *Clientset) Discovery() discovery.DiscoveryInterface { func (c *Clientset) Discovery() discovery.DiscoveryInterface {
return c.DiscoveryClient return c.DiscoveryClient
@ -80,15 +82,15 @@ func NewForConfig(c *restclient.Config) (*Clientset, error) {
} }
var clientset Clientset var clientset Clientset
var err error var err error
clientset.FederationClient, err = unversionedfederation.NewForConfig(&configShallowCopy) clientset.CoreClient, err = internalversioncore.NewForConfig(&configShallowCopy)
if err != nil { if err != nil {
return nil, err return nil, err
} }
clientset.CoreClient, err = unversionedcore.NewForConfig(&configShallowCopy) clientset.ExtensionsClient, err = internalversionextensions.NewForConfig(&configShallowCopy)
if err != nil { if err != nil {
return nil, err return nil, err
} }
clientset.ExtensionsClient, err = unversionedextensions.NewForConfig(&configShallowCopy) clientset.FederationClient, err = internalversionfederation.NewForConfig(&configShallowCopy)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -105,9 +107,9 @@ func NewForConfig(c *restclient.Config) (*Clientset, error) {
// panics if there is an error in the config. // panics if there is an error in the config.
func NewForConfigOrDie(c *restclient.Config) *Clientset { func NewForConfigOrDie(c *restclient.Config) *Clientset {
var clientset Clientset var clientset Clientset
clientset.FederationClient = unversionedfederation.NewForConfigOrDie(c) clientset.CoreClient = internalversioncore.NewForConfigOrDie(c)
clientset.CoreClient = unversionedcore.NewForConfigOrDie(c) clientset.ExtensionsClient = internalversionextensions.NewForConfigOrDie(c)
clientset.ExtensionsClient = unversionedextensions.NewForConfigOrDie(c) clientset.FederationClient = internalversionfederation.NewForConfigOrDie(c)
clientset.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) clientset.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
return &clientset return &clientset
@ -116,9 +118,9 @@ func NewForConfigOrDie(c *restclient.Config) *Clientset {
// New creates a new Clientset for the given RESTClient. // New creates a new Clientset for the given RESTClient.
func New(c restclient.Interface) *Clientset { func New(c restclient.Interface) *Clientset {
var clientset Clientset var clientset Clientset
clientset.FederationClient = unversionedfederation.New(c) clientset.CoreClient = internalversioncore.New(c)
clientset.CoreClient = unversionedcore.New(c) clientset.ExtensionsClient = internalversionextensions.New(c)
clientset.ExtensionsClient = unversionedextensions.New(c) clientset.FederationClient = internalversionfederation.New(c)
clientset.DiscoveryClient = discovery.NewDiscoveryClient(c) clientset.DiscoveryClient = discovery.NewDiscoveryClient(c)
return &clientset return &clientset

View File

@ -19,12 +19,12 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//federation/client/clientset_generated/federation_internalclientset:go_default_library", "//federation/client/clientset_generated/federation_internalclientset:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion/fake:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion/fake:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion/fake:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/apimachinery/registered:go_default_library", "//pkg/apimachinery/registered:go_default_library",
"//pkg/client/testing/core:go_default_library", "//pkg/client/testing/core:go_default_library",

View File

@ -18,12 +18,12 @@ package fake
import ( import (
clientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset" clientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
unversionedcore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned" internalversioncore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion"
fakeunversionedcore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake" fakeinternalversioncore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion/fake"
unversionedextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned" internalversionextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion"
fakeunversionedextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake" fakeinternalversionextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion/fake"
unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned" internalversionfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion"
fakeunversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake" fakeinternalversionfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/client/testing/core" "k8s.io/kubernetes/pkg/client/testing/core"
@ -66,17 +66,17 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface {
var _ clientset.Interface = &Clientset{} var _ clientset.Interface = &Clientset{}
// Federation retrieves the FederationClient
func (c *Clientset) Federation() unversionedfederation.FederationInterface {
return &fakeunversionedfederation.FakeFederation{Fake: &c.Fake}
}
// Core retrieves the CoreClient // Core retrieves the CoreClient
func (c *Clientset) Core() unversionedcore.CoreInterface { func (c *Clientset) Core() internalversioncore.CoreInterface {
return &fakeunversionedcore.FakeCore{Fake: &c.Fake} return &fakeinternalversioncore.FakeCore{Fake: &c.Fake}
} }
// Extensions retrieves the ExtensionsClient // Extensions retrieves the ExtensionsClient
func (c *Clientset) Extensions() unversionedextensions.ExtensionsInterface { func (c *Clientset) Extensions() internalversionextensions.ExtensionsInterface {
return &fakeunversionedextensions.FakeExtensions{Fake: &c.Fake} return &fakeinternalversionextensions.FakeExtensions{Fake: &c.Fake}
}
// Federation retrieves the FederationClient
func (c *Clientset) Federation() internalversionfederation.FederationInterface {
return &fakeinternalversionfederation.FakeFederation{Fake: &c.Fake}
} }

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
@ -31,7 +31,7 @@ type CoreInterface interface {
ServicesGetter ServicesGetter
} }
// CoreClient is used to interact with features provided by the Core group. // CoreClient is used to interact with features provided by the k8s.io/kubernetes/pkg/apimachinery/registered.Group group.
type CoreClient struct { type CoreClient struct {
restClient restclient.Interface restClient restclient.Interface
} }

View File

@ -17,4 +17,4 @@ limitations under the License.
// This package is generated by client-gen with arguments: --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --included-types-overrides=[api/Service,api/Namespace,extensions/ReplicaSet,api/Secret,extensions/Ingress,extensions/Deployment,extensions/DaemonSet,api/ConfigMap,api/Event] --input=[../../federation/apis/federation/,api/,extensions/] // This package is generated by client-gen with arguments: --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --included-types-overrides=[api/Service,api/Namespace,extensions/ReplicaSet,api/Secret,extensions/Ingress,extensions/Deployment,extensions/DaemonSet,api/ConfigMap,api/Event] --input=[../../federation/apis/federation/,api/,extensions/]
// This package has the automatically generated typed clients. // This package has the automatically generated typed clients.
package unversioned package internalversion

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -24,7 +24,7 @@ go_library(
], ],
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",

View File

@ -17,7 +17,7 @@ limitations under the License.
package fake package fake
import ( import (
unversioned "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned" internalversion "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion"
restclient "k8s.io/kubernetes/pkg/client/restclient" restclient "k8s.io/kubernetes/pkg/client/restclient"
core "k8s.io/kubernetes/pkg/client/testing/core" core "k8s.io/kubernetes/pkg/client/testing/core"
) )
@ -26,23 +26,23 @@ type FakeCore struct {
*core.Fake *core.Fake
} }
func (c *FakeCore) ConfigMaps(namespace string) unversioned.ConfigMapInterface { func (c *FakeCore) ConfigMaps(namespace string) internalversion.ConfigMapInterface {
return &FakeConfigMaps{c, namespace} return &FakeConfigMaps{c, namespace}
} }
func (c *FakeCore) Events(namespace string) unversioned.EventInterface { func (c *FakeCore) Events(namespace string) internalversion.EventInterface {
return &FakeEvents{c, namespace} return &FakeEvents{c, namespace}
} }
func (c *FakeCore) Namespaces() unversioned.NamespaceInterface { func (c *FakeCore) Namespaces() internalversion.NamespaceInterface {
return &FakeNamespaces{c} return &FakeNamespaces{c}
} }
func (c *FakeCore) Secrets(namespace string) unversioned.SecretInterface { func (c *FakeCore) Secrets(namespace string) internalversion.SecretInterface {
return &FakeSecrets{c, namespace} return &FakeSecrets{c, namespace}
} }
func (c *FakeCore) Services(namespace string) unversioned.ServiceInterface { func (c *FakeCore) Services(namespace string) internalversion.ServiceInterface {
return &FakeServices{c, namespace} return &FakeServices{c, namespace}
} }

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
type ConfigMapExpansion interface{} type ConfigMapExpansion interface{}

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import "k8s.io/kubernetes/pkg/api" import "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -17,4 +17,4 @@ limitations under the License.
// This package is generated by client-gen with arguments: --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --included-types-overrides=[api/Service,api/Namespace,extensions/ReplicaSet,api/Secret,extensions/Ingress,extensions/Deployment,extensions/DaemonSet,api/ConfigMap,api/Event] --input=[../../federation/apis/federation/,api/,extensions/] // This package is generated by client-gen with arguments: --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --included-types-overrides=[api/Service,api/Namespace,extensions/ReplicaSet,api/Secret,extensions/Ingress,extensions/Deployment,extensions/DaemonSet,api/ConfigMap,api/Event] --input=[../../federation/apis/federation/,api/,extensions/]
// This package has the automatically generated typed clients. // This package has the automatically generated typed clients.
package unversioned package internalversion

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
@ -30,7 +30,7 @@ type ExtensionsInterface interface {
ReplicaSetsGetter ReplicaSetsGetter
} }
// ExtensionsClient is used to interact with features provided by the Extensions group. // ExtensionsClient is used to interact with features provided by the k8s.io/kubernetes/pkg/apimachinery/registered.Group group.
type ExtensionsClient struct { type ExtensionsClient struct {
restClient restclient.Interface restClient restclient.Interface
} }

View File

@ -22,7 +22,7 @@ go_library(
], ],
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",
"//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions:go_default_library",

View File

@ -17,7 +17,7 @@ limitations under the License.
package fake package fake
import ( import (
unversioned "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned" internalversion "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion"
restclient "k8s.io/kubernetes/pkg/client/restclient" restclient "k8s.io/kubernetes/pkg/client/restclient"
core "k8s.io/kubernetes/pkg/client/testing/core" core "k8s.io/kubernetes/pkg/client/testing/core"
) )
@ -26,19 +26,19 @@ type FakeExtensions struct {
*core.Fake *core.Fake
} }
func (c *FakeExtensions) DaemonSets(namespace string) unversioned.DaemonSetInterface { func (c *FakeExtensions) DaemonSets(namespace string) internalversion.DaemonSetInterface {
return &FakeDaemonSets{c, namespace} return &FakeDaemonSets{c, namespace}
} }
func (c *FakeExtensions) Deployments(namespace string) unversioned.DeploymentInterface { func (c *FakeExtensions) Deployments(namespace string) internalversion.DeploymentInterface {
return &FakeDeployments{c, namespace} return &FakeDeployments{c, namespace}
} }
func (c *FakeExtensions) Ingresses(namespace string) unversioned.IngressInterface { func (c *FakeExtensions) Ingresses(namespace string) internalversion.IngressInterface {
return &FakeIngresses{c, namespace} return &FakeIngresses{c, namespace}
} }
func (c *FakeExtensions) ReplicaSets(namespace string) unversioned.ReplicaSetInterface { func (c *FakeExtensions) ReplicaSets(namespace string) internalversion.ReplicaSetInterface {
return &FakeReplicaSets{c, namespace} return &FakeReplicaSets{c, namespace}
} }

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
type DaemonSetExpansion interface{} type DaemonSetExpansion interface{}

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package unversioned package internalversion
import ( import (
federation "k8s.io/kubernetes/federation/apis/federation" federation "k8s.io/kubernetes/federation/apis/federation"

View File

@ -17,4 +17,4 @@ limitations under the License.
// This package is generated by client-gen with arguments: --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --included-types-overrides=[api/Service,api/Namespace,extensions/ReplicaSet,api/Secret,extensions/Ingress,extensions/Deployment,extensions/DaemonSet,api/ConfigMap,api/Event] --input=[../../federation/apis/federation/,api/,extensions/] // This package is generated by client-gen with arguments: --clientset-name=federation_internalclientset --clientset-path=k8s.io/kubernetes/federation/client/clientset_generated --included-types-overrides=[api/Service,api/Namespace,extensions/ReplicaSet,api/Secret,extensions/Ingress,extensions/Deployment,extensions/DaemonSet,api/ConfigMap,api/Event] --input=[../../federation/apis/federation/,api/,extensions/]
// This package has the automatically generated typed clients. // This package has the automatically generated typed clients.
package unversioned package internalversion

View File

@ -20,7 +20,7 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//federation/apis/federation:go_default_library", "//federation/apis/federation:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned:go_default_library", "//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion:go_default_library",
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",

Some files were not shown because too many files have changed in this diff Show More