From aa1c79f32b5255f1212f661e4a4f776a39882193 Mon Sep 17 00:00:00 2001 From: Antoine Pelisse Date: Fri, 11 Aug 2017 09:39:12 -0700 Subject: [PATCH] openapi: Use "group" to look for resources --- .../cmd/util/openapi/validation/validation.go | 5 +++-- .../openapi/validation/validation_test.go | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/pkg/kubectl/cmd/util/openapi/validation/validation.go b/pkg/kubectl/cmd/util/openapi/validation/validation.go index aa4306e668c..dce8c783721 100644 --- a/pkg/kubectl/cmd/util/openapi/validation/validation.go +++ b/pkg/kubectl/cmd/util/openapi/validation/validation.go @@ -51,7 +51,7 @@ func (v *SchemaValidation) ValidateBytes(data []byte) error { resource := v.resources.LookupResource(gvk) if resource == nil { - return fmt.Errorf("unknown object type %q", gvk) + return fmt.Errorf("unknown object type %#v", gvk) } rootValidation, err := itemFactory(openapi.NewPath(gvk.Kind), obj) @@ -91,6 +91,7 @@ func getObjectKind(object interface{}) (schema.GroupVersionKind, error) { return schema.GroupVersionKind{}, errors.New("apiVersion isn't string type") } version := apiutil.GetVersion(apiVersion.(string)) + group := apiutil.GetGroup(apiVersion.(string)) kind := fields["kind"] if kind == nil { return schema.GroupVersionKind{}, errors.New("kind not set") @@ -99,5 +100,5 @@ func getObjectKind(object interface{}) (schema.GroupVersionKind, error) { return schema.GroupVersionKind{}, errors.New("kind isn't string type") } - return schema.GroupVersionKind{Kind: kind.(string), Version: version}, nil + return schema.GroupVersionKind{Group: group, Version: version, Kind: kind.(string)}, nil } diff --git a/pkg/kubectl/cmd/util/openapi/validation/validation_test.go b/pkg/kubectl/cmd/util/openapi/validation/validation_test.go index 6cb06f016e3..34563abedbc 100644 --- a/pkg/kubectl/cmd/util/openapi/validation/validation_test.go +++ b/pkg/kubectl/cmd/util/openapi/validation/validation_test.go @@ -41,6 +41,28 @@ var _ = Describe("resource validation using OpenAPI Schema", func() { Expect(validator).ToNot(BeNil()) }) + It("finds Deployment in Schema and validates it", func() { + err := validator.ValidateBytes([]byte(` +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + labels: + name: redis-master + name: name +spec: + replicas: 1 + template: + metadata: + labels: + app: redis + spec: + containers: + - image: redis + name: redis +`)) + Expect(err).To(BeNil()) + }) + It("validates a valid pod", func() { err := validator.ValidateBytes([]byte(` apiVersion: v1