Commit graph

13 commits

Author SHA1 Message Date
Radek Simko
0fe906fa8c make copyrightfix 2026-02-17 13:56:34 +00:00
Liam Cervante
f82ae44484
stacks: make promises identify themselves (#36749)
* stacks: refactor promises so they declare id when starting

* stacks: add some missing perEval promises

* formatting
2025-03-26 13:25:45 +01:00
Samsondeen
71dbc7d726
migrate command for terraform stacks (#36482) 2025-03-19 10:39:50 +01:00
Liam Cervante
0f0414d484
Fix partial address representation in plan for deferred actions (#34966)
* Fix partial address representation in plan

* reflect new type in stacks
2024-06-20 10:41:23 +02:00
Liam Cervante
b646dff26a
stacks: apply nested default values to inputs (#35349)
* stacks: apply nested default values to inputs

* group similar tests
2024-06-18 12:03:43 +02:00
Martin Atkins
434e199675 stackaddrs: Add HashiCorp copyright comments 2023-11-15 12:38:55 -08:00
Martin Atkins
385e37cae2 stackaddrs: fix some ParseAbsComponentInstance logic errors 2023-11-15 12:38:55 -08:00
Martin Atkins
edc02f2a06 stackaddrs: ConfigComponentForAbsInstance
This helper discards all of the instance keys from an AbsComponentInstance
to find the corresponding ConfigComponent.
2023-11-15 12:38:52 -08:00
Martin Atkins
ebab67b468 stackaddrs: AbsComponentInstance address parsing
Addresses of this type will appear in some of our serialization formats
and so we need a parser function which provides the inverse of the
"String" method of this type.
2023-11-15 12:38:51 -08:00
Martin Atkins
e0797ab913 stackaddrs: Addresses for things inside components
In the stacks model a component is essentially a container for a tree of
normal Terraform modules, and so anything that can appear in a Terraform
module can in principle appear inside a component.

With that in mind here we define a generic type that can represent
anything from package addrs belonging either to a stack configuration
(before instance expansion) or to a stack instance (after instance
expansion), and some aliases for a few combinations that make sense
together, such as stackaddrs.AbsResourceInstance being an
addrs.AbsResourceInstance belonging to a stackaddrs.AbsComponentInstance.

We'll probably add more aliases here later, but this is a starting set
that I expect will arise while implementing the planning-related models
for stacks.
2023-11-15 12:38:51 -08:00
Martin Atkins
59a044dd6f stackeval: The naming of promises
If a stack configuration has a dependency cycle we'll tend to detect it
by the promises failing to resolve due to a self-reference. Describing
that situation to end-users has been historically hard in existing
Terraform's dag-based implementation, and there are some similar
challenges for this promise-based design too.

To deal with it while minimizing runtime overhead in the happy path we'll
teach the various objects to retroactively report names for the promises
they've already instantiated and then only when we encounter the
ErrSelfDependent error will we walk the tree of objects to find
user-friendly names for all of the promises that have contributed to the
results so far.
2023-11-15 12:38:51 -08:00
Martin Atkins
3d503f8e71 stackruntime: Stubbing the "interpreter" for stack configurations 2023-11-15 12:38:51 -08:00
Martin Atkins
e667352553 stacks/stackaddrs: Initial address types for stacks
This serves a similar purpose to the "addrs" package for Terraform overall,
but deals with concepts that are unique to the stacks language.
2023-11-15 12:38:50 -08:00