From 77cabe187dec2781b383881b9dd0b4a80db8cc73 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Wed, 28 Oct 2020 12:32:49 -0400 Subject: [PATCH] last Evals without diagnostics --- terraform/eval_validate_selfref.go | 10 ++++++---- terraform/eval_validate_selfref_test.go | 7 +------ terraform/node_resource_plan_instance.go | 12 ++++++------ 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/terraform/eval_validate_selfref.go b/terraform/eval_validate_selfref.go index dd5e4018d0..22ba8a889d 100644 --- a/terraform/eval_validate_selfref.go +++ b/terraform/eval_validate_selfref.go @@ -20,7 +20,7 @@ type EvalValidateSelfRef struct { ProviderSchema **ProviderSchema } -func (n *EvalValidateSelfRef) Eval(ctx EvalContext) (interface{}, error) { +func (n *EvalValidateSelfRef) Eval(ctx EvalContext) tfdiags.Diagnostics { var diags tfdiags.Diagnostics addr := n.Addr @@ -33,7 +33,8 @@ func (n *EvalValidateSelfRef) Eval(ctx EvalContext) (interface{}, error) { } if n.ProviderSchema == nil || *n.ProviderSchema == nil { - return nil, fmt.Errorf("provider schema unavailable while validating %s for self-references; this is a bug in Terraform and should be reported", addr) + diags = diags.Append(fmt.Errorf("provider schema unavailable while validating %s for self-references; this is a bug in Terraform and should be reported", addr)) + return diags } providerSchema := *n.ProviderSchema @@ -46,7 +47,8 @@ func (n *EvalValidateSelfRef) Eval(ctx EvalContext) (interface{}, error) { } if schema == nil { - return nil, fmt.Errorf("no schema available for %s to validate for self-references; this is a bug in Terraform and should be reported", addr) + diags = diags.Append(fmt.Errorf("no schema available for %s to validate for self-references; this is a bug in Terraform and should be reported", addr)) + return diags } refs, _ := lang.ReferencesInBlock(n.Config, schema) @@ -63,5 +65,5 @@ func (n *EvalValidateSelfRef) Eval(ctx EvalContext) (interface{}, error) { } } - return nil, diags.NonFatalErr() + return diags } diff --git a/terraform/eval_validate_selfref_test.go b/terraform/eval_validate_selfref_test.go index de3b9a34b2..0e0fa188c7 100644 --- a/terraform/eval_validate_selfref_test.go +++ b/terraform/eval_validate_selfref_test.go @@ -5,7 +5,6 @@ import ( "testing" "github.com/hashicorp/terraform/configs/configschema" - "github.com/hashicorp/terraform/tfdiags" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hcltest" @@ -98,11 +97,7 @@ func TestEvalValidateSelfRef(t *testing.T) { Config: body, ProviderSchema: &ps, } - result, err := n.Eval(nil) - if result != nil { - t.Fatal("result should always be nil") - } - diags := tfdiags.Diagnostics(nil).Append(err) + diags := n.Eval(nil) if diags.HasErrors() != test.Err { if test.Err { t.Errorf("unexpected success; want error") diff --git a/terraform/node_resource_plan_instance.go b/terraform/node_resource_plan_instance.go index 935f7caa01..ec653ff513 100644 --- a/terraform/node_resource_plan_instance.go +++ b/terraform/node_resource_plan_instance.go @@ -68,9 +68,9 @@ func (n *NodePlannableResourceInstance) dataResourceExecute(ctx EvalContext) err Config: config.Config, ProviderSchema: &providerSchema, } - _, err = validateSelfRef.Eval(ctx) - if err != nil { - return err + diags = validateSelfRef.Eval(ctx) + if diags.HasErrors() { + return diags.ErrWithWarnings() } readDataPlan := &evalReadDataPlan{ @@ -144,9 +144,9 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext) Config: config.Config, ProviderSchema: &providerSchema, } - _, err = validateSelfRef.Eval(ctx) - if err != nil { - return err + diags = validateSelfRef.Eval(ctx) + if diags.HasErrors() { + return diags.ErrWithWarnings() } instanceRefreshState, err = n.ReadResourceInstanceState(ctx, addr)