opentofu/command
Martin Atkins f2adfb6e2a core: Treat deposed objects the same as orphaned current objects
In many ways a deposed object is equivalent to an orphaned current object
in that the only action we can take with it is to destroy it. However, we
do still need to take some preparation steps in both cases: first, we must
ensure we track the upgraded version of the existing object so that we'll
be able to successfully render our plan, and secondly we must refresh the
existing object to make sure it still exists in the remote system.

We were previously doing these extra steps for orphan objects but not for
deposed ones, which meant that the behavior for deposed objects would be
subtly different and violate the invariants our callers expect in order
to display a plan. This also created the risk that a deposed object
already deleted in the remote system would become "stuck" because
Terraform would still plan to destroy it, which might cause the provider
to return an error when it tries to delete an already-absent object.

This also makes the deposed object planning take into account the
"skipPlanChanges" flag, which is important to get a correct result in
the "refresh only" planning mode.

It's a shame that we have almost identical code handling both the orphan
and deposed situations, but they differ in that the latter must call
different functions to interact with the deposed rather than the current
objects in the state. Perhaps a later change can improve on this with some
more refactoring, but this commit is already a little more disruptive than
I'd like and so I'm intentionally deferring that for another day.
2021-05-13 09:05:06 -07:00
..
arguments command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
cliconfig Grammar nit: "setup" as a verb should be spelled "set up" 2021-01-26 20:39:11 +01:00
clistate clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
e2etest command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
format command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
jsonconfig command/jsonconfig: Add variable sensitive flag 2021-03-26 19:26:11 -04:00
jsonplan command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
jsonprovider command/jsonprovider: bump format version (#28115) 2021-03-22 11:45:36 -04:00
jsonstate don't marshal state with the wrong schema 2021-02-23 10:19:24 -05:00
testdata command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
views core: Treat deposed objects the same as orphaned current objects 2021-05-13 09:05:06 -07:00
webbrowser command: Revert local patch for pkg/browser 2020-12-10 09:27:02 -05:00
apply_destroy_test.go cli: Migrate apply to command views 2021-02-22 11:47:40 -05:00
apply_test.go command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
apply.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
autocomplete_test.go command: use newer version of "complete" library 2017-12-05 10:24:04 -08:00
autocomplete.go terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07: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 plans: Track both the previous run and prior states in the plan 2021-05-05 15:11:05 -07:00
command.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05: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_interactive.go move remaining helper packages to internal 2021-01-20 13:54:00 -05:00
console_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
console.go lang/funcs: add (console-only) TypeFunction (#28501) 2021-04-23 10:29:50 -04:00
flag_kv_test.go command: use helper/variables for flags and parsing 2016-12-10 14:30:40 -05:00
flag_kv.go cli: Improve error for invalid -target flags 2021-02-08 13:48:04 -05:00
fmt_test.go command: remove unused method on pluginSHA256LockFile (#26402) 2020-09-29 08:46:51 -04:00
fmt.go cli: Fix fmt output for multi-line value exprs 2021-03-25 15:40:54 -04:00
get_test.go cli: Remove legacy positional path arguments 2021-02-02 13:21:26 -05:00
get.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
graph_test.go cli: Remove positional plan argument from graph 2021-02-02 13:21:26 -05:00
graph.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
hook_module_install.go Move module install functionality over to internal/initwd 2019-01-14 11:33:21 -08:00
import_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
import.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
init_test.go command tests: plan and init (#28616) 2021-05-05 14:13:20 -04:00
init.go cli: Only rewrite provider locks file if changed 2021-03-29 16:09:07 -04:00
login_test.go Add customized login success output for TFC/E 2021-04-21 21:23:42 -05:00
login.go Split off error MOTD error logging 2021-04-22 09:05:57 -05:00
logout_test.go command/logout: Add terraform logout command 2020-02-06 15:00:55 -05:00
logout.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
meta_backend_migrate.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
meta_backend_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
meta_backend.go call the InConfigBody with addresses 2021-04-06 15:15:52 -04:00
meta_config.go cli: Add initial command views abstraction 2021-02-11 15:06:39 -05:00
meta_dependencies.go command/init: Read, respect, and update provider dependency locks 2020-10-09 09:26:23 -07:00
meta_new.go prune dead code from command/meta 2019-07-18 16:11:41 -04:00
meta_providers.go command: Experimental "terraform test" command 2021-02-22 14:21:45 -08:00
meta_test.go command staticcheck 2020-12-02 13:59:19 -05:00
meta_vars.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
meta.go Add purple to the list of colorstring codes 2021-04-21 21:35:45 -05:00
output_test.go views: Expand test coverage for views.Output 2021-02-16 08:48:31 -05:00
output.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
plan_test.go command tests: plan and init (#28616) 2021-05-05 14:13:20 -04:00
plan.go command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
plugins_lock_test.go command: remove unused method on pluginSHA256LockFile (#26402) 2020-09-29 08:46:51 -04:00
plugins_lock.go command: remove unused method on pluginSHA256LockFile (#26402) 2020-09-29 08:46:51 -04:00
plugins_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
plugins.go run built-in provisioners in-process 2020-12-02 12:45:00 -05:00
providers_lock.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
providers_mirror.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
providers_schema_test.go add support for attributes with nested types in providers schema (#28055) 2021-03-12 08:28:22 -05:00
providers_schema.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
providers_test.go internal: Fix lockfile constraint output for 1.2.* 2020-10-20 10:14:03 -04:00
providers.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
push.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
refresh_test.go command tests: plan and init (#28616) 2021-05-05 14:13:20 -04:00
refresh.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
show_test.go command+backend/local: -refresh-only and drift detection 2021-05-13 09:05:06 -07:00
show.go command/views: Remove baseState argument from plan-rendering views 2021-05-10 09:25:30 -07:00
state_command.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
state_list_test.go command/state list: list resources in nested and expanded modules (#27268) 2020-12-14 11:07:15 -05:00
state_list.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
state_meta.go command/state list: list resources in nested and expanded modules (#27268) 2020-12-14 11:07:15 -05:00
state_mv_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_mv.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
state_pull_test.go deprecate helper/copy 2020-10-08 08:42:16 -04:00
state_pull.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
state_push_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_push.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
state_replace_provider_test.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
state_replace_provider.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
state_rm_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
state_rm.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
state_show_test.go Mildwonkey/providers interface renaming (#27805) 2021-02-18 10:13:43 -05:00
state_show.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -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_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
taint.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
test_test.go command: Experimental "terraform test" command 2021-02-22 14:21:45 -08:00
test.go core: Generalize the idea of a "plan mode", vs just destroy flag 2021-04-27 08:23:54 -07:00
ui_input_test.go Exit with error if UI input scan fails (#26509) 2020-10-21 14:10:06 -04:00
ui_input.go Exit with error if UI input scan fails (#26509) 2020-10-21 14:10:06 -04:00
unlock_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
unlock.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
untaint_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
untaint.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
validate_test.go cli: Migrate validate command to views 2021-03-18 15:56:28 -04:00
validate.go cli: Migrate validate command to views 2021-03-18 15:56:28 -04:00
version_test.go Remove revision from version command 2021-01-12 16:35:30 -05:00
version.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
workspace_command_test.go clistate: Update clistate.Locker for command views 2021-02-16 07:19:22 -05:00
workspace_command.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
workspace_delete.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
workspace_list.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
workspace_new.go command: use -lock=false consistently in -help output 2021-05-12 09:27:37 -07:00
workspace_select.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00
workspace_show.go cli: Add reference to global options to help text 2021-02-22 09:25:56 -05:00