From 66e5c38d67409b1696028baea2a993ad2c726f06 Mon Sep 17 00:00:00 2001 From: deads2k Date: Wed, 16 Nov 2016 10:32:27 -0500 Subject: [PATCH] remove TPR registration, ease validation requirements --- pkg/kubectl/cmd/util/factory.go | 17 +---------------- test/integration/kubectl/kubectl_test.go | 7 ++++--- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index ef0405ac8f9..bd5dc146140 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -386,18 +386,6 @@ func (f *factory) UnstructuredObject() (meta.RESTMapper, runtime.ObjectTyper, er return nil, nil, err } - // Register unknown APIs as third party for now to make - // validation happy. TODO perhaps make a dynamic schema - // validator to avoid this. - for _, group := range groupResources { - for _, version := range group.Group.Versions { - gv := unversioned.GroupVersion{Group: group.Group.Name, Version: version.Version} - if !registered.IsRegisteredVersion(gv) { - registered.AddThirdPartyAPIGroupVersions(gv) - } - } - } - mapper := discovery.NewDeferredDiscoveryRESTMapper(discoveryClient, meta.InterfacesForUnstructured) typer := discovery.NewUnstructuredObjectTyper(groupResources) return NewShortcutExpander(mapper, discoveryClient), typer, nil @@ -1148,10 +1136,7 @@ func (c *clientSwaggerSchema) ValidateBytes(data []byte) error { return err } if ok := registered.IsEnabledVersion(gvk.GroupVersion()); !ok { - return fmt.Errorf("API version %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), registered.EnabledVersions()) - } - if registered.IsThirdPartyAPIGroupVersion(gvk.GroupVersion()) { - // Don't attempt to validate third party objects + // if we don't have this in our scheme, just skip validation because its an object we don't recognize return nil } diff --git a/test/integration/kubectl/kubectl_test.go b/test/integration/kubectl/kubectl_test.go index cf3870c781c..13fe892bf67 100644 --- a/test/integration/kubectl/kubectl_test.go +++ b/test/integration/kubectl/kubectl_test.go @@ -30,17 +30,18 @@ import ( func TestKubectlValidation(t *testing.T) { testCases := []struct { data string - err bool + // Validation should not fail on missing type information. + err bool }{ {`{"apiVersion": "v1", "kind": "thisObjectShouldNotExistInAnyGroup"}`, true}, - {`{"apiVersion": "invalidVersion", "kind": "Pod"}`, true}, + {`{"apiVersion": "invalidVersion", "kind": "Pod"}`, false}, {`{"apiVersion": "v1", "kind": "Pod"}`, false}, // The following test the experimental api. // TODO: Replace with something more robust. These may move. {`{"apiVersion": "extensions/v1beta1", "kind": "Ingress"}`, false}, {`{"apiVersion": "extensions/v1beta1", "kind": "Job"}`, false}, - {`{"apiVersion": "vNotAVersion", "kind": "Job"}`, true}, + {`{"apiVersion": "vNotAVersion", "kind": "Job"}`, false}, } components := framework.NewMasterComponents(&framework.Config{}) defer components.Stop(true, true)