Commit Graph

25442 Commits

Author SHA1 Message Date
Kristin Laemmert
6118d22c1f
terraform: refactor ProvidedBy() to return an addrs.ProviderConfig interface (#24295)
* terraform: refactor ProvidedBy() to return an addrs.ProviderConfig
interface

This refactor allows terraform to indicate whether a specific provider
configuration was found for the resource or if it is instead returning
the assumed default.

With that additional information the provider transformer can check if
there is a specific (non-default) provider FQN.
2020-03-06 08:33:44 -05:00
Paddy
e6592dc710
Add support for provider metadata to modules. (#22583)
Implement a new provider_meta block in the terraform block of modules, allowing provider-keyed metadata to be communicated from HCL to provider binaries.

Bundled in this change for minimal protocol version bumping is the addition of markdown support for attribute descriptions and the ability to indicate when an attribute is deprecated, so this information can be shown in the schema dump.

Co-authored-by: Paul Tyng <paul@paultyng.net>
2020-03-05 16:53:24 -08:00
Chris Griggs
4654b45d6b
Merge pull request #24298 from hashicorp/cgriggs01-website
[Website] Update provider links
2020-03-05 11:29:15 -08:00
Chris Griggs
6969da7d02 [Website] Update provider links 2020-03-05 11:19:15 -08:00
Kim Ngo
d88729d922
registry: configurable client timeout (#24259)
* registry: configurable client timeout

* Update registry/client_test.go

    Fix env test cleanup

    Co-Authored-By: Alisdair McDiarmid <alisdair@users.noreply.github.com>
2020-03-05 10:37:06 -06:00
Kim Ngo
8f5159ad54
Merge pull request #24260 from findkim/registry-retry
registry: retryable discovery requests
2020-03-05 10:00:08 -06:00
Alisdair McDiarmid
c14f572d5c
Update CHANGELOG.md 2020-03-05 09:48:55 -05:00
Kristin Laemmert
9280b7787a
Update CHANGELOG.md 2020-03-05 08:15:57 -05:00
Kristin Laemmert
7f1b0a4681
command/jsonstate: fix inconsistency with resource address (#24256)
* command/jsonstate: fix inconsistency with resource address

Resource addresses in state output were not including index for
instances created with for_each or count, while the index was appearing
in the plan output. This PR fixes that inconsistency, adds tests, and
updates the existing tests.

Fixes #24110

* add tests showing expected prior state resource addressing
* added example of show json state output with modules
2020-03-05 08:13:45 -05:00
Martin Atkins
5c894e7ada
Update CHANGELOG.md 2020-03-04 13:38:36 -08:00
Martin Atkins
43c1ec69e2 build: Use Go 1.14
This implies some notable changes that will have a visible impact to
end-users of official Terraform releases:

- Terraform is no longer compatible with MacOS 10.10 Yosemite, and
  requires at least 10.11 El Capitan. (Relatedly, Go 1.14 is planned to be
  the last release to support El Capitan, so while that remains supported
  for now, it's notable that Terraform 0.13 is likely to be the last major
  release of Terraform supporting it, with 0.14 likely to further require
  MacOS 10.12 Sierra.)

- Terraform is no longer compatible with FreeBSD 10.x, which has reached
  end-of-life. Terraform now requires FreeBSD 11.2 or later.

- Terraform now supports TLS 1.3 when it makes connections to remote
  services such as backends and module registries. Although TLS 1.3 is
  backward-compatible in principle, some legacy systems reportedly work
  incorrectly when attempting to negotiate it. (This change does not
  affect outgoing requests made by provider plugins, though they will see
  a similar change in behavior once built with Go 1.13 or later.)

- Ed25519 certificates are now supported for TLS 1.2 and 1.3 connections.

- On UNIX systems where "use-vc" is set in resolv.conf, TCP will now be
  used for DNS resolution. This is unlikely to cause issues in practice
  because a system set up in this way can presumably already reach its
  nameservers over TCP (or else other applications would misbehave), but
  could potentially lead to lookup failures in unusual situations where a
  system only runs Terraform, has historically had "use-vc" in its
  configuration, but yet is blocked from reaching its configured
  nameservers over TCP.

- Some parts of Terraform now support Unicode 12.0 when working with
  strings. However, notably the Terraform Language itself continues to
  use the text segmentation tables from Unicode 9.0, which means it lacks
  up-to-date support for recognizing modern emoji combining forms as
  single characters. (We may wish to upgrade the text segmentation tables
  to Unicode 12.0 tables in a later commit, to restore consistency.)

This also includes some changes to the contents of "vendor", and
particularly to the format of vendor/modules.txt, per the changes to
vendoring in the Go 1.14 toolchain. This new syntax is activated by the
specification of "go 1.14" in the go.mod file.

Finally, the exact format of error messages from the net/http library has
changed since Go 1.12, and so a couple of our tests needed updates to
their expected error messages to match that.
2020-03-04 13:26:50 -08:00
Pam Selle
bc7b03e0ed Customize codecov comment 2020-03-04 15:19:42 -05:00
Alisdair McDiarmid
29c0cb79a1
Merge pull request #24277 from hashicorp/alisdair/fix-non-string-map-key-panics
lang: Fix non-string key panics in map function
2020-03-04 14:30:21 -05:00
Pam Selle
e26997e2a3
Merge pull request #20260 from nlamirault/patch-1
Change the UptimeRobot provider
2020-03-04 13:56:10 -05:00
Chris Griggs
0782ca8c38
Merge branch 'master' into patch-1 2020-03-04 10:11:40 -08:00
Alisdair McDiarmid
37006c5841 lang: Fix non-string key panics in map function
The map function assumed that the key arguments were strings, and would
panic if they were not.

After this commit, calling `map(1, 2)` will result in a map `{"1" = 1}`,
and calling `map(null, 1)` will result in a syntax error.

Fixes #23346, fixes #23043
2020-03-04 10:54:55 -05:00
James Bardin
0bd40fd496
Merge pull request #24265 from hashicorp/jbardin/cty-update
Update cty to v1.3.1 and migrate to cty stdlib function where applicable
2020-03-04 09:33:51 -05:00
Chris Griggs
3986d2fa3c
Merge pull request #24267 from hashicorp/cgriggs01-oktaasa
[Website] Add new provider links
2020-03-03 16:23:53 -08:00
Chris Griggs
07558742da add Okta ASA provider links 2020-03-03 14:03:50 -08:00
James Bardin
d999d43483 remove old funcs code 2020-03-03 15:23:58 -05:00
James Bardin
d0d85f909a convert cty func calls to stdlib 2020-03-03 15:23:58 -05:00
James Bardin
7d3fe3b404 update cty 2020-03-03 15:20:11 -05:00
findkim
bb968634ac registry: fix env test cleanup 2020-03-03 13:52:39 -06:00
Pam Selle
9ae266f8fe Coverage updates, roll back makefile change, use travis specific script 2020-03-03 14:10:17 -05:00
James Bardin
449ea72e87 update CHANGELOG.md 2020-03-03 13:48:19 -05:00
Pam Selle
6a4cfa18da Coverage 2020-03-03 13:01:05 -05:00
findkim
4f55721c2e registry: setup client logger 2020-03-03 11:22:34 -06:00
Pam Selle
809d34e5b2 Add codecov 2020-03-03 12:19:07 -05:00
Pam Selle
2b2ff24404 Add 0.12 branch to travis list 2020-03-03 12:16:14 -05:00
findkim
a3f26ccd12 website/docs/commands: document TF_REGISTRY_DISCOVERY_RETRY 2020-03-03 10:08:36 -06:00
James Bardin
a3be47584a
Merge pull request #24254 from hashicorp/jbardin/state-mv
state mv should always use target address to determine each mode.
2020-03-03 10:21:03 -05:00
Pam Selle
430b7c8da6
Merge pull request #24249 from hashicorp/config-package-deletions
Deletions in the config package
2020-03-02 16:11:53 -05:00
Pam Selle
1a8e7cbd1b Move the commit along with 2020-03-02 15:56:38 -05:00
Pam Selle
fa3b54c0c4 Move type construction out, delete func 2020-03-02 15:54:50 -05:00
Pam Selle
dd6fb16971 Deletions in the config package 2020-03-02 15:35:35 -05:00
James Bardin
10d926904f state mv should always target instance each mode
When doing a state mv of an instance, the resulting each mode should
always be taken from the target address.
2020-03-02 14:45:03 -05:00
Pam Selle
c4441661b0
Merge pull request #24227 from zzhai/patch-1
Update remote.html.md
2020-03-02 13:04:49 -05:00
zzhai
687d74786f
Update remote.html.md
A minor typo
2020-02-26 12:19:10 -08:00
Martin Atkins
f899f5aa42 command/init: new error message for signature verification failure
Our initial Terraform 0.13.0 release will continue to support only the
hard-coded official HashiCorp signing key, with support for other keys to
follow in a later release once the trust infrastructure is in place to
support that.

This change is intended to (marginally) improve the UX for a possible
future situation where a HashiCorp-distributed provider makes a released
signed with a new key and a prior version of Terraform ends up trying to
install it due to incorrect version constraints. With this new text we
hope to give the user a better prompt for onward troubleshooting, but
in a sort of hedging way because we have not yet finalized the details of
how new keys might roll out in practice.

Hopefully a user seeing this message would consult the release notes for
Terraform itself and for the provider in question and find some
as-yet-undetermined information about how to proceed.

If the decentralized trust model design comes together before the v0.13.0
release then we may make further amendments here to prepare for that, but
that work should not block the v0.13.0 release if other work concludes
first.
2020-02-25 10:31:54 -05:00
Martin Atkins
8eff19e48f internal/getproviders: Initial implementation of FilesystemMirrorSource
This is a basic implementation of FilesystemMirrorSource for now aimed
only at the specific use-case of scanning the cache of provider plugins
Terraform will keep under the ".terraform" directory, as part of our
interim provider installer implementation for Terraform 0.13.

The full functionality of this will grow out in later work when we
implement explicit local filesystem mirrors, but for now the goal is to
use this just to inspect the work done by the automatic installer once
we switch it to the new provider-FQN-aware directory structure.

The various FIXME comments in this are justified by the limited intended
scope of this initial implementation, and they should be resolved by
later work to use FilesystemMirrorSource explicitly for user-specified
provider package mirrors.
2020-02-25 10:30:03 -05:00
Martin Atkins
c073db09ea internal/getproviders: Sorting and filtering for lists of PackageMeta
These are utility functions to ease processing of lists of PackageMeta
elsewhere, once we have functionality that works with multiple packages
at once. The local filesystem mirror source will be the first example of
this, so these methods are motivated mainly by its needs.
2020-02-25 10:30:03 -05:00
Martin Atkins
d82a36b6f5 internal/getproviders: ParsePlatform method
This is just to have a centralized set of logic for converting from a
platform string (like "linux_amd64") to a Platform object, so we can do
normalization and validation consistently.
2020-02-25 10:30:03 -05:00
Martin Atkins
3078d21c5f internal/getproviders: Include Provider and Version in PackageMeta
Although we tend to return these in contexts where at least one of these
values is implied, being explicit means that PackageMeta values are
self-contained and less reliant on such external context.
2020-02-25 10:30:03 -05:00
Martin Atkins
b53e3074cf addrs: Provider.LessThan
When making lists of providers (or lists that contain providers) it's
helpful to have a canonical ordering in order to produce deterministic
results.

This ordering has no semantic meaning and is just here for the sake of
having a predictable standard.
2020-02-25 10:30:03 -05:00
Martin Atkins
49498759e2
Update CHANGELOG.md 2020-02-25 10:23:23 -05:00
Martin Atkins
67d95b97ce lang/funcs: templatefile requires valid variable names
Previously the templatefile function would permit any arbitrary string as
a variable name, but due to the HCL template syntax it would be impossible
to refer to one that isn't a valid HCL identifier without causing an
HCL syntax error.

The HCL syntax errors are correct, but don't really point to the root
cause of the problem. Instead, we'll pre-verify that the variable names
are valid before we even try to render the template, and given a
specialized error message that refers to the vars argument expression as
the problematic part, which will hopefully make the resolution path
clearer for a user encountering this situation.

The syntax error still remains for situations where all of the variable
names are correct but e.g. the user made a typo referring to one, which
makes sense because in that case the problem _is_ inside the template.
2020-02-25 10:19:46 -05:00
Martin Atkins
ec9f950b3f lang/funcs: Test actual error messages from templatefile
This function has a number of different error cases with hopefully-helpful
error messages for each, so it's good to test we're getting the error
message we were actually expecting in each case.
2020-02-25 10:19:46 -05:00
Chris Griggs
447fb6146f
Merge pull request #24175 from hashicorp/cgriggs01-quorum
[Website] update provider links
2020-02-25 07:14:17 -08:00
Pam Selle
c249943360
Module Expansion: Part 2 (#24154)
* WIP: dynamic expand

* WIP: add variable and local support

* WIP: outputs

* WIP: Add referencer

* String representation, fixing tests it impacts

* Fixes TestContext2Apply_outputOrphanModule

* Fix TestContext2Apply_plannedDestroyInterpolatedCount

* Update DestroyOutputTransformer and associated types to reflect PlannableOutputs

* Remove comment about locals

* Remove module count enablement

* Removes allowing count for modules, and reverts the test,
while adding a Skip()'d test that works when you re-enable
the config

* update TargetDownstream signature to match master

* remove unnecessary method

Co-authored-by: James Bardin <j.bardin@gmail.com>
2020-02-24 17:42:32 -05:00
Martin Atkins
d095f57290
Update CHANGELOG.md 2020-02-20 18:16:54 -08:00