terraform/internal
Kristin Laemmert 096010600d
terraform: use hcl.MergeBodies instead of configs.MergeBodies for pro… (#29000)
* terraform: use hcl.MergeBodies instead of configs.MergeBodies for provider configuration

Previously, Terraform would return an error if the user supplied provider configuration via interactive input iff the configuration provided on the command line was missing any required attributes - even if those attributes were already set in config.

That error came from configs.MergeBody, which was designed for overriding valid configuration. It expects that the first ("base") body has all required attributes. However in the case of interactive input for provider configuration, it is perfectly valid if either or both bodies are missing required attributes, as long as the final body has all required attributes. hcl.MergeBodies works very similarly to configs.MergeBodies, with a key difference being that it only checks that all required attributes are present after the two bodies are merged.

I've updated the existing test to use interactive input vars and a schema with all required attributes. This test failed before switching from configs.MergeBodies to hcl.MergeBodies.

* add a command package test that shows that we can still have providers with dynamic configuration + required + interactive input merging

This test failed when buildProviderConfig still used configs.MergeBodies instead of hcl.MergeBodies
2021-06-25 08:48:47 -04:00
..
addrs configs: add decodeMovedBlock behind a locked gate. (#28973) 2021-06-21 10:53:16 -04:00
backend Remote backend: Stop setting message when creating runs 2021-06-09 11:07:39 -07:00
builtin return diagnostics from provisioners 2021-05-19 11:24:54 -04:00
command terraform: use hcl.MergeBodies instead of configs.MergeBodies for pro… (#29000) 2021-06-25 08:48:47 -04:00
communicator Quoting filesystem path in scp command argument (#28626) 2021-06-15 10:04:01 -07:00
configs configs: add decodeMovedBlock behind a locked gate. (#28973) 2021-06-21 10:53:16 -04:00
copy deprecate helper/copy 2020-10-08 08:42:16 -04:00
dag Move tfdiags/ to internal/tfdiags/ 2021-05-17 14:09:07 -07:00
depsfile Move addrs/ to internal/addrs/ 2021-05-17 14:09:07 -07:00
didyoumean didyoumean: move from "helper" to "internal" 2020-10-02 13:35:07 -07:00
e2e Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
earlyconfig Refactoring of module source addresses and module installation 2021-06-03 08:50:34 -07:00
experiments configs: add decodeMovedBlock behind a locked gate. (#28973) 2021-06-21 10:53:16 -04:00
getmodules Refactoring of module source addresses and module installation 2021-06-03 08:50:34 -07:00
getproviders addrs: Rename DefaultRegistryHost to DefaultProviderRegistryHost 2021-06-03 08:50:34 -07:00
grpcwrap Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
helper Grammar nit: "setup" as a verb should be spelled "set up" 2021-01-26 20:39:11 +01:00
httpclient Move httpclient/ to internal/httpclient/ 2021-05-17 14:09:07 -07:00
initwd addrs: ModuleRegistryPackage for representing module registry packages 2021-06-03 08:50:34 -07:00
instances Move addrs/ to internal/addrs/ 2021-05-17 14:09:07 -07:00
lang fixupBody missing MissingItemRange 2021-06-18 09:05:56 -04:00
legacy Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
logging monitor plugin std outputs for unexpected data 2021-05-13 16:57:36 -04:00
modsdir Refactoring of module source addresses and module installation 2021-06-03 08:50:34 -07:00
moduledeps Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
moduletest Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
plans handle unexpected changes to unknown block 2021-06-11 13:13:40 -04:00
plugin Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
plugin6 Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
provider-simple Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
provider-simple-v6 Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
provider-terraform/main Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
providercache tools: remove terraform-bundle. (#28876) 2021-06-03 14:08:04 -04:00
providers Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
provisioner-local-exec/main Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
provisioners Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
registry addrs: ModuleRegistryPackage for representing module registry packages 2021-06-03 08:50:34 -07:00
repl Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
replacefile replacefile: don't create the temporary file in TMPDIR 2020-10-20 16:29:59 -07:00
states Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
terminal terminal: Helpers for doing fmt-ish operations on the streams 2021-02-12 11:24:13 -08:00
terraform terraform: use hcl.MergeBodies instead of configs.MergeBodies for pro… (#29000) 2021-06-25 08:48:47 -04:00
tfdiags Move tfdiags/ to internal/tfdiags/ 2021-05-17 14:09:07 -07:00
tfplugin5 update to match new default branch name (#27909) 2021-02-24 13:36:47 -05:00
tfplugin6 update to match new default branch name (#27909) 2021-02-24 13:36:47 -05:00
typeexpr internal/typeexpr: staticcheck 2020-12-02 13:59:19 -05:00