opentofu/helper/schema
Martin Atkins 861a2ebf26 helper/schema: Use a more targeted shim for nested set diff applying
We previously attempted to make the special diff apply behavior for nested
sets of objects work with attribute mode by totally discarding attribute
mode for all shims.

In practice, that is too broad a solution: there are lots of other shimming
behaviors that we _don't_ want when attribute mode is enabled. In
particular, we need to make sure that the difference between null and
empty can be seen in configuration.

As a compromise then, we will give all of the shims access to the real
ConfigMode and then do a more specialized fixup within the diff-apply
logic: we'll construct a synthetic nested block schema and then use that
to run our existing logic to deal with nested sets of objects, while
using the previous behavior in all other cases.

In effect, this means that the special new behavior only applies when the
provider uses the opt-in ConfigMode setting on a particular attribute,
and thus this change has much less risk of causing broad, unintended
regressions elsewhere.
2019-04-17 07:47:31 -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/plugin: Implement Schema.SkipCoreTypeCheck 2019-03-21 15:19:59 -07:00
core_schema.go cleanup after AsSingle removal 2019-04-08 16:45:35 -04: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/resource: Ignore Removed attributes for ImportStateVerify 2019-04-16 11:14:49 -07:00
field_writer_map_test.go helper/schema: Prevent setSet() panic with typed nil 2019-04-01 20:10:32 -04:00
field_writer_map.go helper/schema: Prevent setSet() panic with typed nil 2019-04-01 20:10:32 -04: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 grammatical updates to comments and docs (#20195) 2019-03-21 14:05:41 -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/resource: Ignore Removed attributes for ImportStateVerify 2019-04-16 11:14:49 -07:00
schema_test.go Revert "helper/schema: Schema.AsSingle flag" 2019-04-08 16:45:35 -04:00
schema.go Revert "helper/schema: Schema.AsSingle flag" 2019-04-08 16:45:35 -04: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 Remove unknown value strings from apply diffs 2019-04-10 09:34:39 -04:00
shims.go helper/schema: Use a more targeted shim for nested set diff applying 2019-04-17 07:47:31 -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.