mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Merge pull request #1513 from nimohunter/fix_empty_list_item
empty list or map item return error
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
@@ -108,5 +109,30 @@ func (kf *KunstructuredFactoryImpl) validate(u unstructured.Unstructured) error
|
|||||||
if u.GetName() == "" {
|
if u.GetName() == "" {
|
||||||
return fmt.Errorf("missing metadata.name in object %v", u)
|
return fmt.Errorf("missing metadata.name in object %v", u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if result, path := checkListItemNil(u.Object); result {
|
||||||
|
return fmt.Errorf("empty item at %v in object %v", path, u)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkListItemNil(in interface{}) (bool, string) {
|
||||||
|
switch v := in.(type) {
|
||||||
|
case map[string]interface{}:
|
||||||
|
for key, s := range v {
|
||||||
|
if result, path := checkListItemNil(s); result {
|
||||||
|
return result, key + "/" + path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case []interface{}:
|
||||||
|
for index, s := range v {
|
||||||
|
if s == nil {
|
||||||
|
return true, ""
|
||||||
|
}
|
||||||
|
if result, path := checkListItemNil(s); result {
|
||||||
|
return result, "[" + strconv.Itoa(index) + "]/" + path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false, ""
|
||||||
|
}
|
||||||
|
|||||||
@@ -138,6 +138,22 @@ kind: Namespace
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
foo: bar
|
foo: bar
|
||||||
|
`),
|
||||||
|
expectedOut: nil,
|
||||||
|
expectedErr: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "nil value in list",
|
||||||
|
input: []byte(`
|
||||||
|
apiVersion: builtin
|
||||||
|
kind: ConfigMapGenerator
|
||||||
|
metadata:
|
||||||
|
name: kube100-site
|
||||||
|
labels:
|
||||||
|
app: web
|
||||||
|
testList:
|
||||||
|
- testA
|
||||||
|
-
|
||||||
`),
|
`),
|
||||||
expectedOut: nil,
|
expectedOut: nil,
|
||||||
expectedErr: true,
|
expectedErr: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user