From b4f21b6044ac70bdd687bc5ab826cdab236c856b Mon Sep 17 00:00:00 2001 From: Kristin Laemmert Date: Thu, 6 Feb 2020 09:21:14 -0500 Subject: [PATCH] terraform: fix issue merging provider version constraints A bug in ConfigTreeDependencies, where a pointer was being updated instead of the map value, meant that only the first provider config version constraing to be processes was being stored. This fixes that bug, so now the returned moduledeps.Providers could have multiple version constraints. The responsibility for resolving provider version selection continues to lie in the command package's ProviderResolver (under plugins.go). --- terraform/module_dependencies.go | 6 +++++- terraform/module_dependencies_test.go | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/terraform/module_dependencies.go b/terraform/module_dependencies.go index 83933f6466..afae1a3014 100644 --- a/terraform/module_dependencies.go +++ b/terraform/module_dependencies.go @@ -94,7 +94,11 @@ func configTreeConfigDependencies(root *configs.Config, inheritProviders map[str discoConstraints = discovery.NewConstraints(pCfg.Version.Required) } if existing, exists := providers[fqn]; exists { - existing.Constraints = existing.Constraints.Append(discoConstraints) + constraints := existing.Constraints.Append(discoConstraints) + providers[fqn] = moduledeps.ProviderDependency{ + Constraints: constraints, + Reason: moduledeps.ProviderDependencyExplicit, + } } else { providers[fqn] = moduledeps.ProviderDependency{ Constraints: discoConstraints, diff --git a/terraform/module_dependencies_test.go b/terraform/module_dependencies_test.go index a33569f29b..9834d3c7c7 100644 --- a/terraform/module_dependencies_test.go +++ b/terraform/module_dependencies_test.go @@ -42,7 +42,7 @@ func TestModuleTreeDependencies(t *testing.T) { Name: "root", Providers: moduledeps.Providers{ addrs.NewLegacyProvider("foo"): moduledeps.ProviderDependency{ - Constraints: discovery.ConstraintStr(">=1.0.0").MustParse(), + Constraints: discovery.ConstraintStr(">=1.0.0,>=2.0.0").MustParse(), Reason: moduledeps.ProviderDependencyExplicit, }, }, @@ -213,9 +213,10 @@ func TestModuleTreeDependencies(t *testing.T) { Name: "root", Providers: moduledeps.Providers{ addrs.NewLegacyProvider("foo"): moduledeps.ProviderDependency{ - Constraints: discovery.ConstraintStr(">=1.0.0").MustParse(), + Constraints: discovery.ConstraintStr(">=1.0.0,>=2.0.0").MustParse(), Reason: moduledeps.ProviderDependencyExplicit, }, + addrs.NewLegacyProvider("baz"): moduledeps.ProviderDependency{ Constraints: discovery.AllVersions, Reason: moduledeps.ProviderDependencyFromState,