Commit Graph

28471 Commits

Author SHA1 Message Date
James Bardin
07ee689eff update comment and extend test 2021-07-20 16:09:46 -04:00
James Bardin
66a5950acb ignored value in this test should not be marked 2021-07-19 16:42:26 -04:00
James Bardin
e574f73f61 test with marked, unknown, planned values 2021-07-19 16:42:26 -04:00
James Bardin
ea077cbd90 handle marks within ignore_changes
Up until now marks were not considered by `ignore_changes`, that however
means changes to sensitivity within a configuration cannot ignored, even
though they are planned as changes.

Rather than separating the marks and tracking their paths, we can easily
update the processIgnoreChanges routine to handle the marked values
directly. Moving the `processIgnoreChanges` call also cleans up some of
the variable naming, making it more consistent through the body of the
function.
2021-07-19 16:42:26 -04:00
Alisdair McDiarmid
6d65c19134
Merge pull request #29178 from hashicorp/alisdair/fix-flapping-json-output-test-for-real
Fix flapping JSON output test properly
2021-07-16 10:05:48 -04:00
Alisdair McDiarmid
a456d030db Fix flapping JSON output test properly
This commit makes the output order of the resource drift messages
stable, by building a slice of changes and sorting it by address.
2021-07-15 13:30:11 -04:00
Kristin Laemmert
0d80a74539
configs/configschema: fix missing "computed" attributes from NestedObject's ImpliedType (#29172)
* configs/configschema: fix missing "computed" attributes from NestedObject's ImpliedType

listOptionalAttrsFromObject was not including "computed" attributes in the list of optional object attributes. This is now fixed. I've also added some tests and fixed some panics and otherwise bad behavior when bad input is given. One natable change is in ImpliedType, which was panicking on an invalid nesting mode. The comment expressly states that it will return a result even when the schema is inconsistent, so I removed the panic and instead return an empty object.
2021-07-15 13:00:07 -04:00
Paddy
8bdea502ab
Add support for protocol 6 providers during init. (#29153)
Update the version constraints for what providers will be downloaded
from the registry, allowing protocol 6 providers to be downloaded from
the registry.
2021-07-15 09:39:40 -07:00
Alisdair McDiarmid
cb683b1dc1
Merge pull request #29175 from hashicorp/alisdair/fix-flapping-json-output-test
Fix flapping JSON output test
2021-07-15 12:27:47 -04:00
Kristin Laemmert
563f1436eb
various docs updates (#29018)
* website/docs: add sensitivity warning to output documentation

fixes #28005

* website/docs: add note about ** to fileset documentation

closes #24220

* website/docs: add note that `dynamic` expressions aren't included in json config output

closes #28346

* website: the provider installer isn't necessarily concurrency safe

closes #28367
2021-07-15 12:22:17 -04:00
Alisdair McDiarmid
c51112a30c Fix flapping JSON output test
This test would previously fail randomly due to the use of multiple
resource instances. Instance keys are iterated over as a map for
presentation, which has intentionally inconsistent ordering.

To fix this, I changed the test to use different resource addresses for
the three drift cases. I also extracted them to a separate test, and
tweaked the test helper functions to reduce the number of fatal exit
points, to make failed test debugging easier.
2021-07-15 12:03:01 -04:00
Martin Atkins
3e5bfa7364 refactoring: Stubbing of the logic for handling moves
This is a whole lot of nothing right now, just stubbing out some control
flow that ultimately just leads to TODOs that cause it to do nothing at
all.

My intent here is to get this cross-cutting skeleton in place and thus
make it easier for us to collaborate on adding the meat to it, so that
it's more likely we can work on different parts separately and still get
a result that tessellates.
2021-07-14 17:37:48 -07:00
Martin Atkins
22eee529e3 addrs: MoveEndpointInModule
We previously built out addrs.UnifyMoveEndpoints with a different
implementation strategy in mind, but that design turns out to not be
viable because it forces us to move to AbsMoveable addresses too soon,
before we've done the analysis required to identify chained and nested
moves.

Instead, UnifyMoveEndpoints will return a new type MoveEndpointInModule
which conceptually represents a matching pattern which either matches or
doesn't match a particular AbsMoveable. It does this by just binding the
unified relative address from the MoveEndpoint to the module where it
was declared, and thus allows us to distinguish between the part of the
module path which applies to any instances of the given modules vs. the
user-specified part which must identify particular module instances.
2021-07-14 17:37:48 -07:00
Martin Atkins
cd06572c4f addrs: ModuleInstance and AbsResourceInstance are UniqueKeyers
Since these address types are not directly comparable themselves, we use
an unexported named type around the string representation, whereby the
special type can avoid any ambiguity between string representations of
different types and thus each type only needs to worry about possible
ambiguity of its _own_ string representation.
2021-07-14 17:37:48 -07:00
Martin Atkins
f3a57db293 addrs: UniqueKey and UniqueKeyer
Many times now we've seen situations where we need to use addresses
as map keys, but not all of our address types are comparable and thus
we tend to end up using string representations as keys instead.

That's problematic because conversion to string uses type information
and some of the address types have string representations that are
ambiguous with one another.

UniqueKey therefore represents an opaque key that is unique for each
functionally-distinct address across all types that implement
UniqueKeyer.

For this initial commit I've implemented UniqueKeyer only for the
Referenceable family of types. These are an easy case because they
were all already comparable (intentionally) anyway. Later commits
can implement UniqueKeyer for other types that are not naturally
comparable, such as any which include a ModuleInstance.

This also includes a new type addrs.Set which wraps a map as a set
of addresses, using the unique keys to ensure that there can be only
one element for each distinct address.
2021-07-14 17:37:48 -07:00
Laura Pacilio
7cd333dea1
Merge pull request #29163 from hashicorp/rar-docs-update-add-anchor
website: Adds anchor for TF_CLI_ARGS.
2021-07-14 14:45:35 -04:00
Russell Rollins
3174dfd63f Adds anchor for TF_CLI_ARGS. 2021-07-14 14:08:52 -04:00
hc-github-team-tf-core
b6614cf2b3 Cleanup after v1.1.0-alpha20210714 release 2021-07-14 17:18:47 +00:00
hc-github-team-tf-core
3b61e8df7a
Release v1.1.0-alpha20210714 2021-07-14 16:55:22 +00:00
Kristin Laemmert
43f698dc9d
states: new Move funcs for Resource, ResourceInstance, and ModuleInstances (#29068)
* states: add MoveAbsResource and MoveAbsResourceInstance state functions and corresponding syncState wrapper functions.

* states: add MoveModuleInstance and MaybeMoveModuleInstance

* addrs: adding a new function, ModuleInstance.IsDeclaredByCall, which returns true if the receiver is an instance of the given AbsModuleCall.
2021-07-13 16:10:46 -04:00
Alisdair McDiarmid
5a34825fc1
Merge pull request #29131 from hashicorp/alisdair/sequence-diff-commentary
Add comments explaining how ctySequenceDiff works
2021-07-13 16:05:05 -04:00
Laura Pacilio
36f51e2790
Merge pull request #29133 from hashicorp/add-deploy-to-readme
Add deploy information to website folder readme
2021-07-13 11:23:13 -04:00
Alisdair McDiarmid
72a7c95353
Merge pull request #29072 from hashicorp/alisdair/json-ui-resource-drift
json-output: Add resource drift to machine readable UI
2021-07-12 09:54:42 -04:00
Laura Pacilio
557b8df31b
Active voice and link fix
Co-authored-by: Tu Nguyen <im2nguyen@users.noreply.github.com>
2021-07-12 09:22:16 -04:00
Nick Fagerlund
0e004f2377
website: remove legacy provider docs index (#29134)
* website: Update or remove references to legacy provider docs

We've finally evicted the last of the legacy provider docs from terraform.io!
Let's celebrate by purging all memory of them.

The 0.11 docs are now so thoroughly legacy that I don't believe they need a new
destination for their provider links, so I just removed those.

* website: remove old provider docs index

This will require a redirect in the terraform-website repo.

* Apply suggestions from code review

Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com>

Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com>
2021-07-09 14:44:58 -07:00
Laura Pacilio
aeee849e6c Add deploy information to website folder readme 2021-07-09 15:02:15 -04:00
Alisdair McDiarmid
ef0181cfbd Add comments explaining how ctySequenceDiff works
The logic behind this code took me a while to understand, so I wrote
down what I understand to be the reasoning behind how it works. The
trickiest part is rendering changing objects as updates. I think the
other pieces are fairly common to LCS sequence diff rendering, so I
didn't explain those in detail.
2021-07-09 13:14:20 -04:00
rita
d0d9ee1e62
Merge pull request #29107 from hashicorp/link_to_refresh_tutorial
Link refresh tutorial from plan and refresh docs pages
2021-07-07 13:42:33 -04:00
James Bardin
b00e8c1113
Merge pull request #29110 from hashicorp/jbardin/update-cty
update go-cty to v1.9.0
2021-07-07 10:26:06 -04:00
James Bardin
04e0ed79fa update go-cty to v1.9.0 2021-07-07 10:07:42 -04:00
ritsok
595646916f Link refresh tutorial from plan and refresh docs pages 2021-07-06 15:52:16 -04:00
Laura Pacilio
19eaba888e
Merge pull request #29066 from hashicorp/add-compatibility-promises-toc
Add compatibility promises to sidebar toc
2021-07-06 14:08:05 -04:00
Laura Pacilio
341b1d7628
Merge pull request #29085 from hashicorp/add-local-preview-instr-readme
Add instructions to preview docs site locally to /website readme
2021-07-02 14:06:33 -04:00
Laura Pacilio
a8600ca2e4 Fix numbering for second step 2021-07-02 14:02:03 -04:00
Laura Pacilio
13d690081c Fix numbering in first section 2021-07-02 13:52:15 -04:00
Laura Pacilio
d3b9d5cdda
Update website/README.md
Co-authored-by: Tu Nguyen <im2nguyen@users.noreply.github.com>
2021-07-02 13:51:00 -04:00
Laura Pacilio
b3736334f7
Update website/README.md
Co-authored-by: Tu Nguyen <im2nguyen@users.noreply.github.com>
2021-07-02 13:50:09 -04:00
Laura Pacilio
52e2094726
Update website/README.md
Co-authored-by: Tu Nguyen <im2nguyen@users.noreply.github.com>
2021-07-02 13:49:59 -04:00
Laura Pacilio
f2d89464ef Revise grouping in steps 2021-07-02 12:29:35 -04:00
Laura Pacilio
10ccf2bd7f Add more context to run instructions 2021-07-02 12:26:33 -04:00
Laura Pacilio
0fc32e5858 Fix indentation 2021-07-02 12:19:28 -04:00
Laura Pacilio
03e6f0d385 Update formatting for terminal commands 2021-07-02 12:16:45 -04:00
Laura Pacilio
c2b492a814 Add initial run local instructions to readme 2021-07-02 12:08:00 -04:00
Laura Pacilio
dfc12a6a9e
Merge pull request #29051 from hashicorp/add-page-metadata
Add page metadata
2021-07-01 14:44:15 -04:00
Martin Atkins
6b8e103d6a configs: Include "moved" blocks when merging multiple files into a module
An earlier commit added logic to decode "moved" blocks and do static
validation of them. Here we now include that result also in modules
produced from those files, which we can then use in Terraform Core to
actually implement the moves.

This also places the feature behind an active experiment keyword called
config_driven_move. For now activating this doesn't actually achieve
anything except let you include moved blocks that Terraform will summarily
ignore, but we'll expand the scope of this in later commits to eventually
reach the point where it's really usable.
2021-07-01 08:28:02 -07:00
Martin Atkins
d92b5e5f5e configs: valid-modules test ignores experimental features warning
A common source of churn when we're running experiments is that a module
that would otherwise be valid ends up generating a warning merely because
the experiment is active. That means we end up needing to shuffle the
test files around if the feature ultimately graduates to stable.

To reduce that churn in simple cases, we'll make an exception to disregard
the "Experiment is active" warning for any experiment that a module has
intentionally opted into, because those warnings are always expected and
not a cause for concern.

It's still possible to test those warnings explicitly using the
testdata/warning-files directory, if needed.
2021-07-01 08:28:02 -07:00
Martin Atkins
708003b035 configs: For Moved blocks, use addrs.MoveEndpoint instead of addrs.Target
Although addrs.Target can in principle capture the information we need to
represent move endpoints, it's semantically confusing because
addrs.Targetable uses addrs.Abs... types which are typically for absolute
addresses, but we were using them for relative addresses here.

We now have specialized address types for representing moves and probably
other things which have similar requirements later on. These types
largely communicate the same information in the end, but aim to do so in
a way that's explicit about which addresses are relative and which are
absolute, to make it less likely that we'd inadvertently misuse these
addresses.
2021-07-01 08:28:02 -07:00
Martin Atkins
4cbe6cabfc addrs: AbsMoveable, ConfigMoveable, and MoveableEndpoint
These three types represent the three different address representations we
need to represent different stages of analysis for "moved" blocks in the
configuration.

The goal here is to encapsulate all of the static address wrangling inside
these types so that users of these types elsewhere would have to work
pretty hard to use them incorrectly.

In particular, the MovableEndpoint type intentionally fully encapsulates
the weird relative addresses we use in configuration so that code
elsewhere in Terraform can never end up holding an address of a type that
suggests absolute when it's actually relative. That situation only occurs
in the internals of MoveableEndpoint where we use not-really-absolute
AbsMoveable address types to represent the not-yet-resolved relative
addresses.

This only takes care of the static address wrangling. There's lots of
other rules for what makes a "moved" block valid which will need to be
checked elsewhere because they require more context than just the content
of the address itself.
2021-07-01 08:28:02 -07:00
Martin Atkins
3212f6f367 addrs: AbsModuleCall type
Our documentation for ModuleCall originally asserted that we didn't need
AbsModuleCall because ModuleInstance captured the same information, but
when we added count and for_each for modules we introduced
ModuleCallInstance to represent a reference to an instance of a local
module call, and now _that_ is the type whose absolute equivalent is
ModuleInstance.

We previously had no absolute representation of the call itself, without
any particular instance. That's what AbsModuleCall now represents,
allowing us to be explicit about when we're talking about the module block
vs. instances it declares, which is the same distinction represented by
AbsResource vs. AbsResourceInstance.

Just like with AbsResource and AbsResourceInstance though, there is
syntactic ambiguity between a no-key call instance and a whole module call,
and so some codepaths might accept both to start and then use other
context to dynamically choose a particular interpretation, in which case
this distinction becomes meaningful in representing the result of that
decision.
2021-07-01 08:28:02 -07:00
Martin Atkins
ab350289ab addrs: Rename AbsModuleCallOutput to ModuleCallInstanceOutput
The previous name didn't fit with the naming scheme for addrs types:
The "Abs" prefix typically means that it's an addrs.ModuleInstance
combined with whatever type name appears after "Abs", but this is instead
a ModuleCallOutput combined with an InstanceKey, albeit structured the
other way around for convenience, and so the expected name for this would
be the suffix "Instance".

We don't have an "Abs" type corresponding with this one because it would
represent no additional information than AbsOutputValue.
2021-07-01 08:28:02 -07:00