terraform/helper/schema
James Nugent f49583d25a core: support native list variables in config
This commit adds support for native list variables and outputs, building
up on the previous change to state. Interpolation functions now return
native lists in preference to StringList.

List variables are defined like this:

variable "test" {
    # This can also be inferred
    type = "list"
    default = ["Hello", "World"]
}

output "test_out" {
    value = "${var.a_list}"
}
This results in the following state:

```
...
            "outputs": {
                "test_out": [
                    "hello",
                    "world"
                ]
            },
...
```

And the result of terraform output is as follows:

```
$ terraform output
test_out = [
  hello
  world
]
```

Using the output name, an xargs-friendly representation is output:

```
$ terraform output test_out
hello
world
```

The output command also supports indexing into the list (with
appropriate range checking and no wrapping):

```
$ terraform output test_out 1
world
```

Along with maps, list outputs from one module may be passed as variables
into another, removing the need for the `join(",", var.list_as_string)`
and `split(",", var.list_as_string)` which was previously necessary in
Terraform configuration.

This commit also updates the tests and implementations of built-in
interpolation functions to take and return native lists where
appropriate.

A backwards compatibility note: previously the concat interpolation
function was capable of concatenating either strings or lists. The
strings use case was deprectated a long time ago but still remained.
Because we cannot return `ast.TypeAny` from an interpolation function,
this use case is no longer supported for strings - `concat` is only
capable of concatenating lists. This should not be a huge issue - the
type checker picks up incorrect parameters, and the native HIL string
concatenation - or the `join` function - can be used to replicate the
missing behaviour.
2016-05-10 14:49:14 -04: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 Change Set internals and make (extreme) performance improvements 2015-11-22 14:21:28 +01:00
field_reader_config_test.go core: support native list variables in config 2016-05-10 14:49:14 -04: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 removed extra parentheses 2015-10-08 15:48:04 +03: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 removed extra parentheses 2015-10-08 15:48:04 +03: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 removed extra parentheses 2015-10-08 15:48:04 +03:00
field_writer.go helper/schema: FieldWriter, replace Set 2015-01-10 11:44:26 -08:00
field_writer_map.go consul: Fix several problems w/ consul_keys update 2016-01-26 14:46:26 -06:00
field_writer_map_test.go Merge pull request #3257 from fatih/fix-nil-setting-schema 2015-12-08 20:15:00 -06:00
getsource_string.go Reflect new comment format in stringer.go 2015-11-09 11:38:51 -05:00
provider.go helper/schema: internal validate as part of provider validation 2015-06-23 16:52:04 -07:00
provider_test.go removed extra parentheses 2015-10-08 15:48:04 +03:00
resource.go Merge pull request #4446 from TimeIncOSS/f-schema-new-resource 2016-02-29 20:07:00 +00:00
resource_data.go helper/schema: Allow identification of a new resource in update func 2015-12-27 14:01:03 +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 Change Set internals and make (extreme) performance improvements 2015-11-22 14:21:28 +01:00
resource_test.go helper/schema: Allow identification of a new resource in update func 2015-12-27 14:01:03 +01:00
schema.go helper/schema: Normalize bools to "true"/"false" in diffs 2016-05-05 09:00:58 -05:00
schema_test.go core: support native list variables in config 2016-05-10 14:49:14 -04: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 Change Set internals and make (extreme) performance improvements 2015-11-22 14:21:28 +01: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.