diff --git a/internal/terraform/node_action_apply.go b/internal/terraform/node_action_apply.go index 3d8c36fb6e..2050edc61d 100644 --- a/internal/terraform/node_action_apply.go +++ b/internal/terraform/node_action_apply.go @@ -155,8 +155,8 @@ func (n *nodeActionApply) References() []*addrs.Reference { return refs } -func (n *nodeActionApply) ActionProviders() []addrs.AbsProviderConfig { - ret := []addrs.AbsProviderConfig{} +func (n *nodeActionApply) ActionProviders() []addrs.ProviderConfig { + ret := []addrs.ProviderConfig{} for _, invocation := range n.ActionInvocations { ret = append(ret, invocation.ProviderAddr) } diff --git a/internal/terraform/node_resource_apply_instance.go b/internal/terraform/node_resource_apply_instance.go index f3f533954a..1de5131fc2 100644 --- a/internal/terraform/node_resource_apply_instance.go +++ b/internal/terraform/node_resource_apply_instance.go @@ -475,8 +475,8 @@ func (n *NodeApplyableResourceInstance) checkPlannedChange(ctx EvalContext, plan return diags } -func (n *NodeApplyableResourceInstance) ActionProviders() []addrs.AbsProviderConfig { - ret := []addrs.AbsProviderConfig{} +func (n *NodeApplyableResourceInstance) ActionProviders() []addrs.ProviderConfig { + ret := []addrs.ProviderConfig{} for _, ai := range n.beforeActionInvocations { ret = append(ret, ai.ProviderAddr) } diff --git a/internal/terraform/node_resource_plan.go b/internal/terraform/node_resource_plan.go index 98c7f7b4f6..9008c7234e 100644 --- a/internal/terraform/node_resource_plan.go +++ b/internal/terraform/node_resource_plan.go @@ -684,8 +684,8 @@ func (n *nodeExpandPlannableResource) validForceReplaceTargets(instanceAddrs []a } // GraphNodeActionProviders -func (n *nodeExpandPlannableResource) ActionProviders() []addrs.AbsProviderConfig { - providers := []addrs.AbsProviderConfig{} +func (n *nodeExpandPlannableResource) ActionProviders() []addrs.ProviderConfig { + providers := []addrs.ProviderConfig{} if n.Config == nil || n.Config.Managed == nil || n.Config.Managed.ActionTriggers == nil { return providers } diff --git a/internal/terraform/transform_provider.go b/internal/terraform/transform_provider.go index 30467eefbf..32b1b9def7 100644 --- a/internal/terraform/transform_provider.go +++ b/internal/terraform/transform_provider.go @@ -88,7 +88,7 @@ type GraphNodeProviderConsumer interface { } type GraphNodeActionProviders interface { - ActionProviders() []addrs.AbsProviderConfig + ActionProviders() []addrs.ProviderConfig } // ProviderTransformer is a GraphTransformer that maps resources to providers @@ -317,7 +317,12 @@ func (t *CloseProviderTransformer) Transform(g *Graph) error { continue } - for _, provider := range apc.ActionProviders() { + for _, p := range apc.ActionProviders() { + provider, ok := p.(addrs.AbsProviderConfig) + if !ok { + return fmt.Errorf("%s failed to return a provider reference", dag.VertexName(apc)) + } + closer, ok := cpm[provider.String()] if !ok { return fmt.Errorf("no graphNodeCloseProvider for %s", provider)