openapi validation: Ignore unknown types

This follows the exact same logic as swagger.
This commit is contained in:
Antoine Pelisse 2017-08-17 14:53:31 -07:00
parent a950afecdc
commit 37aacf30b5
3 changed files with 11 additions and 0 deletions

View File

@ -17,6 +17,7 @@ go_library(
],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/util:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
@ -36,6 +37,7 @@ go_test(
tags = ["automanaged"],
deps = [
":go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/cmd/util/openapi/testing:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",

View File

@ -25,6 +25,7 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/yaml"
"k8s.io/kubernetes/pkg/api"
apiutil "k8s.io/kubernetes/pkg/api/util"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
)
@ -75,6 +76,12 @@ func (v *SchemaValidation) validateList(object interface{}) []error {
}
func (v *SchemaValidation) validateResource(obj interface{}, gvk schema.GroupVersionKind) []error {
if !api.Registry.IsEnabledVersion(gvk.GroupVersion()) {
// if we don't have this in our scheme, just skip
// validation because its an object we don't recognize
return nil
}
resource := v.resources.LookupResource(gvk)
if resource == nil {
return []error{fmt.Errorf("unknown object type %#v", gvk)}

View File

@ -23,6 +23,8 @@ import (
. "github.com/onsi/gomega"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
// This dependency is needed to register API types.
_ "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
tst "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/testing"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/validation"