Commit ff474e5d authored by krousey's avatar krousey

Merge pull request #9376 from feihujiang/createValidateCrash

kubetcl create --validate crashes when no apiVersion or kind is provided
parents e19e4bcd 37abe11f
......@@ -77,9 +77,15 @@ func (s *SwaggerSchema) ValidateBytes(data []byte) error {
if !ok {
return fmt.Errorf("error in unmarshaling data %s", string(data))
}
apiVersion := fields["apiVersion"].(string)
kind := fields["kind"].(string)
return s.ValidateObject(obj, apiVersion, "", apiVersion+"."+kind)
apiVersion := fields["apiVersion"]
if apiVersion == nil {
fmt.Errorf("apiVersion not set")
}
kind := fields["kind"]
if kind == nil {
fmt.Errorf("kind not set")
}
return s.ValidateObject(obj, apiVersion.(string), "", apiVersion.(string)+"."+kind.(string))
}
func (s *SwaggerSchema) ValidateObject(obj interface{}, apiVersion, fieldName, typeName string) error {
......
......@@ -266,7 +266,7 @@ type clientSwaggerSchema struct {
}
func (c *clientSwaggerSchema) ValidateBytes(data []byte) error {
version, _, err := c.t.DataVersionAndKind(data)
version, _, err := runtime.UnstructuredJSONScheme.DataVersionAndKind(data)
if err != nil {
return err
}
......
......@@ -215,7 +215,7 @@ func (v *PathVisitor) Visit(fn VisitorFunc) error {
return fmt.Errorf("unable to read %q: %v", v.Path, err)
}
if err := ValidateSchema(data, v.Schema); err != nil {
return err
return fmt.Errorf("error validating %q: %v", v.Path, err)
}
info, err := v.Mapper.InfoForData(data, v.Path)
if err != nil {
......@@ -278,7 +278,7 @@ func (v *DirectoryVisitor) Visit(fn VisitorFunc) error {
return fmt.Errorf("unable to read %q: %v", path, err)
}
if err := ValidateSchema(data, v.Schema); err != nil {
return err
return fmt.Errorf("error validating %q: %v", path, err)
}
info, err := v.Mapper.InfoForData(data, path)
if err != nil {
......@@ -314,7 +314,7 @@ func (v *URLVisitor) Visit(fn VisitorFunc) error {
return fmt.Errorf("unable to read URL %q: %v\n", v.URL, err)
}
if err := ValidateSchema(data, v.Schema); err != nil {
return err
return fmt.Errorf("error validating %q: %v", v.URL, err)
}
info, err := v.Mapper.InfoForData(data, v.URL.String())
if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment