terraform/command
Pam Selle 0a02e7040f
Store sensitive attribute paths in state (#26338)
* Add creation test and simplify in-place test

* Add deletion test

* Start adding marking from state

Start storing paths that should be marked
when pulled out of state. Implements deep
copy for attr paths. This commit also includes some
comment noise from investigations, and fixing the diff test

* Fix apply stripping marks

* Expand diff tests

* Basic apply test

* Update comments on equality checks to clarify current understanding

* Add JSON serialization for sensitive paths

We need to serialize a slice of cty.Path values to be used to re-mark
the sensitive values of a resource instance when loading the state file.
Paths consist of a list of steps, each of which may be either getting an
attribute value by name, or indexing into a collection by string or
number.

To serialize these without building a complex parser for a compact
string form, we render a nested array of small objects, like so:

[
  [
    { type: "get_attr", value: "foo" },
    { type: "index", value: { "type": "number", "value": 2 } }
  ]
]

The above example is equivalent to a path `foo[2]`.

* Format diffs with map types

Comparisons need unmarked values to operate on,
so create unmarked values for those operations. Additionally,
change diff to cover map types

* Remove debugging printing

* Fix bug with marking non-sensitive values

When pulling a sensitive value from state,
we were previously using those marks to remark
the planned new value, but that new value
might *not* be sensitive, so let's not do that

* Fix apply test

Apply was not passing the second state
through to the third pass at apply

* Consistency in checking for length of paths vs inspecting into value

* In apply, don't mark with before paths

* AttrPaths test coverage for DeepCopy

* Revert format changes

Reverts format changes in format/diff for this
branch so those changes can be discussed on a separate PR

* Refactor name of AttrPaths to AttrSensitivePaths

* Rename AttributePaths/attributePaths for naming consistency

Co-authored-by: Alisdair McDiarmid <alisdair@users.noreply.github.com>
2020-09-24 12:40:17 -04:00
..
cliconfig provider cache: log errors and validate dir exists (#24993) 2020-05-19 15:32:36 -04:00
clistate command/clistate: Return an error on unlock failure (#25729) 2020-09-03 16:05:16 -04:00
e2etest we can roll back the e2e tests 2020-09-22 09:55:19 -04:00
format Store sensitive attribute paths in state (#26338) 2020-09-24 12:40:17 -04:00
jsonconfig Ensure depends_on is in module calls for config 2020-08-20 07:49:03 +10:00
jsonplan command/jsonconfig: Use correct provider address to access schema 2020-04-06 09:24:23 -07:00
jsonprovider Mildwonkey/command tests (#24535) 2020-04-06 09:24:23 -07:00
jsonstate remove a few traces of states.EachMode 2020-04-30 09:22:15 -04:00
testdata command: Providers schema shows required_providers 2020-09-22 10:28:32 -04:00
webbrowser command/login: Fix browser launcher for WSL users 2020-02-13 15:02:40 -05:00
012_config_upgrade.go command: Fix 0.12upgrade stub 2020-06-01 16:12:30 -04:00
012_config_upgrade_test.go command: remove 0.12upgrade (#24403) 2020-03-19 08:01:16 -04:00
013_config_upgrade.go command: Add redirect support to 0.13upgrade 2020-08-31 14:53:35 -04:00
013_config_upgrade_test.go command: Add redirect support to 0.13upgrade 2020-08-31 14:53:35 -04:00
apply.go repl: Improved value renderer for console outputs 2020-09-14 09:47:12 -04:00
apply_destroy_test.go command: apply and most of import tests passing 2020-04-06 09:24:23 -07:00
apply_test.go repl: Improved value renderer for console outputs 2020-09-14 09:47:12 -04: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 remove -mod=vendor from command tests 2020-09-23 17:56:19 -04:00
console.go * backend/local: push responsibility for unlocking state into individual operations 2020-08-11 11:23:42 -04: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 repl: Improved value renderer for console outputs 2020-09-14 09:47:12 -04:00
debug_command.go Add debug command with json2dot 2016-11-21 11:59:20 -05: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 command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
fmt_test.go command/fmt: Include source snippets in errors 2020-03-26 14:00:26 -04:00
get.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -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 command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
graph_test.go fix command tests 2020-08-07 14:13:57 -04:00
hook_module_install.go Move module install functionality over to internal/initwd 2019-01-14 11:33:21 -08:00
hook_ui.go command: Remove stubbed-out apply diff output code 2020-07-22 14:19:00 -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 * backend/local: push responsibility for unlocking state into individual operations 2020-08-11 11:23:42 -04:00
import_test.go terraform: Eval module call arguments for import 2020-08-17 17:14:12 -04:00
init.go command: Better in-house provider install errors 2020-09-01 14:02:19 -04:00
init_test.go command: Better in-house provider install errors 2020-09-01 14:02:19 -04: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: Make the tests compile again 2020-04-06 09:24:23 -07:00
login.go Add scopes support to password grant type 2020-09-15 19:32:41 -04:00
login_test.go Add command/login test for scopes 2020-09-15 19:30:48 -04:00
logout.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
logout_test.go command/logout: Add terraform logout command 2020-02-06 15:00:55 -05:00
meta.go main: new global option -chdir 2020-09-04 15:31:08 -07:00
meta_backend.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
meta_backend_migrate.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
meta_backend_test.go command: Always validate workspace name 2020-08-11 12:33:12 -04: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_providers.go providercache: Lazily detect executable file 2020-07-07 15:18:27 -04:00
meta_test.go Merge pull request #25847 from zachwhaley/fix-tf-cli-args-no-color 2020-08-24 10:13:59 -04:00
meta_vars.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
output.go repl: Improved value renderer for console outputs 2020-09-14 09:47:12 -04:00
output_test.go repl: Improved value renderer for console outputs 2020-09-14 09:47:12 -04:00
plan.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
plan_test.go ReadResource is called during plan but not destroy 2020-09-17 09:55:00 -04:00
plugins.go Typo: heirarchical => hierarchical 2020-07-23 15:09:22 +02: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: Make the tests compile again 2020-04-06 09:24:23 -07:00
providers.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
providers_mirror.go internal/getproviders: decode and return any registry warnings (#25337) 2020-06-25 10:49:48 -04:00
providers_schema.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
providers_schema_test.go command: Make the tests compile again 2020-04-06 09:24:23 -07:00
providers_test.go command/providers: Show provider requirements tree 2020-06-09 14:21:53 -04:00
push.go command: remove "terraform push" 2018-10-16 18:24:47 -07:00
refresh.go command/refresh: fix state file path (#22885) 2020-06-04 10:24:53 -04:00
refresh_test.go remove unused DependsOn usage in state 2020-05-14 15:46:08 -04:00
show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
show_test.go command/show: fix bug displaying provider config in json output of tf plan (#25577) 2020-07-14 15:28:31 -04:00
state_command.go Thread the environment through all commands 2017-02-28 16:35:46 -05:00
state_list.go command: Always validate workspace name 2020-08-11 12:33:12 -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: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_mv.go command: Fix state mv for only resource in module 2020-08-11 11:54:35 -04:00
state_mv_test.go command: Fix state mv for only resource in module 2020-08-11 11:54:35 -04:00
state_pull.go command: Always validate workspace name 2020-08-11 12:33:12 -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: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_push_test.go command/state: lock when pushing state 2018-11-20 11:15:16 +01:00
state_replace_provider.go website: Add docs for state replace-provider 2020-04-23 11:41:57 -04:00
state_replace_provider_test.go vendor: Upgrade mitchellh/cli 2020-09-10 15:23:02 -04:00
state_rm.go command: adjust exit code of state rm (#22300) 2020-06-24 14:03:23 -04:00
state_rm_test.go command: adjust exit code of state rm (#22300) 2020-06-24 14:03:23 -04:00
state_show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
state_show_test.go Mildwonkey/command tests (#24535) 2020-04-06 09:24:23 -07: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: Always validate workspace name 2020-08-11 12:33:12 -04:00
taint_test.go finish provider ModuleInstance replacement 2020-03-11 14:19:52 -04:00
ui_input.go command/login: Require "yes" to confirm 2020-06-25 11:46:51 -04:00
ui_input_test.go Make sure UIInput keeps working after being canceled 2019-04-29 15:15:26 +02:00
unlock.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
unlock_test.go check for errors when loading a backend config 2019-03-12 17:57:26 -04:00
untaint.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
untaint_test.go finish provider ModuleInstance replacement 2020-03-11 14:19:52 -04:00
validate.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00
validate_test.go vendor: go get github.com/hashicorp/hcl2@0b64543c968c 2019-06-18 17:37:24 -07:00
version.go fix outdated message output order 2020-08-11 23:27:29 +01:00
version_test.go test outdated version output 2020-08-12 21:22:39 +01:00
workspace_command.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_command_test.go command: Allow workspace delete with invalid name 2020-08-11 12:33:12 -04:00
workspace_delete.go command: Allow workspace delete with invalid name 2020-08-11 12:33:12 -04:00
workspace_list.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_new.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_select.go command: Simplify Meta.process helper method 2020-04-01 15:01:08 -04:00
workspace_show.go command: Always validate workspace name 2020-08-11 12:33:12 -04:00