terraform/helper/schema
James Bardin 01be1a5ecd Check for interpolated values when reading a map
Accessing an interpolated value in a map through ConfigFieldReader can
fail, because GetRaw can't access interpolated values, so check if the
value exists at all by looking in the config. If the config has a value,
assume our map's value is interpolated and proceed as such.

We also need to lookup the correct schema to properly read a field from
a nested structure.

- Maps previously always defaulted to TypeString. Now check if Elem is a
  ValueType and use that if applicable
- Lists now return the schema for nested element types, defaulting to a
  TypeString like maps.

This only allows maps and lists to be nested one level deep, and the
inner map or list must only contain string values.
2016-11-28 09:04:24 -05:00
..
README.md
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 Check for interpolated values when reading a map 2016-11-28 09:04:24 -05: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 Allow primitive type in maps via all FieldReaders 2016-11-17 15:35:08 -05: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 Reflect new comment format in stringer.go 2015-11-09 11:38:51 -05:00
provider.go helper/schema: expose stop information as a Context 2016-10-25 12:08:36 -07:00
provider_test.go helper/schema: expose stop information as a Context 2016-10-25 12:08:36 -07:00
resource.go helper/schema: validate Read, Delete are set 2016-10-30 15:04:32 -07:00
resource_data.go core: Allow dynamic attributes in helper/schema 2016-06-11 13:29:05 +01: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 Convert the map fields values when reading diff 2016-11-17 14:34:18 -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: validate Read, Delete are set 2016-10-30 15:04:32 -07:00
schema.go helper/schema: mark diff as forcenew if element is computed 2016-11-15 11:02:14 -08:00
schema_test.go core: Backport NewComputed change to nested list/set tests 2016-11-19 09:29:48 -08:00
serialize.go Serialization for hash panics on TypeMap 2016-06-09 13:37:58 -04:00
serialize_test.go Add test for TypeMap in a Schema 2016-06-09 16:00:33 -04:00
set.go Revert "helper/schema: Make nested Set(s) in List(s) work" (#7436) 2016-06-30 10:48:52 -05:00
set_test.go Change Set internals and make (extreme) performance improvements 2015-11-22 14:21:28 +01:00
valuetype.go helper/schema: zero value of a set should be empty 2015-02-17 16:58:47 -08:00
valuetype_string.go Reflect new comment format in stringer.go 2015-11-09 11:38:51 -05: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.