From 2561cd5d0a3a306a800c5a6bb9c35916de66feef Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Fri, 2 Jun 2023 21:17:23 +0000 Subject: [PATCH] fix(terraform): ensure ordering rich parameters produces no nil values --- provisioner/terraform/resources.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/provisioner/terraform/resources.go b/provisioner/terraform/resources.go index cded02df4b4e7..026a1fbf89422 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 }