From d7cd58218dd26a1b4442a7befa3cc362882408e9 Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Tue, 10 Oct 2023 12:31:03 +0100 Subject: [PATCH] Resolve version correctly for backend schema (#1453) * desp: bump terraform-schema to c5aaaecd335e * Decouple Terraform version resolution --- go.mod | 2 +- go.sum | 4 ++-- internal/decoder/module_schema.go | 29 +++-------------------------- 3 files changed, 6 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index b480cd77b..c4338bd39 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/hashicorp/terraform-exec v0.19.0 github.com/hashicorp/terraform-json v0.17.1 github.com/hashicorp/terraform-registry-address v0.2.2 - github.com/hashicorp/terraform-schema v0.0.0-20231006123128-72331e948317 + github.com/hashicorp/terraform-schema v0.0.0-20231010111619-c5aaaecd335e github.com/mcuadros/go-defaults v1.2.0 github.com/mh-cbon/go-fmt-fail v0.0.0-20160815164508-67765b3fbcb5 github.com/mitchellh/cli v1.1.5 diff --git a/go.sum b/go.sum index 67e5e6062..8722b1e16 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQH github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o= github.com/hashicorp/terraform-registry-address v0.2.2 h1:lPQBg403El8PPicg/qONZJDC6YlgCVbWDtNmmZKtBno= github.com/hashicorp/terraform-registry-address v0.2.2/go.mod h1:LtwNbCihUoUZ3RYriyS2wF/lGPB6gF9ICLRtuDk7hSo= -github.com/hashicorp/terraform-schema v0.0.0-20231006123128-72331e948317 h1:iErld30gWHZaDapPblnXIh7UpMtemzEfthRby+ub3O4= -github.com/hashicorp/terraform-schema v0.0.0-20231006123128-72331e948317/go.mod h1:e2ZdWyv2u1YQN1xZ6jhOps3KZNuK88Sf+39pvlmnqIc= +github.com/hashicorp/terraform-schema v0.0.0-20231010111619-c5aaaecd335e h1:Q9ydKXzO6X54Pubzp223BuRgEdGZv7MoL16VX5oFXew= +github.com/hashicorp/terraform-schema v0.0.0-20231010111619-c5aaaecd335e/go.mod h1:iPIBxz1xXSnq6UiCMtIJiRh4TIRkh39jXDUj5rzhJHc= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hexops/autogold v1.3.1 h1:YgxF9OHWbEIUjhDbpnLhgVsjUDsiHDTyDfy2lrfdlzo= diff --git a/internal/decoder/module_schema.go b/internal/decoder/module_schema.go index c42866300..05c3b9251 100644 --- a/internal/decoder/module_schema.go +++ b/internal/decoder/module_schema.go @@ -12,9 +12,10 @@ import ( ) func schemaForModule(mod *state.Module, schemaReader state.SchemaReader, modReader state.ModuleCallReader) (*schema.BodySchema, error) { - sm := tfschema.NewSchemaMerger(coreSchema(mod)) + resolvedVersion := tfschema.ResolveVersion(mod.TerraformVersion, mod.Meta.CoreRequirements) + sm := tfschema.NewSchemaMerger(mustCoreSchemaForVersion(resolvedVersion)) sm.SetSchemaReader(schemaReader) - sm.SetTerraformVersion(mod.TerraformVersion) + sm.SetTerraformVersion(resolvedVersion) sm.SetModuleReader(modReader) meta := &tfmodule.Meta{ @@ -30,30 +31,6 @@ func schemaForModule(mod *state.Module, schemaReader state.SchemaReader, modRead return sm.SchemaForModule(meta) } -func coreSchema(mod *state.Module) *schema.BodySchema { - if mod.TerraformVersion != nil { - s, err := tfschema.CoreModuleSchemaForVersion(mod.TerraformVersion) - if err == nil { - return s - } - if mod.TerraformVersion.LessThan(tfschema.OldestAvailableVersion) { - return mustCoreSchemaForVersion(tfschema.OldestAvailableVersion) - } - - return mustCoreSchemaForVersion(tfschema.LatestAvailableVersion) - } - - s, err := tfschema.CoreModuleSchemaForConstraint(mod.Meta.CoreRequirements) - if err == nil { - return s - } - if mod.Meta.CoreRequirements.Check(tfschema.OldestAvailableVersion) { - return mustCoreSchemaForVersion(tfschema.OldestAvailableVersion) - } - - return mustCoreSchemaForVersion(tfschema.LatestAvailableVersion) -} - func mustCoreSchemaForVersion(v *version.Version) *schema.BodySchema { s, err := tfschema.CoreModuleSchemaForVersion(v) if err != nil {