From 1ab2450250049583ec35c1e1495796f591d6929d Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Mon, 5 Jun 2023 11:26:04 -0500 Subject: [PATCH] fix(provisioner/terraform): ensure ordering rich parameters produces no nil values (#7824) --- provisioner/terraform/resources.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/provisioner/terraform/resources.go b/provisioner/terraform/resources.go index cded02df4b..026a1fbf89 100644 --- a/provisioner/terraform/resources.go +++ b/provisioner/terraform/resources.go @@ -694,5 +694,21 @@ func orderedRichParametersResources(tfResourcesRichParameters []*tfjson.StateRes } } } + + // There's an edge case possible for us to have a parameter name that isn't + // present in the state, since the ordered names come statically from + // parsing the Terraform file. We need to filter out the nil values if there + // are any present. + if len(tfResourcesRichParameters) != len(orderedNames) { + nonNil := make([]*tfjson.StateResource, 0, len(ordered)) + for _, resource := range ordered { + if resource != nil { + nonNil = append(nonNil, resource) + } + } + + ordered = nonNil + } + return ordered }