diff --git a/pkg/kubectl/cmd/util/openapi/validation/validation.go b/pkg/kubectl/cmd/util/openapi/validation/validation.go index 80239e0229f..0ac30d5f0f1 100644 --- a/pkg/kubectl/cmd/util/openapi/validation/validation.go +++ b/pkg/kubectl/cmd/util/openapi/validation/validation.go @@ -18,7 +18,6 @@ package validation import ( "errors" - "strings" "k8s.io/apimachinery/pkg/runtime/schema" utilerrors "k8s.io/apimachinery/pkg/util/errors" @@ -54,7 +53,7 @@ func (v *SchemaValidation) ValidateBytes(data []byte) error { return utilerrors.NewAggregate(errs) } - if strings.HasSuffix(gvk.Kind, "List") { + if (gvk == schema.GroupVersionKind{Version: "v1", Kind: "List"}) { return utilerrors.NewAggregate(v.validateList(obj)) } diff --git a/pkg/kubectl/cmd/util/openapi/validation/validation_test.go b/pkg/kubectl/cmd/util/openapi/validation/validation_test.go index c038682a3a2..67aad17174b 100644 --- a/pkg/kubectl/cmd/util/openapi/validation/validation_test.go +++ b/pkg/kubectl/cmd/util/openapi/validation/validation_test.go @@ -394,4 +394,16 @@ items: `)) Expect(err.Error()).To(Equal("[kind not set, apiVersion not set]")) }) + + It("is fine with crd resource with List as a suffix kind name, which may not be a list of resources", func() { + err := validator.ValidateBytes([]byte(` +apiVersion: fake.com/v1 +kind: FakeList +metadata: + name: fake +spec: + foo: bar +`)) + Expect(err).To(BeNil()) + }) })