mirror of
https://github.com/hashicorp/terraform.git
synced 2026-02-03 20:50:59 -05:00
add error-case pre and post diff hook
This commit is contained in:
parent
4b34066cf2
commit
70bed8017b
2 changed files with 33 additions and 0 deletions
|
|
@ -1213,6 +1213,9 @@ func (n *NodeAbstractResourceInstance) plan(
|
|||
// append these new diagnostics if there's at least one error inside.
|
||||
if resp.Diagnostics.HasErrors() {
|
||||
diags = diags.Append(resp.Diagnostics.InConfigBody(config.Config, n.Addr.String()))
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PostDiff(n.HookResourceIdentity(), addrs.NotDeposed, plans.Read, priorVal, proposedNewVal, diags.Err())
|
||||
}))
|
||||
return nil, nil, deferred, keyData, diags
|
||||
}
|
||||
|
||||
|
|
@ -1239,6 +1242,9 @@ func (n *NodeAbstractResourceInstance) plan(
|
|||
))
|
||||
}
|
||||
if diags.HasErrors() {
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PostDiff(n.HookResourceIdentity(), addrs.NotDeposed, plans.Read, priorVal, proposedNewVal, diags.Err())
|
||||
}))
|
||||
return nil, nil, deferred, keyData, diags
|
||||
}
|
||||
|
||||
|
|
@ -1257,6 +1263,9 @@ func (n *NodeAbstractResourceInstance) plan(
|
|||
diags = diags.Append(writeOnlyDiags)
|
||||
|
||||
if writeOnlyDiags.HasErrors() {
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PostDiff(n.HookResourceIdentity(), addrs.NotDeposed, plans.Read, priorVal, proposedNewVal, diags.Err())
|
||||
}))
|
||||
return nil, nil, deferred, keyData, diags
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -255,6 +255,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
|
|||
instanceRefreshState, readDiags = n.readResourceInstanceState(ctx, addr)
|
||||
diags = diags.Append(readDiags)
|
||||
if diags.HasErrors() {
|
||||
// Pre-Diff error hook
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
|
||||
}))
|
||||
return diags
|
||||
}
|
||||
}
|
||||
|
|
@ -267,12 +271,20 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
|
|||
// refresh step below.
|
||||
diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, prevRunState))
|
||||
if diags.HasErrors() {
|
||||
// Pre-Diff error hook
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
|
||||
}))
|
||||
return diags
|
||||
}
|
||||
// Also the refreshState, because that should still reflect schema upgrades
|
||||
// even if it doesn't reflect upstream changes.
|
||||
diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, refreshState))
|
||||
if diags.HasErrors() {
|
||||
// Pre-Diff error hook
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
|
||||
}))
|
||||
return diags
|
||||
}
|
||||
}
|
||||
|
|
@ -319,6 +331,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
|
|||
}
|
||||
|
||||
if diags.HasErrors() {
|
||||
// Pre-Diff error hook
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
|
||||
}))
|
||||
return diags
|
||||
}
|
||||
}
|
||||
|
|
@ -329,6 +345,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
|
|||
// sure we still update any changes to CreateBeforeDestroy.
|
||||
diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, refreshState))
|
||||
if diags.HasErrors() {
|
||||
// Pre-Diff error hook
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
|
||||
}))
|
||||
return diags
|
||||
}
|
||||
}
|
||||
|
|
@ -349,6 +369,10 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext)
|
|||
|
||||
diags = diags.Append(n.replaceTriggered(ctx, repData))
|
||||
if diags.HasErrors() {
|
||||
// Pre-Diff error hook
|
||||
diags = diags.Append(ctx.Hook(func(h Hook) (HookAction, error) {
|
||||
return h.PreDiff(n.HookResourceIdentity(), addrs.NotDeposed, cty.DynamicVal, cty.DynamicVal, diags.Err())
|
||||
}))
|
||||
return diags
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue