opentofu/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_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
apply.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
cli_ui_test.go command/*: colors on error messages (red) 2014-07-12 20:59:16 -07:00
cli_ui.go adding new AskSecret to ColorizeUi 2015-04-29 13:07:13 -05:00
command_test.go Ensure better state normalization 2016-08-12 11:09:50 -04:00
command.go command: Remove second DefaultDataDirectory const (#7666) 2016-07-20 23:55:05 +01:00
counthookaction_string.go Reflect new comment format in stringer.go 2015-11-09 11:38:51 -05:00
flag_kv_test.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
flag_kv.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
fmt_test.go Update HCL to latest, unskip fmt tests 2016-04-27 07:37:47 -05:00
fmt.go command/fmt: Improve documentation for -diff and defaults (#6398) 2016-04-29 00:39:53 +01:00
format_plan_test.go Fix plan output for data sources 2016-06-30 15:34:43 -04:00
format_plan.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_test.go command: put the modules in ".terraform/modules" 2014-10-13 12:05:28 -07:00
get.go command/get: fix typo 2015-09-13 14:40:36 -07:00
graph_test.go terraform: Graph returns *Graph for now 2015-02-19 12:08:32 -08:00
graph.go command: Change module-depth default to -1 2016-01-20 13:58:02 -06:00
hcl_printer.go Strip off extra \n in hcl encoded variables 2016-08-04 17:18:43 -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_count.go Make all terraform package tests pass under -race 2016-07-29 16:12:21 -04:00
hook_state_test.go command: StateHook for continous state updates 2015-02-23 21:57:17 -08:00
hook_state.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_test.go command/import: tests passing 2016-05-11 13:02:34 -07:00
import.go command: UI for import 2016-05-11 13:02:35 -07:00
init_test.go Fixes #5011 - Backend downcased for init 2016-02-05 06:26:12 -06:00
init.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05: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
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
meta_test.go command: Change module-depth default to -1 2016-01-20 13:58:02 -06:00
meta.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05:00
module_storage_test.go fix a bunch of tests from go-getter import 2015-10-15 13:48:58 -07:00
module_storage.go fix a bunch of tests from go-getter import 2015-10-15 13:48:58 -07:00
output_test.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
output.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
plan_test.go Add tests and fix last issues 2016-05-26 19:56:03 -05:00
plan.go command/plan: remove -backup from help text 2016-06-10 18:05:28 -05:00
push_test.go Merge pull request #7989 from hashicorp/jbardin/tf_push 2016-08-05 08:43:51 -04:00
push.go Merge pull request #7989 from hashicorp/jbardin/tf_push 2016-08-05 08:43:51 -04:00
refresh_test.go Ensure better state normalization 2016-08-12 11:09:50 -04:00
refresh.go core: Fix -module for terraform output command 2016-07-29 16:39:59 -05:00
remote_config_test.go remove various typos 2015-09-11 11:56:20 -07:00
remote_config.go core: Allow lists and maps as variable overrides 2016-07-26 15:27:29 -05: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_pull.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
remote_push.go Add -no-color to help text 2015-06-22 13:14:01 +01:00
remote.go Add -no-color to help text 2015-06-22 13:14:01 +01:00
show_test.go core: fix terraform show with remote state 2015-06-16 12:26:04 -05:00
show.go command: Change module-depth default to -1 2016-01-20 13:58:02 -06:00
state_command.go Add terraform state list command 2016-05-10 14:14:47 -04:00
state_list_test.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_meta.go command/state meta: State func 2016-05-11 09:16:48 -07:00
state_mv_test.go command: test for moving into another state file 2016-05-10 13:25:04 -07:00
state_mv.go cli: Fix registration of state mv. 2016-06-22 11:46:38 +03:00
state_show_test.go add command/state show 2016-05-10 14:14:47 -04:00
state_show.go command: compilation works 2016-05-10 17:03:58 -07:00
state_test.go command: compilation works 2016-05-10 17:03:58 -07:00
state.go Use -state-out option when applying from a plan 2016-07-01 14:18:51 -04:00
taint_test.go Add tests and fix last issues 2016-05-26 19:56:03 -05:00
taint.go command: Prevent data resources from being tainted 2016-05-14 08:26:37 -07:00
ui_input_test.go command: UIInput implementation to ask via CLI 2014-09-29 10:56:01 -07:00
ui_input.go helper/scheam: support UI defaults 2014-09-29 14:00:35 -07:00
untaint_test.go Add tests and fix last issues 2016-05-26 19:56:03 -05:00
untaint.go Change taint behaviour to act as a normal resource 2016-05-26 19:55:26 -05:00
validate_test.go Fixing some golint issues on the new validate command 2016-02-08 22:04:24 +00:00
validate.go Fixing some golint issues on the new validate command 2016-02-08 22:04:24 +00:00
version_test.go Implement CLI, version command 2014-05-24 12:04:43 -07:00
version.go fixing version numbers RCs should be labeled x.x.x-rcx 2015-02-07 16:56:56 +01:00