From c55228415794c51fd35f589510be5c5e8e80d895 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Wed, 19 Dec 2018 15:22:47 -0500 Subject: [PATCH] don't evaluate an empty connection body There's a required field now, so evaluating an empty block will always fail. --- terraform/eval_apply.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/terraform/eval_apply.go b/terraform/eval_apply.go index 8c09e997a..73b8a47a2 100644 --- a/terraform/eval_apply.go +++ b/terraform/eval_apply.go @@ -494,16 +494,20 @@ func (n *EvalApplyProvisioners) apply(ctx EvalContext, provs []*configs.Provisio connBody = baseConn case localConn != nil: connBody = localConn - default: // both are nil, by elimination - connBody = hcl.EmptyBody() } - connInfo, _, connInfoDiags := ctx.EvaluateBlock(connBody, connectionBlockSupersetSchema, instanceAddr, keyData) - diags = diags.Append(connInfoDiags) - if diags.HasErrors() { - // "on failure continue" setting only applies to failures of the - // provisioner itself, not to invalid configuration. - return diags.Err() + // start with an empty connInfo + connInfo := cty.NullVal(connectionBlockSupersetSchema.ImpliedType()) + + if connBody != nil { + var connInfoDiags tfdiags.Diagnostics + connInfo, _, connInfoDiags = ctx.EvaluateBlock(connBody, connectionBlockSupersetSchema, instanceAddr, keyData) + diags = diags.Append(connInfoDiags) + if diags.HasErrors() { + // "on failure continue" setting only applies to failures of the + // provisioner itself, not to invalid configuration. + return diags.Err() + } } {