mirror of https://github.com/k3s-io/k3s
eliminate indirection from type registration
parent
3fb88a23d9
commit
e7fbbe0e3c
|
@ -107,6 +107,7 @@ func StartTestServer(t Logger, customFlags []string, storageConfig *storagebacke
|
||||||
return result, fmt.Errorf("failed to set default ServerRunOptions: %v", err)
|
return result, fmt.Errorf("failed to set default ServerRunOptions: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Logf("runtime-config=%v", completedOptions.APIEnablement.RuntimeConfig)
|
||||||
t.Logf("Starting kube-apiserver on port %d...", s.SecureServing.BindPort)
|
t.Logf("Starting kube-apiserver on port %d...", s.SecureServing.BindPort)
|
||||||
server, err := app.CreateServerChain(completedOptions, stopCh)
|
server, err := app.CreateServerChain(completedOptions, stopCh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -26,11 +26,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: kubeadm.GroupName,
|
GroupName: kubeadm.GroupName,
|
||||||
|
@ -40,7 +40,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,15 +19,11 @@ package legacyscheme
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupFactoryRegistry is the APIGroupFactoryRegistry (overlaps a bit with Registry, see comments in package for details)
|
|
||||||
var GroupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
|
||||||
|
|
||||||
// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global
|
// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global
|
||||||
// API registry.
|
// API registry.
|
||||||
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
|
|
|
@ -30,7 +30,7 @@ import (
|
||||||
var _ metav1.Object = &metav1.ObjectMeta{}
|
var _ metav1.Object = &metav1.ObjectMeta{}
|
||||||
|
|
||||||
func TestAccessorImplementations(t *testing.T) {
|
func TestAccessorImplementations(t *testing.T) {
|
||||||
for _, gv := range legacyscheme.Registry.EnabledVersions() {
|
for _, gv := range legacyscheme.Registry.RegisteredGroupVersions() {
|
||||||
internalGV := schema.GroupVersion{Group: gv.Group, Version: runtime.APIVersionInternal}
|
internalGV := schema.GroupVersion{Group: gv.Group, Version: runtime.APIVersionInternal}
|
||||||
for _, gv := range []schema.GroupVersion{gv, internalGV} {
|
for _, gv := range []schema.GroupVersion{gv, internalGV} {
|
||||||
for kind, knownType := range legacyscheme.Scheme.KnownTypes(gv) {
|
for kind, knownType := range legacyscheme.Scheme.KnownTypes(gv) {
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: admission.GroupName,
|
GroupName: admission.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: admissionregistration.GroupName,
|
GroupName: admissionregistration.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: apps.GroupName,
|
GroupName: apps.GroupName,
|
||||||
|
@ -46,7 +46,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta2.SchemeGroupVersion.Version: v1beta2.AddToScheme,
|
v1beta2.SchemeGroupVersion.Version: v1beta2.AddToScheme,
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: authentication.GroupName,
|
GroupName: authentication.GroupName,
|
||||||
|
@ -46,7 +46,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: authorization.GroupName,
|
GroupName: authorization.GroupName,
|
||||||
|
@ -46,7 +46,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: autoscaling.GroupName,
|
GroupName: autoscaling.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
v2beta1.SchemeGroupVersion.Version: v2beta1.AddToScheme,
|
v2beta1.SchemeGroupVersion.Version: v2beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: batch.GroupName,
|
GroupName: batch.GroupName,
|
||||||
|
@ -46,7 +46,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
v2alpha1.SchemeGroupVersion.Version: v2alpha1.AddToScheme,
|
v2alpha1.SchemeGroupVersion.Version: v2alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: certificates.GroupName,
|
GroupName: certificates.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: componentconfig.GroupName,
|
GroupName: componentconfig.GroupName,
|
||||||
|
@ -42,7 +42,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: core.GroupName,
|
GroupName: core.GroupName,
|
||||||
|
@ -61,7 +61,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: events.GroupName,
|
GroupName: events.GroupName,
|
||||||
|
@ -42,7 +42,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: extensions.GroupName,
|
GroupName: extensions.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: imagepolicy.GroupName,
|
GroupName: imagepolicy.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: networking.GroupName,
|
GroupName: networking.GroupName,
|
||||||
|
@ -42,7 +42,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: policy.GroupName,
|
GroupName: policy.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,11 +31,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: rbac.GroupName,
|
GroupName: rbac.GroupName,
|
||||||
|
@ -51,7 +51,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: scheduling.GroupName,
|
GroupName: scheduling.GroupName,
|
||||||
|
@ -44,7 +44,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: settings.GroupName,
|
GroupName: settings.GroupName,
|
||||||
|
@ -42,7 +42,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,11 +31,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Install(legacyscheme.GroupFactoryRegistry, legacyscheme.Registry, legacyscheme.Scheme)
|
Install(legacyscheme.Registry, legacyscheme.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: storage.GroupName,
|
GroupName: storage.GroupName,
|
||||||
|
@ -51,7 +51,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,13 +17,12 @@ limitations under the License.
|
||||||
package scheme
|
package scheme
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
componentconfig "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
componentconfig "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ExtraInstall(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func ExtraInstall(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
// componentconfig is an apigroup, but we don't have an API endpoint because its objects are just embedded in ConfigMaps.
|
// componentconfig is an apigroup, but we don't have an API endpoint because its objects are just embedded in ConfigMaps.
|
||||||
componentconfig.Install(groupFactoryRegistry, registry, scheme)
|
componentconfig.Install(registry, scheme)
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,7 +279,7 @@ func asVersionedObjects(infos []*resource.Info, specifiedOutputVersion schema.Gr
|
||||||
gvks, _, err := scheme.Scheme.ObjectKinds(info.Object)
|
gvks, _, err := scheme.Scheme.ObjectKinds(info.Object)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for _, gvk := range gvks {
|
for _, gvk := range gvks {
|
||||||
for _, version := range scheme.Registry.EnabledVersionsForGroup(gvk.Group) {
|
for _, version := range scheme.Registry.RegisteredVersionsForGroup(gvk.Group) {
|
||||||
targetVersions = append(targetVersions, version)
|
targetVersions = append(targetVersions, version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -719,7 +719,7 @@ func InternalVersionDecoder() runtime.Decoder {
|
||||||
}
|
}
|
||||||
|
|
||||||
func InternalVersionJSONEncoder() runtime.Encoder {
|
func InternalVersionJSONEncoder() runtime.Encoder {
|
||||||
encoder := legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...)
|
encoder := legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...)
|
||||||
return unstructured.JSONFallbackEncoder{Encoder: encoder}
|
return unstructured.JSONFallbackEncoder{Encoder: encoder}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,7 @@ func PrintObject(cmd *cobra.Command, obj runtime.Object, out io.Writer) error {
|
||||||
func PrinterForOptions(options *printers.PrintOptions) (printers.ResourcePrinter, error) {
|
func PrinterForOptions(options *printers.PrintOptions) (printers.ResourcePrinter, error) {
|
||||||
// TODO: used by the custom column implementation and the name implementation, break this dependency
|
// TODO: used by the custom column implementation and the name implementation, break this dependency
|
||||||
decoders := []runtime.Decoder{kubectlscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}
|
decoders := []runtime.Decoder{kubectlscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}
|
||||||
encoder := kubectlscheme.Codecs.LegacyCodec(kubectlscheme.Registry.EnabledVersions()...)
|
encoder := kubectlscheme.Codecs.LegacyCodec(kubectlscheme.Registry.RegisteredGroupVersions()...)
|
||||||
|
|
||||||
printer, err := printers.GetStandardPrinter(kubectlscheme.Scheme, encoder, decoders, *options)
|
printer, err := printers.GetStandardPrinter(kubectlscheme.Scheme, encoder, decoders, *options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -87,7 +87,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
corev1.SchemeGroupVersion.Version: corev1.AddToScheme,
|
corev1.SchemeGroupVersion.Version: corev1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
admissionv1alpha1.SchemeGroupVersion.Version: admissionv1alpha1.AddToScheme,
|
admissionv1alpha1.SchemeGroupVersion.Version: admissionv1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
admissionregistrationv1alpha1.SchemeGroupVersion.Version: admissionregistrationv1alpha1.AddToScheme,
|
admissionregistrationv1alpha1.SchemeGroupVersion.Version: admissionregistrationv1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ func init() {
|
||||||
appsv1beta2.SchemeGroupVersion.Version: appsv1beta2.AddToScheme,
|
appsv1beta2.SchemeGroupVersion.Version: appsv1beta2.AddToScheme,
|
||||||
appsv1.SchemeGroupVersion.Version: appsv1.AddToScheme,
|
appsv1.SchemeGroupVersion.Version: appsv1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ func init() {
|
||||||
authenticationv1beta1.SchemeGroupVersion.Version: authenticationv1beta1.AddToScheme,
|
authenticationv1beta1.SchemeGroupVersion.Version: authenticationv1beta1.AddToScheme,
|
||||||
authenticationv1.SchemeGroupVersion.Version: authenticationv1.AddToScheme,
|
authenticationv1.SchemeGroupVersion.Version: authenticationv1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ func init() {
|
||||||
authorizationv1beta1.SchemeGroupVersion.Version: authorizationv1beta1.AddToScheme,
|
authorizationv1beta1.SchemeGroupVersion.Version: authorizationv1beta1.AddToScheme,
|
||||||
authorizationv1.SchemeGroupVersion.Version: authorizationv1.AddToScheme,
|
authorizationv1.SchemeGroupVersion.Version: authorizationv1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ func init() {
|
||||||
autoscalingv1.SchemeGroupVersion.Version: autoscalingv1.AddToScheme,
|
autoscalingv1.SchemeGroupVersion.Version: autoscalingv1.AddToScheme,
|
||||||
autoscalingv2beta1.SchemeGroupVersion.Version: autoscalingv2beta1.AddToScheme,
|
autoscalingv2beta1.SchemeGroupVersion.Version: autoscalingv2beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ func init() {
|
||||||
batchv1beta1.SchemeGroupVersion.Version: batchv1beta1.AddToScheme,
|
batchv1beta1.SchemeGroupVersion.Version: batchv1beta1.AddToScheme,
|
||||||
batchv2alpha1.SchemeGroupVersion.Version: batchv2alpha1.AddToScheme,
|
batchv2alpha1.SchemeGroupVersion.Version: batchv2alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
certificatesv1beta1.SchemeGroupVersion.Version: certificatesv1beta1.AddToScheme,
|
certificatesv1beta1.SchemeGroupVersion.Version: certificatesv1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
extensionsv1beta1.SchemeGroupVersion.Version: extensionsv1beta1.AddToScheme,
|
extensionsv1beta1.SchemeGroupVersion.Version: extensionsv1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,7 +231,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
imagepolicyv1alpha1.SchemeGroupVersion.Version: imagepolicyv1alpha1.AddToScheme,
|
imagepolicyv1alpha1.SchemeGroupVersion.Version: imagepolicyv1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
networkingv1.SchemeGroupVersion.Version: networkingv1.AddToScheme,
|
networkingv1.SchemeGroupVersion.Version: networkingv1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +257,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
policyv1beta1.SchemeGroupVersion.Version: policyv1beta1.AddToScheme,
|
policyv1beta1.SchemeGroupVersion.Version: policyv1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,7 +273,7 @@ func init() {
|
||||||
rbacv1beta1.SchemeGroupVersion.Version: rbacv1beta1.AddToScheme,
|
rbacv1beta1.SchemeGroupVersion.Version: rbacv1beta1.AddToScheme,
|
||||||
rbacv1alpha1.SchemeGroupVersion.Version: rbacv1alpha1.AddToScheme,
|
rbacv1alpha1.SchemeGroupVersion.Version: rbacv1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
schedulingv1alpha1.SchemeGroupVersion.Version: schedulingv1alpha1.AddToScheme,
|
schedulingv1alpha1.SchemeGroupVersion.Version: schedulingv1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ func init() {
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
settingsv1alpha1.SchemeGroupVersion.Version: settingsv1alpha1.AddToScheme,
|
settingsv1alpha1.SchemeGroupVersion.Version: settingsv1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ func init() {
|
||||||
storagev1.SchemeGroupVersion.Version: storagev1.AddToScheme,
|
storagev1.SchemeGroupVersion.Version: storagev1.AddToScheme,
|
||||||
storagev1beta1.SchemeGroupVersion.Version: storagev1beta1.AddToScheme,
|
storagev1beta1.SchemeGroupVersion.Version: storagev1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
|
).Register(Registry, Scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ package scheme
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -29,9 +28,6 @@ import (
|
||||||
|
|
||||||
// All kubectl code should eventually switch to use this Registry and Scheme instead of the global ones.
|
// All kubectl code should eventually switch to use this Registry and Scheme instead of the global ones.
|
||||||
|
|
||||||
// GroupFactoryRegistry is the APIGroupFactoryRegistry (overlaps a bit with Registry, see comments in package for details)
|
|
||||||
var GroupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
|
||||||
|
|
||||||
// Registry is an instance of an API registry.
|
// Registry is an instance of an API registry.
|
||||||
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ func TestDecodeSinglePod(t *testing.T) {
|
||||||
t.Errorf("expected:\n%#v\ngot:\n%#v\n%s", pod, podOut, string(json))
|
t.Errorf("expected:\n%#v\ngot:\n%#v\n%s", pod, podOut, string(json))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, gv := range legacyscheme.Registry.EnabledVersionsForGroup(v1.GroupName) {
|
for _, gv := range legacyscheme.Registry.RegisteredVersionsForGroup(v1.GroupName) {
|
||||||
info, _ := runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), "application/yaml")
|
info, _ := runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), "application/yaml")
|
||||||
encoder := legacyscheme.Codecs.EncoderForVersion(info.Serializer, gv)
|
encoder := legacyscheme.Codecs.EncoderForVersion(info.Serializer, gv)
|
||||||
yaml, err := runtime.Encode(encoder, pod)
|
yaml, err := runtime.Encode(encoder, pod)
|
||||||
|
@ -144,7 +144,7 @@ func TestDecodePodList(t *testing.T) {
|
||||||
t.Errorf("expected:\n%#v\ngot:\n%#v\n%s", podList, &podListOut, string(json))
|
t.Errorf("expected:\n%#v\ngot:\n%#v\n%s", podList, &podListOut, string(json))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, gv := range legacyscheme.Registry.EnabledVersionsForGroup(v1.GroupName) {
|
for _, gv := range legacyscheme.Registry.RegisteredVersionsForGroup(v1.GroupName) {
|
||||||
info, _ := runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), "application/yaml")
|
info, _ := runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), "application/yaml")
|
||||||
encoder := legacyscheme.Codecs.EncoderForVersion(info.Serializer, gv)
|
encoder := legacyscheme.Codecs.EncoderForVersion(info.Serializer, gv)
|
||||||
yaml, err := runtime.Encode(encoder, podList)
|
yaml, err := runtime.Encode(encoder, podList)
|
||||||
|
|
|
@ -256,7 +256,7 @@ func (c *configOkCondition) Sync(client clientset.Interface, nodeName string) {
|
||||||
err = fmt.Errorf("unsupported media type %q", mediaType)
|
err = fmt.Errorf("unsupported media type %q", mediaType)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
versions := legacyscheme.Registry.EnabledVersionsForGroup(api.GroupName)
|
versions := legacyscheme.Registry.RegisteredVersionsForGroup(api.GroupName)
|
||||||
if len(versions) == 0 {
|
if len(versions) == 0 {
|
||||||
err = fmt.Errorf("no enabled versions for group %q", api.GroupName)
|
err = fmt.Errorf("no enabled versions for group %q", api.GroupName)
|
||||||
return
|
return
|
||||||
|
|
|
@ -67,7 +67,7 @@ func NewYAMLEncoder(groupName string) (runtime.Encoder, error) {
|
||||||
return nil, fmt.Errorf("unsupported media type %q", mediaType)
|
return nil, fmt.Errorf("unsupported media type %q", mediaType)
|
||||||
}
|
}
|
||||||
|
|
||||||
versions := legacyscheme.Registry.EnabledVersionsForGroup(groupName)
|
versions := legacyscheme.Registry.RegisteredVersionsForGroup(groupName)
|
||||||
if len(versions) == 0 {
|
if len(versions) == 0 {
|
||||||
return nil, fmt.Errorf("no enabled versions for group %q", groupName)
|
return nil, fmt.Errorf("no enabled versions for group %q", groupName)
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
|
||||||
admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
|
admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
appsv1beta1 "k8s.io/api/apps/v1beta1"
|
||||||
|
@ -36,6 +37,7 @@ import (
|
||||||
autoscalingapiv2beta1 "k8s.io/api/autoscaling/v2beta1"
|
autoscalingapiv2beta1 "k8s.io/api/autoscaling/v2beta1"
|
||||||
batchapiv1 "k8s.io/api/batch/v1"
|
batchapiv1 "k8s.io/api/batch/v1"
|
||||||
batchapiv1beta1 "k8s.io/api/batch/v1beta1"
|
batchapiv1beta1 "k8s.io/api/batch/v1beta1"
|
||||||
|
batchapiv2alpha1 "k8s.io/api/batch/v2alpha1"
|
||||||
certificatesapiv1beta1 "k8s.io/api/certificates/v1beta1"
|
certificatesapiv1beta1 "k8s.io/api/certificates/v1beta1"
|
||||||
apiv1 "k8s.io/api/core/v1"
|
apiv1 "k8s.io/api/core/v1"
|
||||||
eventsv1beta1 "k8s.io/api/events/v1beta1"
|
eventsv1beta1 "k8s.io/api/events/v1beta1"
|
||||||
|
@ -43,8 +45,12 @@ import (
|
||||||
networkingapiv1 "k8s.io/api/networking/v1"
|
networkingapiv1 "k8s.io/api/networking/v1"
|
||||||
policyapiv1beta1 "k8s.io/api/policy/v1beta1"
|
policyapiv1beta1 "k8s.io/api/policy/v1beta1"
|
||||||
rbacv1 "k8s.io/api/rbac/v1"
|
rbacv1 "k8s.io/api/rbac/v1"
|
||||||
|
rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
|
||||||
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
||||||
|
schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
|
||||||
|
settingsv1alpha1 "k8s.io/api/settings/v1alpha1"
|
||||||
storageapiv1 "k8s.io/api/storage/v1"
|
storageapiv1 "k8s.io/api/storage/v1"
|
||||||
|
storageapiv1alpha1 "k8s.io/api/storage/v1alpha1"
|
||||||
storageapiv1beta1 "k8s.io/api/storage/v1beta1"
|
storageapiv1beta1 "k8s.io/api/storage/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
|
@ -456,28 +462,37 @@ func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig {
|
||||||
ret := serverstorage.NewResourceConfig()
|
ret := serverstorage.NewResourceConfig()
|
||||||
// NOTE: GroupVersions listed here will be enabled by default. Don't put alpha versions in the list.
|
// NOTE: GroupVersions listed here will be enabled by default. Don't put alpha versions in the list.
|
||||||
ret.EnableVersions(
|
ret.EnableVersions(
|
||||||
|
admissionregistrationv1beta1.SchemeGroupVersion,
|
||||||
apiv1.SchemeGroupVersion,
|
apiv1.SchemeGroupVersion,
|
||||||
extensionsapiv1beta1.SchemeGroupVersion,
|
|
||||||
batchapiv1.SchemeGroupVersion,
|
|
||||||
batchapiv1beta1.SchemeGroupVersion,
|
|
||||||
authenticationv1.SchemeGroupVersion,
|
|
||||||
authenticationv1beta1.SchemeGroupVersion,
|
|
||||||
autoscalingapiv1.SchemeGroupVersion,
|
|
||||||
autoscalingapiv2beta1.SchemeGroupVersion,
|
|
||||||
appsv1beta1.SchemeGroupVersion,
|
appsv1beta1.SchemeGroupVersion,
|
||||||
appsv1beta2.SchemeGroupVersion,
|
appsv1beta2.SchemeGroupVersion,
|
||||||
appsv1.SchemeGroupVersion,
|
appsv1.SchemeGroupVersion,
|
||||||
|
authenticationv1.SchemeGroupVersion,
|
||||||
|
authenticationv1beta1.SchemeGroupVersion,
|
||||||
|
authorizationapiv1.SchemeGroupVersion,
|
||||||
|
authorizationapiv1beta1.SchemeGroupVersion,
|
||||||
|
autoscalingapiv1.SchemeGroupVersion,
|
||||||
|
autoscalingapiv2beta1.SchemeGroupVersion,
|
||||||
|
batchapiv1.SchemeGroupVersion,
|
||||||
|
batchapiv1beta1.SchemeGroupVersion,
|
||||||
|
certificatesapiv1beta1.SchemeGroupVersion,
|
||||||
|
eventsv1beta1.SchemeGroupVersion,
|
||||||
|
extensionsapiv1beta1.SchemeGroupVersion,
|
||||||
|
networkingapiv1.SchemeGroupVersion,
|
||||||
policyapiv1beta1.SchemeGroupVersion,
|
policyapiv1beta1.SchemeGroupVersion,
|
||||||
rbacv1.SchemeGroupVersion,
|
rbacv1.SchemeGroupVersion,
|
||||||
rbacv1beta1.SchemeGroupVersion,
|
rbacv1beta1.SchemeGroupVersion,
|
||||||
storageapiv1.SchemeGroupVersion,
|
storageapiv1.SchemeGroupVersion,
|
||||||
storageapiv1beta1.SchemeGroupVersion,
|
storageapiv1beta1.SchemeGroupVersion,
|
||||||
certificatesapiv1beta1.SchemeGroupVersion,
|
)
|
||||||
authorizationapiv1.SchemeGroupVersion,
|
// disable alpha versions explicitly so we have a full list of what's possible to serve
|
||||||
authorizationapiv1beta1.SchemeGroupVersion,
|
ret.DisableVersions(
|
||||||
networkingapiv1.SchemeGroupVersion,
|
admissionregistrationv1alpha1.SchemeGroupVersion,
|
||||||
eventsv1beta1.SchemeGroupVersion,
|
batchapiv2alpha1.SchemeGroupVersion,
|
||||||
admissionregistrationv1beta1.SchemeGroupVersion,
|
rbacv1alpha1.SchemeGroupVersion,
|
||||||
|
schedulingv1alpha1.SchemeGroupVersion,
|
||||||
|
settingsv1alpha1.SchemeGroupVersion,
|
||||||
|
storageapiv1alpha1.SchemeGroupVersion,
|
||||||
)
|
)
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
|
@ -47,7 +47,7 @@ func (f *HumanPrintFlags) ToPrinter(outputFormat string) (ResourcePrinter, bool,
|
||||||
return nil, false, nil
|
return nil, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
encoder := scheme.Codecs.LegacyCodec(scheme.Registry.EnabledVersions()...)
|
encoder := scheme.Codecs.LegacyCodec(scheme.Registry.RegisteredGroupVersions()...)
|
||||||
decoder := scheme.Codecs.UniversalDecoder()
|
decoder := scheme.Codecs.UniversalDecoder()
|
||||||
|
|
||||||
showKind := false
|
showKind := false
|
||||||
|
|
|
@ -109,7 +109,7 @@ func TestPrintDefault(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range printerTests {
|
for _, test := range printerTests {
|
||||||
printer, err := printers.GetStandardPrinter(nil, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, printers.PrintOptions{AllowMissingKeys: false})
|
printer, err := printers.GetStandardPrinter(nil, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, printers.PrintOptions{AllowMissingKeys: false})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("in %s, unexpected error: %#v", test.Name, err)
|
t.Errorf("in %s, unexpected error: %#v", test.Name, err)
|
||||||
}
|
}
|
||||||
|
@ -284,7 +284,7 @@ func TestPrinter(t *testing.T) {
|
||||||
}
|
}
|
||||||
for _, test := range printerTests {
|
for _, test := range printerTests {
|
||||||
buf := bytes.NewBuffer([]byte{})
|
buf := bytes.NewBuffer([]byte{})
|
||||||
printer, err := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *test.PrintOpts)
|
printer, err := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *test.PrintOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("in %s, unexpected error: %#v", test.Name, err)
|
t.Errorf("in %s, unexpected error: %#v", test.Name, err)
|
||||||
}
|
}
|
||||||
|
@ -314,7 +314,7 @@ func TestBadPrinter(t *testing.T) {
|
||||||
{"unknown format", &printers.PrintOptions{OutputFormatType: "anUnknownFormat", OutputFormatArgument: "", AllowMissingKeys: false}, fmt.Errorf("output format \"anUnknownFormat\" not recognized")},
|
{"unknown format", &printers.PrintOptions{OutputFormatType: "anUnknownFormat", OutputFormatArgument: "", AllowMissingKeys: false}, fmt.Errorf("output format \"anUnknownFormat\" not recognized")},
|
||||||
}
|
}
|
||||||
for _, test := range badPrinterTests {
|
for _, test := range badPrinterTests {
|
||||||
_, err := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *test.PrintOpts)
|
_, err := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *test.PrintOpts)
|
||||||
if err == nil || err.Error() != test.Error.Error() {
|
if err == nil || err.Error() != test.Error.Error() {
|
||||||
t.Errorf("in %s, expect %s, got %s", test.Name, test.Error, err)
|
t.Errorf("in %s, expect %s, got %s", test.Name, test.Error, err)
|
||||||
}
|
}
|
||||||
|
@ -492,7 +492,7 @@ func TestNamePrinter(t *testing.T) {
|
||||||
"pod/foo\npod/bar\n"},
|
"pod/foo\npod/bar\n"},
|
||||||
}
|
}
|
||||||
printOpts := &printers.PrintOptions{OutputFormatType: "name", AllowMissingKeys: false}
|
printOpts := &printers.PrintOptions{OutputFormatType: "name", AllowMissingKeys: false}
|
||||||
printer, _ := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *printOpts)
|
printer, _ := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *printOpts)
|
||||||
for name, item := range tests {
|
for name, item := range tests {
|
||||||
buff := &bytes.Buffer{}
|
buff := &bytes.Buffer{}
|
||||||
err := printer.PrintObj(item.obj, buff)
|
err := printer.PrintObj(item.obj, buff)
|
||||||
|
@ -3022,7 +3022,7 @@ func TestAllowMissingKeys(t *testing.T) {
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
buf := bytes.NewBuffer([]byte{})
|
buf := bytes.NewBuffer([]byte{})
|
||||||
printer, err := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *test.PrintOpts)
|
printer, err := printers.GetStandardPrinter(legacyscheme.Scheme, legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), []runtime.Decoder{legacyscheme.Codecs.UniversalDecoder(), unstructured.UnstructuredJSONScheme}, *test.PrintOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("in %s, unexpected error: %#v", test.Name, err)
|
t.Errorf("in %s, unexpected error: %#v", test.Name, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(restOptionsGetter generi
|
||||||
}
|
}
|
||||||
|
|
||||||
var podDisruptionClient policyclient.PodDisruptionBudgetsGetter
|
var podDisruptionClient policyclient.PodDisruptionBudgetsGetter
|
||||||
if policyGroupVersion := (schema.GroupVersion{Group: "policy", Version: "v1beta1"}); legacyscheme.Registry.IsEnabledVersion(policyGroupVersion) {
|
if policyGroupVersion := (schema.GroupVersion{Group: "policy", Version: "v1beta1"}); legacyscheme.Registry.IsRegisteredVersion(policyGroupVersion) {
|
||||||
var err error
|
var err error
|
||||||
podDisruptionClient, err = policyclient.NewForConfig(c.LoopbackClientConfig)
|
podDisruptionClient, err = policyclient.NewForConfig(c.LoopbackClientConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -226,10 +226,10 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(restOptionsGetter generi
|
||||||
|
|
||||||
"componentStatuses": componentstatus.NewStorage(componentStatusStorage{c.StorageFactory}.serversToValidate),
|
"componentStatuses": componentstatus.NewStorage(componentStatusStorage{c.StorageFactory}.serversToValidate),
|
||||||
}
|
}
|
||||||
if legacyscheme.Registry.IsEnabledVersion(schema.GroupVersion{Group: "autoscaling", Version: "v1"}) {
|
if legacyscheme.Registry.IsRegisteredVersion(schema.GroupVersion{Group: "autoscaling", Version: "v1"}) {
|
||||||
restStorageMap["replicationControllers/scale"] = controllerStorage.Scale
|
restStorageMap["replicationControllers/scale"] = controllerStorage.Scale
|
||||||
}
|
}
|
||||||
if legacyscheme.Registry.IsEnabledVersion(schema.GroupVersion{Group: "policy", Version: "v1beta1"}) {
|
if legacyscheme.Registry.IsRegisteredVersion(schema.GroupVersion{Group: "policy", Version: "v1beta1"}) {
|
||||||
restStorageMap["pods/eviction"] = podStorage.Eviction
|
restStorageMap["pods/eviction"] = podStorage.Eviction
|
||||||
}
|
}
|
||||||
if serviceAccountStorage.Token != nil {
|
if serviceAccountStorage.Token != nil {
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: internalapi.GroupName,
|
GroupName: internalapi.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
versionedapi.SchemeGroupVersion.Version: versionedapi.AddToScheme,
|
versionedapi.SchemeGroupVersion.Version: versionedapi.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
|
@ -32,14 +31,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
scheme = runtime.NewScheme()
|
||||||
scheme = runtime.NewScheme()
|
codecs = serializer.NewCodecFactory(scheme)
|
||||||
codecs = serializer.NewCodecFactory(scheme)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
install.Install(groupFactoryRegistry, registry, scheme)
|
install.Install(registry, scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadConfiguration loads the provided configuration.
|
// LoadConfiguration loads the provided configuration.
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: internalapi.GroupName,
|
GroupName: internalapi.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
versionedapi.SchemeGroupVersion.Version: versionedapi.AddToScheme,
|
versionedapi.SchemeGroupVersion.Version: versionedapi.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
|
@ -33,14 +32,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
scheme = runtime.NewScheme()
|
||||||
scheme = runtime.NewScheme()
|
codecs = serializer.NewCodecFactory(scheme)
|
||||||
codecs = serializer.NewCodecFactory(scheme)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
install.Install(groupFactoryRegistry, registry, scheme)
|
install.Install(registry, scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadConfiguration loads the provided configuration.
|
// LoadConfiguration loads the provided configuration.
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: resourcequotaapi.GroupName,
|
GroupName: resourcequotaapi.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
resourcequotav1alpha1.SchemeGroupVersion.Version: resourcequotav1alpha1.AddToScheme,
|
resourcequotav1alpha1.SchemeGroupVersion.Version: resourcequotav1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
|
@ -32,14 +31,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
scheme = runtime.NewScheme()
|
||||||
scheme = runtime.NewScheme()
|
codecs = serializer.NewCodecFactory(scheme)
|
||||||
codecs = serializer.NewCodecFactory(scheme)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
install.Install(groupFactoryRegistry, registry, scheme)
|
install.Install(registry, scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadConfiguration loads the provided configuration.
|
// LoadConfiguration loads the provided configuration.
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: apiextensions.GroupName,
|
GroupName: apiextensions.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import (
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -53,10 +52,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
Registry = registered.NewOrDie("")
|
||||||
Registry = registered.NewOrDie("")
|
Scheme = runtime.NewScheme()
|
||||||
Scheme = runtime.NewScheme()
|
Codecs = serializer.NewCodecFactory(Scheme)
|
||||||
Codecs = serializer.NewCodecFactory(Scheme)
|
|
||||||
|
|
||||||
// if you modify this, make sure you update the crEncoder
|
// if you modify this, make sure you update the crEncoder
|
||||||
unversionedVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
unversionedVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
||||||
|
@ -71,7 +69,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
install.Install(groupFactoryRegistry, Registry, Scheme)
|
install.Install(Registry, Scheme)
|
||||||
|
|
||||||
// we need to add the options to empty v1
|
// we need to add the options to empty v1
|
||||||
metav1.AddToGroupVersion(Scheme, schema.GroupVersion{Group: "", Version: "v1"})
|
metav1.AddToGroupVersion(Scheme, schema.GroupVersion{Group: "", Version: "v1"})
|
||||||
|
|
|
@ -33,7 +33,6 @@ import (
|
||||||
apimeta "k8s.io/apimachinery/pkg/api/meta"
|
apimeta "k8s.io/apimachinery/pkg/api/meta"
|
||||||
apitesting "k8s.io/apimachinery/pkg/api/testing"
|
apitesting "k8s.io/apimachinery/pkg/api/testing"
|
||||||
"k8s.io/apimachinery/pkg/api/testing/fuzzer"
|
"k8s.io/apimachinery/pkg/api/testing/fuzzer"
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
|
metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -45,15 +44,14 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
type InstallFunc func(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme)
|
type InstallFunc func(registry *registered.APIRegistrationManager, scheme *runtime.Scheme)
|
||||||
|
|
||||||
// RoundTripTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides
|
// RoundTripTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides
|
||||||
// enough information to round trip
|
// enough information to round trip
|
||||||
func RoundTripTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs fuzzer.FuzzerFuncs) {
|
func RoundTripTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs fuzzer.FuzzerFuncs) {
|
||||||
groupFactoryRegistry := make(announced.APIGroupFactoryRegistry)
|
|
||||||
registry := registered.NewOrDie("")
|
registry := registered.NewOrDie("")
|
||||||
scheme := runtime.NewScheme()
|
scheme := runtime.NewScheme()
|
||||||
installFn(groupFactoryRegistry, registry, scheme)
|
installFn(registry, scheme)
|
||||||
|
|
||||||
RoundTripTestForScheme(t, scheme, fuzzingFuncs)
|
RoundTripTestForScheme(t, scheme, fuzzingFuncs)
|
||||||
}
|
}
|
||||||
|
@ -72,10 +70,9 @@ func RoundTripTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs f
|
||||||
// RoundTripProtobufTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides
|
// RoundTripProtobufTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides
|
||||||
// enough information to round trip
|
// enough information to round trip
|
||||||
func RoundTripProtobufTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs fuzzer.FuzzerFuncs) {
|
func RoundTripProtobufTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs fuzzer.FuzzerFuncs) {
|
||||||
groupFactoryRegistry := make(announced.APIGroupFactoryRegistry)
|
|
||||||
registry := registered.NewOrDie("")
|
registry := registered.NewOrDie("")
|
||||||
scheme := runtime.NewScheme()
|
scheme := runtime.NewScheme()
|
||||||
installFn(groupFactoryRegistry, registry, scheme)
|
installFn(registry, scheme)
|
||||||
|
|
||||||
RoundTripProtobufTestForScheme(t, scheme, fuzzingFuncs)
|
RoundTripProtobufTestForScheme(t, scheme, fuzzingFuncs)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,99 +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 announced contains tools for announcing API group factories. This is
|
|
||||||
// distinct from registration (in the 'registered' package) in that it's safe
|
|
||||||
// to announce every possible group linked in, but only groups requested at
|
|
||||||
// runtime should be registered. This package contains both a registry, and
|
|
||||||
// factory code (which was formerly copy-pasta in every install package).
|
|
||||||
package announced
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
// APIGroupFactoryRegistry allows for groups and versions to announce themselves,
|
|
||||||
// which simply makes them available and doesn't take other actions. Later,
|
|
||||||
// users of the registry can select which groups and versions they'd actually
|
|
||||||
// like to register with an APIRegistrationManager.
|
|
||||||
//
|
|
||||||
// (Right now APIRegistrationManager has separate 'registration' and 'enabled'
|
|
||||||
// concepts-- APIGroupFactory is going to take over the former function;
|
|
||||||
// they will overlap until the refactoring is finished.)
|
|
||||||
//
|
|
||||||
// The key is the group name. After initialization, this should be treated as
|
|
||||||
// read-only. It is implemented as a map from group name to group factory, and
|
|
||||||
// it is safe to use this knowledge to manually pick out groups to register
|
|
||||||
// (e.g., for testing).
|
|
||||||
type APIGroupFactoryRegistry map[string]*GroupMetaFactory
|
|
||||||
|
|
||||||
func (gar APIGroupFactoryRegistry) group(groupName string) *GroupMetaFactory {
|
|
||||||
gmf, ok := gar[groupName]
|
|
||||||
if !ok {
|
|
||||||
gmf = &GroupMetaFactory{VersionArgs: map[string]*GroupVersionFactoryArgs{}}
|
|
||||||
gar[groupName] = gmf
|
|
||||||
}
|
|
||||||
return gmf
|
|
||||||
}
|
|
||||||
|
|
||||||
// AnnounceGroupVersion adds the particular arguments for this group version to the group factory.
|
|
||||||
func (gar APIGroupFactoryRegistry) AnnounceGroupVersion(gvf *GroupVersionFactoryArgs) error {
|
|
||||||
gmf := gar.group(gvf.GroupName)
|
|
||||||
if _, ok := gmf.VersionArgs[gvf.VersionName]; ok {
|
|
||||||
return fmt.Errorf("version %q in group %q has already been announced", gvf.VersionName, gvf.GroupName)
|
|
||||||
}
|
|
||||||
gmf.VersionArgs[gvf.VersionName] = gvf
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// AnnounceGroup adds the group-wide arguments to the group factory.
|
|
||||||
func (gar APIGroupFactoryRegistry) AnnounceGroup(args *GroupMetaFactoryArgs) error {
|
|
||||||
gmf := gar.group(args.GroupName)
|
|
||||||
if gmf.GroupArgs != nil {
|
|
||||||
return fmt.Errorf("group %q has already been announced", args.GroupName)
|
|
||||||
}
|
|
||||||
gmf.GroupArgs = args
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// RegisterAndEnableAll throws every factory at the specified API registration
|
|
||||||
// manager, and lets it decide which to register. (If you want to do this a la
|
|
||||||
// cart, you may look through gar itself-- it's just a map.)
|
|
||||||
func (gar APIGroupFactoryRegistry) RegisterAndEnableAll(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error {
|
|
||||||
for groupName, gmf := range gar {
|
|
||||||
if err := gmf.Register(m); err != nil {
|
|
||||||
return fmt.Errorf("error registering %v: %v", groupName, err)
|
|
||||||
}
|
|
||||||
if err := gmf.Enable(m, scheme); err != nil {
|
|
||||||
return fmt.Errorf("error enabling %v: %v", groupName, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// AnnouncePreconstructedFactory announces a factory which you've manually assembled.
|
|
||||||
// You may call this instead of calling AnnounceGroup and AnnounceGroupVersion.
|
|
||||||
func (gar APIGroupFactoryRegistry) AnnouncePreconstructedFactory(gmf *GroupMetaFactory) error {
|
|
||||||
name := gmf.GroupArgs.GroupName
|
|
||||||
if _, exists := gar[name]; exists {
|
|
||||||
return fmt.Errorf("the group %q has already been announced.", name)
|
|
||||||
}
|
|
||||||
gar[name] = gmf
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -1,64 +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 announced
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestFactoryRegistry(t *testing.T) {
|
|
||||||
regA := make(APIGroupFactoryRegistry)
|
|
||||||
regB := make(APIGroupFactoryRegistry)
|
|
||||||
|
|
||||||
if err := regA.AnnounceGroup(&GroupMetaFactoryArgs{
|
|
||||||
GroupName: "foo",
|
|
||||||
VersionPreferenceOrder: []string{"v2", "v1"},
|
|
||||||
RootScopedKinds: sets.NewString("namespaces"),
|
|
||||||
}); err != nil {
|
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if err := regA.AnnounceGroupVersion(&GroupVersionFactoryArgs{
|
|
||||||
GroupName: "foo",
|
|
||||||
VersionName: "v1",
|
|
||||||
}); err != nil {
|
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if err := regA.AnnounceGroupVersion(&GroupVersionFactoryArgs{
|
|
||||||
GroupName: "foo",
|
|
||||||
VersionName: "v2",
|
|
||||||
}); err != nil {
|
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := regB.AnnouncePreconstructedFactory(NewGroupMetaFactory(
|
|
||||||
&GroupMetaFactoryArgs{
|
|
||||||
GroupName: "foo",
|
|
||||||
VersionPreferenceOrder: []string{"v2", "v1"},
|
|
||||||
RootScopedKinds: sets.NewString("namespaces"),
|
|
||||||
},
|
|
||||||
VersionToSchemeFunc{"v1": nil, "v2": nil},
|
|
||||||
)); err != nil {
|
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(regA, regB) {
|
|
||||||
t.Errorf("Expected both ways of registering to be equivalent, but they were not.\n\n%#v\n\n%#v\n", regA, regB)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -72,33 +72,8 @@ func NewGroupMetaFactory(groupArgs *GroupMetaFactoryArgs, versions VersionToSche
|
||||||
return gmf
|
return gmf
|
||||||
}
|
}
|
||||||
|
|
||||||
// Announce adds this Group factory to the global factory registry. It should
|
|
||||||
// only be called if you constructed the GroupMetaFactory yourself via
|
|
||||||
// NewGroupMetaFactory.
|
|
||||||
// Note that this will panic on an error, since it's expected that you'll be
|
|
||||||
// calling this at initialization time and any error is a result of a
|
|
||||||
// programmer importing the wrong set of packages. If this assumption doesn't
|
|
||||||
// work for you, just call DefaultGroupFactoryRegistry.AnnouncePreconstructedFactory
|
|
||||||
// yourself.
|
|
||||||
func (gmf *GroupMetaFactory) Announce(groupFactoryRegistry APIGroupFactoryRegistry) *GroupMetaFactory {
|
|
||||||
if err := groupFactoryRegistry.AnnouncePreconstructedFactory(gmf); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return gmf
|
|
||||||
}
|
|
||||||
|
|
||||||
// GroupMetaFactory has the logic for actually assembling and registering a group.
|
// GroupMetaFactory has the logic for actually assembling and registering a group.
|
||||||
//
|
//
|
||||||
// There are two ways of obtaining one of these.
|
|
||||||
// 1. You can announce your group and versions separately, and then let the
|
|
||||||
// GroupFactoryRegistry assemble this object for you. (This allows group and
|
|
||||||
// versions to be imported separately, without referencing each other, to
|
|
||||||
// keep import trees small.)
|
|
||||||
// 2. You can call NewGroupMetaFactory(), which is mostly a drop-in replacement
|
|
||||||
// for the old, bad way of doing things. You can then call .Announce() to
|
|
||||||
// announce your constructed factory to any code that would like to do
|
|
||||||
// things the new, better way.
|
|
||||||
//
|
|
||||||
// Note that GroupMetaFactory actually does construct GroupMeta objects, but
|
// Note that GroupMetaFactory actually does construct GroupMeta objects, but
|
||||||
// currently it does so in a way that's very entangled with an
|
// currently it does so in a way that's very entangled with an
|
||||||
// APIRegistrationManager. It's a TODO item to cleanly separate that interface.
|
// APIRegistrationManager. It's a TODO item to cleanly separate that interface.
|
||||||
|
@ -112,13 +87,16 @@ type GroupMetaFactory struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register constructs the finalized prioritized version list and sanity checks
|
// Register constructs the finalized prioritized version list and sanity checks
|
||||||
// the announced group & versions. Then it calls register.
|
// the registered group & versions. Then it calls register.
|
||||||
func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) error {
|
func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error {
|
||||||
if gmf.GroupArgs == nil {
|
if gmf.GroupArgs == nil {
|
||||||
return fmt.Errorf("partially announced groups are not allowed, only got versions: %#v", gmf.VersionArgs)
|
return fmt.Errorf("partially registered groups are not allowed, only got versions: %#v", gmf.VersionArgs)
|
||||||
}
|
}
|
||||||
if len(gmf.VersionArgs) == 0 {
|
if len(gmf.VersionArgs) == 0 {
|
||||||
return fmt.Errorf("group %v announced but no versions announced", gmf.GroupArgs.GroupName)
|
return fmt.Errorf("group %v registered but no versions registered", gmf.GroupArgs.GroupName)
|
||||||
|
}
|
||||||
|
if m.IsRegistered(gmf.GroupArgs.GroupName) {
|
||||||
|
return fmt.Errorf("the group %q has already been registered.", gmf.GroupArgs.GroupName)
|
||||||
}
|
}
|
||||||
|
|
||||||
pvSet := sets.NewString(gmf.GroupArgs.VersionPreferenceOrder...)
|
pvSet := sets.NewString(gmf.GroupArgs.VersionPreferenceOrder...)
|
||||||
|
@ -152,54 +130,18 @@ func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) erro
|
||||||
glog.Warningf("group %v has multiple unprioritized versions: %#v. They will have an arbitrary preference order!", gmf.GroupArgs.GroupName, unprioritizedVersions)
|
glog.Warningf("group %v has multiple unprioritized versions: %#v. They will have an arbitrary preference order!", gmf.GroupArgs.GroupName, unprioritizedVersions)
|
||||||
}
|
}
|
||||||
if pvSet.Len() != 0 {
|
if pvSet.Len() != 0 {
|
||||||
return fmt.Errorf("group %v has versions in the priority list that were never announced: %s", gmf.GroupArgs.GroupName, pvSet)
|
return fmt.Errorf("group %v has versions in the priority list that were never registered: %s", gmf.GroupArgs.GroupName, pvSet)
|
||||||
}
|
}
|
||||||
prioritizedVersions = append(prioritizedVersions, unprioritizedVersions...)
|
prioritizedVersions = append(prioritizedVersions, unprioritizedVersions...)
|
||||||
m.RegisterVersions(prioritizedVersions)
|
m.RegisterVersions(prioritizedVersions)
|
||||||
gmf.prioritizedVersionList = prioritizedVersions
|
gmf.prioritizedVersionList = prioritizedVersions
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersions []schema.GroupVersion, groupMeta *apimachinery.GroupMeta) meta.RESTMapper {
|
|
||||||
// the list of kinds that are scoped at the root of the api hierarchy
|
|
||||||
// if a kind is not enumerated here, it is assumed to have a namespace scope
|
|
||||||
rootScoped := sets.NewString()
|
|
||||||
if gmf.GroupArgs.RootScopedKinds != nil {
|
|
||||||
rootScoped = gmf.GroupArgs.RootScopedKinds
|
|
||||||
}
|
|
||||||
ignoredKinds := sets.NewString()
|
|
||||||
if gmf.GroupArgs.IgnoredKinds != nil {
|
|
||||||
ignoredKinds = gmf.GroupArgs.IgnoredKinds
|
|
||||||
}
|
|
||||||
|
|
||||||
mapper := meta.NewDefaultRESTMapper(externalVersions, groupMeta.InterfacesFor)
|
|
||||||
for _, gv := range externalVersions {
|
|
||||||
for kind := range scheme.KnownTypes(gv) {
|
|
||||||
if ignoredKinds.Has(kind) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
scope := meta.RESTScopeNamespace
|
|
||||||
if rootScoped.Has(kind) {
|
|
||||||
scope = meta.RESTScopeRoot
|
|
||||||
}
|
|
||||||
mapper.Add(gv.WithKind(kind), scope)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return mapper
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable enables group versions that are allowed, adds methods to the scheme, etc.
|
|
||||||
func (gmf *GroupMetaFactory) Enable(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error {
|
|
||||||
externalVersions := []schema.GroupVersion{}
|
externalVersions := []schema.GroupVersion{}
|
||||||
for _, v := range gmf.prioritizedVersionList {
|
for _, v := range gmf.prioritizedVersionList {
|
||||||
if !m.IsAllowedVersion(v) {
|
if !m.IsAllowedVersion(v) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
externalVersions = append(externalVersions, v)
|
externalVersions = append(externalVersions, v)
|
||||||
if err := m.EnableVersions(v); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
gmf.VersionArgs[v.Version].AddToScheme(scheme)
|
gmf.VersionArgs[v.Version].AddToScheme(scheme)
|
||||||
}
|
}
|
||||||
if len(externalVersions) == 0 {
|
if len(externalVersions) == 0 {
|
||||||
|
@ -237,18 +179,34 @@ func (gmf *GroupMetaFactory) Enable(m *registered.APIRegistrationManager, scheme
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterAndEnable is provided only to allow this code to get added in multiple steps.
|
func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersions []schema.GroupVersion, groupMeta *apimachinery.GroupMeta) meta.RESTMapper {
|
||||||
// It's really bad that this is called in init() methods, but supporting this
|
// the list of kinds that are scoped at the root of the api hierarchy
|
||||||
// temporarily lets us do the change incrementally.
|
// if a kind is not enumerated here, it is assumed to have a namespace scope
|
||||||
func (gmf *GroupMetaFactory) RegisterAndEnable(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) error {
|
rootScoped := sets.NewString()
|
||||||
if err := gmf.Register(registry); err != nil {
|
if gmf.GroupArgs.RootScopedKinds != nil {
|
||||||
return err
|
rootScoped = gmf.GroupArgs.RootScopedKinds
|
||||||
}
|
}
|
||||||
if err := gmf.Enable(registry, scheme); err != nil {
|
ignoredKinds := sets.NewString()
|
||||||
return err
|
if gmf.GroupArgs.IgnoredKinds != nil {
|
||||||
|
ignoredKinds = gmf.GroupArgs.IgnoredKinds
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
mapper := meta.NewDefaultRESTMapper(externalVersions, groupMeta.InterfacesFor)
|
||||||
|
for _, gv := range externalVersions {
|
||||||
|
for kind := range scheme.KnownTypes(gv) {
|
||||||
|
if ignoredKinds.Has(kind) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
scope := meta.RESTScopeNamespace
|
||||||
|
if rootScoped.Has(kind) {
|
||||||
|
scope = meta.RESTScopeRoot
|
||||||
|
}
|
||||||
|
mapper.Add(gv.WithKind(kind), scope)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapper
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,11 +42,6 @@ type APIRegistrationManager struct {
|
||||||
// registeredGroupVersions stores all API group versions for which RegisterGroup is called.
|
// registeredGroupVersions stores all API group versions for which RegisterGroup is called.
|
||||||
registeredVersions map[schema.GroupVersion]struct{}
|
registeredVersions map[schema.GroupVersion]struct{}
|
||||||
|
|
||||||
// enabledVersions represents all enabled API versions. It should be a
|
|
||||||
// subset of registeredVersions. Please call EnableVersions() to add
|
|
||||||
// enabled versions.
|
|
||||||
enabledVersions map[schema.GroupVersion]struct{}
|
|
||||||
|
|
||||||
// map of group meta for all groups.
|
// map of group meta for all groups.
|
||||||
groupMetaMap map[string]*apimachinery.GroupMeta
|
groupMetaMap map[string]*apimachinery.GroupMeta
|
||||||
|
|
||||||
|
@ -63,7 +58,6 @@ type APIRegistrationManager struct {
|
||||||
func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) {
|
func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) {
|
||||||
m := &APIRegistrationManager{
|
m := &APIRegistrationManager{
|
||||||
registeredVersions: map[schema.GroupVersion]struct{}{},
|
registeredVersions: map[schema.GroupVersion]struct{}{},
|
||||||
enabledVersions: map[schema.GroupVersion]struct{}{},
|
|
||||||
groupMetaMap: map[string]*apimachinery.GroupMeta{},
|
groupMetaMap: map[string]*apimachinery.GroupMeta{},
|
||||||
envRequestedVersions: []schema.GroupVersion{},
|
envRequestedVersions: []schema.GroupVersion{},
|
||||||
}
|
}
|
||||||
|
@ -106,23 +100,6 @@ func (m *APIRegistrationManager) RegisterGroup(groupMeta apimachinery.GroupMeta)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnableVersions adds the versions for the given group to the list of enabled versions.
|
|
||||||
// Note that the caller should call RegisterGroup before calling this method.
|
|
||||||
// The caller of this function is responsible to add the versions to scheme and RESTMapper.
|
|
||||||
func (m *APIRegistrationManager) EnableVersions(versions ...schema.GroupVersion) error {
|
|
||||||
var unregisteredVersions []schema.GroupVersion
|
|
||||||
for _, v := range versions {
|
|
||||||
if _, found := m.registeredVersions[v]; !found {
|
|
||||||
unregisteredVersions = append(unregisteredVersions, v)
|
|
||||||
}
|
|
||||||
m.enabledVersions[v] = struct{}{}
|
|
||||||
}
|
|
||||||
if len(unregisteredVersions) != 0 {
|
|
||||||
return fmt.Errorf("Please register versions before enabling them: %v", unregisteredVersions)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsAllowedVersion returns if the version is allowed by the KUBE_API_VERSIONS
|
// IsAllowedVersion returns if the version is allowed by the KUBE_API_VERSIONS
|
||||||
// environment variable. If the environment variable is empty, then it always
|
// environment variable. If the environment variable is empty, then it always
|
||||||
// returns true.
|
// returns true.
|
||||||
|
@ -138,42 +115,6 @@ func (m *APIRegistrationManager) IsAllowedVersion(v schema.GroupVersion) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsEnabledVersion returns if a version is enabled.
|
|
||||||
func (m *APIRegistrationManager) IsEnabledVersion(v schema.GroupVersion) bool {
|
|
||||||
_, found := m.enabledVersions[v]
|
|
||||||
return found
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnabledVersions returns all enabled versions. Groups are randomly ordered, but versions within groups
|
|
||||||
// are priority order from best to worst
|
|
||||||
func (m *APIRegistrationManager) EnabledVersions() []schema.GroupVersion {
|
|
||||||
ret := []schema.GroupVersion{}
|
|
||||||
for _, groupMeta := range m.groupMetaMap {
|
|
||||||
for _, version := range groupMeta.GroupVersions {
|
|
||||||
if m.IsEnabledVersion(version) {
|
|
||||||
ret = append(ret, version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnabledVersionsForGroup returns all enabled versions for a group in order of best to worst
|
|
||||||
func (m *APIRegistrationManager) EnabledVersionsForGroup(group string) []schema.GroupVersion {
|
|
||||||
groupMeta, ok := m.groupMetaMap[group]
|
|
||||||
if !ok {
|
|
||||||
return []schema.GroupVersion{}
|
|
||||||
}
|
|
||||||
|
|
||||||
ret := []schema.GroupVersion{}
|
|
||||||
for _, version := range groupMeta.GroupVersions {
|
|
||||||
if m.IsEnabledVersion(version) {
|
|
||||||
ret = append(ret, version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
// Group returns the metadata of a group if the group is registered, otherwise
|
// Group returns the metadata of a group if the group is registered, otherwise
|
||||||
// an error is returned.
|
// an error is returned.
|
||||||
func (m *APIRegistrationManager) Group(group string) (*apimachinery.GroupMeta, error) {
|
func (m *APIRegistrationManager) Group(group string) (*apimachinery.GroupMeta, error) {
|
||||||
|
@ -197,11 +138,32 @@ func (m *APIRegistrationManager) IsRegisteredVersion(v schema.GroupVersion) bool
|
||||||
return found
|
return found
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisteredGroupVersions returns all registered group versions.
|
// RegisteredGroupVersions returns all registered group versions. Groups are randomly ordered, but versions within groups
|
||||||
|
// are priority order from best to worst
|
||||||
func (m *APIRegistrationManager) RegisteredGroupVersions() []schema.GroupVersion {
|
func (m *APIRegistrationManager) RegisteredGroupVersions() []schema.GroupVersion {
|
||||||
ret := []schema.GroupVersion{}
|
ret := []schema.GroupVersion{}
|
||||||
for groupVersion := range m.registeredVersions {
|
for _, groupMeta := range m.groupMetaMap {
|
||||||
ret = append(ret, groupVersion)
|
for _, version := range groupMeta.GroupVersions {
|
||||||
|
if m.IsRegisteredVersion(version) {
|
||||||
|
ret = append(ret, version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisteredVersionsForGroup returns all enabled versions for a group in order of best to worst
|
||||||
|
func (m *APIRegistrationManager) RegisteredVersionsForGroup(group string) []schema.GroupVersion {
|
||||||
|
groupMeta, ok := m.groupMetaMap[group]
|
||||||
|
if !ok {
|
||||||
|
return []schema.GroupVersion{}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := []schema.GroupVersion{}
|
||||||
|
for _, version := range groupMeta.GroupVersions {
|
||||||
|
if m.IsRegisteredVersion(version) {
|
||||||
|
ret = append(ret, version)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
@ -239,11 +201,13 @@ func (m *APIRegistrationManager) GroupOrDie(group string) *apimachinery.GroupMet
|
||||||
func (m *APIRegistrationManager) RESTMapper(versionPatterns ...schema.GroupVersion) meta.RESTMapper {
|
func (m *APIRegistrationManager) RESTMapper(versionPatterns ...schema.GroupVersion) meta.RESTMapper {
|
||||||
unionMapper := meta.MultiRESTMapper{}
|
unionMapper := meta.MultiRESTMapper{}
|
||||||
unionedGroups := sets.NewString()
|
unionedGroups := sets.NewString()
|
||||||
for enabledVersion := range m.enabledVersions {
|
for enabledVersion := range m.registeredVersions {
|
||||||
if !unionedGroups.Has(enabledVersion.Group) {
|
if !unionedGroups.Has(enabledVersion.Group) {
|
||||||
unionedGroups.Insert(enabledVersion.Group)
|
unionedGroups.Insert(enabledVersion.Group)
|
||||||
groupMeta := m.groupMetaMap[enabledVersion.Group]
|
groupMeta := m.groupMetaMap[enabledVersion.Group]
|
||||||
unionMapper = append(unionMapper, groupMeta.RESTMapper)
|
if groupMeta != nil {
|
||||||
|
unionMapper = append(unionMapper, groupMeta.RESTMapper)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,7 +239,7 @@ func (m *APIRegistrationManager) RESTMapper(versionPatterns ...schema.GroupVersi
|
||||||
|
|
||||||
prioritizedGroupsSet := sets.NewString(prioritizedGroups...)
|
prioritizedGroupsSet := sets.NewString(prioritizedGroups...)
|
||||||
remainingGroups := sets.String{}
|
remainingGroups := sets.String{}
|
||||||
for enabledVersion := range m.enabledVersions {
|
for enabledVersion := range m.registeredVersions {
|
||||||
if !prioritizedGroupsSet.Has(enabledVersion.Group) {
|
if !prioritizedGroupsSet.Has(enabledVersion.Group) {
|
||||||
remainingGroups.Insert(enabledVersion.Group)
|
remainingGroups.Insert(enabledVersion.Group)
|
||||||
}
|
}
|
||||||
|
@ -295,7 +259,7 @@ func (m *APIRegistrationManager) prioritiesForGroups(groups ...string) ([]schema
|
||||||
kindPriority := []schema.GroupVersionKind{}
|
kindPriority := []schema.GroupVersionKind{}
|
||||||
|
|
||||||
for _, group := range groups {
|
for _, group := range groups {
|
||||||
availableVersions := m.EnabledVersionsForGroup(group)
|
availableVersions := m.RegisteredVersionsForGroup(group)
|
||||||
if len(availableVersions) > 0 {
|
if len(availableVersions) > 0 {
|
||||||
resourcePriority = append(resourcePriority, availableVersions[0].WithResource(meta.AnyResource))
|
resourcePriority = append(resourcePriority, availableVersions[0].WithResource(meta.AnyResource))
|
||||||
kindPriority = append(kindPriority, availableVersions[0].WithKind(meta.AnyKind))
|
kindPriority = append(kindPriority, availableVersions[0].WithKind(meta.AnyKind))
|
||||||
|
@ -328,7 +292,7 @@ func (m *APIRegistrationManager) AllPreferredGroupVersions() string {
|
||||||
func (m *APIRegistrationManager) ValidateEnvRequestedVersions() []schema.GroupVersion {
|
func (m *APIRegistrationManager) ValidateEnvRequestedVersions() []schema.GroupVersion {
|
||||||
var missingVersions []schema.GroupVersion
|
var missingVersions []schema.GroupVersion
|
||||||
for _, v := range m.envRequestedVersions {
|
for _, v := range m.envRequestedVersions {
|
||||||
if _, found := m.enabledVersions[v]; !found {
|
if _, found := m.registeredVersions[v]; !found {
|
||||||
missingVersions = append(missingVersions, v)
|
missingVersions = append(missingVersions, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: testapigroup.GroupName,
|
GroupName: testapigroup.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: webhookadmission.GroupName,
|
GroupName: webhookadmission.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: apiserver.GroupName,
|
GroupName: apiserver.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: audit.GroupName,
|
GroupName: audit.GroupName,
|
||||||
|
@ -42,7 +42,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: example.GroupName,
|
GroupName: example.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
examplev1.SchemeGroupVersion.Version: examplev1.AddToScheme,
|
examplev1.SchemeGroupVersion.Version: examplev1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: example2.GroupName,
|
GroupName: example2.GroupName,
|
||||||
|
@ -38,7 +38,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
example2v1.SchemeGroupVersion.Version: example2v1.AddToScheme,
|
example2v1.SchemeGroupVersion.Version: example2v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import (
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -38,10 +37,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
registry = registered.NewOrDie("")
|
||||||
registry = registered.NewOrDie("")
|
scheme = runtime.NewScheme()
|
||||||
scheme = runtime.NewScheme()
|
codecs = serializer.NewCodecFactory(scheme)
|
||||||
codecs = serializer.NewCodecFactory(scheme)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
|
@ -139,6 +139,7 @@ func TestParseRuntimeConfig(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for index, test := range testCases {
|
for index, test := range testCases {
|
||||||
|
t.Log(registry.RegisteredGroupVersions())
|
||||||
actualDisablers, err := MergeAPIResourceConfigs(test.defaultResourceConfig(), test.runtimeConfig, registry)
|
actualDisablers, err := MergeAPIResourceConfigs(test.defaultResourceConfig(), test.runtimeConfig, registry)
|
||||||
if err == nil && test.err {
|
if err == nil && test.err {
|
||||||
t.Fatalf("expected error for test case: %v", index)
|
t.Fatalf("expected error for test case: %v", index)
|
||||||
|
@ -168,10 +169,12 @@ func newFakeRegistry() *registered.APIRegistrationManager {
|
||||||
registry := registered.NewOrDie("")
|
registry := registered.NewOrDie("")
|
||||||
|
|
||||||
registry.RegisterGroup(apimachinery.GroupMeta{
|
registry.RegisterGroup(apimachinery.GroupMeta{
|
||||||
GroupVersion: apiv1.SchemeGroupVersion,
|
GroupVersion: apiv1.SchemeGroupVersion,
|
||||||
|
GroupVersions: []schema.GroupVersion{apiv1.SchemeGroupVersion},
|
||||||
})
|
})
|
||||||
registry.RegisterGroup(apimachinery.GroupMeta{
|
registry.RegisterGroup(apimachinery.GroupMeta{
|
||||||
GroupVersion: extensionsapiv1beta1.SchemeGroupVersion,
|
GroupVersion: extensionsapiv1beta1.SchemeGroupVersion,
|
||||||
|
GroupVersions: []schema.GroupVersion{extensionsapiv1beta1.SchemeGroupVersion},
|
||||||
})
|
})
|
||||||
registry.RegisterVersions([]schema.GroupVersion{apiv1.SchemeGroupVersion, extensionsapiv1beta1.SchemeGroupVersion})
|
registry.RegisterVersions([]schema.GroupVersion{apiv1.SchemeGroupVersion, extensionsapiv1beta1.SchemeGroupVersion})
|
||||||
return registry
|
return registry
|
||||||
|
|
|
@ -21,7 +21,6 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -37,7 +36,6 @@ var (
|
||||||
v1GroupVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
v1GroupVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
||||||
|
|
||||||
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
announce = make(announced.APIGroupFactoryRegistry)
|
|
||||||
scheme = runtime.NewScheme()
|
scheme = runtime.NewScheme()
|
||||||
codecs = serializer.NewCodecFactory(scheme)
|
codecs = serializer.NewCodecFactory(scheme)
|
||||||
parameterCodec = runtime.NewParameterCodec(scheme)
|
parameterCodec = runtime.NewParameterCodec(scheme)
|
||||||
|
@ -53,7 +51,7 @@ func init() {
|
||||||
&metav1.APIResourceList{},
|
&metav1.APIResourceList{},
|
||||||
)
|
)
|
||||||
|
|
||||||
exampleinstall.Install(announce, registry, scheme)
|
exampleinstall.Install(registry, scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
type fakeNegotiater struct {
|
type fakeNegotiater struct {
|
||||||
|
@ -119,8 +117,7 @@ func TestConfigurableStorageFactory(t *testing.T) {
|
||||||
|
|
||||||
func TestUpdateEtcdOverrides(t *testing.T) {
|
func TestUpdateEtcdOverrides(t *testing.T) {
|
||||||
registry := registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
registry := registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
|
||||||
announced := make(announced.APIGroupFactoryRegistry)
|
exampleinstall.Install(registry, scheme)
|
||||||
exampleinstall.Install(announced, registry, scheme)
|
|
||||||
|
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
resource schema.GroupResource
|
resource schema.GroupResource
|
||||||
|
|
|
@ -48,7 +48,7 @@ func NewGenericWebhook(registry *registered.APIRegistrationManager, codecFactory
|
||||||
|
|
||||||
func newGenericWebhook(registry *registered.APIRegistrationManager, codecFactory serializer.CodecFactory, kubeConfigFile string, groupVersions []schema.GroupVersion, initialBackoff, requestTimeout time.Duration) (*GenericWebhook, error) {
|
func newGenericWebhook(registry *registered.APIRegistrationManager, codecFactory serializer.CodecFactory, kubeConfigFile string, groupVersions []schema.GroupVersion, initialBackoff, requestTimeout time.Duration) (*GenericWebhook, error) {
|
||||||
for _, groupVersion := range groupVersions {
|
for _, groupVersion := range groupVersions {
|
||||||
if !registry.IsEnabledVersion(groupVersion) {
|
if !registry.IsRegisteredVersion(groupVersion) {
|
||||||
return nil, fmt.Errorf("webhook plugin requires enabling extension resource: %s", groupVersion)
|
return nil, fmt.Errorf("webhook plugin requires enabling extension resource: %s", groupVersion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ package log
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -26,7 +25,6 @@ import (
|
||||||
|
|
||||||
"github.com/pborman/uuid"
|
"github.com/pborman/uuid"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -40,17 +38,13 @@ import (
|
||||||
|
|
||||||
// NOTE: Copied from webhook backend to register auditv1beta1 to scheme
|
// NOTE: Copied from webhook backend to register auditv1beta1 to scheme
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
registry = registered.NewOrDie("")
|
||||||
registry = registered.NewOrDie("")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
allGVs := []schema.GroupVersion{auditv1beta1.SchemeGroupVersion}
|
allGVs := []schema.GroupVersion{auditv1beta1.SchemeGroupVersion}
|
||||||
registry.RegisterVersions(allGVs)
|
registry.RegisterVersions(allGVs)
|
||||||
if err := registry.EnableVersions(allGVs...); err != nil {
|
install.Install(registry, audit.Scheme)
|
||||||
panic(fmt.Sprintf("failed to enable version %v", allGVs))
|
|
||||||
}
|
|
||||||
install.Install(groupFactoryRegistry, registry, audit.Scheme)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLogEventsLegacy(t *testing.T) {
|
func TestLogEventsLegacy(t *testing.T) {
|
||||||
|
|
|
@ -18,10 +18,8 @@ limitations under the License.
|
||||||
package webhook
|
package webhook
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
auditinternal "k8s.io/apiserver/pkg/apis/audit"
|
auditinternal "k8s.io/apiserver/pkg/apis/audit"
|
||||||
|
@ -46,7 +44,6 @@ var (
|
||||||
// NOTE: Copied from other webhook implementations
|
// NOTE: Copied from other webhook implementations
|
||||||
//
|
//
|
||||||
// Can we make these passable to NewGenericWebhook?
|
// Can we make these passable to NewGenericWebhook?
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
|
||||||
// TODO(audit): figure out a general way to let the client choose their preferred version
|
// TODO(audit): figure out a general way to let the client choose their preferred version
|
||||||
registry = registered.NewOrDie("")
|
registry = registered.NewOrDie("")
|
||||||
)
|
)
|
||||||
|
@ -54,10 +51,7 @@ var (
|
||||||
func init() {
|
func init() {
|
||||||
allGVs := []schema.GroupVersion{auditv1alpha1.SchemeGroupVersion, auditv1beta1.SchemeGroupVersion}
|
allGVs := []schema.GroupVersion{auditv1alpha1.SchemeGroupVersion, auditv1beta1.SchemeGroupVersion}
|
||||||
registry.RegisterVersions(allGVs)
|
registry.RegisterVersions(allGVs)
|
||||||
if err := registry.EnableVersions(allGVs...); err != nil {
|
install.Install(registry, audit.Scheme)
|
||||||
panic(fmt.Sprintf("failed to enable version %v", allGVs))
|
|
||||||
}
|
|
||||||
install.Install(groupFactoryRegistry, registry, audit.Scheme)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadWebhook(configFile string, groupVersion schema.GroupVersion, initialBackoff time.Duration) (*webhook.GenericWebhook, error) {
|
func loadWebhook(configFile string, groupVersion schema.GroupVersion, initialBackoff time.Duration) (*webhook.GenericWebhook, error) {
|
||||||
|
|
|
@ -18,7 +18,6 @@ limitations under the License.
|
||||||
package webhook
|
package webhook
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
@ -121,9 +120,6 @@ var registry = registered.NewOrDie("")
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registry.RegisterVersions(groupVersions)
|
registry.RegisterVersions(groupVersions)
|
||||||
if err := registry.EnableVersions(groupVersions...); err != nil {
|
|
||||||
panic(fmt.Sprintf("failed to enable version %v", groupVersions))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// tokenReviewInterfaceFromKubeconfig builds a client from the specified kubeconfig file,
|
// tokenReviewInterfaceFromKubeconfig builds a client from the specified kubeconfig file,
|
||||||
|
|
|
@ -242,9 +242,6 @@ var registry = registered.NewOrDie("")
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registry.RegisterVersions(groupVersions)
|
registry.RegisterVersions(groupVersions)
|
||||||
if err := registry.EnableVersions(groupVersions...); err != nil {
|
|
||||||
panic(fmt.Sprintf("failed to enable version %v", groupVersions))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// subjectAccessReviewInterfaceFromKubeconfig builds a client from the specified kubeconfig file,
|
// subjectAccessReviewInterfaceFromKubeconfig builds a client from the specified kubeconfig file,
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: clientauthentication.GroupName,
|
GroupName: clientauthentication.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: example.SchemeGroupVersion.Group,
|
GroupName: example.SchemeGroupVersion.Group,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: example2.SchemeGroupVersion.Group,
|
GroupName: example2.SchemeGroupVersion.Group,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: apiregistration.GroupName,
|
GroupName: apiregistration.GroupName,
|
||||||
|
@ -39,7 +39,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
v1.SchemeGroupVersion.Version: v1.AddToScheme,
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ limitations under the License.
|
||||||
package scheme
|
package scheme
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
|
@ -34,8 +33,6 @@ var (
|
||||||
// Codecs provides methods for retrieving codecs and serializers for specific
|
// Codecs provides methods for retrieving codecs and serializers for specific
|
||||||
// versions and content types.
|
// versions and content types.
|
||||||
Codecs = serializer.NewCodecFactory(Scheme)
|
Codecs = serializer.NewCodecFactory(Scheme)
|
||||||
// groupFactoryRegistry is the APIGroupFactoryRegistry.
|
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
|
||||||
// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global
|
// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global
|
||||||
// API registry.
|
// API registry.
|
||||||
Registry = registered.NewOrDie("")
|
Registry = registered.NewOrDie("")
|
||||||
|
@ -43,7 +40,7 @@ var (
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
AddToScheme(Scheme)
|
AddToScheme(Scheme)
|
||||||
install.Install(groupFactoryRegistry, Registry, Scheme)
|
install.Install(Registry, Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddToScheme adds the types of this group into the given scheme.
|
// AddToScheme adds the types of this group into the given scheme.
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: custom_metrics.GroupName,
|
GroupName: custom_metrics.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: external_metrics.GroupName,
|
GroupName: external_metrics.GroupName,
|
||||||
|
@ -37,7 +37,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: metrics.GroupName,
|
GroupName: metrics.GroupName,
|
||||||
|
@ -39,7 +39,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
announced.VersionToSchemeFunc{
|
announced.VersionToSchemeFunc{
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Install registers the API group and adds types to a scheme
|
// Install registers the API group and adds types to a scheme
|
||||||
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
func Install(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
|
||||||
if err := announced.NewGroupMetaFactory(
|
if err := announced.NewGroupMetaFactory(
|
||||||
&announced.GroupMetaFactoryArgs{
|
&announced.GroupMetaFactoryArgs{
|
||||||
GroupName: wardle.GroupName,
|
GroupName: wardle.GroupName,
|
||||||
|
@ -39,7 +39,7 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r
|
||||||
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme,
|
||||||
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme,
|
||||||
},
|
},
|
||||||
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
|
).Register(registry, scheme); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ limitations under the License.
|
||||||
package apiserver
|
package apiserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/announced"
|
|
||||||
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
"k8s.io/apimachinery/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -36,14 +35,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
groupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
|
registry = registered.NewOrDie("")
|
||||||
registry = registered.NewOrDie("")
|
Scheme = runtime.NewScheme()
|
||||||
Scheme = runtime.NewScheme()
|
Codecs = serializer.NewCodecFactory(Scheme)
|
||||||
Codecs = serializer.NewCodecFactory(Scheme)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
install.Install(groupFactoryRegistry, registry, Scheme)
|
install.Install(registry, Scheme)
|
||||||
|
|
||||||
// we need to add the options to empty v1
|
// we need to add the options to empty v1
|
||||||
// TODO fix the server code to avoid this
|
// TODO fix the server code to avoid this
|
||||||
|
|
|
@ -79,12 +79,12 @@ var _ = SIGDescribe("Daemon set [Serial]", func() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if daemonsets, err := f.ClientSet.AppsV1().DaemonSets(f.Namespace.Name).List(metav1.ListOptions{}); err == nil {
|
if daemonsets, err := f.ClientSet.AppsV1().DaemonSets(f.Namespace.Name).List(metav1.ListOptions{}); err == nil {
|
||||||
framework.Logf("daemonset: %s", runtime.EncodeOrDie(legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), daemonsets))
|
framework.Logf("daemonset: %s", runtime.EncodeOrDie(legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), daemonsets))
|
||||||
} else {
|
} else {
|
||||||
framework.Logf("unable to dump daemonsets: %v", err)
|
framework.Logf("unable to dump daemonsets: %v", err)
|
||||||
}
|
}
|
||||||
if pods, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).List(metav1.ListOptions{}); err == nil {
|
if pods, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).List(metav1.ListOptions{}); err == nil {
|
||||||
framework.Logf("pods: %s", runtime.EncodeOrDie(legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...), pods))
|
framework.Logf("pods: %s", runtime.EncodeOrDie(legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.RegisteredGroupVersions()...), pods))
|
||||||
} else {
|
} else {
|
||||||
framework.Logf("unable to dump pods: %v", err)
|
framework.Logf("unable to dump pods: %v", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue