openapi: Use "group" to look for resources

This commit is contained in:
Antoine Pelisse 2017-08-11 09:39:12 -07:00
parent b7b5457050
commit aa1c79f32b
2 changed files with 25 additions and 2 deletions

View File

@ -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
}

View File

@ -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