Merge pull request #23595 from hashicorp/jbardin/deprecate-destroy-references

Update destroy provisioner warnings
This commit is contained in:
James Bardin 2019-12-06 12:31:20 -05:00 committed by GitHub
commit f281eb2b44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 3 deletions

View File

@ -173,10 +173,13 @@ func (m *Meta) dirIsConfigPath(dir string) bool {
// directory even if loadBackendConfig succeeded.)
func (m *Meta) loadBackendConfig(rootDir string) (*configs.Backend, tfdiags.Diagnostics) {
mod, diags := m.loadSingleModule(rootDir)
// Only return error diagnostics at this point. Any warnings will be caught
// again later and duplicated in the output.
if diags.HasErrors() {
return nil, diags
}
return mod.Backend, diags
return mod.Backend, nil
}
// loadValuesFile loads a file that defines a single map of key/value pairs.

View File

@ -149,8 +149,11 @@ func onlySelfRefs(body hcl.Body) hcl.Diagnostics {
diags = append(diags, &hcl.Diagnostic{
Severity: hcl.DiagWarning,
Summary: "External references from destroy provisioners are deprecated",
Detail: "Destroy time provisioners and their connections may only reference values stored in the instance state, which include 'self', 'count.index', or 'each.key'.",
Subject: attr.Expr.Range().Ptr(),
Detail: "Destroy-time provisioners and their connection configurations may only " +
"reference attributes of the related resource, via 'self', 'count.index', " +
"or 'each.key'.\n\nReferences to other resources during the destroy phase " +
"can cause dependency cycles and interact poorly with create_before_destroy.",
Subject: attr.Expr.Range().Ptr(),
})
}
}