From 05eb75612fc14a1ef017b044f40470ff45e9f550 Mon Sep 17 00:00:00 2001 From: deads2k Date: Thu, 12 Jan 2017 13:16:30 -0500 Subject: [PATCH] replace global registry in apimachinery with global registry in k8s.io/kubernetes --- .../fake/generator_fake_for_clientset.go | 3 +-- .../generators/generator_for_group.go | 11 +++----- pkg/api/register.go | 11 ++++++-- .../pkg/apimachinery/registered/registered.go | 27 ------------------- .../src/k8s.io/client-go/pkg/api/register.go | 7 +++++ 5 files changed, 21 insertions(+), 38 deletions(-) diff --git a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_clientset.go b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_clientset.go index 6b40c5be00a..8c6d850097f 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_clientset.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_clientset.go @@ -70,7 +70,6 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) { // imports for the code in commonTemplate imports = append(imports, "k8s.io/kubernetes/pkg/api", - "k8s.io/apimachinery/pkg/apimachinery/registered", "k8s.io/kubernetes/pkg/client/testing/core", "k8s.io/kubernetes/pkg/client/typed/discovery", "fakediscovery \"k8s.io/kubernetes/pkg/client/typed/discovery/fake\"", @@ -118,7 +117,7 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { } fakePtr := core.Fake{} - fakePtr.AddReactor("*", "*", core.ObjectReaction(o, registered.RESTMapper())) + fakePtr.AddReactor("*", "*", core.ObjectReaction(o, api.Registry.RESTMapper())) fakePtr.AddWatchReactor("*", core.DefaultWatchReactor(watch.NewFake(), nil)) diff --git a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go index 703a9ecea3d..7dabf1eabe9 100644 --- a/cmd/libs/go2idl/client-gen/generators/generator_for_group.go +++ b/cmd/libs/go2idl/client-gen/generators/generator_for_group.go @@ -58,7 +58,6 @@ func (g *genGroup) Imports(c *generator.Context) (imports []string) { func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { sw := generator.NewSnippetWriter(w, c, "$", "$") const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient" - const pkgRegistered = "k8s.io/apimachinery/pkg/apimachinery/registered" const pkgAPI = "k8s.io/kubernetes/pkg/api" const pkgSerializer = "k8s.io/apimachinery/pkg/runtime/serializer" const pkgUnversioned = "k8s.io/kubernetes/pkg/api/unversioned" @@ -94,11 +93,9 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer "DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}), "RESTClientInterface": c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Interface"}), "RESTClientFor": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "RESTClientFor"}), - "Group": c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}), - "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: pkgSchema, Name: "ParseGroupVersion"}), "apiPath": apiPath(g.group), + "apiRegistry": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Registry"}), "codecs": c.Universe.Variable(types.Name{Package: pkgAPI, Name: "Codecs"}), "directCodecFactory": c.Universe.Variable(types.Name{Package: pkgSerializer, Name: "DirectCodecFactory"}), "Errorf": c.Universe.Variable(types.Name{Package: "fmt", Name: "Errorf"}), @@ -140,7 +137,7 @@ type $.GroupVersion$Interface interface { ` var groupClientTemplate = ` -// $.GroupVersion$Client is used to interact with features provided by the $.Group$ group. +// $.GroupVersion$Client is used to interact with features provided by the $.groupName$ group. type $.GroupVersion$Client struct { restClient $.RESTClientInterface|raw$ } @@ -205,7 +202,7 @@ func New(c $.RESTClientInterface|raw$) *$.GroupVersion$Client { var setInternalVersionClientDefaultsTemplate = ` func setConfigDefaults(config *$.Config|raw$) error { // if $.group$ group is not registered, return an error - g, err := $.Group|raw$("$.groupName$") + g, err := $.apiRegistry|raw$.Group("$.groupName$") if err != nil { return err } @@ -236,7 +233,7 @@ func setConfigDefaults(config *$.Config|raw$) error { return err } // if $.groupName$/$.version$ is not enabled, return an error - if ! $.IsEnabledVersion|raw$(gv) { + if ! $.apiRegistry|raw$.IsEnabledVersion(gv) { return $.Errorf|raw$("$.groupName$/$.version$ is not enabled") } config.APIPath = $.apiPath$ diff --git a/pkg/api/register.go b/pkg/api/register.go index 02fb64e3db8..ba332ac6d10 100644 --- a/pkg/api/register.go +++ b/pkg/api/register.go @@ -17,13 +17,20 @@ limitations under the License. package api import ( + "os" + + "k8s.io/apimachinery/pkg/apimachinery/registered" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" ) -// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. +// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global +// API registry. +var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS")) + +// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already api.Registry. // NOTE: If you are copying this file to start a new api group, STOP! Copy the // extensions group instead. This Scheme is special and should appear ONLY in // the api group, unless you really know what you're doing. @@ -65,7 +72,7 @@ func init() { // TODO(lavalamp): move this call to scheme builder above. Can't // remove it from here because lots of people inappropriately rely on it // (specifically the unversioned time conversion). Can't have it in - // both places because then it gets double registered. Consequence of + // both places because then it gets double api.Registry. Consequence of // current state is that it only ever gets registered in the main // api.Scheme, even though everyone that uses anything from unversioned // needs these. diff --git a/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go b/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go index e56bfc0a188..5256be659a9 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go +++ b/staging/src/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go @@ -19,7 +19,6 @@ package registered import ( "fmt" - "os" "sort" "strings" @@ -31,10 +30,6 @@ import ( "k8s.io/apimachinery/pkg/util/sets" ) -var ( - DefaultAPIRegistrationManager = NewOrDie(os.Getenv("KUBE_API_VERSIONS")) -) - // APIRegistrationManager provides the concept of what API groups are enabled. // // TODO: currently, it also provides a "registered" concept. But it's wrong to @@ -99,28 +94,6 @@ func NewOrDie(kubeAPIVersions string) *APIRegistrationManager { return m } -// People are calling global functions. Let them continue to do that (for now). -var ( - ValidateEnvRequestedVersions = DefaultAPIRegistrationManager.ValidateEnvRequestedVersions - AllPreferredGroupVersions = DefaultAPIRegistrationManager.AllPreferredGroupVersions - RESTMapper = DefaultAPIRegistrationManager.RESTMapper - GroupOrDie = DefaultAPIRegistrationManager.GroupOrDie - AddThirdPartyAPIGroupVersions = DefaultAPIRegistrationManager.AddThirdPartyAPIGroupVersions - IsThirdPartyAPIGroupVersion = DefaultAPIRegistrationManager.IsThirdPartyAPIGroupVersion - RegisteredGroupVersions = DefaultAPIRegistrationManager.RegisteredGroupVersions - IsRegisteredVersion = DefaultAPIRegistrationManager.IsRegisteredVersion - IsRegistered = DefaultAPIRegistrationManager.IsRegistered - Group = DefaultAPIRegistrationManager.Group - EnabledVersionsForGroup = DefaultAPIRegistrationManager.EnabledVersionsForGroup - EnabledVersions = DefaultAPIRegistrationManager.EnabledVersions - IsEnabledVersion = DefaultAPIRegistrationManager.IsEnabledVersion - IsAllowedVersion = DefaultAPIRegistrationManager.IsAllowedVersion - EnableVersions = DefaultAPIRegistrationManager.EnableVersions - RegisterGroup = DefaultAPIRegistrationManager.RegisterGroup - RegisterVersions = DefaultAPIRegistrationManager.RegisterVersions - InterfacesFor = DefaultAPIRegistrationManager.InterfacesFor -) - // RegisterVersions adds the given group versions to the list of registered group versions. func (m *APIRegistrationManager) RegisterVersions(availableVersions []schema.GroupVersion) { for _, v := range availableVersions { diff --git a/staging/src/k8s.io/client-go/pkg/api/register.go b/staging/src/k8s.io/client-go/pkg/api/register.go index cdf038a67c2..7e48e13de12 100644 --- a/staging/src/k8s.io/client-go/pkg/api/register.go +++ b/staging/src/k8s.io/client-go/pkg/api/register.go @@ -17,12 +17,19 @@ limitations under the License. package api import ( + "os" + + "k8s.io/apimachinery/pkg/apimachinery/registered" metav1 "k8s.io/client-go/pkg/apis/meta/v1" "k8s.io/client-go/pkg/runtime" "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer" ) +// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global +// API registry. +var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS")) + // Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. // NOTE: If you are copying this file to start a new api group, STOP! Copy the // extensions group instead. This Scheme is special and should appear ONLY in