Commit Graph

26492 Commits

Author SHA1 Message Date
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
Martin Atkins 79d74c9ba0
Update CHANGELOG.md 2020-07-17 09:04:54 -07:00
Martin Atkins 61baceb308 core: Skip edges between resource instances in different module instances
Our reference transformer analyses and our destroy transformer analyses
are built around static (not-yet-expanded) addresses so that they can
correctly handle mixtures of expanded and not-yet-expanded objects in the
same graph.

However, this characteristic also makes them unnecessarily conservative
in their handling of references between resources within different
instances of the same module: we know they can never interact with each
other in practice because the dependencies for all instances of a module
are the same and so one instance cannot possibly depend on another.

As a compromise then, here we introduce a new helper function that can
recognize when a proposed edge is between two resource instances that
belong to different instances of the same module, and thus allow us to
skip actually creating those edges even though our imprecise analyses
believe them to be needed.

As well as significantly reducing the number of edges in situations where
multi-instance resources appear inside multi-instance modules, this also
fixes some potential cycles in situations where a single plan includes
both destroying an instance of a module and creating a new instance of the
same module: the dependencies between the objects in the instance being
destroyed and the objects in the instance being created can, if allowed
to connect, cause Terraform to believe that the create and the destroy
both depend on one another even though there is no need for that to be
true in practice.

This involves a very specialized helper function to encode the situation
where this exception applies. This function has an ugly name to reflect
how specialized it is; it's not intended to be of any use outside of these
three situations in particular.
2020-07-17 08:40:13 -07:00
Tony Carmichael e320cd2b35
website: fix markdown formatting in publishing.html.md (#25598) 2020-07-16 14:21:14 -07:00
Tony Carmichael 78f93de64b
Merge pull request #25564 from hashicorp/aicarmic-publishing-docs
Update publishing.html.md
2020-07-16 11:29:53 -06:00
Tony Carmichael aa36cbc769
Update website/docs/registry/providers/publishing.html.md
Co-authored-by: Paul Tyng <ptyng@hashicorp.com>
2020-07-16 11:29:16 -06:00
Chris Griggs ae5cb9e4cf
Merge pull request #25590 from hashicorp/cgriggs01-cloudamqp
[Website] CloudAMQP links
2020-07-15 10:40:13 -07:00
Tony Carmichael 73d31e5eef
Update publishing.html.md
modify to add separate header so we can target link to this section, and clarify that the licensing requirement is for verified/partner providers only
2020-07-14 17:59:14 -06:00
Chris Griggs f286aa78ff [Website] CloudAMQP links 2020-07-14 14:50:09 -07:00
Kristin Laemmert f8e3456867
command/show: fix bug displaying provider config in json output of tf plan (#25577)
A lingering FIXME caused missing configuration from provider config
blocks in the json output of terraform plan. This fixes the regression
and adds a test. For the sake of testing, I added an optional attribute
to the show test provider, which resulted in the providers schema test
getting an update - not a bad addition, but we can always add a
test-specific provider schema as needed.
2020-07-14 15:28:31 -04:00
Martin Atkins bcec7f5576 website: v0.13 upgrade guide about "terraform apply" during upgrading
Part of the upgrade process happens in the first "terraform apply" after
adding explicit source addresses in the configuration. Previously we just
left that implied under the assumption that everyone would run
"terraform apply" shortly after anyway, but there is a specific tricky
situation where the first change after upgrading is to remove a resource
from the configuration, leaving Terraform unable to complete the upgrade.

Because of that, we'll now explicitly direct users to run
"terraform apply" after upgrading. Along with that, there's a reminder to
make sure that "terraform plan" indicates no changes before upgrading, so
that completing the upgrade doesn't involve also applying changes to
remote objects.
2020-07-14 09:34:17 -07:00
Paul Tyng ae36898f55
Merge pull request #25567 from hashicorp/aicarmic-publishing-docs-2
Update publishing.html.md
2020-07-13 22:31:25 -04:00
Tony Carmichael e5fec70cb7
Update publishing.html.md
Add note to dissuade in-place replace of a released provider
2020-07-13 15:35:48 -06:00
Tony Carmichael 527a15353e
Update publishing.html.md
Add OSS license requirement and list of permitted licenses to the instructions.
2020-07-13 13:26:29 -06:00
James Bardin 83632e078f
Merge pull request #25544 from hashicorp/jbardin/resource-state
don't store an entire Resource's state in each ResourceInstance
2020-07-13 13:23:40 -04:00
Kristin Laemmert 9cb8456f3d
configs: prevent panic with invalid type name (#25562)
An invalid type name in a resource (or data source) could cause a panic
when determining the implied provider for the resource. This commit adds
verification that the type name is valid. It does not add a diagnostic,
since the invalid type name would have already been caught by the
parser.

Fixes #25560
2020-07-13 09:47:16 -04:00
James Bardin 662ea420d6 update CHANGELOG.md 2020-07-10 14:37:26 -04:00
James Bardin 26fb544e43
Merge pull request #25543 from hashicorp/jbardin/prune-root-temps
ensure root module locals and vars are pruned
2020-07-10 14:31:41 -04:00
James Bardin ee8cc627a0 don't store an entire Resource in each Instance
The AbstractResourceInstance type was storing the entire Resource from
the state, when it only needs the actual instance state. This would
cause resources to consume memory on the order of n^2, where n in the
number of instances of the resource.

Rather than attaching the entire resource state, which includes copying
each individual instance, only attach the ResourceInstance state, and
extract out the provider address from the Resource.
2020-07-10 13:35:13 -04:00
James Bardin a0567458e2 ensure root module locals and vars are pruned
The pruneUnusedNodes transformer was skipping root level locals and
variables, causing them to be left in the graph during a full destroy.
Use the return value from temporaryValue to indicate if the node is
truly temporary or not, rather then keeping the entire root module.
2020-07-10 09:30:03 -04:00