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.
  1. 14 Oct, 2020 17 commits
    • Alisdair McDiarmid's avatar
      Merge pull request #26585 from hashicorp/alisdair/update-hcl-cty · b1500db6
      Alisdair McDiarmid authored
      Update hcl and go-cty dependencies
      b1500db6
    • James Bardin's avatar
      Merge pull request #26557 from remilapeyre/skip-ddl-commands · 657dd330
      James Bardin authored
      Add skip_table_creation and skip_index_creation options to the pg backend
      657dd330
    • James Bardin's avatar
      Merge pull request #26577 from hashicorp/jbardin/decoder-spec · 08abf5d5
      James Bardin authored
      Memoize Block.DecoderSpec
      08abf5d5
    • James Bardin's avatar
      extended cache comments · e27ecba6
      James Bardin authored
      e27ecba6
    • Petros Kolyvas's avatar
      Provisioner contribution guide updates (#26538) · dc48450e
      Petros Kolyvas authored
      An update on the deprecated state of vendor provisioners for our contribution guide.
      dc48450e
    • Martin Atkins's avatar
      internal/depsfile: Update the dependency lock file atomically · 0009768c
      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.
      0009768c
    • Martin Atkins's avatar
      internal/depsfile: Factor out our atomic file replacement logic · 55e6f649
      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.
      55e6f649
    • Martin Atkins's avatar
      command: new cache directory .terraform/providers for providers · e70ab09b
      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.
      e70ab09b
    • James Bardin's avatar
    • Alisdair McDiarmid's avatar
      948ab5eb
    • Alisdair McDiarmid's avatar
      a647b11a
    • James Bardin's avatar
      add benchmark used for DecoderSpec · dd8a8bde
      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.
      dd8a8bde
    • James Bardin's avatar
      cache DecoderSpec calls · d40e2fb8
      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.
      d40e2fb8
    • James Bardin's avatar
      Merge pull request #26584 from hashicorp/jbardin/var-tests · d3307f48
      James Bardin authored
      re-enable and fix module variable tests
      d3307f48
    • James Bardin's avatar
      Merge pull request #26583 from hashicorp/jbardin/go-cmp · 2e35ac12
      James Bardin authored
      update go-cmp
      2e35ac12
    • James Bardin's avatar
      re-enable and fix module variable tests · 073beb90
      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.
      073beb90
    • James Bardin's avatar
      update go-cmp · e20a01a2
      James Bardin authored
      Update go-cmp to prevent pointer arithmetic panics when using the race
      detector.
      e20a01a2
  2. 13 Oct, 2020 10 commits
  3. 12 Oct, 2020 13 commits