Commit Graph

25888 Commits

Author SHA1 Message Date
James Bardin 98cfb51f27 convert /terraform to use new provider config
Change all ModuleInstances in provider types to plain Modules
2020-03-11 11:21:45 -04:00
James Bardin 856791ec7e
Merge pull request #24331 from hashicorp/jbardin/module-expansion-in-part
More module expansion groundwork
2020-03-11 11:10:02 -04:00
James Bardin 1252726cda update CHANGELOG.md 2020-03-11 10:31:41 -04:00
James Bardin f6221100ee
Merge pull request #24149 from mlafeldt/fix-oss-state-locking
Fix & improve state locking of OSS backend
2020-03-11 10:28:12 -04:00
James Bardin 8497adcb6e AbsProviderConfig to use addrs.Module
Change ModuleInstance to Module in AbsProviderConfig, because providers
need to be handled before module expansion, and should not be used
defined inside an expanded module at all.

Renaming of the addrs type can happen later, when there's less work
in-flight around provider configuration.
2020-03-10 20:25:44 -04:00
James Bardin fae5f9958d remove GraphNodeModuleInstance from Resource types
Remove the requirement for most *Resource types to be a
GraphNodeModuleInstance, ensuring that they never call ctx.Path while
being evaluated. This gets rid of most of the direct need for the Path
method currently implemented by NodeResourceAbstract, leaving the
provider and schema related calls for a subsequent PR.
2020-03-10 20:22:22 -04:00
James Bardin 68b500c5c7 remove abs addrs from NodeAbstractResource
This adds more shimming into that node itself, but allows us to pull it
out of the config transformer, and ensure we can create the resources
correctly from the config. The shimmed address usage can then be raised
out of the abstract resource, into the expanded node types.
2020-03-10 17:25:11 -04:00
James Bardin 245296850b fix reference transformer comments
GraphNodeSubPath/GraphNodeModuleInstance is not required for references
2020-03-10 17:25:11 -04:00
James Bardin ab9a2935ce implement NodePlannableLocal
Using this in the same manner as NodePlannableOutput, which expands the
local values within modules. All thee output and local types are used in
both plan and apply, we may rename these to better reflect their usage
in expanding. That wait until we are certain that apply won't need any
extra machinery for handling values that aren't stored in the plan.
2020-03-10 17:25:11 -04:00
James Bardin 67e06f4fbe remove more UnkeyedInstanceShim
planning variables and outputs no longer needs module instances
2020-03-10 17:25:11 -04:00
James Bardin 87776913c6 nodeExpandModule doesn't need a Path() method
Unexpanded nodes can't implement GraphNodeModuleInstance (nee
GraphNodeSubPath), because they aren't aware how they have been
expanded, and may be in multiple distinct paths.

Since that means the EvalContext won't be in the correct path during the
walk, we just have to ensure that we don't use `ctx.Path()` inside Eval.
2020-03-10 17:25:11 -04:00
James Bardin a104ecb69d GraphNodeExpand is not used 2020-03-10 17:25:11 -04:00
James Bardin be2629d2f9 GraphNodeSubPath -> GraphNodeModuleInstance 2020-03-10 17:25:11 -04:00
James Bardin 215f60d5cf remove module shims from module expansion nodes 2020-03-10 17:25:11 -04:00
James Bardin 6ae9013c3f add addrs.Module.Equal
Mirror the addrs.ModuleInstance.Equal method
2020-03-10 17:25:11 -04:00
James Bardin bd9cfca794 rename GraphNodeSubPath -> GraphNodeModuleInstance 2020-03-10 17:25:11 -04:00
James Bardin b1df763541 remove UnkeyedInstanceShim from ref transformer
Since references are always within the scope of a single module, and we
can connect all module instance outputs for proper ordering, the
existing transformer works directly with only module paths as opposed to
module instances.

TODO: TransformApplyReferences for more precise module instance
targeting?
2020-03-10 17:25:11 -04:00
James Bardin 521bdcc241 implement GraphNodeModulePath
GraphNodeModulePath is similar to GraphNodeSubPath, except that it
returns an addrs.Module rather than an addrs.ModuleInstance. This is
used by the ReferenceTransformer to connect references, when modules may
not yet be expanded.

Because references only exist within the scope of a module, we can
connect everything knowing only the module path. If the reference is to
an expanded module instance output, we can still properly order the
reference because we'll wait for the entire module to complete
evaluation.
2020-03-10 17:25:11 -04:00
James Bardin 51bdcbb48c
Merge pull request #24341 from hashicorp/jbardin/cbd-test-fix
fix a flapping test involving CreateBeforeDestroy
2020-03-10 17:21:05 -04:00
Kristin Laemmert 5901952882
command: tests should not leave dirs behind thank you (#24340) 2020-03-10 16:32:22 -04:00
James Bardin cb99dddb4d fix a flapping test involving CreateBeforeDestroy
A typo in the config caused it to disagree with the plan on whether a
resource should be CreateBeforeDestroy, preventing it from being ordered
properly. Add the new CreateBeforeDestroy field to the test fixture
state as well for completeness.
2020-03-10 16:16:50 -04:00
Kristin Laemmert c7cc0afb80
Mildwonkey/ps schema (#24312)
* add Config to AttachSchemaTransformer for providerFqn lookup
* terraform: refactor ProvidedBy() to return nil when provider is not set
in config or state
2020-03-10 14:43:57 -04:00
Pam Selle ca26efc5af
Update CODEOWNERS 2020-03-10 14:10:38 -04:00
Pam Selle 7bd0071719
Update CODEOWNERS 2020-03-10 14:10:27 -04:00
Chris Griggs 40f2511629
Merge pull request #24335 from hashicorp/cgriggs01-vmc-links
[Website] vmc provider links
2020-03-10 11:07:21 -07:00
Chris Griggs 822f608a3c [Website] vmc provider links 2020-03-10 08:59:20 -07:00
Kristin Laemmert add16fc67b
jsonstate: sort child modules by address for consistency (#24329)
* jsonstate: sort child modules by address for consistency
2020-03-09 15:57:14 -04:00
Alisdair McDiarmid ff3895ea26 Set Codecov threshold to 0.05% to avoid flicker
We have some non-deterministic tests which flap the coverage up and down
slightly, but that should not set a failing status on PRs. This commit
sets a threshold of 0.5% coverage change to prevent this.
2020-03-09 14:56:30 -04:00
James Bardin 654e880bb8
Merge pull request #24084 from hashicorp/jbardin/cbd-instance-state
Add CreateBeforeDestroy to instance state
2020-03-09 13:16:29 -04:00
David McNeil 3a079b04db Change file permission ordering to avoid race condition
Signed-off-by: David McNeil <mcneil.david2@gmail.com>
2020-03-09 11:04:07 -04:00
David McNeil b95daa87c8 Fix permissions of habitat provision's user.toml
Signed-off-by: David McNeil <mcneil.david2@gmail.com>
2020-03-09 10:24:29 -04:00
Alisdair McDiarmid 94d7236cd4
Merge pull request #24313 from hashicorp/alisdair/fix-coverage-blips-in-statemgr-filesystem
states: Fix coverage blips in statemgr/filesystem
2020-03-09 09:27:45 -04:00
Paddy 1b5e2b70c6
Update CHANGELOG.md 2020-03-06 15:37:02 -08:00
Alisdair McDiarmid f54e2a62bf states: Fix coverage blips in statemgr/filesystem
Something non-deterministic in the test suite is causing a coverage blip
in a line in the filesystem state manager. This commit adds a test which
specifically covers that line, which hopefully pleases the Codecov robot.
2020-03-06 17:55:28 -05:00
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