Uh oh!
There was an error while loading. Please reload this page.
direct: Detailed bundle plan - #3636
Merged
Merged
Conversation
deniktemporarily deployed
to
test-trigger-is
September 22, 2025 08:03 — with
GitHub Actions
Inactive
Collaborator
|
denikforce-pushed
the
denik/structvar
branch
2 times, most recently
from
September 24, 2025 14:57
b15d5b4 to
066c861Comparedenik
changed the base branch from
denik/structaccess-structpath2
to
denik/update-get-resource-configSeptember 24, 2025 14:57
deniktemporarily deployed
to
test-trigger-is
September 24, 2025 15:20 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 24, 2025 15:32 — with
GitHub Actions
Inactive
denikforce-pushed
the
denik/update-get-resource-config
branch
from
September 25, 2025 12:32
f79fdac to
57a975bComparedeniktemporarily deployed
to
test-trigger-is
September 25, 2025 12:35 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 13:40 — with
GitHub Actions
Inactive
denik added a commit
that referenced
this pull request
Sep 25, 2025
## Changes Include 'skip' nodes in JSON plan. ## Why We need to process 'skip' resources as well (e.g. to resolve references). Today, we have these nodes in the graph but not in the plan. Once we move to serialized plan #3636 we will build graph from the plan so they must match. This prepares for that (and minimizes that PR). This also gives more information to users of JSON plan, e.g. they can count unchanged count. ## Tests Existing tests.
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 14:17 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 14:29 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 14:42 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 14:52 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 14:54 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 25, 2025 15:02 — with
GitHub Actions
Inactive
denikforce-pushed
the
denik/update-get-resource-config
branch
from
September 25, 2025 15:07
57a975b to
55ce74fComparedeniktemporarily deployed
to
test-trigger-is
September 25, 2025 15:09 — with
GitHub Actions
Inactive
denik
marked this pull request as ready for review
September 25, 2025 15:13
denik
requested review from
andrewnester, anton-107 and pietern
as code ownersSeptember 25, 2025 15:13
deniktemporarily deployed
to
test-trigger-is
September 30, 2025 10:14 — with
GitHub Actions
Inactive
deniktemporarily deployed
to
test-trigger-is
September 30, 2025 10:21 — with
GitHub Actions
Inactive
pietern
approved these changes
Sep 30, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
The JSON plan (output of “bundle debug plan”) is now input to “bundle deploy” internally. This means it contains full information about resources about to be deployed.
The JSON plan stores configs as well as all unresolved fields as map (path -> reference). There is new module, structvar, that supports resolving these references. It does it quickly and without copying the full config for every resolution, like the previous implementation did.
The JSON plan also stores per-field action. This is purely informational, it gives an idea why a certain action for the resource was chosen.
During plan and apply, variable resolution is now done in the node that contains the reference. Previously, it was updated by the node that was referenced. This results in better error messages when resolution does not work and it does not fail resources that themselves have no issues (but have incorrect references pointing to them).
References can now refer to missing field and it works like in terraform (missing_string_field test).
There is slight simplification in how $resources are resolved. All local resolutions (from config) are now done in plan phase. All remote resolutions (from remote state) are now done in apply phase. Previously we could resolve some remote references in plan stage if action was “skip”. This might result in slower deploys, so this is a potential perf regression, to be revisited in the future.
Depends on #3650 & #3646
Other changes:
Why
Having the plan as input to deploy provides a view into deployment that we did not have before, allowing to see exactly what is going to be deployed and why.
This is useful for: