opentofu/terraform
Kristin Laemmert c7bf43154f
Mildwonkey/eval apply (#27222)
* rename files for consistency with contents

* terraform: refactor EvalValidateSelfref

The EvalValidateSelfref eval node implementation was removed in favor of a regular function.

* terraform: refactor EvalValidateProvisioner

EvalValidateProvisioner is now a method on NodeValidatableResource.

* terraform: refactor EvalValidateResource

EvalValidateResource is now a method on NodeValidatableResource, and the
functions called by (the new) validateResource are now standalone
functions.

This particular refactor gets the prize for "most complicated test
refactoring".

* terraform: refactor EvalMaybeTainted

EvalMaybeTainted was a relatively simple operation which never returned
an error, so I've refactored it into a plain function and moved it into
the only file its called from.

* terraform: eval-related cleanup

De-exported preApplyHook, which got missed in my general cleanup sweeps.

Removed resourceHasUserVisibleApply in favor of moving the logic inline
- it was a single-line check so calling the function was (nearly) as
much code as just checking if the resource was managed.

* terraform: refactor EvalApplyProvisioners

EvalApplyProvisioners.Eval is now a method on
NodeResourceAbstractInstance. There were two "apply"ish functions, so I
named the first "evalApplyProvisioners" since it mainly determined if
provisioners should be run before passing off execution to
applyProvisioners.

* terraform: refactor EvalApply

EvalApply is now a method on NodeAbstractResourceInstance. This was one
of the trickier Eval()s to refactor, and my goal was to change as little
as possible to avoid unintended side effects.

One notable change: there was a createNew boolean that was only used in
NodeApplyableResourceInstance.managedResourceExecute, and that boolean
was populated from the change (which was available from
managedResourceExecute), so I removed it from apply entirely. Out of an
abundance of caution I assigned the value to createNew in (roughtly) the same spot,
in case I was missing some place where the change might get modified.

TODO: Destroy nodes passed nil configs into apply, and I am curious if
we can get the same functionality by checking if the planned change is a
destroy, instead of passing a config into apply. That felt too risky for
this refactor but it is something I would like to explore at a future
point.

There are also a few updates to log output in this PR, since I spent
some time staring at logs and noticed various spots I missed.
2020-12-10 08:05:53 -05:00
..
testdata Avoid double-marking variables 2020-12-04 13:10:02 -05:00
context_apply_test.go terraform: Write state if sensitivity changes 2020-12-03 15:58:54 -05:00
context_components_test.go remove legacy provisioner types 2020-12-02 12:33:17 -05:00
context_components.go remove legacy provisioner types 2020-12-02 12:33:17 -05:00
context_eval_test.go evaluate vars and outputs during import 2020-10-06 17:22:50 -04:00
context_fixtures_test.go remove legacy provisioner types 2020-12-02 12:33:17 -05:00
context_graph_type.go remove refresh! 2020-09-22 10:27:45 -04:00
context_import_test.go remove unused 2020-12-02 13:59:18 -05:00
context_import.go Mildwonkey/ps import (#24412) 2020-03-20 08:15:29 -04:00
context_input_test.go remove legacy ApplyFn from mock provisioner 2020-10-08 13:13:13 -04:00
context_input.go convert /terraform to use new provider config 2020-03-11 11:21:45 -04:00
context_plan_test.go Merge pull request #27131 from hashicorp/pselle/double-marks 2020-12-04 13:21:54 -05:00
context_refresh_test.go don't read data sources that are to be removed 2020-10-22 10:15:22 -04:00
context_test.go remove unused 2020-12-02 13:59:18 -05:00
context_validate_test.go terraform: staticcheck 2020-12-02 13:59:19 -05:00
context.go remove unused 2020-12-02 13:59:18 -05:00
eval_context_builtin_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
eval_context_builtin.go remove unused 2020-12-02 13:59:18 -05:00
eval_context_mock.go Add RefreshState to the eval context 2020-09-17 09:54:59 -04:00
eval_context.go Add RefreshState to the eval context 2020-09-17 09:54:59 -04:00
eval_count.go fixup count transition for refresh state 2020-09-17 09:54:59 -04:00
eval_for_each_test.go core: Annotate for_each errors with expression info 2020-10-29 09:07:48 -07:00
eval_for_each.go remove unused 2020-12-02 13:59:18 -05:00
eval_provider_test.go terraform: remove deprecated or unused Eval() bits 2020-09-29 15:01:24 -04:00
eval_provider.go Eval(): refactor EvalWriteState() (#27145) 2020-12-04 12:44:40 -05:00
eval_variable.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
evaluate_test.go Avoid double-marking variables 2020-12-04 13:10:02 -05:00
evaluate_valid_test.go configs: Fix provider lookup local name mismatch 2020-11-10 15:25:02 -05:00
evaluate_valid.go didyoumean: move from "helper" to "internal" 2020-10-02 13:35:07 -07:00
evaluate.go Avoid double-marking variables 2020-12-04 13:10:02 -05:00
execute.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
features.go output warning flag 2017-11-28 14:18:54 -05:00
graph_builder_apply_test.go remove last use of the apply graph Destroy flag! 2020-10-12 17:29:45 -04:00
graph_builder_apply.go Comment fixing 2020-10-18 13:00:09 -04:00
graph_builder_destroy_plan.go use recorded changes for outputs 2020-10-09 13:13:27 -04:00
graph_builder_eval.go audit graph builder to make them more similar 2020-10-06 17:39:53 -04:00
graph_builder_import.go audit graph builder to make them more similar 2020-10-06 17:39:53 -04:00
graph_builder_plan_test.go remove the need for destroyRootOutputTransformer 2020-10-12 17:29:45 -04:00
graph_builder_plan.go Read orphaned resources during plan 2020-10-22 09:46:42 -04:00
graph_builder_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
graph_builder_validate.go add module expansion to validation 2020-04-05 12:13:48 -04:00
graph_builder.go remove unused 2020-12-02 13:59:18 -05:00
graph_dot_test.go remove unused 2020-12-02 13:59:18 -05:00
graph_dot.go remove unused 2020-12-02 13:59:18 -05:00
graph_interface_subgraph.go rename GraphNodeSubPath -> GraphNodeModuleInstance 2020-03-10 17:25:11 -04:00
graph_test.go remove unused 2020-12-02 13:59:18 -05:00
graph_walk_context.go get rid of EvalEarlyExitError 2020-10-28 14:40:30 -04:00
graph_walk_operation.go remove refresh! 2020-09-22 10:27:45 -04:00
graph_walk_test.go terraform: trying this graphwalker thing 2015-02-19 12:07:56 -08:00
graph_walk.go terraform: remove deprecated or unused Eval() bits 2020-09-29 15:01:24 -04:00
graph.go remove unused 2020-12-02 13:59:18 -05:00
graphtype_string.go remove refresh! 2020-09-22 10:27:45 -04:00
hook_mock.go terraform: More wiring in of new provider types 2018-10-16 19:12:54 -07:00
hook_stop_test.go terraform: stopHook and tests 2014-07-02 16:16:38 -07:00
hook_stop.go get rid of EvalEarlyExitError 2020-10-28 14:40:30 -04:00
hook_test.go add locks to testHook 2020-04-08 10:02:43 -04:00
hook.go remove unused 2020-12-02 13:59:18 -05:00
instance_expanders.go remove requiresInstanceExpansion 2020-05-28 21:30:44 -04:00
node_count_boundary_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_count_boundary.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_data_destroy_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_data_destroy.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_local_test.go Mildwonkey/eval local (#26182) 2020-09-09 15:59:29 -04:00
node_local.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_module_expand_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_module_expand.go core: Annotate for_each errors with expression info 2020-10-29 09:07:48 -07:00
node_module_variable_test.go re-enable and fix module variable tests 2020-10-14 09:10:37 -04:00
node_module_variable.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_output_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_output.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_provider_abstract.go remove unused interfaces 2020-06-24 10:45:58 -04:00
node_provider_eval.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_provider_test.go terraform: Unmark provider configuration arguments 2020-11-16 13:13:20 -05:00
node_provider.go remove unused 2020-12-02 13:59:18 -05:00
node_provisioner.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_resource_abstract_instance_test.go Eval(): refactor EvalWriteState() (#27145) 2020-12-04 12:44:40 -05:00
node_resource_abstract_instance.go Mildwonkey/eval apply (#27222) 2020-12-10 08:05:53 -05:00
node_resource_abstract_test.go Mildwonkey/eval apply (#27222) 2020-12-10 08:05:53 -05:00
node_resource_abstract.go Mildwonkey/eval apply (#27222) 2020-12-10 08:05:53 -05:00
node_resource_apply_instance.go Mildwonkey/eval apply (#27222) 2020-12-10 08:05:53 -05:00
node_resource_apply_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_resource_apply.go remove unused 2020-12-02 13:59:18 -05:00
node_resource_destroy_deposed_test.go terraform: refactor EvalWriteStateDeposed (#27149) 2020-12-07 08:39:20 -05:00
node_resource_destroy_deposed.go Mildwonkey/eval apply (#27222) 2020-12-10 08:05:53 -05:00
node_resource_destroy.go Mildwonkey/eval apply (#27222) 2020-12-10 08:05:53 -05:00
node_resource_plan_destroy.go Eval() Refactor: Plan Edition (#27177) 2020-12-08 08:50:30 -05:00
node_resource_plan_instance.go terraform: refactor EvalValidateSelfref 2020-12-10 08:05:00 -05:00
node_resource_plan_orphan_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_resource_plan_orphan.go Eval() Refactor: Plan Edition (#27177) 2020-12-08 08:50:30 -05:00
node_resource_plan_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_resource_plan.go remove unused 2020-12-02 13:59:18 -05:00
node_resource_validate_test.go terraform: refactor EvalValidateResource 2020-12-10 08:05:00 -05:00
node_resource_validate.go terraform: refactor EvalValidateResource 2020-12-10 08:05:00 -05:00
node_root_variable_test.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_root_variable.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
node_value.go prune unused values based on behavior 2020-04-02 16:00:36 -04:00
provider_mock.go remove legacy import mock 2020-12-02 12:33:17 -05:00
provisioner_mock_test.go remove legacy provisioner types 2020-12-02 12:33:17 -05:00
provisioner_mock.go remove legacy ApplyFn from mock provisioner 2020-10-08 13:13:13 -04:00
reduce_plan_test.go Eval() Refactor: Plan Edition (#27177) 2020-12-08 08:50:30 -05:00
reduce_plan.go Eval() Refactor: Plan Edition (#27177) 2020-12-08 08:50:30 -05:00
resource_provider_mock_test.go remove unused 2020-12-02 13:59:18 -05:00
resource_provider.go remove legacy state types 2020-12-02 12:33:18 -05:00
schemas_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
schemas.go remove unused 2020-12-02 13:59:18 -05:00
terraform_test.go Merge pull request #27081 from hashicorp/jbardin/staticcheck 2020-12-02 15:43:10 -05:00
transform_attach_config_provider_meta.go s/GraphNodeResource/GraphNodeConfigResource/ 2020-03-16 11:16:23 -04:00
transform_attach_config_provider.go minor cleanup 2020-03-12 14:54:47 -04:00
transform_attach_config_resource.go s/GraphNodeResource/GraphNodeConfigResource/ 2020-03-16 11:16:23 -04:00
transform_attach_schema.go terraform: large refactor to use Provider from configs.Resource (#24396) 2020-03-18 08:58:20 -04:00
transform_attach_state.go attach a deep copy of ResourceState 2018-12-17 18:08:53 -05:00
transform_config_test.go NewNodeAbstractResource accepts a ResourceConfig 2020-03-25 17:03:06 -04:00
transform_config.go audit graph builder to make them more similar 2020-10-06 17:39:53 -04:00
transform_count_boundary.go core: Update EvalCountFixZeroOneBoundaryGlobal for new state types 2018-10-16 19:14:11 -07:00
transform_destroy_cbd_test.go terraform: rename mustReourceAddr to mustConfigResourceAddr and add mustAbsResourceAddr 2020-09-25 09:29:18 -04:00
transform_destroy_cbd.go cleanup unused CBD code 2020-09-16 11:14:36 -04:00
transform_destroy_edge_test.go remove unused 2020-12-02 13:59:18 -05:00
transform_destroy_edge.go cleanup unused CBD code 2020-09-16 11:14:36 -04:00
transform_diff_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
transform_diff.go s/GraphNodeResource/GraphNodeConfigResource/ 2020-03-16 11:16:23 -04:00
transform_expand.go GraphNodeExpand is not used 2020-03-10 17:25:11 -04:00
transform_import_state_test.go remove legacy import mock 2020-12-02 12:33:17 -05:00
transform_import_state.go Eval() Refactor: Plan Edition (#27177) 2020-12-08 08:50:30 -05:00
transform_local.go rename plannable local 2020-05-12 11:07:00 -04:00
transform_module_expansion.go don't connect module closers to destroy nodes 2020-09-09 12:23:23 -04:00
transform_module_variable_test.go update test strings 2020-05-12 11:07:00 -04:00
transform_module_variable.go eval variables with unknown expansion data 2020-04-08 15:37:38 -04:00
transform_orphan_count_test.go re-add orphan transformer tests that still apply 2020-12-02 12:33:18 -05:00
transform_orphan_count.go expansion resource and instance orphans 2020-04-02 16:00:35 -04:00
transform_orphan_output.go get rid of the NodeOutputOrphan 2020-05-28 21:30:44 -04:00
transform_orphan_resource_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
transform_orphan_resource.go make the root node a nodeCloseModule for root 2020-04-02 16:00:36 -04:00
transform_output.go handle sensitivity in the OutputChange 2020-10-12 17:29:45 -04:00
transform_provider_test.go remove unused 2020-12-02 13:59:18 -05:00
transform_provider.go remove unused 2020-12-02 13:59:18 -05:00
transform_provisioner_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
transform_provisioner.go make GraphNodeExecutable return diagnostics 2020-10-28 13:47:04 -04:00
transform_reference_test.go remove unused 2020-12-02 13:59:18 -05:00
transform_reference.go remove unused 2020-12-02 13:59:18 -05:00
transform_removed_modules.go pruneUnusedNodesTransformer 2020-05-28 21:30:42 -04:00
transform_resource_count.go s/GraphNodeResource/GraphNodeConfigResource/ 2020-03-16 11:16:23 -04:00
transform_root_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
transform_root.go make the root node a nodeCloseModule for root 2020-04-02 16:00:36 -04:00
transform_state.go cleanup from resource state mods 2020-03-16 11:16:23 -04:00
transform_targets_test.go remove the need for destroyRootOutputTransformer 2020-10-12 17:29:45 -04:00
transform_targets.go re-add ModuleInstance -> Module conversion 2020-08-12 10:22:13 -04:00
transform_transitive_reduction_test.go Mildwonkey/tests (#24522) 2020-04-06 09:24:23 -07:00
transform_transitive_reduction.go terraform: add TransitiveReductionTransformer 2015-02-27 19:18:04 -08:00
transform_variable.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_vertex_test.go terraform: GraphVertexTransformers 2015-02-19 12:07:57 -08:00
transform_vertex.go terraform: GraphVertexTransformers 2015-02-19 12:07:57 -08:00
transform.go remove unused 2020-12-02 13:59:18 -05:00
ui_input_mock.go core: add a context to the UIInput interface 2019-03-08 10:24:40 +01:00
ui_input_prefix_test.go remove unused code (#26503) 2020-10-07 11:00:06 -04:00
ui_input_prefix.go core: add a context to the UIInput interface 2019-03-08 10:24:40 +01:00
ui_input.go command/login: Require "yes" to confirm 2020-06-25 11:46:51 -04:00
ui_output_callback_test.go terraform: provisioners 2015-02-19 12:08:06 -08:00
ui_output_callback.go terraform: provisioners 2015-02-19 12:08:06 -08:00
ui_output_mock_test.go terraform: UIOutput interface 2014-10-04 09:00:07 -07:00
ui_output_mock.go minor race fix in tests 2017-10-02 16:19:01 -04:00
ui_output_provisioner_test.go terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07:00
ui_output_provisioner.go terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07:00
ui_output.go terraform: UIOutput interface 2014-10-04 09:00:07 -07:00
update_state_hook_test.go terraform: refactor EvalWriteStateDeposed (#27149) 2020-12-07 08:39:20 -05:00
update_state_hook.go terraform: refactor EvalWriteStateDeposed (#27149) 2020-12-07 08:39:20 -05:00
upgrade_resource_state_test.go rename files for consistency with contents 2020-12-10 08:05:00 -05:00
upgrade_resource_state.go rename files for consistency with contents 2020-12-10 08:05:00 -05:00
util_test.go Resolve resource provider types in config package 2017-06-09 14:03:59 -07:00
util.go Fix negative parallelism and negative semaphore (#23902) 2020-02-12 10:10:52 -05:00
validate_selfref_test.go terraform: refactor EvalValidateSelfref 2020-12-10 08:05:00 -05:00
validate_selfref.go terraform: refactor EvalValidateSelfref 2020-12-10 08:05:00 -05:00
valuesourcetype_string.go stringer: Regenerate files with latest version 2019-05-13 15:34:27 +01:00
variables_test.go vendor: upgrade go-cty dependency to 1.4.1 (#24983) 2020-05-18 14:10:19 -04:00
variables.go Version tools per Go convention under tools.go 2019-10-17 22:23:39 +02:00
version_required.go terraform: Fix required version constraint diags 2020-08-18 09:35:32 -04:00
walkoperation_string.go remove refresh! 2020-09-22 10:27:45 -04:00