This project is mirrored from https://:*****@github.com/hashicorp/terraform.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
- 14 Oct, 2020 17 commits
-
-
Alisdair McDiarmid authored
Update hcl and go-cty dependencies
-
James Bardin authored
Add skip_table_creation and skip_index_creation options to the pg backend
-
James Bardin authored
Memoize Block.DecoderSpec
-
James Bardin authored
-
Petros Kolyvas authored
An update on the deprecated state of vendor provisioners for our contribution guide.
-
Martin Atkins authored
In this case, "atomic" means that there will be no situation where the file contains only part of the newContent data, and therefore other software monitoring the file for changes (using a mechanism like inotify) won't encounter a truncated file. It does _not_ mean that there can't be existing filehandles open against the old version of the file. On Windows systems the write will fail in that case, but on Unix systems the write will typically succeed but leave the existing filehandles still pointing at the old version of the file. They'll need to reopen the file in order to see the new content.
-
Martin Atkins authored
This originated in the cliconfig code to write out credentials files. The Windows implementation of this in particular was quite onerous to get right because it needs a very specific sequence of operations to avoid running into exclusive file locks, and so by factoring this out with only cosmetic modification we can avoid repeating all of that engineering effort for other atomic file writing use-cases.
-
Martin Atkins authored
Terraform v0.10 introduced .terraform/plugins as a cache directory for automatically-installed plugins, Terraform v0.13 later reorganized the directory structure inside but retained its purpose as a cache. The local cache used to also serve as a record of specifically which packages were selected in a particular working directory, with the intent that a second run of "terraform init" would always select the same packages again. That meant that in some sense it behaved a bit like a local filesystem mirror directory, even though that wasn't its intended purpose. Due to some unfortunate miscommunications, somewhere a long the line we published some documentation that _recommended_ using the cache directory as if it were a filesystem mirror directory when working with Terraform Cloud. That was really only working as an accident of implementation details, and Terraform v0.14 is now going to break that because the source of record for the currently-selected provider versions is now the public-facing dependency lock file rather than the contents of an existing local cache directory on disk. After some consideration of how to move forward here, this commit implements a compromise that tries to avoid silently doing anything surprising while still giving useful guidance to folks who were previously using the unsupported strategy. Specifically: - The local cache directory will now be .terraform/providers rather than .terraform/plugins, because .terraform/plugins is effectively "poisoned" by the incorrect usage that we can't reliably distinguish from prior version correct usage. - The .terraform/plugins directory is now the "legacy cache directory". It is intentionally _not_ now a filesystem mirror directory, because that would risk incorrectly interpreting providers automatically installed by Terraform v0.13 as if they were a local mirror, and thus upgrades and checksum fetches from the origin registry would be blocked. - Because of the previous two points, someone who _was_ trying to use the legacy cache directory as a filesystem mirror would see installation fail for any providers they manually added to the legacy directory. To avoid leaving that user stumped as to what went wrong, there's a heuristic for the case where a non-official provider fails installation and yet we can see it in the legacy cache directory. If that heuristic matches then we'll produce a warning message hinting to move the provider under the terraform.d/plugins directory, which is a _correct_ location for "bundled" provider plugins that belong only to a single configuration (as opposed to being installed globally on a system). This does unfortunately mean that anyone who was following the incorrectly-documented pattern will now encounter an error (and the aforementioned warning hint) after upgrading to Terraform v0.14. This seems like the safest compromise because Terraform can't automatically infer the intent of files it finds in .terraform/plugins in order to decide automatically how best to handle them. The internals of the .terraform directory are always considered implementation detail for a particular Terraform version and so switching to a new directory for the _actual_ cache directory fits within our usual set of guarantees, though it's definitely non-ideal in isolation but okay when taken in the broader context of this problem, where the alternative would be silent misbehavior when upgrading.
-
James Bardin authored
Co-authored-by:
Kristin Laemmert <mildwonkey@users.noreply.github.com>
-
Alisdair McDiarmid authored
-
Alisdair McDiarmid authored
-
James Bardin authored
Not a great benchmark, but record it here for posterity. Practical testing with the AWS provider gives us a 98% speedup for simple plans.
-
James Bardin authored
DecoderSpec may be called many times, and deeply recursive calls are expensive. Since we cannot synchronize the Blocks themselves due to them being copied in parts of the code, we use a separate cache to store the generated Specs.
-
James Bardin authored
re-enable and fix module variable tests
-
James Bardin authored
update go-cmp
-
James Bardin authored
A few tests were inadvertently renamed, causing them to be be skipped. For some reason this is not caught by the `vet` pass that happens during normal testing.
-
James Bardin authored
Update go-cmp to prevent pointer arithmetic panics when using the race detector.
-
- 13 Oct, 2020 10 commits
-
-
Pam Selle authored
Terraform Plan CLI Vars Format
-
Pam Selle authored
feat(environment variable): add TF_WORKSPACE information
-
Pam Selle authored
-
Pam Selle authored
Fix un-saved error on chdir
-
Alisdair McDiarmid authored
command: Show diffs when only sensitivity changes
-
Pam Selle authored
-
Alisdair McDiarmid authored
When an attribute's sensitivity changes, but its value remains the same, we consider this an update operation for the plan. This commit updates the diff renderer to match this, detecting and displaying the change in sensitivity. Previously, the renderer would detect no changes to the value of the attribute, and consider it a no-op action. This resulted in suppression of the attribute when the plan is in concise mode. This is achieved with a new helper function, ctyEqualValueAndMarks. We call this function whenever we want to check that two values are equal in order to determine whether the action is update or no-op.
-
Pam Selle authored
Avoid disclosing values in errors on marked vals
-
Kristin Laemmert authored
The ProviderConfigTransformer was using only the provider FQN to attach a provider configuration to the provider, but what it needs to do is find the local name for the given provider FQN (which may not match the type name) and use that when searching for matching provider configuration. Fixes #26556 This will also be backported to the v0.13 branch.
-
Kristin Laemmert authored
-
- 12 Oct, 2020 13 commits
-
-
James Bardin authored
Render output changes based on the plan
-
James Bardin authored
The legacy tests never had to account for outputs in the plan. This path is not used outside of old builtin test provider, so just work around the output changes until we remove this completely.
-
James Bardin authored
Now that outputs changes are tracked in full, we can remove the comparisons with the prior state and use the planned changes directly.
-
Martin Atkins authored
The upgrade requirements for this release are considerably more modest than for Terraform v0.13, so this time we just have some notes about a few changes in behavior that may be impactful to some users. This first pass is intended to be included as part of a forthcoming beta testers' guide as we begin the v0.14 beta testing period. We will make further changes to this upgrade guide based on feedback from those who participate in the beta process. Note that this upgrade guide is not intended as release marketing material and so its presentation is focused on addressing concerns users might encounter while upgrading. We'll share highlights from the release in other contexts, such as the changelog and in the product blog.
-
James Bardin authored
Use recorded changes for outputs and plan root output removals
-
James Bardin authored
The state is not loaded here with any marks, so we cannot rely on marks alone for equality comparison. Compare both the state and the configuration sensitivity before creating the OutputChange.
-
James Bardin authored
-
James Bardin authored
Lookup before values for output changes. Use Update action when output has a non-null before value.
-
James Bardin authored
The apply graph builder no longer uses the destroy flag, which is not always known since the destroy flag is not stored in the plan file.
-
James Bardin authored
Since root outputs can now use the planned changes, we can directly insert the correct applyable or destroyable node into the graph during plan and apply, and it will remove the outputs if they are being destroyed.
-
Rémi Lapeyre authored
Closes https://github.com/hashicorp/terraform/issues/25708
-
Pam Selle authored
AssertObjectCompatible is a special case that will expose Go string values of values unless otherwise stopped. This adds that check.
-
Martin Atkins authored
-