opentofu/helper/schema
Martin Atkins 1987a92386 helper/schema: Implementation of the AsSingle mechanism
The previous commit added a new flag to schema.Schema which is documented
to make a list with MaxItems: 1 be presented to Terraform Core as a single
value instead, giving a way to switch to non-list nested resources without
it being a breaking change for Terraform v0.11 users as long as it's done
prior to a provider's first v0.12-compatible release.

This is the implementation of that mechanism. It's intentionally
implemented as a suite of extra fixups rather than direct modifications to
existing shim code because we want to ensure that this has no effect
whatsoever on the result of a resource type that _isn't_ using AsSingle.

Although there is some small unit test coverage of the fixup steps here,
the primary testing for this is in the test provider since the integration
of all of these fixup steps in the correct order is the more important
result than any of the intermediate fixup steps.
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
as_single_fixup.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
backend_test.go don't panic of the users aborts backend input 2019-03-01 18:45:06 -05:00
backend.go don't panic of the users aborts backend input 2019-03-01 18:45:06 -05:00
core_schema_test.go helper/schema: Honor ConfigMode when building core schema 2019-03-11 17:02:05 -07:00
core_schema.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -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_config_test.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_diff_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_map_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_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_multi.go helper/schema: full object test for addrToSchema 2015-01-09 17:43:44 -08:00
field_reader_test.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_reader.go helper/schema: handle TypeMap elem consistently with other collection types 2018-03-14 14:50:41 -07:00
field_writer_map_test.go helper/schema: Clear existing map/set/list contents before overwriting 2017-11-05 12:04:23 -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.go helper/schema: FieldWriter, replace Set 2015-01-10 11:44:26 -08:00
getsource_string.go Update various files for new version of "stringer" 2017-12-11 13:26:29 -08:00
provider_test.go decode legacy timeouts 2019-01-30 16:10:17 -05:00
provider.go Copy TF version to helper/schema provider 2019-01-28 14:38:49 -05:00
provisioner_test.go Refactor the provisioner validation function (#15273) 2017-06-15 19:57:04 +02:00
provisioner.go create a SimpleDiff for the new provider shims 2018-10-16 19:14:11 -07:00
README.md helper/schema: README 2014-08-17 20:51:09 -07: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_data.go helper/schema: Add deprecation to ResourceData.UnsafeSetFieldRaw 2019-02-13 22:12:10 -05: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_diff.go Don't allow sub-blocks for SetNew. 2018-09-26 12:38:38 -07: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_test.go decode legacy timeouts 2019-01-30 16:10:17 -05:00
resource_timeout.go decode legacy timeouts 2019-01-30 16:10:17 -05:00
resource.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
schema_test.go helper/schema: Schema.AsSingle flag 2019-03-14 15:36:15 -07:00
schema.go helper/schema: Schema.AsSingle flag 2019-03-14 15:36:15 -07:00
serialize_test.go Add test for TypeMap in a Schema 2016-06-09 16:00:33 -04:00
serialize.go core: Avoid crash on empty TypeSet blocks (#14305) 2017-05-09 20:45:53 +02:00
set_test.go helper/schema: More tests for Set.HashEqual 2017-08-15 21:56:01 -07:00
set.go don't allow computed set elems to be equal 2019-02-05 12:08:17 -05:00
shims_test.go providers: Consistently use int64 for schema versions 2018-11-30 11:22:39 -08:00
shims.go helper/schema: Implementation of the AsSingle mechanism 2019-03-14 15:36:15 -07:00
testing.go create a SimpleDiff for the new provider shims 2018-10-16 19:14:11 -07:00
valuetype_string.go Update various files for new version of "stringer" 2017-12-11 13:26:29 -08:00
valuetype.go helper/schema: zero value of a set should be empty 2015-02-17 16:58:47 -08:00

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.