Commit Graph

29503 Commits

Author SHA1 Message Date
Laura Pacilio fb61a3d086
Merge pull request #30235 from hashicorp/fix-remote-backend-references
[WIP] Fix remaining remote backend references
2022-01-26 12:01:02 -05:00
Laura Pacilio 9e28fc44cd
Merge branch 'main' into fix-remote-backend-references 2022-01-26 11:47:19 -05:00
Laura Pacilio 53aa84576f
Update website/docs/language/state/remote-state-data.mdx
Co-authored-by: Nick Fagerlund <nick.fagerlund@gmail.com>
2022-01-26 11:43:16 -05:00
Laura Pacilio 1b1b5225a2
Update website/docs/language/state/remote-state-data.mdx
Co-authored-by: Nick Fagerlund <nick.fagerlund@gmail.com>
2022-01-26 11:42:22 -05:00
Laura Pacilio e9d79f5284
Update website/docs/cli/import/index.mdx
Co-authored-by: Nick Fagerlund <nick.fagerlund@gmail.com>
2022-01-26 11:41:57 -05:00
Laura Pacilio 11a450d341 Final editing pass 2022-01-26 11:18:18 -05:00
kmoe c849e61635
Merge pull request #30414 from hashicorp/kmoe/remove-dependabot
Remove dependabot
2022-01-26 15:47:31 +00:00
Katy Moe eaf748f24d remove dependabot 2022-01-26 09:15:01 +00:00
Tyron 322622a0f4
fix reference to module
References to child modules should use the resource name, not their path
2022-01-25 20:54:20 -05:00
Alisdair McDiarmid 0d1a04ec53
Merge pull request #30402 from hashicorp/alisdair/remove-website-link-check
build: Remove broken website link check job
2022-01-24 17:03:12 -05:00
Alisdair McDiarmid 3676b3b157 build: Remove broken website link check job 2022-01-24 16:57:16 -05:00
Laura Pacilio 9953260083
Merge pull request #30296 from hashicorp/fix-provisioners-content
Fix provisioners content
2022-01-24 13:49:28 -05:00
Laura Pacilio 95adde5dc9 Update vs. index page to say "Alternatives" and include a list on the page for SEO 2022-01-24 12:29:54 -05:00
Laura Pacilio f1b36873e1 Update Use Cases page copy 2022-01-24 12:25:20 -05:00
Laura Pacilio 5e61890139 Add editions page and update sidebar 2022-01-24 12:19:19 -05:00
Laura Pacilio a00306474d Add new content for intro page 2022-01-24 12:09:13 -05:00
Aurel Pintea a37d47e955 Improve the help.go docs: typo and a more explicit comment. 2022-01-24 10:52:37 +00:00
Alisdair McDiarmid 5a9bc76d1a
Merge pull request #30316 from superkooks/main
Fix autocomplete for workspace subcommands
2022-01-21 12:01:41 -05:00
Laura Pacilio 20e740ef88 Final formatting and langauge nits 2022-01-21 11:01:37 -05:00
Laura Pacilio 9f4c4ff093 Update note to be more direct :) 2022-01-21 10:48:27 -05:00
Craig Wright f9603d3b14
Merge pull request #30371 from giannakopoulosj/patch-2
Merging docs correction, looks good to me!
2022-01-20 17:18:42 -08:00
Michele Degges 2f465e6047 Update packaging action name 2022-01-20 13:15:19 -08:00
James Bardin 5f2f90faf8
Merge pull request #30363 from ychulovskyy/fix/add-jakarta-region
Update aws-sdk-go dependency to support new region (Jakarta)
2022-01-20 13:21:19 -05:00
Laura Pacilio 1d53273b7a Language nits 2022-01-20 11:28:52 -05:00
Laura Pacilio 29a4591cf2 Fix warning notes 2022-01-20 10:57:38 -05:00
Brian Flad a477d10bd1
Introduce Terraform Plugin Protocol 6.2 with legacy_type_system fields from Protocol 5 (#30375)
Reference: https://github.com/hashicorp/terraform/issues/30373

This change forward ports the `legacy_type_system` boolean fields in the `ApplyResourceChange.Response` and `PlanResourceChange.Response` messages that existed in protocol version 5, so that existing terraform-plugin-sdk/v2 providers can be muxed with protocol version 6 providers (e.g. terraform-plugin-framework) while also taking advantage of the newer protocol features. This functionality should not be used by any providers or SDKs except those built with terraform-plugin-sdk.

Updated via:

```shell
cp docs/plugin-protocol/tfplugin6.1.proto docs/plugin-protocol/tfplugin6.2.proto
# Copy legacy_type_system fields from tfplugin5.2.proto into ApplyResourceChange.Response and PlanResourceChange
rm internal/tfplugin6/tfplugin6.proto
ln -s ../../docs/plugin-protocol/tfplugin6.2.proto internal/tfplugin6/tfplugin6.proto
go run tools/protobuf-compile/protobuf-compile.go `pwd`
# Updates to internal/plugin6/grpc_provider.go
```
2022-01-20 09:57:42 -05:00
GiannakopoulosJ 13907690a2
Typo in zipmap documentation
zipmap does not produce a map with comma in terraform cli
tested with Terraform v1.1.3
2022-01-19 16:02:24 +02:00
Laura Pacilio ec17cbaeee update additional references to overview page 2022-01-18 14:25:28 -08:00
Laura Pacilio 20e9f30c3d formatting nits 2022-01-18 14:25:28 -08:00
Laura Pacilio 63106da0b9 Language updates 2022-01-18 14:25:28 -08:00
Laura Pacilio 5cb8be0d50 Update nav to remove overview page that no longer exists 2022-01-18 14:07:40 -08:00
Laura Pacilio 5d24146f17 Oops edited the wrong layout file 2022-01-18 14:07:40 -08:00
Laura Pacilio bfefb7405e Update layout file to remove deleted page 2022-01-18 14:07:40 -08:00
Laura Pacilio fc4ceedc6d Remove overview page and update notes on provisioner pages 2022-01-18 14:07:40 -08:00
yuriy d4ebed4c09 Updates from 'go mod tidy' 2022-01-17 23:08:39 +01:00
yuriy 08fb9078ea Update aws-sdk-go dependency to support new region (Jakarta) 2022-01-17 09:09:02 +01:00
Krista LaFentres (she/her) 6dcf00aefc
Merge pull request #30344 from hashicorp/lafentres/refactor-show-command
cli: Refactor show command & migrate to command arguments and views
2022-01-13 13:58:53 -06:00
Krista LaFentres 64e1241ae3 backend/local: Remove unused DisablePlanFileStateLineageChecks flag
Now that show command has been refactored to remove its dependence
on a local backend and local run, this flag is no longer needed to
fix #30195.
2022-01-13 11:00:10 -06:00
Krista LaFentres fea8f6cfa2 cli: Migrate show command to use command arguments and views 2022-01-13 11:00:03 -06:00
Krista LaFentres 8d1bced812 cli: Refactor show command to remove dependence on local run and only load the backend when we need it
See https://github.com/hashicorp/terraform/pull/30205#issuecomment-997113175 for more context
2022-01-12 13:47:59 -06:00
Martin Atkins e95f29bf9d lang/funcs: fileexists slightly better "not a file" error message
Previously we were just returning a string representation of the file mode,
which spends more characters on the irrelevant permission bits that it
does on the directory entry type, and is presented in a Unix-centric
format that likely won't be familiar to the user of a Windows system.

Instead, we'll recognize a few specific directory entry types that seem
worth mentioning by name, and then use a generic message for the rest.

The original motivation here was actually to deal with the fact that our
tests for this function were previously not portable due to the error
message leaking system-specific permission detail that are not relevant
to the test. Rather than just directly addressing that portability
problem, I took the opportunity to improve the error messages at the same
time.

However, because of that initial focus there are only actually tests here
for the directory case. A test that tries to test any of these other file
modes would not be portable and in some cases would require superuser
access, so we'll just leave those cases untested for the moment since they
weren't tested before anyway, and so we've not _lost_ any test coverage
here.
2022-01-11 08:46:29 -08:00
Martin Atkins bdc5f152d7 refactoring: Implied move statements can be cross-package
Terraform uses "implied" move statements to represent the situation where
it automatically handles a switch from count to no-count on a resource.
Because that situation requires targeting only a specific resource
instance inside a specific module instance, implied move statements are
always presented as if they had been declared in the root module and then
traversed through the exact module instance path to reach the target
resource.

However, that means they can potentially cross a module package boundary,
if the changed resource belongs to an external module. Normally we
prohibit that to avoid the root module depending on implementation details
of the called module, but Terraform generates these implied statements
based only on information in the called module and so there's no need to
apply that same restriction to implied move statements, which will always
have source and destination addresses belonging to the same module
instance.

This change therefore fixes a misbehavior where Terraform would reject
an attempt to switch from no-count to count in a called module, where
previously the author of the calling configuration had no recourse to fix
it because the change has actually happened upstream.
2022-01-11 08:43:57 -08:00
Laura Pacilio 5f61140655
Merge pull request #30332 from hashicorp/fix-broken-links-1-10
Fix broken links to external docs
2022-01-11 10:40:12 -05:00
Martin Atkins beb9432155 website: CLI state manipulation section de-emphasize old features
Previously the "terraform state ..." subcommands were the only way to
perform various manipulations of the state, but in recent Terraform
versions we have replaced these with better options.

Since these pages seem to already have pretty good search engine
optimization for the use-cases they are describing, we'll prioritize
mentioning the new approaches and only mention the now-deprecated or
de-emphasized features as a secondary approach.

Specifically:
 - Describe the -replace=... planning option in preference to
   "terraform taint", and present taint as primarily a mechanism for
   Terraform to use itself, as opposed to something end-users should
   typically use directly.
 - Introduce the config-based refactoring features before describing
   "terraform state mv".

The older features here are still applicable in some situations and are
required for those still using older versions of Terraform, so we will
retain the information about them for now while aiming to be clearer in
each case about which is our preferred, modern approach.
2022-01-11 07:36:20 -08:00
Laura Pacilio 1b7e7b967d Fix broken links to external docs 2022-01-10 17:49:49 -05:00
James Bardin 28671f9e46
Merge pull request #30329 from hashicorp/jbardin/module-variable-default
remove synthetic default expression for variables
2022-01-10 16:57:38 -05:00
James Bardin 684ed7505d remove synthetic default expression for variables
Now that variable evaluation checks for a nil expression the graph
transformer does not need to generate a synthetic expression for
variable defaults. This means that all default handling is now located
in one place, and we are not surprised by a configuration expression
showing up which doesn't actually exist in the configuration.

Rename nodeModuleVariable.evalModuleCallArgument to evalModuleVariable.
This method is no longer handling only the module call argument, it is
also dealing with the variable declaration defaults and validation
statements.

Add an additional tests for validation with a non-nullable variable.
2022-01-10 16:22:33 -05:00
Martin Atkins dabd7567af
Update CHANGELOG.md 2022-01-10 12:29:10 -08:00
Martin Atkins 9ebc3e1cd2 core: More accurate error message for invalid variable values
In earlier Terraform versions we had an extra validation step prior to
the graph walk which tried to partially validate root module input
variable values (just checking their type constraints) and then return
error messages which specified as accurately as possible where the value
had originally come from.

We're now handling that sort of validation exclusively during the graph
walk so that we can share the main logic between both root module and
child module variable values, but previously that shared code wasn't
able to generate such specific information about where the values had
originated, because it was adapted from code originally written to only
deal with child module variables.

Here then we restore a similar level of detail as before, when we're
processing root module variables. For child module variables, we use
synthetic InputValue objects which state that the value was declared
in the configuration, thus causing us to produce a similar sort of error
message as we would've before which includes a source range covering
the argument expression in the calling module block.
2022-01-10 12:26:54 -08:00
Martin Atkins 36c4d4c241 core and backend: remove redundant handling of default variable values
Previously we had three different layers all thinking they were
responsible for substituting a default value for an unset root module
variable:
 - the local backend, via logic in backend.ParseVariableValues
 - the context.Plan function (and other similar functions) trying to
   preprocess the input variables using
   terraform.mergeDefaultInputVariableValues .
 - the newer prepareFinalInputVariableValue, which aims to centralize all
   of the variable preparation logic so it can be common to both root and
   child module variables.

The second of these was also trying to handle type constraint checking,
which is also the responsibility of the central function and not something
we need to handle so early.

Only the last of these consistently handles both root and child module
variables, and so is the one we ought to keep. The others are now
redundant and are causing prepareFinalInputVariableValue to get a slightly
corrupted view of the caller's chosen variable values.

To rectify that, here we remove the two redundant layers altogether and
have unset root variables pass through as cty.NilVal all the way to the
central prepareFinalInputVariableValue function, which will then handle
them in a suitable way which properly respects the "nullable" setting.

This commit includes some test changes in the terraform package to make
those tests no longer rely on the mergeDefaultInputVariableValues logic
we've removed, and to instead explicitly set cty.NilVal for all unset
variables to comply with our intended contract for PlanOpts.SetVariables,
and similar. (This is so that we can more easily catch bugs in callers
where they _don't_ correctly handle input variables; it allows us to
distinguish between the caller explicitly marking a variable as unset vs.
not describing it at all, where the latter is a bug in the caller.)
2022-01-10 12:26:54 -08:00