terraform/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
..
README.md helper/schema: README 2014-08-17 20:51:09 -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 cleanup after AsSingle removal 2019-04-08 16:45:35 -04:00
core_schema_test.go helper/plugin: Implement Schema.SkipCoreTypeCheck 2019-03-21 15:19:59 -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/resource: Ignore Removed attributes for ImportStateVerify 2019-04-16 11:14:49 -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: Prevent setSet() panic with typed nil 2019-04-01 20:10:32 -04:00
field_writer_map_test.go helper/schema: Prevent setSet() panic with typed nil 2019-04-01 20:10:32 -04: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/resource: Ignore Removed attributes for ImportStateVerify 2019-04-16 11:14:49 -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 Revert "helper/schema: Schema.AsSingle flag" 2019-04-08 16:45:35 -04:00
schema_test.go Revert "helper/schema: Schema.AsSingle flag" 2019-04-08 16:45:35 -04: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: Use a more targeted shim for nested set diff applying 2019-04-17 07:47:31 -07:00
shims_test.go Remove unknown value strings from apply diffs 2019-04-10 09:34:39 -04: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.