Commit Graph

25256 Commits

Author SHA1 Message Date
Martin Atkins e9d0822b2a command: Accept a "provider source" from the main package
Following the same approach we use for other CLI-Config-able objects like
the service discovery system, the main package is responsible for
producing a suitable implementation of this interface which the command
package can then use.

When unit testing in the command package we can then substitute mocks as
necessary, following the dependency inversion principle.
2020-01-24 13:45:37 -08:00
Pam Selle 2672ddba02
Merge pull request #23949 from hashicorp/docs/dynamic-blocks
Update dynamic block docs to use a better example
2020-01-24 14:42:27 -05:00
Pam Selle 213189c3d0 Use a real resource 2020-01-24 13:47:51 -05:00
Pam Selle 885ff69c50 Update docs to generalize/use fake example vs one that could be misleading 2020-01-24 12:44:07 -05:00
Chris Griggs b1313eaf7d
Merge pull request #23935 from hashicorp/cgriggs01-community-links
[Website] Adding two new community providers
2020-01-23 10:34:53 -08:00
Chris Griggs 2b3b2781f2 Adding two new community providers 2020-01-23 10:27:51 -08:00
tf-release-bot 9670cd37df Cleanup after v0.12.20 release 2020-01-22 22:08:22 +00:00
tf-release-bot d12152f730
v0.12.20 2020-01-22 21:51:40 +00:00
Pam Selle 28b43a7a4e
Update CHANGELOG.md 2020-01-22 15:12:17 -05:00
Pam Selle 9f374eb1fc
Merge pull request #23865 from loslocostacos/fix-win-tfe-pathing
Fix compatibility issue between Windows CLI and remote plan and apply
2020-01-22 12:04:41 -05:00
Martin Atkins 4d7122a0dd internal/getproviders: LookupLegacyProvider
This is a temporary helper so that we can potentially ship the new
provider installer without making a breaking change by relying on the
old default namespace lookup API on the default registry to find a proper
FQN for a legacy provider provider address during installation.

If it's given a non-legacy provider address then it just returns the given
address verbatim, so any codepath using it will also correctly handle
explicit full provider addresses. This also means it will automatically
self-disable once we stop using addrs.NewLegacyProvider in the config
loader, because there will therefore no longer be any legacy provider
addresses in the config to resolve. (They'll be "default" provider
addresses instead, assumed to be under registry.terraform.io/hashicorp/* )

It's not decided yet whether we will actually introduce the new provider
in a minor release, but even if we don't this API function will likely be
useful for a hypothetical automatic upgrade tool to introduce explicit
full provider addresses into existing modules that currently rely on
the equivalent to this lookup in the current provider installer.

This is dead code for now, but my intent is that it would either be called
as part of new provider installation to produce an address suitable to
pass to Source.AvailableVersions, or it would be called from the
aforementioned hypothetical upgrade tool.

Whatever happens, these functions can be removed no later than one whole
major release after the new provider installer is introduced, when
everyone's had the opportunity to update their legacy unqualified
addresses.
2020-01-22 09:02:22 -08:00
Chris Griggs 35acaf8a85
Merge pull request #23922 from hashicorp/cgriggs01-metalcloud
[Website] Add MetalCloud provider links
2020-01-22 08:54:17 -08:00
Chris Griggs be2dcb4a32
Merge pull request #23923 from hashicorp/cgriggs01-stable-metal
[Cherry-pick]
2020-01-22 08:54:06 -08:00
Chris Griggs 38afbb34c6 [Website] Add MetalCloud provider links 2020-01-22 08:44:00 -08:00
Chris Griggs efa71f8aa7 [Website] Add MetalCloud provider links 2020-01-22 08:42:19 -08:00
Avi Zurel 96645d7ea7 website: Better example for running 0.12upgrade across many directories at once 2020-01-21 18:28:06 -08:00
Chris Griggs b8d720f834
Merge pull request #23916 from hashicorp/cgriggs01-stable
[Cherrypick] community links
2020-01-21 17:45:48 -08:00
Chris Griggs 8acab32c42
Merge pull request #23915 from hashicorp/cgriggs01-community-additions
[Website] Updating community provider listings
2020-01-21 17:45:43 -08:00
Chris Griggs 9ea88f22fc add/update community provider listings 2020-01-21 17:12:05 -08:00
Chris Griggs 2010ce2804 add/update community provider listings 2020-01-21 17:08:06 -08:00
Steve Burns 26305a83a3 Remove unecessary conditions for module manifest read and write functions 2020-01-17 12:14:17 -07:00
Daniel Dreier 05c9407986
Merge pull request #23293 from kmfk/hide-values-undeclared-var-warning
Avoid leaking sensitive values in undeclared variable warnings
2020-01-15 16:08:19 -08:00
James Bardin 94b1792b99
Merge pull request #23862 from hashicorp/jbardin/destroy-prov-path
it's safe for destroy provisioners to access path
2020-01-15 16:59:34 -05:00
James Bardin 35107acc46 allow "terraform" in destroy provisioners
The values supplied in terraform are static, and do not create any
dependencies.
2020-01-15 11:39:01 -05:00
Steve Burns 43b855743b Uniformity for module manifest dir read/write 2020-01-14 21:13:36 -07:00
Steven Burns 98e612ee50 Add condition for conversion of module path in manifest 2020-01-14 21:06:42 -07:00
Steve Burns 8bc0ef8fdc Attempt to change the output of module manifest 2020-01-14 20:42:00 -07:00
Kristin Laemmert 01036e7b31
Update CHANGELOG.md 2020-01-14 08:30:41 -05:00
Kristin Laemmert 4c221cbcb9
website: document optional syntax for required_providers setting (#23854) 2020-01-14 07:59:18 -05:00
Pam Selle da67d86d7f
Merge pull request #23855 from hashicorp/pselle/deletion
Deletion of unused code in backend and config.go
2020-01-13 17:03:43 -05:00
Pam Selle 78b1220558 Remove config.go and update things using its aliases 2020-01-13 16:50:05 -05:00
James Bardin c376905adc it's safe for destroy provisioners to access path
The path values are statically loaded, and do not create any
dependencies that could cause problems with destroy provisioners.
2020-01-13 16:44:44 -05:00
Martin Atkins 57158df4b3
Update CHANGELOG.md
De-emphasize the "experiments" section in favor of the non-experimental changes in the same release.
2020-01-13 13:43:42 -08:00
Chris Griggs 56cd7859e0
Merge pull request #23857 from hashicorp/cgriggs01-stable
[cherry-pick]add checkpoint links
2020-01-13 13:19:09 -08:00
Chris Griggs 6d00e8dc28
Merge pull request #23856 from hashicorp/cgriggs01-checkpoint
[Website]add checkpoint links
2020-01-13 13:19:04 -08:00
Chris Griggs ffbcf55817 [Website]add checkpoint links 2020-01-13 13:14:38 -08:00
Chris Griggs 1a2ea70027 [Website]add checkpoint links 2020-01-13 13:13:34 -08:00
Pam Selle 37d16b2f79 Deletions from backend local 2020-01-13 15:30:46 -05:00
Pam Selle bb3d513c4f Some deletions from static analysis 2020-01-13 15:22:34 -05:00
Kristin Laemmert 726a74ef65
Update CHANGELOG.md 2020-01-13 15:11:31 -05:00
Kristin Laemmert 92f427779d
command/show: fix issue with show and aliased provider (#23848)
The formatter in `command/format/state.go`, when formatting a resource
with an aliased provider, was looking for a schema with the alias (ie,
test.foo), but the schemas are only listed by provider type (test).
Update the state formatter to lookup schemas by provider type only.

Some of the show tests (and a couple others) were not properly cleaning
up the created tmpdirs, so I fixed those. Also, the show tests are using
a statefile named `state.tfstate`, but were not passing that path to the
show command, so we were getting some false positives (a `show` command
that returns `no state` exits 0).

Fixes #21462
2020-01-13 15:10:00 -05:00
Kristin Laemmert 272cb44d3d
configs: extend module.ProviderRequirements to include the addrs.Provider instead of just version constraints. (#23843)
Renamed file.ProviderRequirements to file.RequiredProviders to match the
name of the block in the configuration. file.RequiredProviders contains
the contents of the file(s); module.ProviderRequirements contains the
parsed and merged provider requirements.

Extended decodeRequiredProvidersBlock to parse the new provider source
syntax (version only, it will ignore any other attributes).

Added some tests; swapped deep.Equal with cmp.Equal in the
terraform/module_dependencies_test.go because deep was not catching
incorrect constraints.
2020-01-13 11:31:47 -05:00
Paul Tyng 0ca6f743a4
Merge pull request #23845 from hashicorp/paultyng-patch-1
Add unifi and airtable community providers
2020-01-13 10:58:25 -05:00
James Bardin c69267ea72 update CHANGELOG.md 2020-01-13 10:45:13 -05:00
Paul Tyng a53832badd
Shameless self promotion 2020-01-13 09:58:01 -05:00
ZMI-RyanMann 66411b5ca0 website/docs: Updated documentation for range function pseudocode (#23823) 2020-01-13 09:17:47 -05:00
Martin Atkins 9333b19bd7
Update CHANGELOG.md 2020-01-10 15:32:40 -08:00
Martin Atkins ff4ea042c2 config: Allow module authors to specify validation rules for variables
The existing "type" argument allows specifying a type constraint that
allows for some basic validation, but often there are more constraints on
a variable value than just its type.

This new feature (requiring an experiment opt-in for now, while we refine
it) allows specifying arbitrary validation rules for any variable which
can then cause custom error messages to be returned when a caller provides
an inappropriate value.

    variable "example" {
      validation {
        condition = var.example != "nope"
        error_message = "Example value must not be \"nope\"."
      }
    }

The core parts of this are designed to do as little new work as possible
when no validations are specified, and thus the main new checking codepath
here can therefore only run when the experiment is enabled in order to
permit having validations.
2020-01-10 15:23:25 -08:00
Martin Atkins 02576988c1 lang: "try" and "can" functions
These are intended to make it easier to work with arbitrary data
structures whose shape might not be known statically, such as the result
of jsondecode(...) or yamldecode(...) of data from a separate system.

For example, in an object value which has attributes that may or may not
be set we can concisely provide a fallback value to use when the attribute
isn't set:

    try(local.example.foo, "fallback-foo")

Using a "try to evaluate" model rather than explicit testing fits better
with the usual programming model of the Terraform language where values
are normally automatically converted to the necessary type where possible:
the given expression is subject to all of the same normal type conversions,
which avoids inadvertently creating a more restrictive evaluation model
as might happen if this were handled using checks like a hypothetical
isobject(...) function, etc.
2020-01-10 15:23:25 -08:00
Martin Atkins 5771db6696 addrs: Fix infinite recursion in AbsInputVariableInstance.String 2020-01-10 15:23:25 -08:00