terraform/helper/schema
Martin Atkins cc8e8a55de helper/schema: Default hashing function for sets
A common issue with new resource implementations is not considering parts
of a complex structure that's used inside a set, which causes quirky
behavior.

The schema helper has enough information to provide a default reasonable
implementation of a set function that includes all non-computed attributes
in a deterministic way. Here we implement such a function and use it
when no explicit hashing function is provided.

In order to achieve this we encapsulate the construction of the zero
value for a schema in a new method schema.ZeroValue, which allows us to
put the fallback logic to the new default function in a single spot.
It is no longer valid to use &Set{F: schema.Set} and all uses of that
construct should be replaced with schema.ZeroValue().(*Set) .
2015-10-03 18:10:47 -07:00
..
README.md helper/schema: README 2014-08-17 20:51:09 -07:00
equal.go helper/schema: use interface for equality check 2015-01-16 09:32:15 -08:00
field_reader.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
field_reader_config.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
field_reader_config_test.go helper/schema: FieldReaderConfig detects computed maps 2015-04-21 22:07:52 +02:00
field_reader_diff.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
field_reader_diff_test.go helper/schema: diff with set going to 0 elements removes it from state 2015-02-17 11:38:56 -08:00
field_reader_map.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
field_reader_map_test.go helper/schema: FieldReaderMap should mark map as exists if anything set 2015-04-21 22:11:00 +02: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 helper/schema: too big to fail 2015-01-08 18:02:19 -08:00
field_reader_test.go helper/schema: add float type 2015-01-10 16:04:01 -08:00
field_writer.go helper/schema: FieldWriter, replace Set 2015-01-10 11:44:26 -08:00
field_writer_map.go Condense switch fallthroughs into expr lists 2015-05-26 21:52:36 -04:00
field_writer_map_test.go helper/schema: test that set can be nil 2015-02-18 14:59:55 -08:00
getsource_string.go helper/schema: diff with set going to 0 elements removes it from state 2015-02-17 11:38:56 -08:00
provider.go helper/schema: internal validate as part of provider validation 2015-06-23 16:52:04 -07:00
provider_test.go helper/schema: internal validate as part of provider validation 2015-06-23 16:52:04 -07:00
resource.go schema: Make validation more strict 2015-10-03 14:29:19 -07:00
resource_data.go helper/schema: test real nil pointer to ResourceData.Set 2015-03-02 23:37:43 -08: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 helper/schema: diff should include removed set items [GH-1823] 2015-06-25 21:52:49 -07:00
resource_test.go schema: Make validation more strict 2015-10-03 14:29:19 -07:00
schema.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
schema_test.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
serialize.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
serialize_test.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
set.go helper/schema: Default hashing function for sets 2015-10-03 18:10:47 -07:00
set_test.go Prevent negative hashcodes for all set operations. 2015-04-23 09:32:07 -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 Fixes #2676 by prefixing all Windows commands 2015-07-10 12:56:27 +02: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.