terraform/terraform
Martin Atkins da2d91c0e4 core: Re-fix edge case with missing module state during evaluation
In #14526 we fixed a sticky edge-case where a resource with count = 0 set
won't create its containing module state on apply, and thus when another
expression refers to it we need to deal with that absense.

The original bug fixed by #14526 was actually a nil dereference panic in
this case. Our new HCL2-oriented expression evaluation codepath was, on
the other hand, correctly checking for the nil, but was not taking the
correct action in response to it, leading to the result being an
unexpected unknown value.

Here we replicate the fix to #14526 by behaving as if there are just no
instances present in this case. We achieve this in a slightly different
way here by just creating an empty ModuleState, but the effect is the
same as #14526.

This fixes TestContext2Apply_multiVarMissingState.
2018-10-16 18:49:20 -07:00
..
test-fixtures core: provider alias inheritance 2018-10-16 18:49:20 -07:00
context.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
context_apply_test.go core: When planning to destroy an orphan instance, nil it in state 2018-10-16 18:49:20 -07:00
context_components.go
context_components_test.go core: mock provider factory functions for testing 2018-10-16 18:48:28 -07:00
context_fixtures_test.go core: Update tests that use the apply-vars fixture 2018-10-16 18:48:28 -07:00
context_graph_type.go core: Context.Eval method 2018-10-16 18:46:46 -07:00
context_import.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
context_import_test.go core: use testProvider for TestContextImport_moduleProvider 2018-10-16 18:49:20 -07:00
context_input_test.go core: Fix TestContext2Input_submoduleTriggersInvalidCount 2018-10-16 18:49:20 -07:00
context_plan_test.go core: "computed ref type mismatch" test is now a plan test 2018-10-16 18:49:20 -07:00
context_refresh_test.go core: Update context refresh test output to be more useful 2018-10-16 18:49:20 -07:00
context_test.go prefer the existing instance ID in tests 2018-10-16 18:49:20 -07:00
context_validate_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
debug.go terraform: fix compilation by complying with interface 2017-01-20 20:45:06 -08:00
debug_test.go core: fix tests for debug.go 2018-10-16 18:48:28 -07:00
diff.go core: fix string rendering of modules in diffs 2018-10-16 18:48:28 -07:00
diff_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
edge_destroy.go
eval.go core: EvalSequence must continue when only warnings are returned 2018-10-16 18:49:20 -07:00
eval_apply.go core: Don't try to run provisioners with nil state 2018-10-16 18:49:20 -07:00
eval_check_prevent_destroy.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
eval_context.go core: Context.Eval method 2018-10-16 18:46:46 -07:00
eval_context_builtin.go index provider schemas by type 2018-10-16 18:49:20 -07:00
eval_context_builtin_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
eval_context_mock.go core: EvalContextMock code-based mocking of evaluation 2018-10-16 18:48:28 -07:00
eval_count.go core: skip resource validation when count is unknown 2018-10-16 18:48:28 -07:00
eval_count_boundary.go
eval_count_computed.go
eval_diff.go core: When planning to destroy an orphan instance, nil it in state 2018-10-16 18:49:20 -07:00
eval_diff_test.go core: Fix ProcessIgnoreChanges tests 2018-10-16 18:48:28 -07:00
eval_error.go
eval_filter.go
eval_filter_operation.go
eval_if.go
eval_import_state.go core: More TRACE logging for the "terraform import" walk 2018-10-16 18:49:20 -07:00
eval_lang.go core: pass InstanceKey to EvaluateBlock 2018-10-16 18:46:46 -07:00
eval_local.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
eval_local_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
eval_noop.go
eval_output.go core: EvalWriteOutput handle dynamic pseudo-type 2018-10-16 18:48:28 -07:00
eval_output_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
eval_provider.go core: EvalSequence must continue when only warnings are returned 2018-10-16 18:49:20 -07:00
eval_provider_test.go core: fix test for buildProviderConfig 2018-10-16 18:48:28 -07:00
eval_provisioner.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
eval_provisioner_test.go
eval_read_data.go core: NewInstanceInfo should take ResourceInstance, not Resource 2018-10-16 18:49:20 -07:00
eval_refresh.go core: More TRACE logging for the "terraform import" walk 2018-10-16 18:49:20 -07:00
eval_sequence.go core: EvalSequence to handle EvalEarlyExitError 2018-10-16 18:49:20 -07:00
eval_sequence_test.go
eval_state.go core: if InstanceState has empty id after apply, instance is deleted 2018-10-16 18:49:20 -07:00
eval_state_test.go core: Fix EvalWriteState tests 2018-10-16 18:48:28 -07:00
eval_test.go terraform: clean up EvalNodes 2015-02-19 12:08:32 -08:00
eval_validate.go fix the provisioner schema and update tests 2018-10-16 18:49:20 -07:00
eval_validate_selfref.go core: Pass ProviderSchema to EvalValidateSelfRef 2018-10-16 18:48:28 -07:00
eval_validate_selfref_test.go core: Pass ProviderSchema to EvalValidateSelfRef 2018-10-16 18:48:28 -07:00
eval_validate_test.go fix the provisioner schema and update tests 2018-10-16 18:49:20 -07:00
eval_variable.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
evaltree_provider.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
evaluate.go core: Re-fix edge case with missing module state during evaluation 2018-10-16 18:49:20 -07:00
evaluate_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
features.go output warning flag 2017-11-28 14:18:54 -05:00
graph.go core: Remove GraphWalkerPanicwrap, etc 2018-10-16 18:48:28 -07:00
graph_builder.go core: remove redundant rule lines in BasicGraphBuilder logs 2018-10-16 18:49:20 -07:00
graph_builder_apply.go core: Run AttachSchemaTransformer twice to catch provider nodes too 2018-10-16 18:49:20 -07:00
graph_builder_apply_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
graph_builder_destroy_plan.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
graph_builder_eval.go core: Run AttachSchemaTransformer twice to catch provider nodes too 2018-10-16 18:49:20 -07:00
graph_builder_import.go core: Run AttachSchemaTransformer twice to catch provider nodes too 2018-10-16 18:49:20 -07:00
graph_builder_input.go use an EvalOpFilter for module variables 2017-10-02 16:20:29 -04:00
graph_builder_plan.go core: Run AttachSchemaTransformer twice to catch provider nodes too 2018-10-16 18:49:20 -07:00
graph_builder_plan_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
graph_builder_refresh.go core: Run AttachSchemaTransformer twice to catch provider nodes too 2018-10-16 18:49:20 -07:00
graph_builder_refresh_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
graph_builder_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
graph_builder_validate.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
graph_dot.go
graph_dot_test.go terraform: remove ConnectDependents and related interfaces 2017-02-03 14:25:54 +01:00
graph_interface_subgraph.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
graph_test.go core: Remove GraphWalkerPanicwrap, etc 2018-10-16 18:48:28 -07:00
graph_walk.go core: Remove GraphWalkerPanicwrap, etc 2018-10-16 18:48:28 -07:00
graph_walk_context.go core: EvalSequence must continue when only warnings are returned 2018-10-16 18:49:20 -07:00
graph_walk_operation.go core: Context.Eval method 2018-10-16 18:46:46 -07:00
graph_walk_test.go
graphtype_string.go core: Context.Eval method 2018-10-16 18:46:46 -07:00
hook.go terraform: PostProvision hook gets the error from the provision step 2017-01-20 20:21:12 -08:00
hook_mock.go terraform: PostProvision hook gets the error from the provision step 2017-01-20 20:21:12 -08:00
hook_stop.go terraform: PostProvision hook gets the error from the provision step 2017-01-20 20:21:12 -08:00
hook_stop_test.go
hook_test.go core: add testHook for testing correct interaction with hooks 2017-09-01 17:55:05 -07:00
instancetype.go
instancetype_string.go Update various files for new version of "stringer" 2017-12-11 13:26:29 -08:00
interpolate.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
module_dependencies.go core: fix inheritence checks in ConfigTreeDependencies 2018-10-16 18:48:28 -07:00
module_dependencies_test.go core: fix inheritence checks in ConfigTreeDependencies 2018-10-16 18:48:28 -07:00
node_count_boundary.go
node_data_destroy.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
node_data_refresh.go core: Actually read provider schema for data resources 2018-10-16 18:48:28 -07:00
node_data_refresh_test.go core: Tests for scale in and out need to mock EvalExpression 2018-10-16 18:48:28 -07:00
node_local.go core: Local and output values must reference destroy nodes too 2018-10-16 18:49:20 -07:00
node_module_removed.go compare module by normalized path 2018-10-16 18:48:28 -07:00
node_module_variable.go core: render variables, locals and outputs nicely in "terraform graph" 2018-10-16 18:46:46 -07:00
node_module_variable_test.go core: Update TestNodeApplyableModuleVariablePath for new address type 2018-10-16 18:48:28 -07:00
node_output.go core: Local and output values must reference destroy nodes too 2018-10-16 18:49:20 -07:00
node_output_orphan.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
node_provider.go WIP reference providers by full name 2017-11-02 15:00:06 -04:00
node_provider_abstract.go core: Attach resource and provider config schemas during graph build 2018-10-16 18:46:46 -07:00
node_provider_disabled.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
node_provider_eval.go core: Context.Eval method 2018-10-16 18:46:46 -07:00
node_provisioner.go core: NodeProvisioner.Name update for new address types 2018-10-16 18:48:28 -07:00
node_resource_abstract.go filter self references in NodeApplyableResourceIns 2018-10-16 18:49:20 -07:00
node_resource_apply.go core: Produce correct references for destroy nodes 2018-10-16 18:49:20 -07:00
node_resource_destroy.go core: Produce correct references for destroy nodes 2018-10-16 18:49:20 -07:00
node_resource_destroy_test.go core: Fix test for NodeDestroyResource.DynamicExpand 2018-10-16 18:48:28 -07:00
node_resource_plan.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
node_resource_plan_destroy.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
node_resource_plan_instance.go core: fix NodePlannableResourceInstance data reads 2018-10-16 18:49:20 -07:00
node_resource_plan_orphan.go core: When planning to destroy an orphan instance, nil it in state 2018-10-16 18:49:20 -07:00
node_resource_refresh.go core: Attach resource and provider config schemas during graph build 2018-10-16 18:46:46 -07:00
node_resource_refresh_test.go core: Tests for scale in and out need to mock EvalExpression 2018-10-16 18:48:28 -07:00
node_resource_validate.go core: skip resource validation when count is unknown 2018-10-16 18:48:28 -07:00
node_root_variable.go core: render variables, locals and outputs nicely in "terraform graph" 2018-10-16 18:46:46 -07:00
path.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
plan.go core: Have WritePlan be explicit that it's non-functional right now 2018-10-16 18:49:20 -07:00
plan_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
resource.go core: NewInstanceInfo should take ResourceInstance, not Resource 2018-10-16 18:49:20 -07:00
resource_address.go core: NewLegacyResourceInstanceAddress correct handling of addrs.NoKey 2018-10-16 18:46:46 -07:00
resource_address_test.go configs: Re-unify the ManagedResource and DataResource types 2018-10-16 18:44:26 -07:00
resource_provider.go core: terraform.ResourceProvider.GetSchema method 2017-10-17 07:23:41 -07:00
resource_provider_mock.go minor race issue in mockResourceProvider 2017-12-20 09:18:38 -05:00
resource_provider_mock_test.go add Provider schema to the contextFixture 2018-10-16 18:49:20 -07:00
resource_provisioner.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
resource_provisioner_mock.go core: Update MockResourceProvisioner to include GetConfigSchema 2018-10-16 18:46:46 -07:00
resource_provisioner_mock_test.go core: mock provider factory functions for testing 2018-10-16 18:48:28 -07:00
resource_test.go core: check for negative indices in ResourceConfig.get 2017-12-12 09:18:38 -08:00
schemas.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
schemas_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
semantics.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
semantics_test.go core: fix tests for checkInputVariables 2018-10-16 18:48:28 -07:00
state.go core: Fix TestContext2Apply_outputOrphanModule 2018-10-16 18:49:20 -07:00
state_add.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
state_add_test.go Set proper Mode when moving a data source in state 2016-11-21 18:26:29 -05:00
state_filter.go fix sorting of module resources during state mv 2017-02-23 18:27:16 -05:00
state_filter_test.go terraform: StateFilter handles cases where ResourceState has no type 2017-01-21 10:24:03 -08:00
state_test.go core: TestStateAddModule old-style output 2018-10-16 18:48:28 -07:00
state_upgrade_v1_to_v2.go terraform: convert empty path to root path in V1 state 2017-03-21 11:37:12 -07:00
state_upgrade_v1_to_v2_test.go terraform: convert empty path to root path in V1 state 2017-03-21 11:37:12 -07:00
state_upgrade_v2_to_v3.go terraform: V1 to V2 upgrade should treat nil path as root path 2017-03-21 11:12:44 -07:00
state_v1.go
terraform_test.go core: update test fixtures 2018-10-16 18:49:20 -07:00
testing.go terraform: support backends in the state 2017-01-26 14:33:49 -08:00
transform.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_attach_config_provider.go core: Attach resource and provider config schemas during graph build 2018-10-16 18:46:46 -07:00
transform_attach_config_resource.go core: Additional trace logging in attach resource config transformer 2018-10-16 18:48:28 -07:00
transform_attach_schema.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
transform_attach_state.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_config.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_config_flat.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_config_flat_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
transform_config_old.go terraform: remove config transformer old 2017-01-26 19:57:46 -08:00
transform_config_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
transform_count_boundary.go
transform_deposed.go deposed nodes need the resolved provider too 2018-10-16 18:48:28 -07:00
transform_destroy_cbd.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
transform_destroy_cbd_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
transform_destroy_edge.go core: Run AttachSchemaTransformer twice to catch provider nodes too 2018-10-16 18:49:20 -07:00
transform_destroy_edge_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07:00
transform_diff.go core: Fix DiffTransformer node addresses 2018-10-16 18:48:28 -07:00
transform_diff_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
transform_expand.go terraform: more dead code removal 2017-01-26 19:47:02 -08:00
transform_expand_test.go
transform_import_provider.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_import_state.go core: Fix TestContextImport_collision 2018-10-16 18:49:20 -07:00
transform_local.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_module_variable.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_module_variable_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
transform_orphan_count.go core: Correct test TestOrphanResourceCountTransformer_zeroAndNone 2018-10-16 18:48:28 -07:00
transform_orphan_count_test.go core: Correct test TestOrphanResourceCountTransformer_zeroAndNone 2018-10-16 18:48:28 -07:00
transform_orphan_output.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_orphan_resource.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_orphan_resource_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
transform_output.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_provider.go core: ProviderTransformer debug log to use abs addr always 2018-10-16 18:49:20 -07:00
transform_provider_test.go core: Update ProviderTransformer tests for new ImportTarget interface 2018-10-16 18:48:28 -07:00
transform_provisioner.go core: Make provisioner schemas available to plan resource instance nodes 2018-10-16 18:49:20 -07:00
transform_provisioner_test.go core: NodeProvisioner.Name update for new address types 2018-10-16 18:48:28 -07:00
transform_reference.go core: Local and output values must reference destroy nodes too 2018-10-16 18:49:20 -07:00
transform_reference_test.go core: Fix ReferenceTransformer tests 2018-10-16 18:48:28 -07:00
transform_removed_modules.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_resource_count.go core: Attach resource and provider config schemas during graph build 2018-10-16 18:46:46 -07:00
transform_root.go terraform: provider transform is converted to new graph world view 2017-01-26 20:58:22 -08:00
transform_root_test.go core: NodeAbstractResource correct default result from ProvidedBy 2018-10-16 18:48:28 -07:00
transform_state.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
transform_targets.go don't check for targeted downstream from providers 2018-10-16 18:49:20 -07:00
transform_targets_test.go core: Get tests compiling again 2018-10-16 18:46:46 -07:00
transform_transitive_reduction.go
transform_transitive_reduction_test.go core: Fetch schemas during context construction 2018-10-16 18:49:20 -07: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.go
transform_vertex_test.go
ui_input.go
ui_input_mock.go
ui_input_prefix.go
ui_input_prefix_test.go
ui_output.go
ui_output_callback.go
ui_output_callback_test.go
ui_output_mock.go minor race fix in tests 2017-10-02 16:19:01 -04:00
ui_output_mock_test.go
ui_output_provisioner.go terraform: no longer require uiOutput, do it auto in Hook 2014-10-04 16:24:07 -07:00
ui_output_provisioner_test.go
upgrade_state_v1_test.go Fix swallowed tests in terraform package tests 2017-07-20 02:23:43 -07:00
upgrade_state_v2_test.go
user_agent.go Standardize http.Client creation with User-Agent 2018-02-28 12:09:50 -05:00
util.go Resolve resource provider types in config package 2017-06-09 14:03:59 -07:00
util_test.go Resolve resource provider types in config package 2017-06-09 14:03:59 -07:00
valuesourcetype_string.go core: Context.Eval method 2018-10-16 18:46:46 -07:00
variables.go core: fix the tests in variables_test.go 2018-10-16 18:48:28 -07:00
variables_test.go core: fix the tests in variables_test.go 2018-10-16 18:48:28 -07:00
version.go use the new version package 2017-10-19 21:48:08 -04:00
version_required.go terraform: ugly huge change to weave in new HCL2-oriented types 2018-10-16 18:46:46 -07:00
walkoperation_string.go core: Context.Eval method 2018-10-16 18:46:46 -07:00