From d18466445a4b791750b4400cce8a63c1e92c2892 Mon Sep 17 00:00:00 2001 From: Ansgar Mertens Date: Fri, 16 Aug 2024 13:45:57 +0200 Subject: [PATCH 1/3] feat: support storing early decoded deploy config --- internal/features/stacks/decoder/path_reader.go | 4 ++++ internal/features/stacks/state/stack_meta.go | 17 +++++++++++++++++ internal/features/stacks/state/stack_store.go | 2 ++ 3 files changed, 23 insertions(+) diff --git a/internal/features/stacks/decoder/path_reader.go b/internal/features/stacks/decoder/path_reader.go index 6daba71ec..6e9472a54 100644 --- a/internal/features/stacks/decoder/path_reader.go +++ b/internal/features/stacks/decoder/path_reader.go @@ -89,6 +89,8 @@ func stackPathContext(record *state.StackRecord, stateReader CombinedReader) (*d Variables: record.Meta.Variables, Outputs: record.Meta.Outputs, Filenames: record.Meta.Filenames, + Deployments: record.Meta.Deployments, + Stores: record.Meta.Stores, } mergedSchema, err := sm.SchemaForStack(meta) @@ -150,6 +152,8 @@ func deployPathContext(record *state.StackRecord) (*decoder.PathContext, error) Variables: record.Meta.Variables, Outputs: record.Meta.Outputs, Filenames: record.Meta.Filenames, + Deployments: record.Meta.Deployments, + Stores: record.Meta.Stores, } mergedSchema, err := sm.SchemaForDeployment(meta) diff --git a/internal/features/stacks/state/stack_meta.go b/internal/features/stacks/state/stack_meta.go index 2362b4351..34cf9f729 100644 --- a/internal/features/stacks/state/stack_meta.go +++ b/internal/features/stacks/state/stack_meta.go @@ -15,6 +15,9 @@ type StackMetadata struct { Variables map[string]tfstack.Variable Outputs map[string]tfstack.Output ProviderRequirements map[string]tfstack.ProviderRequirement + + Deployments map[string]tfstack.Deployment + Stores map[string]tfstack.Store } func (sm StackMetadata) Copy() StackMetadata { @@ -50,5 +53,19 @@ func (sm StackMetadata) Copy() StackMetadata { } } + if sm.Deployments != nil { + newSm.Deployments = make(map[string]tfstack.Deployment, len(sm.Deployments)) + for k, v := range sm.Deployments { + newSm.Deployments[k] = v + } + } + + if sm.Stores != nil { + newSm.Stores = make(map[string]tfstack.Store, len(sm.Stores)) + for k, v := range sm.Stores { + newSm.Stores[k] = v + } + } + return newSm } diff --git a/internal/features/stacks/state/stack_store.go b/internal/features/stacks/state/stack_store.go index d16e69e43..7c27dccc2 100644 --- a/internal/features/stacks/state/stack_store.go +++ b/internal/features/stacks/state/stack_store.go @@ -301,6 +301,8 @@ func (s *StackStore) UpdateMetadata(path string, meta *tfstack.Meta, mErr error) Outputs: meta.Outputs, Filenames: meta.Filenames, ProviderRequirements: meta.ProviderRequirements, + Deployments: meta.Deployments, + Stores: meta.Stores, } record.MetaErr = mErr From 5d2a40ec3bbe39ae705d155e65bc7bf22e7db952 Mon Sep 17 00:00:00 2001 From: Ansgar Mertens Date: Fri, 16 Aug 2024 13:48:22 +0200 Subject: [PATCH 2/3] chore: add changie entry --- .changes/unreleased/ENHANCEMENTS-20240816-134804.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/unreleased/ENHANCEMENTS-20240816-134804.yaml diff --git a/.changes/unreleased/ENHANCEMENTS-20240816-134804.yaml b/.changes/unreleased/ENHANCEMENTS-20240816-134804.yaml new file mode 100644 index 000000000..0ab056638 --- /dev/null +++ b/.changes/unreleased/ENHANCEMENTS-20240816-134804.yaml @@ -0,0 +1,6 @@ +kind: ENHANCEMENTS +body: Early decode deployment config to support references to store blocks +time: 2024-08-16T13:48:04.258277+02:00 +custom: + Issue: "390" + Repository: terraform-schema From 5926992215d549b034662ab76b31cad04119b867 Mon Sep 17 00:00:00 2001 From: Ansgar Mertens Date: Mon, 19 Aug 2024 10:51:31 +0200 Subject: [PATCH 3/3] Bump terraform-schema to `27f3526` --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cf825fc90..447459768 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/hashicorp/terraform-exec v0.21.0 github.com/hashicorp/terraform-json v0.22.1 github.com/hashicorp/terraform-registry-address v0.2.3 - github.com/hashicorp/terraform-schema v0.0.0-20240815154350-b24c4f7b5a39 + github.com/hashicorp/terraform-schema v0.0.0-20240819084908-27f3526335d0 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 c8657a463..3d42db8a9 100644 --- a/go.sum +++ b/go.sum @@ -229,8 +229,8 @@ github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7 github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= -github.com/hashicorp/terraform-schema v0.0.0-20240815154350-b24c4f7b5a39 h1:5N90p3PaMtyAuwXtTJPtdtKPxOfx7FIC/7zAzuvLfWs= -github.com/hashicorp/terraform-schema v0.0.0-20240815154350-b24c4f7b5a39/go.mod h1:Tc8mlcXI3ulpnC1/Ho4O5DeivcXGfezj0U+igIDE3iA= +github.com/hashicorp/terraform-schema v0.0.0-20240819084908-27f3526335d0 h1:OOg9n6z6hEFIbxAbSdJpb5k3+3M6D/GKckeXMbYI0Dk= +github.com/hashicorp/terraform-schema v0.0.0-20240819084908-27f3526335d0/go.mod h1:Tc8mlcXI3ulpnC1/Ho4O5DeivcXGfezj0U+igIDE3iA= 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=