From fc271a2acba72222bfb86cf9dec4d35df82cacaf Mon Sep 17 00:00:00 2001 From: Vivek Patel Date: Wed, 15 Jun 2022 18:20:23 +0530 Subject: [PATCH] Add nil checks to envoy for compose_chart Fix panics while exporting namespace with invalid compose chart --- pkg/envoy/builder.go | 3 +++ pkg/envoy/resource/compose_chart.go | 5 ++++- pkg/envoy/yaml/compose_chart_marshal.go | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/envoy/builder.go b/pkg/envoy/builder.go index 250953148..bcc33b066 100644 --- a/pkg/envoy/builder.go +++ b/pkg/envoy/builder.go @@ -131,6 +131,9 @@ func (b *builder) buildGraph(rr []resource.Interface) *graph { // Attempt to connect all available nodes for _, ref := range refs { + if ref == nil { + continue + } // Handle wildcard references if ref.IsWildcard() { nn := nIndex.GetResourceType(ref.ResourceType) diff --git a/pkg/envoy/resource/compose_chart.go b/pkg/envoy/resource/compose_chart.go index 4634d8d50..784b4de74 100644 --- a/pkg/envoy/resource/compose_chart.go +++ b/pkg/envoy/resource/compose_chart.go @@ -31,7 +31,10 @@ func NewComposeChart(res *types.Chart, nsRef *Ref, mmRef RefSet) *ComposeChart { r.RefNs = r.addRef(nsRef) for i, mRef := range mmRef { - r.RefMods[i] = r.addRef(mRef).Constraint(r.RefNs) + ref := r.addRef(mRef) + if ref != nil { + r.RefMods[i] = ref.Constraint(r.RefNs) + } } // Initial timestamps diff --git a/pkg/envoy/yaml/compose_chart_marshal.go b/pkg/envoy/yaml/compose_chart_marshal.go index b2ff39132..ae5e2a818 100644 --- a/pkg/envoy/yaml/compose_chart_marshal.go +++ b/pkg/envoy/yaml/compose_chart_marshal.go @@ -38,6 +38,9 @@ func (n *composeChart) Prepare(ctx context.Context, state *envoy.ResourceState) for i, r := range chr.Res.Config.Reports { refMod := chr.RefMods[i] + if refMod == nil { + continue + } relMod := resource.FindComposeModule(state.ParentResources, refMod.Identifiers) if relMod == nil { return resource.ComposeModuleErrUnresolved(refMod.Identifiers)