Skip to content

Commit ec8cc22

Browse files
add error-case pre and post diff hook
1 parent 6b647b9 commit ec8cc22

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

internal/terraform/node_resource_abstract_instance.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,9 @@ func (n *NodeAbstractResourceInstance) plan(
12131213
// append these new diagnostics if there's at least one error inside.
12141214
if resp.Diagnostics.HasErrors() {
12151215
diags = diags.Append(resp.Diagnostics.InConfigBody(config.Config, n.Addr.String()))
1216+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
1217+
return h.PostDiff(n.HookResourceIdentity(), addrs.NotDeposed, plans.Read, priorVal, proposedNewVal, diags.Err())
1218+
}))
12161219
return nil, nil, deferred, keyData, diags
12171220
}
12181221

@@ -1239,6 +1242,9 @@ func (n *NodeAbstractResourceInstance) plan(
12391242
))
12401243
}
12411244
if diags.HasErrors() {
1245+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
1246+
return h.PostDiff(n.HookResourceIdentity(), addrs.NotDeposed, plans.Read, priorVal, proposedNewVal, diags.Err())
1247+
}))
12421248
return nil, nil, deferred, keyData, diags
12431249
}
12441250

@@ -1257,6 +1263,9 @@ func (n *NodeAbstractResourceInstance) plan(
12571263
diags = diags.Append(writeOnlyDiags)
12581264

12591265
if writeOnlyDiags.HasErrors() {
1266+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
1267+
return h.PostDiff(n.HookResourceIdentity(), addrs.NotDeposed, plans.Read, priorVal, proposedNewVal, diags.Err())
1268+
}))
12601269
return nil, nil, deferred, keyData, diags
12611270
}
12621271
}

internal/terraform/node_resource_plan_instance.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
255255
instanceRefreshState, readDiags = n.readResourceInstanceState(ctx, addr)
256256
diags = diags.Append(readDiags)
257257
if diags.HasErrors() {
258+
// Pre-Diff error hook
259+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
260+
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
261+
}))
258262
return diags
259263
}
260264
}
@@ -267,12 +271,20 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
267271
// refresh step below.
268272
diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, prevRunState))
269273
if diags.HasErrors() {
274+
// Pre-Diff error hook
275+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
276+
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
277+
}))
270278
return diags
271279
}
272280
// Also the refreshState, because that should still reflect schema upgrades
273281
// even if it doesn't reflect upstream changes.
274282
diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, refreshState))
275283
if diags.HasErrors() {
284+
// Pre-Diff error hook
285+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
286+
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
287+
}))
276288
return diags
277289
}
278290
}
@@ -319,6 +331,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
319331
}
320332

321333
if diags.HasErrors() {
334+
// Pre-Diff error hook
335+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
336+
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
337+
}))
322338
return diags
323339
}
324340
}
@@ -329,6 +345,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
329345
// sure we still update any changes to CreateBeforeDestroy.
330346
diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, refreshState))
331347
if diags.HasErrors() {
348+
// Pre-Diff error hook
349+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
350+
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
351+
}))
332352
return diags
333353
}
334354
}
@@ -349,6 +369,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
349369

350370
diags = diags.Append(n.replaceTriggered(ctx, repData))
351371
if diags.HasErrors() {
372+
// Pre-Diff error hook
373+
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
374+
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
375+
}))
352376
return diags
353377
}
354378

0 commit comments

Comments
 (0)