terraform/helper/schema
Martin Atkins 7f860dc83e helper/schema: Schema.SkipCoreTypeCheck flag
When running in v0.12-and-higher mode, this will cause the SDK to report
the type of the attribute as "any", effectively skipping type checking
on the Core side altogether and checking only in the SDK and provider
code.

The practical impact of this is to restore the v0.11-style checking
behavior of allowing object values to be missing certain attributes as
long as they are marked as optional in the schema. The SDK can do this
because it uses a unified schema model for both object values and nested
blocks, while Terraform Core only supports the idea of "optional" when
talking about attributes in nested blocks.

This is a continuation of the pile of workarounds that also includes
the ConfigMode and AsSingle fields, allowing providers to selectively opt
out of new v0.12 behaviors in situations where they conflict with
decisions made in the design of the providers in our old world where
Terraform Core delegated _all_ validation to providers.

This is designed as an opt-in so that we can limit its impact only to
specific cases where it's needed and minimize the risk of regressions
elsewhere. Providers should use this sparingly only in situations where
prevailing usage disagrees with the new expectations of Terraform Core in
v0.12.

This commit only adds the flag, and does not implement any behavior for it
yet. That means this commit can exist in both the v0.11 and v0.12
codebases, allowing for API compatibility. A subsequent commit for v0.12
(not included in v0.11) will then implement this behavior.
2019-03-21 15:19:59 -07:00
..
README.md helper/schema: README 2014-08-17 20:51:09 -07:00
as_single_fixup.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
as_single_fixup_test.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
backend.go don't panic of the users aborts backend input 2019-03-01 18:45:06 -05:00
backend_test.go don't panic of the users aborts backend input 2019-03-01 18:45:06 -05:00
core_schema.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
core_schema_test.go helper/schema: Honor ConfigMode when building core schema 2019-03-11 17:02:05 -07:00
data_source_resource_shim.go Deprecated -> DeprecationMessage. 2018-06-20 11:21:46 -07:00
equal.go helper/schema: use interface for equality check 2015-01-16 09:32:15 -08:00
field_reader.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_reader_config.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_reader_config_test.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_reader_diff.go don't modify argument slices 2018-12-10 11:59:27 -05:00
field_reader_diff_test.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_reader_map.go don't modify argument slices 2018-12-10 11:59:27 -05:00
field_reader_map_test.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_reader_multi.go helper/schema: full object test for addrToSchema 2015-01-09 17:43:44 -08:00
field_reader_multi_test.go Revert "helper/schema: Make nested Set(s) in List(s) work" (#7436) 2016-06-30 10:48:52 -05:00
field_reader_test.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_writer.go helper/schema: FieldWriter, replace Set 2015-01-10 11:44:26 -08:00
field_writer_map.go helper/schema: Fix setting a set in a list 2018-12-05 10:09:54 +01:00
field_writer_map_test.go helper/schema: Clear existing map/set/list contents before overwriting 2017-11-05 12:04:23 -08:00
getsource_string.go Update various files for new version of "stringer" 2017-12-11 13:26:29 -08:00
provider.go Copy TF version to helper/schema provider 2019-01-28 14:38:49 -05:00
provider_test.go decode legacy timeouts 2019-01-30 16:10:17 -05:00
provisioner.go create a SimpleDiff for the new provider shims 2018-10-16 19:14:11 -07:00
provisioner_test.go Refactor the provisioner validation function (#15273) 2017-06-15 19:57:04 +02:00
resource.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
resource_data.go helper/schema: Add deprecation to ResourceData.UnsafeSetFieldRaw 2019-02-13 22:12:10 -05:00
resource_data_get_source.go helper/schema: diff with set going to 0 elements removes it from state 2015-02-17 11:38:56 -08:00
resource_data_test.go make sure id really gets set in SetId 2019-01-10 20:28:11 -05:00
resource_diff.go grammatical updates to comments and docs (#20195) 2019-03-21 14:05:41 -07:00
resource_diff_test.go helper/schema: Always propagate NewComputed for previously zero value primative type attributes 2018-12-04 22:48:30 -05:00
resource_importer.go helper/schema: pass through import state func 2016-05-16 10:03:57 -07:00
resource_test.go helper/schema: Fix timeout parsing in ResourceTimeout.ConfigDecode 2018-11-05 12:42:12 +00:00
resource_timeout.go decode legacy timeouts 2019-01-30 16:10:17 -05:00
resource_timeout_test.go decode legacy timeouts 2019-01-30 16:10:17 -05:00
schema.go helper/schema: Schema.SkipCoreTypeCheck flag 2019-03-21 15:19:59 -07:00
schema_test.go helper/schema: Schema.AsSingle flag 2019-03-14 15:36:15 -07:00
serialize.go core: Avoid crash on empty TypeSet blocks (#14305) 2017-05-09 20:45:53 +02:00
serialize_test.go Add test for TypeMap in a Schema 2016-06-09 16:00:33 -04:00
set.go don't allow computed set elems to be equal 2019-02-05 12:08:17 -05:00
set_test.go helper/schema: More tests for Set.HashEqual 2017-08-15 21:56:01 -07:00
shims.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
shims_test.go providers: Consistently use int64 for schema versions 2018-11-30 11:22:39 -08:00
testing.go create a SimpleDiff for the new provider shims 2018-10-16 19:14:11 -07:00
valuetype.go helper/schema: zero value of a set should be empty 2015-02-17 16:58:47 -08:00
valuetype_string.go Update various files for new version of "stringer" 2017-12-11 13:26:29 -08:00

README.md

Terraform Helper Lib: schema

The schema package provides a high-level interface for writing resource providers for Terraform.

If you're writing a resource provider, we recommend you use this package.

The interface exposed by this package is much friendlier than trying to write to the Terraform API directly. The core Terraform API is low-level and built for maximum flexibility and control, whereas this library is built as a framework around that to more easily write common providers.