diff --git a/internal/plans/changes_src.go b/internal/plans/changes_src.go index 089881fe09..1548619b53 100644 --- a/internal/plans/changes_src.go +++ b/internal/plans/changes_src.go @@ -602,3 +602,17 @@ func (acs *ActionInvocationInstanceSrc) DeepCopy() *ActionInvocationInstanceSrc ret.ConfigValue = ret.ConfigValue.Copy() return &ret } + +func (needle *ActionInvocationInstanceSrc) FilterLaterActionInvocations(actionInvocations []*ActionInvocationInstanceSrc) []*ActionInvocationInstanceSrc { + needleLat := needle.ActionTrigger.(LifecycleActionTrigger) + + var laterInvocations []*ActionInvocationInstanceSrc + for _, invocation := range actionInvocations { + if lat, ok := invocation.ActionTrigger.(LifecycleActionTrigger); ok { + if lat.TriggeringResourceAddr.Equal(needleLat.TriggeringResourceAddr) && (lat.ActionTriggerBlockIndex > needleLat.ActionTriggerBlockIndex || lat.ActionTriggerBlockIndex == needleLat.ActionTriggerBlockIndex && lat.ActionsListIndex > needleLat.ActionsListIndex) { + laterInvocations = append(laterInvocations, invocation) + } + } + } + return laterInvocations +} diff --git a/internal/terraform/transformer_action_diff.go b/internal/terraform/transformer_action_diff.go index cd3960ed24..c70d995ca1 100644 --- a/internal/terraform/transformer_action_diff.go +++ b/internal/terraform/transformer_action_diff.go @@ -60,7 +60,7 @@ func (t *ActionDiffTransformer) Transform(g *Graph) error { // Find all dependencies between action invocations for _, action := range t.Changes.ActionInvocations { node := invocationMap[action] - others := laterInvocationsfindLaterActionInvocation(t.Changes.ActionInvocations, action) + others := action.FilterLaterActionInvocations(t.Changes.ActionInvocations) for _, other := range others { otherNode := invocationMap[other] g.Connect(dag.BasicEdge(otherNode, node)) @@ -68,17 +68,3 @@ func (t *ActionDiffTransformer) Transform(g *Graph) error { } return nil } - -func laterInvocationsfindLaterActionInvocation(actionInvocations []*plans.ActionInvocationInstanceSrc, needle *plans.ActionInvocationInstanceSrc) []*plans.ActionInvocationInstanceSrc { - needleLat := needle.ActionTrigger.(plans.LifecycleActionTrigger) - - var laterInvocations []*plans.ActionInvocationInstanceSrc - for _, invocation := range actionInvocations { - if lat, ok := invocation.ActionTrigger.(plans.LifecycleActionTrigger); ok { - if lat.TriggeringResourceAddr.Equal(needleLat.TriggeringResourceAddr) && (lat.ActionTriggerBlockIndex > needleLat.ActionTriggerBlockIndex || lat.ActionTriggerBlockIndex == needleLat.ActionTriggerBlockIndex && lat.ActionsListIndex > needleLat.ActionsListIndex) { - laterInvocations = append(laterInvocations, invocation) - } - } - } - return laterInvocations -}