b99c615ee6
This adds a new object, ResourceDiff, to the schema package. This object, in conjunction with a function defined in CustomizeDiff in the resource schema, allows for the in-flight customization of a Terraform diff. This helps support use cases such as when there are necessary changes to a resource that cannot be detected in config, such as via computed fields (most of the utility in this object works on computed fields only). It also allows for a wholesale wipe of the diff to allow for diff logic completely offloaded to an external API, if it is a better use case for a specific provider. As part of this work, many internal diff functions have been moved to use a special resourceDiffer interface, to allow for shared functionality between ResourceDiff and ResourceData. This may be extended to the DiffSuppressFunc as well which would restrict use of ResourceData in DiffSuppressFunc to generally read-only fields. This work is not yet in its final state - CustomizeDiff is not yet implemented in the general diff workflow, new functions may be added (notably Clear() for a single key), and functionality may be altered. Tests will follow as well. |
||
---|---|---|
.. | ||
README.md | ||
backend.go | ||
backend_test.go | ||
core_schema.go | ||
core_schema_test.go | ||
data_source_resource_shim.go | ||
equal.go | ||
field_reader.go | ||
field_reader_config.go | ||
field_reader_config_test.go | ||
field_reader_diff.go | ||
field_reader_diff_test.go | ||
field_reader_map.go | ||
field_reader_map_test.go | ||
field_reader_multi.go | ||
field_reader_multi_test.go | ||
field_reader_test.go | ||
field_writer.go | ||
field_writer_map.go | ||
field_writer_map_test.go | ||
getsource_string.go | ||
provider.go | ||
provider_test.go | ||
provisioner.go | ||
provisioner_test.go | ||
resource.go | ||
resource_data.go | ||
resource_data_get_source.go | ||
resource_data_test.go | ||
resource_diff.go | ||
resource_importer.go | ||
resource_test.go | ||
resource_timeout.go | ||
resource_timeout_test.go | ||
schema.go | ||
schema_test.go | ||
serialize.go | ||
serialize_test.go | ||
set.go | ||
set_test.go | ||
testing.go | ||
valuetype.go | ||
valuetype_string.go |
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.