Commit Graph

29504 Commits

Author SHA1 Message Date
Alisdair McDiarmid fe8183c4af json: Increment JSON plan format version
The JSON plan configuration data now includes a `full_name` field for
providers. This addition warrants a backwards compatible increment to
the version number.
2022-02-07 15:06:05 -05:00
Alisdair McDiarmid ddc81a204f json: Disregard format version in tests
Instead of manually updating every JSON output test fixture when we
change the format version, disregard any differences when testing.
2022-02-07 15:05:58 -05:00
Alisdair McDiarmid f5b90f84a8 jsonconfig: Improve provider configuration output
When rendering configuration as JSON, we have a single map of provider
configurations at the top level, since these are globally applicable.
Each resource has an opaque key into this map which points at the
configuration data for the provider.

This commit fixes two bugs in this implementation:

- Resources in non-root modules had an invalid provider config key,
  which meant that there was never a valid reference to the provider
  config block. These keys were prefixed with the local module name
  instead of the path to the module. This is now corrected.

- Modules with passed provider configs would point to either an empty
  provider config block or one which is not present at all. This has
  been fixed so that these resources point to the provider config block
  from the calling module (or wherever up the module tree it was
  originally defined).

We also add a "full_name" key-value pair to the provider config block,
with the entire fully-qualified provider name including hostname and
namespace.
2022-02-07 15:05:58 -05:00
Alisdair McDiarmid d1ac8b71d4
Merge pull request #30471 from hashicorp/alisdair/what-even-is-validate
core: Remove unused PlanOpts.Validate
2022-02-04 08:21:09 -05:00
Alisdair McDiarmid 639eb5212f core: Remove unused PlanOpts.Validate
This vestigial field was written to but never read.
2022-02-03 14:16:25 -05:00
Alisdair McDiarmid eea706aaef
Merge pull request #30462 from hashicorp/alisdair/preconditions-postconditions-self-references
configs: Validate pre/postcondition self-refs
2022-02-03 10:11:40 -05:00
Alisdair McDiarmid 7ded73f266 configs: Validate pre/postcondition self-refs
Preconditions and postconditions for resources and data sources may not
refer to the address of the containing resource or data source. This
commit adds a parse-time validation for this rule.
2022-02-03 09:37:22 -05:00
Alisdair McDiarmid 013170dd1b
Update CHANGELOG.md 2022-02-02 15:45:14 -05:00
Alisdair McDiarmid 0634c9437a
Merge pull request #30401 from hashicorp/f-preconditions-postconditions-rebased
Preconditions and Postconditions
2022-02-02 15:31:03 -05:00
Laura Pacilio d3bc3a63dd
Merge pull request #30431 from hashicorp/replace-flag-clarifications
Make -replace flag clearer
2022-02-01 10:47:04 -05:00
Alisdair McDiarmid cdae6d4396 core: Add context tests for pre/post conditions 2022-01-31 15:38:26 -05:00
Alisdair McDiarmid a95ad997e1 core: Document postconditions as valid use of self
This is not currently gated by the experiment only because it is awkward
to do so in the context of evaluationStateData, which doesn't have any
concept of experiments at the moment.
2022-01-31 14:34:35 -05:00
Laura Pacilio a794c80e0d final nits 2022-01-31 14:17:36 -05:00
Laura Pacilio d14e04bf36 Fix notes according to PR feedback 2022-01-31 14:03:03 -05:00
Martin Atkins f1b7f12f1c website: Initial draft docs for Preconditions and Postconditions 2022-01-31 14:02:53 -05:00
Martin Atkins 5573868cd0 core: Check pre- and postconditions for resources and output values
If the configuration contains preconditions and/or postconditions for any
objects, we'll check them during evaluation of those objects and generate
errors if any do not pass.

The handling of post-conditions is particularly interesting here because
we intentionally evaluate them _after_ we've committed our record of the
resulting side-effects to the state/plan, with the intent that future
plans against the same object will keep failing until the problem is
addressed either by changing the object so it would pass the precondition
or changing the precondition to accept the current object. That then
avoids the need for us to proactively taint managed resources whose
postconditions fail, as we would for provisioner failures: instead, we can
leave the resolution approach up to the user to decide.

Co-authored-by: Alisdair McDiarmid <alisdair@users.noreply.github.com>
2022-01-31 14:02:53 -05:00
Laura Pacilio a2f83ef7b6 Try to fix wording so it's clearer and more cohesive 2022-01-28 15:28:35 -05:00
Laura Pacilio 6e80276cc9 Remove invisible space 2022-01-28 14:44:56 -05:00
Martin Atkins c827c049fe terraform: Precondition and postcondition blocks generate dependencies
If a resource or output value has a precondition or postcondition rule
then anything the condition depends on is a dependency of the object,
because the condition rules will be evaluated as part of visiting the
relevant graph node.
2022-01-28 11:00:29 -05:00
Martin Atkins 9076400436 configs: Decode preconditions and postconditions
This allows precondition and postcondition checks to be declared for
resources and output values as long as the preconditions_postconditions
experiment is enabled.

Terraform Core doesn't currently know anything about these features, so
as of this commit declaring them does nothing at all.
2022-01-28 11:00:29 -05:00
Martin Atkins 82c518209d experiments: New "preconditions_postconditions" experiment 2022-01-28 11:00:29 -05:00
Martin Atkins 4f41a0a1fe configs: Generalize "VariableValidation" as "CheckRule"
This construct of a block containing a condition and an error message will
be useful for other sorts of blocks defining expectations or contracts, so
we'll give it a more generic name in anticipation of it being used in
other situations.
2022-01-28 11:00:29 -05:00
Laura Pacilio f56c7c1c85 Make language in callouts more user friendly 2022-01-27 17:05:45 -05:00
Laura Pacilio dca94a9eaf fix verb tense 2022-01-27 16:58:17 -05:00
Laura Pacilio aa3a046af3 final nits 2022-01-27 16:56:50 -05:00
Laura Pacilio 1a66861aaf A couple other tweaks 2022-01-27 16:53:25 -05:00
Laura Pacilio 238396567d Making replace flag clearer and making plan options clearer 2022-01-27 16:00:08 -05:00
Craig Wright 0900c7e0bb
Merge pull request #30397 from auroat/improve-docs
Improve the help.go docs: typo and a more explicit comment.

Merged after discussion with @apparentlymart.
2022-01-27 09:56:25 -08:00
Laura Pacilio a855f04281
Merge pull request #30428 from hashicorp/fix-last-intro-nits
Fixing some final typos and nits
2022-01-27 10:52:30 -05:00
Alisdair McDiarmid b8709d3690
Merge pull request #30421 from hashicorp/alisdair/plan-write-state-ordering
core: Fix plan write/state write ordering bug
2022-01-27 08:56:00 -05:00
Alisdair McDiarmid 64c7743793
Merge pull request #30408 from hashicorp/alisdair/pr-merge-changelog-reminder
Add merged pull request reminder 📎
2022-01-27 07:23:13 -05:00
Laura Pacilio 6a02fbaef3 Fixing some final typos and nits that robin found! 2022-01-26 20:06:49 -05:00
Craig Wright ca02b55fba
Merge pull request #30409 from tyron/fix-module-outputs-reference
Fix reference to child module in outputs docs
2022-01-26 15:47:42 -08:00
Laura Pacilio df745af29f
Merge pull request #30425 from hashicorp/fix-intro-page-images
fix image references on intro page
2022-01-26 18:42:53 -05:00
Laura Pacilio 4188c4c518 fix image references on intro page 2022-01-26 18:21:09 -05:00
Laura Pacilio fb4b5c4d81
Merge pull request #30399 from hashicorp/add-new-intro-docs
Revamp Into to Terraform
2022-01-26 17:57:50 -05:00
Laura Pacilio 4ced2181ca Update SDN tutorials to recommended ones 2022-01-26 16:30:05 -05:00
Laura Pacilio d5b0f44e37
Update website/intro/index.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:12:12 -05:00
Laura Pacilio 8ab9edf8ca
Update website/intro/index.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:12:04 -05:00
Laura Pacilio 4a8b4b311d
Update website/intro/use-cases.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:52 -05:00
Laura Pacilio 2201ebc075
Update website/intro/use-cases.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:47 -05:00
Laura Pacilio 2209b00167
Update website/intro/use-cases.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:42 -05:00
Laura Pacilio 0539155943
Update website/intro/use-cases.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:31 -05:00
Laura Pacilio 283e3c8ddb
Update website/intro/use-cases.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:24 -05:00
Laura Pacilio 10b1f85991
Update website/intro/use-cases.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:16 -05:00
Laura Pacilio 2402431679
Update website/intro/terraform-editions.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:11:10 -05:00
Laura Pacilio f767628163
Update website/intro/terraform-editions.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:10:54 -05:00
Laura Pacilio 749507dd6a
Update website/intro/terraform-editions.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:10:34 -05:00
Laura Pacilio 044ed1c65a
Update website/intro/terraform-editions.mdx
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2022-01-26 16:10:27 -05:00
Alisdair McDiarmid 636499830b Add merged pull request reminder 2022-01-26 15:52:54 -05:00