empty list or map item return error

This commit is contained in:
nimohunter
2019-09-16 09:30:01 +08:00
parent 9e226001e3
commit 2e82985380

View File

@@ -110,26 +110,29 @@ func (kf *KunstructuredFactoryImpl) validate(u unstructured.Unstructured) error
return fmt.Errorf("missing metadata.name in object %v", u)
}
if result, path := checkItemNil(u.Object); result {
if result, path := checkListItemNil(u.Object); result {
return fmt.Errorf("empty item at %v in object %v", path, u)
}
return nil
}
func checkItemNil(in interface{}) (bool, string) {
if in == nil {
return true, ""
}
func checkListItemNil(in interface{}) (bool, string) {
//if in == nil {
// return true, ""
//}
switch v := in.(type) {
case map[string]interface{}:
for key, s := range v {
if result, path := checkItemNil(s); result {
if result, path := checkListItemNil(s); result {
return result, key + "/" + path
}
}
case []interface{}:
for index, s := range v {
if result, path := checkItemNil(s); result {
if s == nil {
return true, ""
}
if result, path := checkListItemNil(s); result {
return result, "[" + strconv.Itoa(index) + "]/" + path
}
}