terraform/command
Martin Atkins 8b511524d6
Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978)
* Introduce "Local" terminology for non-absolute provider config addresses

In a future change AbsProviderConfig and LocalProviderConfig are going to
become two entirely distinct types, rather than Abs embedding Local as
written here. This naming change is in preparation for that subsequent
work, which will also include introducing a new "ProviderConfig" type
that is an interface that AbsProviderConfig and LocalProviderConfig both
implement.

This is intended to be largely just a naming change to get started, so
we can deal with all of the messy renaming. However, this did also require
a slight change in modeling where the Resource.DefaultProviderConfig
method has become Resource.DefaultProvider returning a Provider address
directly, because this method doesn't have enough information to construct
a true and accurate LocalProviderConfig -- it would need to refer to the
configuration to know what this module is calling the provider it has
selected.

In order to leave a trail to follow for subsequent work, all of the
changes here are intended to ensure that remaining work will become
obvious via compile-time errors when all of the following changes happen:
- The concept of "legacy" provider addresses is removed from the addrs
  package, including removing addrs.NewLegacyProvider and
  addrs.Provider.LegacyString.
- addrs.AbsProviderConfig stops having addrs.LocalProviderConfig embedded
  in it and has an addrs.Provider and a string alias directly instead.
- The provider-schema-handling parts of Terraform core are updated to
  work with addrs.Provider to identify providers, rather than legacy
  strings.

In particular, there are still several codepaths here making legacy
provider address assumptions (in order to limit the scope of this change)
but I've made sure each one is doing something that relies on at least
one of the above changes not having been made yet.

* addrs: ProviderConfig interface

In a (very) few special situations in the main "terraform" package we need
to make runtime decisions about whether a provider config is absolute
or local.

We currently do that by exploiting the fact that AbsProviderConfig has
LocalProviderConfig nested inside of it and so in the local case we can
just ignore the wrapping AbsProviderConfig and use the embedded value.

In a future change we'll be moving away from that embedding and making
these two types distinct in order to represent that mapping between them
requires consulting a lookup table in the configuration, and so here we
introduce a new interface type ProviderConfig that can represent either
AbsProviderConfig or LocalProviderConfig decided dynamically at runtime.

This also includes the Config.ResolveAbsProviderAddr method that will
eventually be responsible for that local-to-absolute translation, so
that callers with access to the configuration can normalize to an
addrs.AbsProviderConfig given a non-nil addrs.ProviderConfig. That's
currently unused because existing callers are still relying on the
simplistic structural transform, but we'll switch them over in a later
commit.

* rename LocalType to LocalName

Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
2020-01-31 08:23:07 -05:00
..
cliconfig Replace import paths & set UA string where necessary 2019-10-11 22:40:54 +01:00
clistate terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07:00
e2etest command/e2etest: Fix TestInitProviders 2019-09-06 14:27:16 -07:00
format Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
jsonconfig Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
jsonplan Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
jsonprovider configs/configschema: Introduce the NestingGroup mode for blocks 2019-04-10 14:53:52 -07:00
jsonstate Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
testdata Mildwonkey/tfconfig upgrade (#23670) 2020-01-10 11:54:53 -05:00
webbrowser command: Swappable implementation of launching web browsers 2019-09-09 11:15:24 -07:00
012_config_upgrade.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
apply.go command: New -compact-warnings option 2019-12-10 11:53:14 -08:00
apply_destroy_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
apply_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
autocomplete.go terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07:00
autocomplete_test.go command: use newer version of "complete" library 2017-12-05 10:24:04 -08:00
cli_ui.go adding new AskSecret to ColorizeUi 2015-04-29 13:07:13 -05:00
cli_ui_test.go command/*: colors on error messages (red) 2014-07-12 20:59:16 -07:00
command.go Implement the Enterprise enhanced remote backend 2018-08-03 22:22:55 +02:00
command_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
console.go backend: Allow certain commands to opt out of required variable checks 2019-10-10 10:07:01 -07:00
console_interactive.go command: update "terraform console" for HCL2 2018-10-16 18:46:46 -07:00
console_interactive_solaris.go command: split out and tag code so compilation works on Solaris 2016-11-14 00:32:01 -08:00
console_test.go backend: Allow certain commands to opt out of required variable checks 2019-10-10 10:07:01 -07:00
debug_command.go Add debug command with json2dot 2016-11-21 11:59:20 -05:00
debug_json2dot.go commands: make sure the correct flagset is used 2018-11-23 16:13:34 +01:00
debug_json2dot_test.go cleanup temp files from command tests 2018-03-28 13:08:38 -04:00
flag_kv.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
flag_kv_test.go command: use helper/variables for flags and parsing 2016-12-10 14:30:40 -05:00
fmt.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
fmt_test.go Normalize in the fmt -check test 2019-06-18 17:15:59 -04:00
get.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
get_test.go command: Update "terraform get" to use the new module installer 2019-01-17 16:52:34 -08:00
graph.go Update docs to reflect current behavior 2020-01-08 16:51:42 -05:00
graph_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
hook_module_install.go Move module install functionality over to internal/initwd 2019-01-14 11:33:21 -08:00
hook_ui.go Merge pull request #18823 from minamijoyo/fix-multibyte-trucate 2019-08-06 14:24:24 -04:00
hook_ui_test.go Merge pull request #18823 from minamijoyo/fix-multibyte-trucate 2019-08-06 14:24:24 -04:00
import.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
import_test.go use LegacyString() consistently 2019-12-09 11:34:36 -05:00
init.go command: use backend config from state when backend=false is used. (#23802) 2020-01-07 15:07:06 -05:00
init_test.go command/show: fix issue with show and aliased provider (#23848) 2020-01-13 15:10:00 -05:00
internal_plugin.go command/internal-plugin: Strip off TF_CLI_ARGS arguments 2019-12-05 15:00:51 -08:00
internal_plugin_list.go provisioner: new Puppet provisioner (#18851) 2019-06-10 15:31:21 -04:00
internal_plugin_test.go command/internal-plugin: Strip off TF_CLI_ARGS arguments 2019-12-05 15:00:51 -08:00
login.go Replace import paths & set UA string where necessary 2019-10-11 22:40:54 +01:00
login_test.go Replace import paths & set UA string where necessary 2019-10-11 22:40:54 +01:00
meta.go command: Accept a "provider source" from the main package 2020-01-24 13:45:37 -08:00
meta_backend.go command: use backend config from state when backend=false is used. (#23802) 2020-01-07 15:07:06 -05:00
meta_backend_migrate.go don't store prepared backend config 2019-05-24 14:51:18 -04:00
meta_backend_test.go command: use backend config from state when backend=false is used. (#23802) 2020-01-07 15:07:06 -05:00
meta_config.go don't print just warnings when loading backend cfg 2019-12-06 10:20:23 -05:00
meta_new.go prune dead code from command/meta 2019-07-18 16:11:41 -04:00
meta_test.go backend/local: Handle interactive prompts for variables in UI layer 2019-10-10 10:07:01 -07:00
meta_vars.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
output.go command/output: Absence of outputs is not an error 2019-11-06 16:26:32 -08:00
output_test.go command/output: Absence of outputs is not an error 2019-11-06 16:26:32 -08:00
plan.go command: New -compact-warnings option 2019-12-10 11:53:14 -08:00
plan_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
plugins.go command: rename choosePlugins to chooseProviders to clarify scope of function 2019-12-09 09:47:09 -05:00
plugins_lock.go Standardize on log level "WARN" rather than "WARNING" 2018-01-16 18:05:26 -08:00
plugins_lock_test.go cleanup temp files from command tests 2018-03-28 13:08:38 -04:00
plugins_test.go command/show: fix issue with show and aliased provider (#23848) 2020-01-13 15:10:00 -05:00
providers.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
providers_schema.go backend: Allow certain commands to opt out of required variable checks 2019-10-10 10:07:01 -07:00
providers_schema_test.go Standardise directory name for test data 2019-06-30 10:16:15 +02:00
providers_test.go command: Fix tests for "terraform providers" 2018-10-16 19:14:11 -07:00
push.go command: remove "terraform push" 2018-10-16 18:24:47 -07:00
refresh.go command: New -compact-warnings option 2019-12-10 11:53:14 -08:00
refresh_test.go fixup some test comparisons 2019-11-07 17:49:03 -05:00
show.go command: "terraform show" renders plans like "terraform plan" 2019-11-06 06:53:32 -08:00
show_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
state_command.go Thread the environment through all commands 2017-02-28 16:35:46 -05:00
state_list.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
state_list_test.go command/state: update and fix the state list command 2018-10-19 16:31:12 +02:00
state_meta.go command: Fix various issues in the "terraform state ..." subcommands 2019-03-18 09:19:55 -07:00
state_mv.go remove stale dependencies on `state mv` 2020-01-06 15:06:41 -05:00
state_mv_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
state_pull.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
state_pull_test.go command: Use statemgr.Import and statemgr.Export for state push and pull 2018-11-19 09:02:35 -08:00
state_push.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
state_push_test.go command/state: lock when pushing state 2018-11-20 11:15:16 +01:00
state_rm.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
state_rm_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
state_show.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
state_show_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
state_test.go command: Allow tests to run to completion without panics or hangs 2018-10-16 19:14:11 -07:00
taint.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
taint_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
ui_input.go Make sure UIInput keeps working after being canceled 2019-04-29 15:15:26 +02:00
ui_input_test.go Make sure UIInput keeps working after being canceled 2019-04-29 15:15:26 +02:00
unlock.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
unlock_test.go check for errors when loading a backend config 2019-03-12 17:57:26 -04:00
untaint.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
untaint_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
validate.go command/validate: warn if unused flags are set on the command line (#22989) 2019-10-14 15:35:33 -04:00
validate_test.go vendor: go get github.com/hashicorp/hcl2@0b64543c968c 2019-06-18 17:37:24 -07:00
version.go command: Use full URL for the download page when prompting for upgrade 2019-11-08 16:10:39 -08:00
version_test.go Implement CLI, version command 2014-05-24 12:04:43 -07:00
workspace_command.go small fix with command usage 'terraform workspace New' 2019-11-03 18:30:03 +01:00
workspace_command_test.go Initial steps towards AbsProviderConfig/LocalProviderConfig separation (#23978) 2020-01-31 08:23:07 -05:00
workspace_delete.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
workspace_list.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
workspace_new.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
workspace_select.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00
workspace_show.go command: discard output from flags package and return errs directly (#22373) 2019-08-16 08:31:21 -04:00