terraform/command
James Bardin cdb80f68a8 Ensure better state normalization
Fix checksum issue with remote state

If we read a state file with "null" objects in a module and they become
initialized to an empty map the state file may be written out with empty
objects rather than "null", changing the checksum. If we can detect
this, increment the serial number to prevent a conflict in atlas.

Our fakeAtlas test server now needs to decode the state directly rather
than using the ReadState function, so as to be able to read the state
unaltered.

The terraform.State data structures have initialization spread out
throughout the package. More thoroughly initialize State during
ReadState, and add a call to init() during WriteState as another
normalization safeguard.

Expose State.init through an exported Init() method, so that a new State
can be completely realized outside of the terraform package.
Additionally, the internal init now completely walks all internal state
structures ensuring that all maps and slices are initialized.  While it
was mentioned before that the `init()` methods are problematic with too
many call sites, expanding this out better exposes the entry points that
will need to be refactored later for improved concurrency handling.

The State structures had a mix of `omitempty` fields. Remove omitempty
for all maps and slices as part of this normalization process. Make
Lineage mandatory, which is now explicitly set in some tests.
2016-08-12 11:09:50 -04:00
..
test-fixtures Fix variable handling on subsequent pushes 2016-07-28 15:06:53 -04:00
apply.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
apply_destroy_test.go remove various typos 2015-09-11 11:56:20 -07:00
apply_test.go Ensure better state normalization 2016-08-12 11:09:50 -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 command: Remove second DefaultDataDirectory const (#7666) 2016-07-20 23:55:05 +01:00
command_test.go Ensure better state normalization 2016-08-12 11:09:50 -04:00
counthookaction_string.go Reflect new comment format in stringer.go 2015-11-09 11:38:51 -05:00
flag_kv.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
flag_kv_test.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
fmt.go command/fmt: Improve documentation for -diff and defaults (#6398) 2016-04-29 00:39:53 +01:00
fmt_test.go Update HCL to latest, unskip fmt tests 2016-04-27 07:37:47 -05:00
format_plan.go Fix plan output for data sources 2016-06-30 15:34:43 -04:00
format_plan_test.go Fix plan output for data sources 2016-06-30 15:34:43 -04:00
format_state.go core: Fix crash with tainted resource 2016-06-13 09:25:21 +02:00
get.go command/get: fix typo 2015-09-13 14:40:36 -07:00
get_test.go command: put the modules in ".terraform/modules" 2014-10-13 12:05:28 -07:00
graph.go command: Change module-depth default to -1 2016-01-20 13:58:02 -06:00
graph_test.go terraform: Graph returns *Graph for now 2015-02-19 12:08:32 -08:00
hcl_printer.go Strip off extra \n in hcl encoded variables 2016-08-04 17:18:43 -04:00
hook_count.go Make all terraform package tests pass under -race 2016-07-29 16:12:21 -04:00
hook_count_action.go terraform: orphans should call post-apply hook [GH-1938] 2015-06-25 20:11:29 -07:00
hook_count_test.go command: Do not count data sources in plan totals 2016-07-11 17:27:56 -05:00
hook_state.go command: StateHook for continous state updates 2015-02-23 21:57:17 -08:00
hook_state_test.go command: StateHook for continous state updates 2015-02-23 21:57:17 -08:00
hook_ui.go Make all terraform package tests pass under -race 2016-07-29 16:12:21 -04:00
import.go command: UI for import 2016-05-11 13:02:35 -07:00
import_test.go command/import: tests passing 2016-05-11 13:02:34 -07:00
init.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
init_test.go Fixes #5011 - Backend downcased for init 2016-02-05 06:26:12 -06: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_core.go Implemented internal plugin calls; which allows us to compile plugins into the main terraform binary 2016-05-10 14:40:11 -04:00
internal_plugin_list.go build: Fix ordering of plugin list 2016-08-09 15:03:24 -04:00
internal_plugin_test.go Implemented internal plugin calls; which allows us to compile plugins into the main terraform binary 2016-05-10 14:40:11 -04:00
meta.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
meta_test.go command: Change module-depth default to -1 2016-01-20 13:58:02 -06: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 core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
output_test.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
plan.go command/plan: remove -backup from help text 2016-06-10 18:05:28 -05:00
plan_test.go Add tests and fix last issues 2016-05-26 19:56:03 -05:00
push.go Merge pull request #7989 from hashicorp/jbardin/tf_push 2016-08-05 08:43:51 -04:00
push_test.go Merge pull request #7989 from hashicorp/jbardin/tf_push 2016-08-05 08:43:51 -04:00
refresh.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
refresh_test.go Ensure better state normalization 2016-08-12 11:09:50 -04:00
remote.go Add -no-color to help text 2015-06-22 13:14:01 +01:00
remote_config.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
remote_config_test.go remove various typos 2015-09-11 11:56:20 -07:00
remote_pull.go Add -no-color to help text 2015-06-22 13:14:01 +01:00
remote_pull_test.go command: when setting up state, only write back if local is newer 2015-03-26 17:16:54 -07:00
remote_push.go Add -no-color to help text 2015-06-22 13:14:01 +01:00
remote_push_test.go command: move remote configuration stuff 2015-03-04 16:17:30 -08:00
show.go command: Change module-depth default to -1 2016-01-20 13:58:02 -06:00
show_test.go core: fix `terraform show` with remote state 2015-06-16 12:26:04 -05:00
state.go Use -state-out option when applying from a plan 2016-07-01 14:18:51 -04:00
state_command.go Add `terraform state list` command 2016-05-10 14:14:47 -04:00
state_list.go Add `terraform state list` command 2016-05-10 14:49:14 -04:00
state_list_test.go Add `terraform state list` command 2016-05-10 14:14:47 -04:00
state_meta.go command/state meta: State func 2016-05-11 09:16:48 -07:00
state_mv.go cli: Fix registration of `state mv`. 2016-06-22 11:46:38 +03:00
state_mv_test.go command: test for moving into another state file 2016-05-10 13:25:04 -07:00
state_show.go command: compilation works 2016-05-10 17:03:58 -07:00
state_show_test.go add command/state show 2016-05-10 14:14:47 -04:00
state_test.go command: compilation works 2016-05-10 17:03:58 -07:00
taint.go command: Prevent data resources from being tainted 2016-05-14 08:26:37 -07:00
taint_test.go Add tests and fix last issues 2016-05-26 19:56:03 -05:00
ui_input.go helper/scheam: support UI defaults 2014-09-29 14:00:35 -07:00
ui_input_test.go command: UIInput implementation to ask via CLI 2014-09-29 10:56:01 -07:00
untaint.go Change taint behaviour to act as a normal resource 2016-05-26 19:55:26 -05:00
untaint_test.go Add tests and fix last issues 2016-05-26 19:56:03 -05:00
validate.go Fixing some golint issues on the new validate command 2016-02-08 22:04:24 +00: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