From c840e9c4bc9e3ecf5fabe1472b15db9b0af6090e Mon Sep 17 00:00:00 2001 From: Paddy Carver Date: Mon, 8 Feb 2021 10:44:30 -0800 Subject: [PATCH] Fix empty diags not getting associated with source. Right now, there's a bug that if a diagnostic comes back from the provider with an AttributePath set, but no steps in the AttributePath, Terraform _thinks_ it's an attribute-specific diagnostic and not a whole-resource diagnostic, but then doesn't associate it with any specific attribute, meaning the diagnostic doesn't get associated with the config at all. This PR changes things to check if there are any steps in the AttributePath before deciding this isn't a whole-resource diagnostic, and if there aren't, treats it as a whole-resource diagnostic, instead. See hashicorp/terraform-plugin-sdk#561 for more details on how this surfaces in the wild. --- plugin/convert/diagnostics.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/convert/diagnostics.go b/plugin/convert/diagnostics.go index 51cb2fe2f..7eca32888 100644 --- a/plugin/convert/diagnostics.go +++ b/plugin/convert/diagnostics.go @@ -65,7 +65,7 @@ func ProtoToDiagnostics(ds []*proto.Diagnostic) tfdiags.Diagnostics { var newDiag tfdiags.Diagnostic // if there's an attribute path, we need to create a AttributeValue diagnostic - if d.Attribute != nil { + if d.Attribute != nil && len(d.Attribute.Steps) > 0 { path := AttributePathToPath(d.Attribute) newDiag = tfdiags.AttributeValue(severity, d.Summary, d.Detail, path) } else {