terraform/command
Martin Atkins 40e2fbb8e9 command: init to allow plugin init without backend init
Previously init would crash if given these options:
    -backend=false -get-plugins=true

This is because the state is used as a source of provider dependency
information, and we need to instantiate the backend to get the state.

To avoid the crash, we now use the following adjusted behavior:

- if -backend=true, we behave as before

- if -backend=false, we instead try to instantiate the backend the same
  way any other command would, without modifying its configuration

- if we're able to instantiate the backend, we use it to fetch state
  for dependency resolution purposes

- if the backend is not instantiable then we assume it's not yet
  configured and proceed with a nil state, which may cause us to see an
  incomplete picture of the dependencies but still allows the install
  to succeed. Subsequently running "terraform plan" will not work until
  the backend is (re-)initialized, so the incomplete picture of required
  plugins is safe.
2017-06-21 11:43:28 -07:00
..
clistate Have the clistate Lock use LockWithContext 2017-04-01 17:09:20 -04:00
format command/format: a package for formatting plans/state for output 2017-01-26 14:33:49 -08:00
test-fixtures command: produce provider lock file during "terraform init" 2017-06-09 14:03:59 -07:00
testdata Have backend operations properly unlock state 2017-02-15 14:41:55 -05:00
apply.go Add plugin dir scaffolding 2017-06-15 14:26:12 -04:00
apply_destroy_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
apply_test.go Merge pull request #15032 from hashicorp/jbardin/init 2017-06-12 09:06:32 -04: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 always pass in the full plugin path to dicovery 2017-06-16 14:09:47 -04:00
command_test.go Update tests for the new ProviderResolver interface 2017-06-09 14:03:59 -07:00
console.go have Meta.Backend use a Config rather than loading 2017-06-09 14:03:59 -07:00
console_interactive.go command: split out and tag code so compilation works on Solaris 2016-11-14 00:32:01 -08: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 Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
debug_command.go Add debug command with json2dot 2016-11-21 11:59:20 -05:00
debug_json2dot.go Add debug command with json2dot 2016-11-21 11:59:20 -05:00
debug_json2dot_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
flag_kv.go command: use helper/variables for flags and parsing 2016-12-10 14:30:40 -05:00
flag_kv_test.go command: use helper/variables for flags and parsing 2016-12-10 14:30:40 -05:00
fmt.go command/fmt: Improve documentation for -diff and defaults (#6398) 2016-04-29 00:39:53 +01:00
fmt_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
get.go command: convert to use backends 2017-01-26 14:33:49 -08:00
get_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
graph.go have Meta.Backend use a Config rather than loading 2017-06-09 14:03:59 -07:00
graph_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
hcl_printer.go always quote hcl map keys 2017-02-24 18:32:59 -05:00
hcl_printer_test.go always quote hcl map keys 2017-02-24 18:32:59 -05:00
hook_ui.go it's possible to get a nil diff in PreApply 2017-04-28 21:59:56 -04:00
hook_ui_test.go command/hook_ui: Increase max length of state IDs (#13317) 2017-04-04 15:41:54 +01:00
import.go command: require resource to be in config before import 2017-06-09 14:03:59 -07:00
import_test.go command: require resource to be in config before import 2017-06-09 14:03:59 -07:00
init.go command: init to allow plugin init without backend init 2017-06-21 11:43:28 -07:00
init_test.go command: init to allow plugin init without backend init 2017-06-21 11:43:28 -07:00
internal_plugin.go Set a log prefix for each plugin and remove go-dynect global log prefix (#6336) 2016-05-10 14:49:13 -04:00
internal_plugin_list.go remove "core" distinction 2017-06-12 13:43:54 -04:00
internal_plugin_test.go remove "core" distinction 2017-06-12 13:43:54 -04:00
meta.go Add plugin dir scaffolding 2017-06-15 14:26:12 -04:00
meta_backend.go fix whitespace around backend init success message 2017-06-19 12:08:42 -04:00
meta_backend_migrate.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
meta_backend_test.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
meta_new.go have Meta.Backend use a Config rather than loading 2017-06-09 14:03:59 -07:00
meta_test.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
module_storage.go fix a bunch of tests from go-getter import 2015-10-15 13:48:58 -07:00
module_storage_test.go fix a bunch of tests from go-getter import 2015-10-15 13:48:58 -07:00
output.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
output_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
plan.go Add plugin dir scaffolding 2017-06-15 14:26:12 -04:00
plan_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
plugins.go add -plugin-dir option 2017-06-15 15:23:16 -04:00
plugins_lock.go change providers.json to lock.json 2017-06-09 14:03:59 -07:00
plugins_lock_test.go command: helper to manage the provider plugins lock file 2017-06-09 14:03:59 -07:00
plugins_test.go add -plugin-dir option 2017-06-15 15:23:16 -04:00
providers.go command/providers: Enable processing of meta-parameters 2017-06-10 11:51:06 +01:00
providers_test.go command/providers: Add regression test 2017-06-10 12:02:01 +01:00
push.go command: shallow UI-focused rename of "environment" to "workspace" 2017-06-09 15:01:39 -07:00
push_test.go Don't show plugin init message if there are none 2017-06-19 12:08:42 -04:00
refresh.go Add plugin dir scaffolding 2017-06-15 14:26:12 -04:00
refresh_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
show.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
show_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_command.go Thread the environment through all commands 2017-02-28 16:35:46 -05:00
state_list.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
state_list_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_meta.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
state_mv.go correct spelling mistakes (#13979) 2017-04-27 02:10:04 +12:00
state_mv_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_pull.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
state_pull_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_push.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
state_push_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_rm.go Split Meta back out of StateMeta 2017-03-01 10:20:32 -05:00
state_rm_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_show.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
state_show_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
state_test.go command: tests should move to temporary cwd 2017-02-07 09:11:48 -08:00
taint.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
taint_test.go Clean up LockInfo and LockError and use them 2017-02-15 14:44:43 -05:00
ui_input.go command: initial work on migrating envs, basic cases first 2017-03-01 10:59:17 -08:00
ui_input_test.go command: use bufio.ReadString instead of scanning to get spaces 2016-08-22 12:59:48 -07:00
unlock.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
unlock_test.go Push plugin discovery down into command package 2017-06-09 14:03:59 -07:00
untaint.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
untaint_test.go Clean up LockInfo and LockError and use them 2017-02-15 14:44:43 -05:00
validate.go command/validate: respond to --help 2016-10-27 13:43:01 -04:00
validate_test.go Fixing some golint issues on the new validate command 2016-02-08 22:04:24 +00:00
version.go fixing version numbers RCs should be labeled x.x.x-rcx 2015-02-07 16:56:56 +01:00
version_test.go Implement CLI, version command 2014-05-24 12:04:43 -07:00
workspace_command.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
workspace_command_test.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
workspace_delete.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
workspace_list.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
workspace_new.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00
workspace_select.go command + backend: rename various API objects to "Workspace" terminology 2017-06-09 16:26:25 -07:00