terraform/internal/command
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
..
arguments commands: `terraform add` (#28874) 2021-06-17 12:08:37 -04:00
cliconfig Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
clistate Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
e2etest terraform: use ProtocolVersion from unmanaged providers' reattachConfig to chose the correct PluginClient (#28190) 2021-05-18 10:59:14 -04:00
format skip drift rendering for deposed resources 2021-05-24 15:48:05 -04:00
jsonconfig jsonconfig: properly unwind and enumerate references (#28884) 2021-06-14 09:22:22 -04:00
jsonplan json-output: Omit unchanged resource_drift entries 2021-06-17 15:09:16 -04:00
jsonprovider Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
jsonstate jsonplan and jsonstate: include sensitive_values in state representations (#28889) 2021-06-14 09:19:13 -04:00
testdata terraform: use hcl.MergeBodies instead of configs.MergeBodies for pro… (#29000) 2021-06-25 08:48:47 -04:00
views commands: `terraform add` (#28874) 2021-06-17 12:08:37 -04:00
webbrowser Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
add.go commands: `terraform add` (#28874) 2021-06-17 12:08:37 -04:00
add_test.go commands: `terraform add` (#28874) 2021-06-17 12:08:37 -04:00
apply.go Move plans/ to internal/plans/ 2021-05-17 14:09:07 -07:00
apply_destroy_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
apply_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
autocomplete.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
autocomplete_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
cli_ui.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
cli_ui_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
command.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
command_test.go commands: `terraform add` (#28874) 2021-06-17 12:08:37 -04:00
console.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
console_interactive.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
console_interactive_solaris.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
console_test.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
flag_kv.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
flag_kv_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
fmt.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
fmt_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
get.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
get_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
graph.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
graph_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
hook_module_install.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
import.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
import_test.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
init.go cli: Add -ignore-remote-version flag for init 2021-06-02 15:30:05 -04:00
init_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
login.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
login_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
logout.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
logout_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
meta.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
meta_backend.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
meta_backend_migrate.go cli: Fix state migration version check 2021-06-02 15:23:56 -04:00
meta_backend_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
meta_config.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
meta_dependencies.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
meta_new.go Move plans/ to internal/plans/ 2021-05-17 14:09:07 -07:00
meta_providers.go terraform: use ProtocolVersion from unmanaged providers' reattachConfig to chose the correct PluginClient (#28190) 2021-05-18 10:59:14 -04:00
meta_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
meta_vars.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
output.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
output_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
plan.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
plan_test.go terraform: use hcl.MergeBodies instead of configs.MergeBodies for pro… (#29000) 2021-06-25 08:48:47 -04:00
plugins.go Move plugin/ and plugin6/ to internal/plugin{,6}/ 2021-05-17 14:09:07 -07:00
plugins_lock.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
plugins_lock_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
plugins_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
providers.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
providers_lock.go providers subcommand tests (#28744) 2021-05-19 12:56:16 -04:00
providers_lock_test.go providers subcommand tests (#28744) 2021-05-19 12:56:16 -04:00
providers_mirror.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
providers_mirror_test.go providers subcommand tests (#28744) 2021-05-19 12:56:16 -04:00
providers_schema.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
providers_schema_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
providers_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
push.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
refresh.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
refresh_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
show.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
show_test.go json-output: Omit unchanged resource_drift entries 2021-06-17 15:09:16 -04:00
state_command.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_list.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_list_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_meta.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_mv.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_mv_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_pull.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_pull_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_push.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_push_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_replace_provider.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_replace_provider_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_rm.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
state_rm_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_show.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_show_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
state_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
taint.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
taint_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
test_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
ui_input.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
ui_input_test.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
unlock.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
unlock_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
untaint.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
untaint_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
validate.go Move terraform/ to internal/terraform/ 2021-05-17 14:09:07 -07:00
validate_test.go Move configs/ to internal/configs/ 2021-05-17 14:09:07 -07:00
version.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
version_test.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_command.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_command_test.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
workspace_delete.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_list.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_new.go Move states/ to internal/states/ 2021-05-17 14:09:07 -07:00
workspace_select.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00
workspace_show.go Move command/ to internal/command/ 2021-05-17 14:09:07 -07:00