terraform/configs
Kristin Laemmert b9138f4465
terraform: validate providers' schemas during NewContext (#28124)
* checkpoint save: update InternalValidate tests to compare exact error

* configschema: extract and extend attribute validation

This commit adds an attribute-specific InternalValidate which was extracted directly from the block.InternalValidate logic and extended to verify any NestedTypes inside an Attribute. Only one error message changed, since it is now valid to have a cty.NilType for Attribute.Type as long as NestedType is set.

* terraform: validate provider schema's during NewContext

We haven't been able to guarantee that providers are validating their own schemas using (some version of) InternalValidate since providers were split out of the main codebase. This PR adds a call to InternalValidate when provider schemas are initially loaded by NewContext, which required a few other changes:

InternalValidate's handling of errors vs multierrors was a little weird - before this PR, it was occasionally returning a non-nil error which only stated "0 errors occurred" - so I addressed that in InternalValidate. I then tested this with a configuration that was using all of our most popular providers, and found that at least on provider had some invalid attribute names, so I commented that particular validation out. Adding that in would be a breaking change which we would have to coordinate with enablement and providers and (especially in this case) make sure it's well communicated to external provider developers.

I ran a few very unscientific tests comparing the timing with and without this validation, and it appeared to only cause a sub-second increase.

* refactor validate error message to closer match the sdk's message

* better error message

* tweak error message: move the instruction to run init to the end of the message, after the specific error.
2021-03-22 13:17:50 -04:00
..
configload configload should not be doing validation 2021-02-10 10:20:40 -05:00
configschema terraform: validate providers' schemas during NewContext (#28124) 2021-03-22 13:17:50 -04:00
hcl2shim core: Remove the last few HIL remnants 2020-09-02 15:53:33 -07:00
testdata validate provider_meta contains no interpolations 2021-03-12 12:10:25 -05:00
backend.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
compat_shim.go Remove interpolation-only warning 2021-02-19 10:59:09 -05:00
config.go cli: Fix for provider requirements in JSON plan 2021-02-05 14:01:58 -05:00
config_build.go add provider validation 2021-02-11 10:22:18 -05:00
config_build_test.go add provider validation 2021-02-11 10:22:18 -05:00
config_test.go cli: Fix for provider requirements in JSON plan 2021-02-05 14:01:58 -05:00
depends_on.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
doc.go configs: Additional guidance in doc.go 2018-02-15 15:56:39 -08:00
experiments.go configs: Accept and minimally validate a "language" argument 2021-02-26 11:43:32 -08:00
experiments_test.go experiments: a mechanism for opt-in experimental language features 2019-12-10 09:27:05 -08:00
module.go configs: staticcheck 2020-12-02 13:59:19 -05:00
module_call.go Remove interpolation-only warning 2021-02-19 10:59:09 -05:00
module_call_test.go allow depends_on in module call 2020-05-20 13:46:13 -04:00
module_merge.go Implement module merge for sensitive config 2020-09-30 17:25:54 -04:00
module_merge_body.go configs: staticcheck 2020-12-02 13:59:19 -05:00
module_merge_test.go Remove sensitive_variables experiment 2020-10-08 11:22:20 -04:00
module_test.go remove LegacyProvider (#26433) 2020-10-05 08:33:49 -04:00
named_values.go configs: A better error message for custom variable validation 2021-02-26 09:36:42 -08:00
named_values_test.go config/name_values: fix index out of range in looksLikeSentences 2020-06-05 13:29:43 +02:00
parser.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
parser_config.go configs: Accept and minimally validate a "language" argument 2021-02-26 11:43:32 -08:00
parser_config_dir.go fix diagnostics handling 2019-11-21 09:14:50 -05:00
parser_config_dir_test.go move IsEmptyDir to configs package 2019-07-18 13:07:10 -04:00
parser_config_test.go fix comment text 2020-02-13 20:46:48 -05:00
parser_test.go configs: staticcheck 2020-12-02 13:59:19 -05:00
parser_values.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
parser_values_test.go configs: update values file invalid syntax test for new HCL behavior 2018-03-08 11:17:39 -08:00
provider.go Remove interpolation-only warning 2021-02-19 10:59:09 -05:00
provider_meta.go validate provider_meta contains no interpolations 2021-03-12 12:10:25 -05:00
provider_requirements.go add provider validation 2021-02-11 10:22:18 -05:00
provider_requirements_test.go initial support for parsing configuration_aliases 2021-02-09 08:38:30 -05:00
provider_test.go configs: deprecate version argument inside provider configuration blocks (#26135) 2020-09-08 08:19:00 -04:00
provider_validation.go add provider validation 2021-02-11 10:22:18 -05:00
provisioner.go Remove vendor provisioners and add fmt Make target 2020-11-17 11:22:03 -05:00
provisioneronfailure_string.go stringer: Regenerate files with latest version 2019-05-13 15:34:27 +01:00
provisionerwhen_string.go stringer: Regenerate files with latest version 2019-05-13 15:34:27 +01:00
resource.go Merge pull request #27834 from hashicorp/pselle/ignore-changes-wildcard 2021-02-19 16:16:39 -05:00
synth_body.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
synth_body_test.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
util.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00
variable_type_hint.go Version tools per Go convention under tools.go 2019-10-17 22:23:39 +02:00
variabletypehint_string.go stringer: Regenerate files with latest version 2019-05-13 15:34:27 +01:00
version_constraint.go vendor: switch to HCL 2.0 in the HCL repository 2019-10-02 15:10:21 -07:00