Commit Graph

29530 Commits

Author SHA1 Message Date
Dylan Staley a086f0c1a5 update make website workflow 2021-12-16 16:10:17 -08:00
James Bardin a5017bff2f failing test moved with target 2021-12-16 18:20:49 -05:00
Barrett Clark c647b41d65 Add parallelism back into the tests
Running tests in parallel can help speed up overall test execution. Go
blocks parent tests while child tests run, so it does not fully fan out
as you might expect. It is noticably faster, though. Running 4 or more
concurrent processes knocks over a minute off the total execution time.
2021-12-15 11:37:49 -06:00
James Bardin e22ab70e03
Merge pull request #30171 from hashicorp/jbardin/revert-validate-for-each
use `cty.DynamicVal` for expanded resources during validation
2021-12-15 08:57:43 -05:00
James Bardin 645fcc5f12 test for lookup regression during validation 2021-12-15 08:43:37 -05:00
Dylan Staley 58e4676aea
Merge pull request #30173 from hashicorp/ds.mdx-migration-main
Migrate docs to MDX (main)
2021-12-14 18:58:19 -08:00
Dylan Staley 21cbb5b392 migrate docs to mdx 2021-12-14 18:41:17 -08:00
James Bardin 71b9682e8c ensure there is always a valid return value 2021-12-14 18:02:57 -05:00
James Bardin d469e86331 revert 6b8b0617
Revert the evaluation change from #29862.
While returning a dynamic value for all expanded resources during
validation is not optimal, trying to work around this using unknown maps
and lists is causing other undesirable behaviors during evaluation.
2021-12-14 17:58:10 -05:00
Martin Atkins c4d46e7c6b getmodules: Re-allow git:: source with ref=COMMIT_ID
Earlier versions of this code allowed "ref" to take any value that would
be accepted by "git checkout" as a valid target of a symbolic ref. We
inadvertently accepted a breaking change to upstream go-getter that broke
that as part of introducing a shallow clone optimization, because shallow
clone requires selecting a single branch.

To restore the previous capabilities while retaining the "depth" argument,
here we accept a compromise where "ref" has the stronger requirement of
being a valid named ref in the remote repository if and only if "depth"
is set to a value greater than zero. If depth isn't set or is less than
one, we will do the old behavior of just cloning all of the refs in the
remote repository in full and then switching to refer to the selected
branch, tag, or naked commit ID as a separate step.

This includes a heuristic to generate an additional error message hint if
we get an error from "git clone" and it looks like the user might've been
trying to use "depth" and "ref=COMMIT" together. We can't recognize that
error accurately because it's only reported as human-oriented git command
output, but this heuristic should hopefully minimize situations where we
show it inappropriately.

For now this is a change in the Terraform repository directly, so that we
can expedite the fix to an already-reported regression. After this is
released I tend to also submit a similar set of changes to upstream
go-getter, at which point we can revert Terraform to using the upstream
getter.GitGetter instead of our own local fork.
2021-12-14 11:24:23 -08:00
Martin Atkins b0ff17ef2a getmodules: Inline our own fork of getter.GitGetter
This is a pragmatic temporary solution to allow us to more quickly resolve
an upstream regression in go-getter locally within Terraform, so that the
work to upstream it for other callers can happen asynchronously and with
less time pressure.

This commit doesn't yet include any changes to address the bug, and
instead aims to be functionally equivalent to getter.GitGetter. A
subsequent commit will then address the regression, so that the diff of
that commit will be easier to apply later to the upstream to get the same
effect there.
2021-12-14 11:24:23 -08:00
Chris Arcand 8b8fe2771f
Merge pull request #30142 from hashicorp/chrisarcand/remote-backend-no-workspaces-regression
command/meta_backend: Allow the remote backend to have no workspaces [again]
2021-12-14 09:58:50 -06:00
Chris Arcand 98978b3853 command/meta_backend: Allow the remote backend to have no workspaces [again]
A regression introduced in d72a413ef8

The comment explains, but TLDR: The remote backend actually *depended*
on being able to write it's backend state even though an 'error'
occurred (no workspaces).
2021-12-14 09:50:42 -06:00
Alisdair McDiarmid aa59eb427a
Merge pull request #30151 from hashicorp/f-non-existing-module-instance-crash
core: Fix crash with orphaned module instance
2021-12-14 09:10:41 -05:00
Martin Atkins 096cddb4b7 command/format: Limitation of plans.ResourceInstanceDeleteBecauseNoModule
This is an explicit technical debt note that our plan renderer isn't able
to give a fully-specific hint in this particular case of deletion reason.

This reason code means that at least one of the module instance keys in
the resource's module path doesn't match an instance declared in the
configuration, but the plan data structure doesn't retain enough
information to know which is the first step in the path which refers to
a missing instance, and so we just always return the whole thing.

This would be confusing if we return module.foo[0].module.bar not being
in the configuration as a result of module.foo not using "count"; it would
be better to say "module.foo[0] is not in the configuration" instead.

It would be most ideal to handle all of the different situations that
ResourceInstanceDeleteBecauseWrongRepetition's rendering does, so that we
can go further and explain exactly _why_ that module instance isn't
declared anymore.

We can do neither of those things today because only the Terraform Core
"expander" component knows that information, and we've discarded that
by the time we get to rendering a plan. To fix this one day would require
preserving in the plan information about which module instances are
declared, as a separate sidecar data structure from which resource
instances we're taking actions on, and then using that to identify which
step in addr.Module here first selects an invalid instance.
2021-12-13 10:04:15 -05:00
Martin Atkins ec6fe93fa8 instances: Non-existing module instance has no resource instances
Previously we were treating it as a programming error to ask for the
instances of a resource inside an instance of a module that is declared
but whose declaration doesn't include the given instance key.

However, that's actually a valid situation which can arise if, for
example, the user has changed the repetition/expansion mode for an
existing module call and so now all of the resource instances addresses it
previously contained are "orphaned".

To represent that, we'll instead say that an invalid instance key of a
declared module behaves as if it contains no resource instances at all,
regardless of the configurations of any resources nested inside. This
then gives the result needed to successfully detect all of the former
resource instances as "orphaned" and plan to destroy them.

However, this then introduces a new case for
NodePlannableResourceInstanceOrphan.deleteActionReason to deal with: the
resource configuration still exists (because configuration isn't aware of
individual module/resource instances) but the module instance does not.
This actually allows us to resolve, at least partially, a previous missing
piece of explaining to the user why the resource instances are planned
for deletion in that case, finally allowing us to be explicit to the user
that it's because of the module instance being removed, which
internally we call plans.ResourceInstanceDeleteBecauseNoModule.

Co-authored-by: Alisdair McDiarmid <alisdair@users.noreply.github.com>
2021-12-13 10:03:50 -05:00
Patrick Decat 6530055d18
website: Refactoring "Renaming a Module Call" should include a moved block 2021-12-09 14:54:19 -08:00
Laura Pacilio 7ae574ba6a
Merge pull request #30082 from c00k133/docs-vars-typo
Docs: Change misspelling of variable in documentation
2021-12-09 16:35:50 -05:00
Laura Pacilio cd8b458b9c
Merge pull request #30118 from marcusway/patch-1
Update docs to use `assume_role` block
2021-12-09 16:35:12 -05:00
Brandon Croft b27c28f341
Merge pull request #30126 from hashicorp/brandonc/go-tfe-0.21.0
Update go-tfe to v0.21.0
2021-12-09 13:58:17 -07:00
Brandon Croft ced4f5500c
update go-tfe to v0.21.0 2021-12-09 13:16:11 -07:00
Marcus Way b202eefc7b
Update docs to use `assume_role` block
I'm guessing this document is just out of date, but I got an error when configuring `assume_role` as an argument and had to add an `assume_role` block
2021-12-08 19:33:17 -05:00
Laura Pacilio 839458c192
Merge pull request #30116 from hashicorp/fix-links-release
Update broken links
2021-12-08 18:04:30 -05:00
Laura Pacilio 168c2885e3 Fix link text 2021-12-08 18:03:26 -05:00
Laura Pacilio 22d80df0ba Fix extra space in link 2021-12-08 18:01:48 -05:00
Laura Pacilio 2edd9f4e10 Update broken links 2021-12-08 17:53:18 -05:00
Martin Atkins 533a29edee website: Shorter heading for the nullable = false variable argument
This makes it match some incoming links we have elsewhere, but also it
makes the heading a bit more consice because "module" isn't really adding
anything here anyway: input variables are _always_ in modules.
2021-12-08 14:08:42 -08:00
Martin Atkins f95dcfe90a website: Fix link from remote backend page to the terraform.workspace docs 2021-12-08 14:08:42 -08:00
Martin Atkins 2cef923495 website: Correct navbar link to the "Refactoring" page
We late-reorganized this into the "Module Development" subsection, but
forgot to update the actual link in the navbar, so it was still linking
to its old location.
2021-12-08 14:08:42 -08:00
Chris Arcand 81136ce5e1
Merge pull request #30102 from hashicorp/tfc-integration-docs-again
Add Terraform Cloud integration docs
2021-12-08 13:20:20 -06:00
Laura Pacilio 70740e9493 Add tutorial to moving resources page 2021-12-08 14:13:47 -05:00
Laura Pacilio 91755d380f udpate to migrating page 2021-12-08 14:01:58 -05:00
Laura Pacilio 0bd3491ef8 Fix typo and update note 2021-12-08 13:55:45 -05:00
Laura Pacilio d0cb88f091 Updates to TFC page in Language 2021-12-08 13:49:58 -05:00
Laura Pacilio ab23ecb210 Change "see" to "refer to" 2021-12-08 13:47:42 -05:00
Laura Pacilio 829e9b4842 Update settings page 2021-12-08 13:45:14 -05:00
Laura Pacilio 502ec81ae2 Update initializing page 2021-12-08 13:37:22 -05:00
Laura Pacilio c713815e33 Add learn callout to usiing TFC index page 2021-12-08 13:09:12 -05:00
Laura Pacilio c17317ded4
Update website/docs/cli/cloud/index.html.md
Co-authored-by: Judith Malnick <judith.patudith@gmail.com>
2021-12-08 13:05:24 -05:00
Judith Malnick d82211ad7b
Keep version note, include introduction and enterprise versioning 2021-12-08 09:49:12 -08:00
Judith Malnick 29b71d873f
Correct bullet
Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com>
2021-12-08 09:48:23 -08:00
Judith Malnick 57cc74ddc4
Correct bullet and break up sentence
Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com>
2021-12-08 09:48:01 -08:00
Judith Malnick 57a27cd1dc
Add intro text to migrating section
Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com>
2021-12-08 09:46:47 -08:00
Judith Malnick 5897c9590c
Clarify background on unique names in TFC 2021-12-08 09:45:18 -08:00
Judith Malnick 310368d464
Move version info to one note 2021-12-08 09:44:32 -08:00
Judith Malnick f514f8eb30
Apply suggestions from code review
Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com>
2021-12-08 09:43:18 -08:00
Martin Atkins 5090462001 website: Terraform v1.1 upgrade guide
Since this is only a minor release there isn't any super-significant
upgrade guide content this time, but I've used this page to elaborate on
some of the upgrade notes already recorded in the Terraform Changelog, to
give additional context if needed to the hopefully-small number of users
that these changes will directly effect during upgrading.
2021-12-08 09:22:34 -08:00
Chris Arcand 099c7269e4 Add Terraform Cloud integration docs 2021-12-07 16:41:48 -06:00
Chris Arcand b80e98ab47 Misc doc edits referencing state/settings 2021-12-07 16:29:51 -06:00
Chris Arcand f521ba6cd7 Remove 'enhanced' backend type distinction
As explained in the changes: The 'enhanced' backend terminology, which
only truly pertains to the 'remote' backend with a single API (Terraform
Cloud/Enterprise's), has been found to be a confusing vestige which need
only be explained in the context of the 'remote' backend.

These changes reorient the explanation(s) of backends to pertain more
directly to their primary purpose, which is storage of state snapshots
(and not implementing operations).

That Terraform operations are still _implemented_ by the literal
`Backend` and `Enhanced` interfaces is inconsequential a user of
Terraform, an internal detail.
2021-12-07 16:29:51 -06:00