Commit Graph

26461 Commits

Author SHA1 Message Date
James Bardin 998ba6e6e1 remove extra attrs found in state json
While removal of attributes can be handled by providers through the
UpgradeResourceState call, data sources may need to be evaluated before
reading, and they have no upgrade path in the provider protocol.

Strip out extra attributes during state decoding when they are no longer
present in the schema, and there is no schema upgrade pending.
2020-08-06 22:55:36 -04:00
Petros Kolyvas 796eba95da
Merge pull request #25721 from hashicorp/doc-import-multiple-bindings
website: Documentation about the one-to-one object binding assumption
2020-08-06 15:50:03 -03:00
Daniel Dreier cc86889fd6 Update GitHub issue templates
Add "bug" label to bug_report.md
Add "new" label to feature_request.md
2020-08-05 17:39:56 -04:00
Daniel Dreier 237a1f3684 Add "new" label to issue templates 2020-08-05 17:28:12 -04:00
Martin Atkins 08ba58c8c8 website: Documentation about the one-to-one object binding assumption
Terraform's design assumes that each remote object in Terraform's care is
bound to one resource instance and one alone. If the same object is bound
to multiple instances then confusing behavior will often result, such as
two resource configurations competing to update a single object, or
objects being "left behind" when all existing Terraform deployments are
destroyed.

This assumption was previously only implied, though. This change is an
attempt to be more explicit about it, although these are additions to some
older documentation sections that have not been revised for some time and
so this is just a best effort to make this information discoverable
without getting drawn into a full-on reorganization of these sections.

While revising this there were some particular oddities that I decided to
revise while I was there, but I'll leave a fuller revision of this older
content for a later commit when we have more time to review it in greater
detail.
2020-07-31 15:22:50 -07:00
Martin Atkins 47dc40d229
Update CHANGELOG.md 2020-07-31 14:16:53 -07:00
Martin Atkins 0684d3761d
Update CHANGELOG.md 2020-07-31 14:15:58 -07:00
Martin Atkins 859e25e060
CHANGELOG: Links to documentation for the new features
(Some of these links will become valid only after the final release.)
2020-07-31 14:15:10 -07:00
Martin Atkins fe54d4d45a
CHANGELOG: Aggregation of all v0.13 changes in preparation for final release
The incremental prerelease updates are still available from the changelog
associated with the v0.13.0-rc1 tag.
2020-07-31 14:05:28 -07:00
Nick Fagerlund 0ab7c1b90e
website: Add links to relevant Learn guides in several docs pages (#25718)
Co-authored-by: Tu Nguyen <im2nguyen@users.noreply.github.com>
2020-07-31 13:16:35 -07:00
Nick Fagerlund 0e5651560b
Website: 0.13 docs edits, mostly around provider requirements (#25686)
* Make sidebar nav in language docs more intuitive
* Minor display fixes for registry docs
* Explain providers in the registry in the providers index
* Revise a bunch of language docs around provider reqs

This is mostly an effort to smooth out some of the explanations, make sure
things are presented in a helpful order, make sure terminology lines up, draw
connections between related concepts, make default behavior more apparent, and
the like. It shouldn't include very much new information, but there might be one
or two things that came out of a conversation somewhere.

Co-authored-by: Judith Malnick <judith@hashicorp.com>
2020-07-30 21:07:36 -07:00
Paul Tyng 5fea948cc6
Merge pull request #25676 from hashicorp/website-registry-docs-subcategory-sorting
website: Registry docs nav sorts some subcategies
2020-07-30 09:08:32 -04:00
Martin Atkins ef071f3d0e website: Generalized advice on modules with provider configs
As part of documenting the new module for_each capabilities we added a
section noting that shared modules using the legacy pattern of declaring
their own provider configurations would not be compatible with them.

However, that also applies to the new module depends_on and several folks
participating in the beta pointed out that the documentation wasn't
discussing that at all.

In order to generalize the advice, I've moved the old content we had
(since v0.11) recommending against provider configurations in shared
modules out into its own section, now being more explicit that it is
a legacy pattern and not recommended, and then folded the content about
for_each and count, now also including depends_on, into that expanded
section.

As is often the case, that had some knock-on effects on the content on
the rest of this page, so there's some general editing and reorganization
here. In particular, I moved the "Multiple Instances of a Module" section
much further up the page because it's content relevant to users of
shared modules, while the later content on this page is more aimed at
authors of shared modules, including the new section about the legacy
pattern.
2020-07-24 14:37:59 -07:00
Justin Campbell 0ca0014c56 website: Registry docs nav sorts some subcategies 2020-07-24 16:50:23 -04:00
Petros Kolyvas c2d6276238
Merge pull request #25076 from iTEx-aaa/patch-1
Update index.html.markdown (removing quotes from keywords in provisioner docs)
2020-07-24 10:17:39 -03:00
Petros Kolyvas 2a1a003052
Merge pull request #25666 from tphummel/patch-1
fix .go-version repo link in readme/dev documentation
2020-07-24 09:48:01 -03:00
Tom Hummel 7e879e0034
fix .go-version repo link 2020-07-23 20:22:53 -07:00
James Bardin da644568a5 return known empty containers during plan
When looking up a resource during plan, we need to return an empty
container type when we're certain there are going to be no instances.
It's now more common to reference resources in a context that needs to
be known during plan (e.g. for_each), and always returning a DynamicVal
her would block plan from succeeding.
2020-07-23 17:37:07 -04:00
James Bardin 5c31add2fc test data source index reference too 2020-07-23 17:16:32 -04:00
James Bardin 7d3cd5bc43 store planned data source state when deferring
This copies the behavior of resources, so that there is a placeholder
state available for planning.
2020-07-23 17:15:13 -04:00
James Bardin 2b4101fdff Unknown set blocks with dynamic may have 0 elems
The couldHaveUnknownBlockPlaceholder helper was added to detect when a
set block has a placeholder for an unknown number of values. This worked
fine when the number increased from 1, but we were still attempting to
validate the unknown placeholder against the empty set when the final
count turned out to be 0.

Since we can't differentiate the unknown dynamic placeholder value from
an actual set value, we have to skip that object's validation
altogether.
2020-07-23 15:47:34 -04:00
Alisdair McDiarmid 7204ba4ec2
Update CHANGELOG.md 2020-07-23 13:44:25 -04:00
Alisdair McDiarmid 76142a728a
Merge pull request #25661 from hashicorp/alisdair/provider-install-symlink-fails
internal/providercache: Fix bug when symlink fails
2020-07-23 13:42:30 -04:00
Alisdair McDiarmid 440543f427 internal/providercache: Fix bug when symlink fails
When installing a provider which is already cached, we attempt to create
a symlink from the install directory targeting the cache. If symlinking
fails due to missing OS/filesystem support, we instead want to copy the
cached provider.

The fallback code to do this would always fail, due to a missing target
directory. This commit fixes that. I was unable to find a way to add
automated tests around this, but I have manually verified the fix on
Windows 8.1.
2020-07-23 11:36:46 -04:00
Petros Kolyvas fa44dd083c
Merge pull request #25644 from MorganGeek/fix-typos-in-readme-documentation
Fix spelling mistakes/typos in documentation
2020-07-23 12:17:26 -03:00
Petros Kolyvas 7cf648ed31
Merge pull request #25641 from sudomateo/terraform-bundle-patch-plugins
Syntax updates
2020-07-23 12:14:51 -03:00
Alisdair McDiarmid ee19b0d6c5 command: Remove stubbed-out apply diff output code
This code was made to do nothing pre-0.12, and we have no plans to
reintroduce a diff in the apply output, so it seems reasonable to now
remove it altogether.
2020-07-22 14:19:00 -04:00
MorganGeek 3b6c1ef156 Fix spelling mistakes/typos in documentation 2020-07-22 18:24:32 +02:00
Matthew Sanabria a943c943cf Syntax updates
It's easier to read inline monospace characters than quoted characters,
especially when the content itself refers to a file or directory name.
2020-07-22 11:05:33 -04:00
hashicorp-ci 5734a0c014 Cleanup after v0.13.0-rc1 release 2020-07-22 14:21:10 +00:00
hashicorp-ci 2b87a10eb2
Release v0.13.0-rc1 2020-07-22 13:32:53 +00:00
Tony Carmichael 976f0eae1d
Merge pull request #25632 from hashicorp/aicarmic-patch-1
Update publishing.html.md
2020-07-21 14:49:51 -06:00
Tony Carmichael e935719f46
Update publishing.html.md
Fix callout formatting as it was not displaying correctly.
2020-07-21 12:38:20 -06:00
James Bardin cdb25bc735 update CHANGELOG.md 2020-07-21 11:18:43 -04:00
Paul Tyng 6a247dfbaa
Merge pull request #25629 from hashicorp/osarch
Add link to os/arch page
2020-07-21 10:51:06 -04:00
Paul Tyng 62016849dd Add link to os/arch page 2020-07-21 10:41:53 -04:00
Paul Tyng 7eb70e3c47
Merge pull request #25627 from hashicorp/osarch
Add recommend os/arch page
2020-07-21 10:38:41 -04:00
Paul Tyng 19265fe4b0 Add recommend os/arch page 2020-07-21 10:05:40 -04:00
James Bardin aa3b15c438
Merge pull request #25618 from hashicorp/jbardin/destroy-eval
Allow provider config evaluation during a full destroy
2020-07-20 17:02:12 -04:00
James Bardin 5b8e5ec276 destroy provisioner test
Ensure that we have destroy provisioner test that reference self
2020-07-20 15:49:51 -04:00
Justin Campbell 24064c4ed9
website: Add links to registry doc preview tool (#25619) 2020-07-20 12:28:55 -04:00
Alisdair McDiarmid 0a837003e9
Merge pull request #25615 from suzuki-shunsuke/docs/fix-output-format-of-state-show
docs: fix the output format of state show command
2020-07-20 11:17:16 -04:00
James Bardin 3223e352ea skip broken test
This is the known case broken by the changes to allow resources pending
destruction to be evaluated from state. When a resource references
another that is create_before_destroy, and that resource is being scaled
in, the first resource will not be updated correctly.
2020-07-20 09:49:47 -04:00
James Bardin 5b8010b5b9 add a fixup transformer to connect destroy refs
Since we have to allow destroy nodes to be evaluated for providers
during a full destroy, this is adding a transformer to connect temporary
values to any destroy versions of their references when possible. The
ensures that the destroy happens before evaluation, even when there
isn't a full create-then-destroy set of instances.

The cases where the connection can't be made are when the temporary
value has a provider descendant, which means it must evaluate early in
the case of a full destroy. This means the value may contain incorrect
data when referencing resource that are create_before_destroy, or being
scaled-in via count or for_each. That will need to be addressed later by
reevaluating how we handle the full destroy case in terraform.
2020-07-20 09:49:47 -04:00
James Bardin d1dba76132 allow the evaluation of resource being destroyed
During a full destroy, providers may reference resources that are going
to be destroyed as well. We currently cannot change this behavior, so we
need to allow the evaluation and try to prevent it from leaking into as
many other places as possible. Another transformer to try and protect
the values in locals, variables and outputs will be added to enforce
destroy ordering when possible.
2020-07-20 09:49:47 -04:00
James Bardin 6f9d2c51e2 you cannot refer to destroy nodes
Outputs and locals cannot refer to destroy nodes. Since those nodes
types do not have different ordering for create and destroy operations,
connecting them directly to destroy nodes can cause cycles.
2020-07-20 09:49:47 -04:00
James Bardin ca8338e343 fix tests after moving incorrect references
The destroy graph builder test requires state in order to be correct,
which it didn't have. The other tests hits the edge case where a planned
destroy cannot remove outputs, because the apply phase does not know it
was created from a destroy.
2020-07-20 09:49:47 -04:00
James Bardin ebe31acc48 track destroy references for data sources too
Since data source destruction is only state removal, and other resources
cannot depend on them creating any physical resources, the destroy
dependencies were not tracked in the state. It turns out that there is a
special case which requires this; running terraform destroy where the
provider depends on a data source. In that case the resources using that
provider need to record their indirect dependence on the data source, so
that they can be deleted before the data source is removed from the
state.
2020-07-20 09:49:47 -04:00
James Bardin c0dbc95236 test destroy with provider depending on a resource 2020-07-20 09:49:47 -04:00
Shunsuke Suzuki 1dd4d70bab docs: fix the output format of state show command
From v0.12 the output format of state show command seems to be changed
but the old format is used in the document.
2020-07-20 22:15:47 +09:00