diff --git a/terraform/context.go b/terraform/context.go index 03394a6a5..467e3ee92 100644 --- a/terraform/context.go +++ b/terraform/context.go @@ -467,6 +467,14 @@ func (c *Context) applyWalkFn() depgraph.WalkFunc { diff.init() } + // If we do not have any connection info, initialize + if r.State.ConnInfo == nil { + r.State.ConnInfo = &ResourceConnectionInfo{} + } + if r.State.ConnInfo.Raw == nil { + r.State.ConnInfo.Raw = make(map[string]interface{}) + } + // Remove any output values from the diff for k, ad := range diff.Attributes { if ad.Type == DiffAttrOutput { diff --git a/terraform/context_test.go b/terraform/context_test.go index 9ef8b451d..f91425256 100644 --- a/terraform/context_test.go +++ b/terraform/context_test.go @@ -513,6 +513,10 @@ func TestContextApply_Provisioner_ConnInfo(t *testing.T) { pr := testProvisioner() p.ApplyFn = func(s *ResourceState, d *ResourceDiff) (*ResourceState, error) { + if s.ConnInfo == nil || s.ConnInfo.Raw == nil { + t.Fatalf("ConnInfo not initialized") + } + result, _ := testApplyFn(s, d) result.ConnInfo = &ResourceConnectionInfo{ Raw: map[string]interface{}{