terraform/helper/schema
Chris Marchesi b99c615ee6 helper/schema: New ResourceDiff object
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.
2017-11-01 14:25:32 -07:00
..
README.md helper/schema: README 2014-08-17 20:51:09 -07:00
backend.go convert the other context keys to the correct type 2017-04-06 10:51:24 -04:00
backend_test.go helper/schema: framework for Backends 2017-01-26 14:33:49 -08:00
core_schema.go core: terraform.ResourceProvider.GetSchema method 2017-10-17 07:23:41 -07:00
core_schema_test.go core: terraform.ResourceProvider.GetSchema method 2017-10-17 07:23:41 -07:00
data_source_resource_shim.go helper/schema: emit warning when using data source resource shim 2016-05-14 08:26:36 -07:00
equal.go helper/schema: use interface for equality check 2015-01-16 09:32:15 -08:00
field_reader.go Check for interpolated values when reading a map 2016-11-28 09:04:24 -05:00
field_reader_config.go helper/schema: PromoteSingle for legacy support of "maybe list" types 2017-01-26 15:09:15 -08:00
field_reader_config_test.go Check for interpolated values when reading a map 2016-11-28 09:04:24 -05:00
field_reader_diff.go memoize DiffFieldReader.ReadField 2017-07-28 14:26:36 -04:00
field_reader_diff_test.go Allow primitive type in maps via all FieldReaders 2016-11-17 15:35:08 -05:00
field_reader_map.go Allow primitive type in maps via all FieldReaders 2016-11-17 15:35:08 -05:00
field_reader_map_test.go Allow primitive type in maps via all FieldReaders 2016-11-17 15:35:08 -05: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 Allow primitive type in maps via all FieldReaders 2016-11-17 15:35:08 -05:00
field_writer.go helper/schema: FieldWriter, replace Set 2015-01-10 11:44:26 -08:00
field_writer_map.go core: Allow dynamic attributes in helper/schema 2016-06-11 13:29:05 +01:00
field_writer_map_test.go core: Use .% instead of .# for maps in state 2016-06-09 10:49:42 +01:00
getsource_string.go Fix stringer comments (#15069) 2017-06-05 10:17:35 +01:00
provider.go core: terraform.ResourceProvider.GetSchema method 2017-10-17 07:23:41 -07:00
provider_test.go core: terraform.ResourceProvider.GetSchema method 2017-10-17 07:23:41 -07:00
provisioner.go Refactor the provisioner validation function (#15273) 2017-06-15 19:57:04 +02:00
provisioner_test.go Refactor the provisioner validation function (#15273) 2017-06-15 19:57:04 +02:00
resource.go helper/schema: New ResourceDiff object 2017-11-01 14:25:32 -07:00
resource_data.go Rename to GetOkExists 2017-08-03 12:05:19 -04: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 update tests 2017-08-03 17:53:07 -04:00
resource_diff.go helper/schema: New ResourceDiff object 2017-11-01 14:25:32 -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: Loosen validation for 'id' field 2017-10-26 09:37:38 +01:00
resource_timeout.go helper/schema: Rename Timeout resource block to Timeouts (#12533) 2017-03-09 14:40:14 -06:00
resource_timeout_test.go helper/schema: Rename Timeout resource block to Timeouts (#12533) 2017-03-09 14:40:14 -06:00
schema.go helper/schema: New ResourceDiff object 2017-11-01 14:25:32 -07:00
schema_test.go Enforce field names to be alphanum lowercase + underscores (#15562) 2017-07-17 08:37:46 +01: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 helper/schema: Add Set.HashEqual 2017-08-15 21:50:52 -07:00
set_test.go helper/schema: More tests for Set.HashEqual 2017-08-15 21:56:01 -07:00
testing.go Use t.Helper() in our test helpers 2017-08-28 09:59:30 -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 Fix stringer comments (#15069) 2017-06-05 10:17:35 +01: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.