From 6e2618d9be6f978bc60708cf23a5a6e87a417ba5 Mon Sep 17 00:00:00 2001 From: Kristin Laemmert Date: Fri, 14 Feb 2020 09:35:23 -0500 Subject: [PATCH] terraform: ProviderTransform gets provider fqn from module Added configs.Module.ProviderForLocalProviderConfig which allows terraform.ProviderTransformer to get the provider FQN from the module, instead of assuming NewLegacyProvider. --- configs/module.go | 8 ++++++++ terraform/transform_provider.go | 7 +------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/configs/module.go b/configs/module.go index 8bc45f375..1aba88172 100644 --- a/configs/module.go +++ b/configs/module.go @@ -457,3 +457,11 @@ func (m *Module) LocalNameForProvider(p addrs.Provider) string { return p.Type } } + +// ProviderForLocalConfig returns the provider FQN for a given LocalProviderConfig +func (m *Module) ProviderForLocalConfig(pc addrs.LocalProviderConfig) addrs.Provider { + if provider, exists := m.ProviderRequirements[pc.String()]; exists { + return provider.Type + } + return addrs.NewLegacyProvider(pc.LocalName) +} diff --git a/terraform/transform_provider.go b/terraform/transform_provider.go index f1f6f3d3c..fe93a7eb9 100644 --- a/terraform/transform_provider.go +++ b/terraform/transform_provider.go @@ -587,12 +587,7 @@ func (t *ProviderConfigTransformer) transformSingle(g *Graph, c *configs.Config) // add all providers from the configuration for _, p := range mod.ProviderConfigs { - relAddr := p.Addr() - - // FIXME: This relies on the assumption that all providers are - // LegacyProviders, and will instead need to lookup the FQN in the - // config from the provider local name when that is supported. - fqn := addrs.NewLegacyProvider(relAddr.LocalName) + fqn := mod.ProviderForLocalConfig(p.Addr()) addr := addrs.AbsProviderConfig{ Provider: fqn, Alias: p.Alias,