terraform/configs/configupgrade/test-fixtures/valid
Martin Atkins 954d38e870 lang: New file-hashing functions
In prior versions, we recommended using hash functions in conjunction with
the file function as an idiom for detecting changes to upstream blobs
without fetching and comparing the whole blob.

That approach relied on us being able to return raw binary data from
file(...). Since Terraform strings pass through intermediate
representations that are not binary-safe (e.g. the JSON state), there was
a risk of string corruption in prior versions which we have avoided for
0.12 by requiring that file(...) be used only with UTF-8 text files.

The specific case of returning a string and immediately passing it into
another function was not actually subject to that corruption risk, since
the HIL interpreter would just pass the string through verbatim, but this
is still now forbidden as a result of the stricter handling of file(...).

To avoid breaking these use-cases, here we introduce variants of the hash
functions a with "file" prefix that take a filename for a disk file to
hash rather than hashing the given string directly. The configuration
upgrade tool also now includes a rule to detect the documented idiom and
rewrite it into a single function call for one of these new functions.

This does cause a bit of function sprawl, but that seems preferable to
introducing more complex rules for when file(...) can and cannot read
binary files, making the behavior of these various functions easier to
understand in isolation.
2019-01-25 10:18:44 -08:00
..
block-as-list-attr configs/configupgrade: Upgrading of simple nested blocks 2018-12-04 11:37:39 -08:00
block-as-list-dynamic configs/configupgrade: Convert block-as-attr to dynamic blocks 2018-12-04 11:37:39 -08:00
block-as-list-dynamic-item configs/configupgrade: Convert block-as-attr to dynamic blocks 2018-12-04 11:37:39 -08:00
block-as-list-dynamic-nested configs/configupgrade: Convert block-as-attr to dynamic blocks 2018-12-04 11:37:39 -08:00
block-as-map-attr configs/configupgrade: Upgrading of simple nested blocks 2018-12-04 11:37:39 -08:00
depends-on configs/configupgrade: Upgrade depends_on in resources and outputs 2018-12-05 10:25:01 -08:00
funcs-replaced configs/configupgrade: Replace lookup(...) with index syntax 2018-12-04 11:37:39 -08:00
hash-of-file lang: New file-hashing functions 2019-01-25 10:18:44 -08:00
interp-naked configupgrade: Basic expression formatting 2018-10-16 18:50:29 -07:00
lifecycle configs/configupgrade: Upgrade the resource "lifecycle" nested block 2018-12-05 10:25:01 -08:00
map-attr-as-block configs/configupgrade: Test that map attrs as blocks are fixed 2018-12-04 11:37:39 -08:00
nested-exprs-in-hcl configs/configupgrade: Upgrade expressions nested in HCL list/object 2018-12-04 11:37:39 -08:00
noop configs/configupgrade: Pass through connection and provisioner blocks 2018-12-05 10:25:01 -08:00
noop-exprs configupgrade: Basic expression formatting 2018-10-16 18:50:29 -07:00
provider-addrs configs/configupgrade: Upgrade provider addresses 2018-12-05 10:25:01 -08:00
redundant-list configs/configupgrade: Remove redundant list brackets 2018-12-07 17:05:36 -08:00
rename-json configupgrade: Basic expression formatting 2018-10-16 18:50:29 -07:00
rename-json-conflict configupgrade: Basic expression formatting 2018-10-16 18:50:29 -07:00
traversals configs/configupgrade: Fix up references to counted/uncounted resources 2018-12-04 11:37:39 -08:00
variable-type configupgrade: Basic expression formatting 2018-10-16 18:50:29 -07:00