From fdba7df3c15e8a81b8bfda86d164b40407ff1f6e Mon Sep 17 00:00:00 2001 From: Andrew Lavery Date: Tue, 12 Feb 2019 12:28:08 -0800 Subject: [PATCH] if the kind matches '*List$', treat it as a list --- k8sdeps/kunstruct/factory.go | 2 +- pkg/resource/factory.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/k8sdeps/kunstruct/factory.go b/k8sdeps/kunstruct/factory.go index 09bb2bbba..cfd3ad309 100644 --- a/k8sdeps/kunstruct/factory.go +++ b/k8sdeps/kunstruct/factory.go @@ -108,7 +108,7 @@ func (kf *KunstructuredFactoryImpl) validate(u unstructured.Unstructured) error kind := u.GetKind() if kind == "" { return fmt.Errorf("missing kind in object %v", u) - } else if kind == "List" { + } else if strings.HasSuffix(kind, "List") { return nil } if u.GetName() == "" { diff --git a/pkg/resource/factory.go b/pkg/resource/factory.go index b016678a5..148323dd6 100644 --- a/pkg/resource/factory.go +++ b/pkg/resource/factory.go @@ -20,6 +20,7 @@ import ( "encoding/json" "fmt" "log" + "strings" "sigs.k8s.io/kustomize/pkg/ifc" internal "sigs.k8s.io/kustomize/pkg/internal/error" @@ -94,10 +95,14 @@ func (rf *Factory) SliceFromBytes(in []byte) ([]*Resource, error) { for len(kunStructs) > 0 { u := kunStructs[0] kunStructs = kunStructs[1:] - if u.GetKind() == "List" { + if strings.HasSuffix(u.GetKind(), "List") { items := u.Map()["items"] itemsSlice, ok := items.([]interface{}) if !ok { + if items == nil { + // an empty list + continue + } return nil, fmt.Errorf("items in List is type %T, expected array", items) } for _, item := range itemsSlice {