Commit Graph

25589 Commits

Author SHA1 Message Date
Petros Kolyvas c7cae98076
GitHub hates me 2020-04-03 16:14:08 -04:00
Petros Kolyvas cd54300621 Why won't you h4 maintainers. 2020-04-03 16:13:36 -04:00
Petros Kolyvas db5878ff04 More updates and fixes, some grammatical, some clarity issues, one markdown bugaboo 2020-04-03 16:11:42 -04:00
Petros Kolyvas 68155c23ac Merge branch 'contribution-codeowners' of github:pkolyvas/terraform into contribution-codeowners 2020-04-03 16:06:11 -04:00
Petros Kolyvas ca90de14ec Updated Contribution Guide TOC 2020-04-03 16:04:55 -04:00
Petros Kolyvas 942b4df545 Added a provisioners section and a maintainers section 2020-04-03 16:00:19 -04:00
Petros Kolyvas a3dcda6ae5
tabs are hard 2020-04-01 15:32:47 -04:00
Petros Kolyvas 464a40b185 OCD spacing, formatting of Codeowners 2020-04-01 15:31:12 -04:00
Petros Kolyvas ed9a2ea118 OCD spacing, formatting of Codeowners 2020-04-01 15:30:17 -04:00
Petros Kolyvas 9d097195a3
Fixing some minor formatting issues
They don't seem to be present on `localhost`
2020-04-01 15:28:50 -04:00
Petros Kolyvas 3725b4b3a0 Updated provisioners & added team-tf-core to http backend ownship, possibly in error. 2020-04-01 15:09:15 -04:00
Petros Kolyvas 700182dc7a Fixed etcdv3 maintainer and added provisioners 2020-03-31 16:13:50 -04:00
Petros Kolyvas 61fe0a3402 Fixed an ordering/clarity issue with the TOC 2020-03-27 17:20:53 -04:00
Petros Kolyvas 96e1a1f800 more prescriptive Contributor's guide 2020-03-27 17:12:35 -04:00
Petros Kolyvas 236b108cd8 Added etcdv3 maintainer 2020-03-27 16:43:49 -04:00
Petros Kolyvas a40207c9eb Updated contributing to Terraform 2020-03-27 11:13:28 -04:00
Petros Kolyvas c434db158e Codeowners initial update 2020-03-27 10:08:59 -04:00
Alisdair McDiarmid d99a663ea5
Update CHANGELOG.md 2020-03-27 09:20:44 -04:00
Alisdair McDiarmid 7b94ddd2f6
Merge pull request #24471 from hashicorp/alisdair/fmt-source
command/fmt: Include source snippets in errors
2020-03-27 09:19:12 -04:00
Alisdair McDiarmid 7302bfb484
Merge pull request #24473 from hashicorp/alisdair/fix-multiline-diagnostic-output
command/format: Fix multi-line diagnostic output
2020-03-27 09:18:51 -04:00
Alisdair McDiarmid a23c3e3c81 command/format: Fix multi-line diagnostic output
Previously, if a diagnostic context spanned multiple lines, any lines
which did not overlap with the highlight range would be displayed as
blank. This commit fixes the bug.

The problem was caused by the unconditional use of `PartitionAround` to
split the line into before/highlighted/after ranges. When two ranges
don't overlap, this method returns empty ranges, which results in a
blank line. Instead, we first check if the ranges do overlap, and if not
we print the entire line from the context.
2020-03-26 15:53:52 -04:00
Alisdair McDiarmid 206e2e6d6a command/fmt: Include source snippets in errors
Previously, diagnostic errors would display the filename and line
number, along with "(source code not available)". This is because the
fmt command directly loads and parses the configuration, instead of
using the config loader.

This commit registers the manually parsed source as a synthetic
configuration file, so that the diagnostic formatter can look up the
source for the range with the error and display it.
2020-03-26 14:00:26 -04:00
Pam Selle 369b0560b9
Merge pull request #24446 from hashicorp/pselle/moduleinstance-outputs
Update ModuleCallOutput and add AbsModuleCallOutput
2020-03-26 13:42:13 -04:00
Pam Selle f738f85241 Create non-specific ModuleCallOutput 2020-03-26 13:29:38 -04:00
James Bardin 34cab3bc99
Merge pull request #24461 from hashicorp/jbardin/eval-context-path
Module Expansion Activate!
2020-03-26 12:45:23 -04:00
James Bardin cec989d660 comment update and remove extra Name method
This name method won't be called in the full graph, and remove it to
prevent confusion with the parent node in logs.
2020-03-26 11:52:41 -04:00
James Bardin 4f1692cfaf comment updates 2020-03-25 17:03:06 -04:00
James Bardin 5810261add don't log path in EvalRaw
eval nodes no longer always have a context path
2020-03-25 17:03:06 -04:00
James Bardin 04a117b2a1 module expansion test
simplify the test a bit and add a few more combinations to the config
2020-03-25 17:03:06 -04:00
James Bardin cd045f6f4e enable count and for_each in configuration 2020-03-25 17:03:06 -04:00
James Bardin 8eb3f2cf52 orphan resources needs to use AbsResource
The expand logic was separated into
nodeExpandRefreshableManagedResource, but the orphan logic wasn't
updated.
2020-03-25 17:03:06 -04:00
James Bardin 7f0199bab0 cleanup some expanders 2020-03-25 17:03:06 -04:00
James Bardin 2474b87ff4 remove UnkeyedInstanceShim from some provider nodes
Remove the shims where they aren't necessary from the Init and Close
provider nodes. This also removed some provider path checks from the
builtin eval context, which cannot be resolved since the context may not
be created with a ModuleInstance path.
2020-03-25 17:03:06 -04:00
James Bardin b3fc0dab94 use addrs.ConfigResource for dependency tracking
We can't get module instances during transformation, so we need to
reduce the Dependencies to using `addrs.ConfigResource` for now.
2020-03-25 17:03:06 -04:00
James Bardin 0afa3710fd create refresh node expanders 2020-03-25 17:03:06 -04:00
James Bardin 74d85aa956 Add Path to more nodes that require it. 2020-03-25 17:03:06 -04:00
James Bardin 0b85eeab38 NewNodeAbstractResource accepts a ResourceConfig
Use the new addrs type here.

Also remove the uniqueMap from the config transformer. We enforce
uniqueness during config loading, and this is more likely to have false
positives due to stringification than anything.
2020-03-25 17:03:06 -04:00
James Bardin 23cebc5205 create nodeExpandApplyableResource
Resources also need to be expanded during apply, which cannot be done
via EvalTree due to the lack of EvalContext.
2020-03-25 17:03:06 -04:00
James Bardin 40f09027f0 expand planned resources
While the Expander itself now handles the recursive expansion of
modules, Resources themselves still need to be expanded twice, because
the evaluation of the Resource, which entails evaluating the for_each or
count expressions, is separate from the ResourceInstance expansion.

Add a nodeExpandPlannableResource to do handle this expansion to allow
all NodePlannableResources to call EvalWriteResourceState with an
absolute address.
2020-03-25 17:03:06 -04:00
James Bardin 0b025d74e5 add EvalContext.WithPath
As the Graph is walked, the current way to set the context path was to
have the walker return a context from EnterPath. This required that
every node know it's absolute path, which can no longer be the case
during plan when modules have not been expanded.

This introduces a new method called WithPath, which returns a copy of
the context with the internal path updated to reflect the method
argument. Any use of the EvalContext that requires knowing the path will
now panic if it wasn't explicitly set to ensure that evaluations always
occur in the correct path.

Add EvalContext to the GraphWalker interface.
EvalContext returns an EvalContext that has not yet set a path. This
will allow us to enforce that all context operations requiring a module
instance path will require that a path be explicitly set rather than
evaluating within the wrong path.
2020-03-25 17:03:06 -04:00
Martin Atkins 537c1bedcf internal/providercache: LinkFromOtherCache removes target, not source
This was incorrectly removing the _source_ entry prior to creating the
symlink, therefore ending up with a dangling symlink and no source file.

This wasn't obvious before because the test case for LinkFromOtherCache
was also incorrectly named and therefore wasn't running. Fixing the name
of that test made this problem apparent.

The TestLinkFromOtherCache test case now ends up seeing the final resolved
directory rather than the symlink target, because of upstream changes
to the internal/getproviders filesystem scanning logic to handle symlinks
properly.
2020-03-25 13:50:00 -07:00
Martin Atkins eb25fe8b24 internal/getproviders: SearchLocalDirectory can handle symlinks
Previously this was failing to treat symlinks to directories as unpacked
layout, because our file info was only an Lstat result, not a full Stat.

Now we'll resolve the symlink first, allowing us to handle a symlink to
a directory. That's important because our internal/providercache behavior
is to symlink from one cache to another where possible.
2020-03-25 13:50:00 -07:00
Martin Atkins ad15459468 internal/{getproviders,providercache}: improved trace logging
There's a lot going on in these functions that can be hard to follow from
the outside, so we'll add some additional trace logging so that we can
more easily understand why things are behaving the way they are.
2020-03-25 13:50:00 -07:00
Martin Atkins 391ca0c991 internal/providercache: add windows test fixture
This was accidentally left out of an earlier commit due to our top-level
.gitignore file containing *.exe as an ignore pattern.
2020-03-25 13:50:00 -07:00
Pam Selle 34de1453ce (build) temporarily disable codecov while debugging travis 2020-03-25 15:37:38 -04:00
James Bardin c7e2bace18
Merge pull request #24454 from hashicorp/jbardin/expand-resource
Expander.ExpandResource cannot expand all modules
2020-03-25 15:34:31 -04:00
Martin Atkins 807267d1b5 internal/providercache: Installation from HTTP URLs and local archives
When a provider source produces an HTTP URL location we'll expect it to
resolve to a zip file, which we'll first download to a temporary
directory and then treat it like a local archive.

When a provider source produces a local archive path we'll expect it to
be a zip file and extract it into the target directory.

This does not yet include an implementation of installing from an
already-unpacked local directory. That will follow in a subsequent commit,
likely following a similar principle as in Dir.LinkFromOtherCache.
2020-03-25 11:29:48 -07:00
Martin Atkins 754b7ebb65 command: Expose providercache package objects for use elsewhere
These new functions allow command implementations to get hold of the
providercache objects and installation source object derived from the
current CLI configuration.
2020-03-25 11:29:48 -07:00
Martin Atkins e4d7a71d91 internal/getproviders: Exit early if MultiSource has no sources
The MultiSource isn't actually properly implemented yet, but this is a
minimal implementation just for the case where there are no underlying
sources at all, because we use an empty MultiSource as a placeholder
when a test in the "command" package fails to explicitly populate a
ProviderSource.
2020-03-25 11:29:48 -07:00
Martin Atkins 18dd0a396d internal/providercache: First pass of the actual install process
This is not tested yet, but it's a compilable strawman implementation of
the necessary sequence of events to coordinate all of the moving parts
of running a provider installation operation.

This will inevitably see more iteration in later commits as we complete
the surrounding parts and wire it up to be used by "terraform init". So
far, it's just dead code not called by any other package.
2020-03-25 11:29:48 -07:00