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. 29 Jan, 2019 4 commits
  2. 28 Jan, 2019 5 commits
  3. 25 Jan, 2019 5 commits
    • Martin Atkins's avatar
      helper/schema: TypeMap of Resource is actually of TypeString · ae0be75a
      Martin Atkins authored
      Historically helper/schema did not support non-primitive map attributes
      because they cannot be represented unambiguously in flatmap. When we
      initially implemented CoreConfigSchema here we mapped that situation to
      a nested block of mode NestingMap, even though that'd never worked until
      now, assuming that it'd be harmless because providers wouldn't be using
      it.
      
      It turns out that some providers are, in fact, incorrectly populating
      a TypeMap schema with Elem: &schema.Resource, apparently under the false
      assumption that it would constrain the keys allowed in the map. In
      practice, helper/schema has just been ignoring this and treating such
      attributes as map of string. (#20076)
      
      In order to preserve the behavior of these existing incorrectly-specified
      attribute definitions, here we mimic the helper/schema behavior by
      presenting as an attribute of type map(string).
      
      These attributes have also been shown in some documentation as nested
      blocks (with no equals sign), so that'll need to be fixed in user
      configurations as they upgrade to Terraform 0.12. However, the existing
      upgrade tool rules will take care of that as a natural consequence of the
      name being indicated as an attribute in the schema, rather than as a block
      type.
      
      This fixes #20076.
      ae0be75a
    • Martin Atkins's avatar
      lang: New file-hashing functions · 954d38e8
      Martin Atkins authored
      In prior versions, we recommended using hash functions in conjunction with
      the file function as an idiom for detecting changes to upstream blobs
      without fetching and comparing the whole blob.
      
      That approach relied on us being able to return raw binary data from
      file(...). Since Terraform strings pass through intermediate
      representations that are not binary-safe (e.g. the JSON state), there was
      a risk of string corruption in prior versions which we have avoided for
      0.12 by requiring that file(...) be used only with UTF-8 text files.
      
      The specific case of returning a string and immediately passing it into
      another function was not actually subject to that corruption risk, since
      the HIL interpreter would just pass the string through verbatim, but this
      is still now forbidden as a result of the stricter handling of file(...).
      
      To avoid breaking these use-cases, here we introduce variants of the hash
      functions a with "file" prefix that take a filename for a disk file to
      hash rather than hashing the given string directly. The configuration
      upgrade tool also now includes a rule to detect the documented idiom and
      rewrite it into a single function call for one of these new functions.
      
      This does cause a bit of function sprawl, but that seems preferable to
      introducing more complex rules for when file(...) can and cannot read
      binary files, making the behavior of these various functions easier to
      understand in isolation.
      954d38e8
    • Martin Atkins's avatar
      lang/funcs: Factor out the various hash function implementations · ecaaa91d
      Martin Atkins authored
      These all follow the pattern of creating a hash and converting it to a
      string using some encoding function, so we can write this implementation
      only once and parameterize it with a hash factory function and an encoding
      function.
      
      This also includes a new test for the sha512 function, which was
      previously missing a test and, it turns out, actually computing sha256
      instead.
      ecaaa91d
    • Kristin Laemmert's avatar
      command/jsonplan: sort resources by address (#20113) · 6e057c52
      Kristin Laemmert authored
      * command/jsonplan: sort resources by address
      * command/show: extend test case to include resources with count
      * command/json*: document resource ordering as consistent but undefined
      6e057c52
    • Martin Atkins's avatar
      vendor: go get github.com/zclconf/go-cty@master · fb0c9714
      Martin Atkins authored
      This fixes some consistency problems with how number strings were parsed
      in the msgpack decoder vs other situations.
      
      This commit also includes an upgrade of HCL2 to use this new cty function,
      though there's no change in behavior here since the new function is
      functionally equivalent to what it replaced.
      fb0c9714
  4. 24 Jan, 2019 7 commits
  5. 23 Jan, 2019 15 commits
    • Martin Atkins's avatar
      tools/terraform-bundle: refuse to bundle versions <0.12.0 · c70954ae
      Martin Atkins authored
      Since terraform-bundle is just a different frontend to Terraform's module
      installer, it is subject to the same installation constraints as Terraform
      itself.
      
      Terraform 0.12 cannot install providers targeting Terraform 0.11 and
      earlier, and so therefore terraform-bundle built with Terraform 0.12
      cannot either. A build of terraform-bundle from the v0.11 line must be
      used instead.
      
      Without this change, the latest revisions of terraform-bundle would
      install plugins for Terraform 0.12 to bundle along with Terraform 0.10 or
      0.11, which will not work at runtime due to the plugin protocol mismatch.
      
      Until now, terraform-bundle was incorrectly labelled with its own version
      number even though in practice it has no version identity separate from
      Terraform itself. Part of this change, then, is to make the
      terraform-bundle version match the Terraform version it was built against,
      though any prior builds will of course continue to refer to themselves
      as 0.0.1.
      
      If asked to create a bundle for a version of Terraform v0.12 or greater,
      an error will be returned instructing the user to use a build from the
      v0.11 branch or one of the v0.11.x tags in order to bundle those versions.
      
      This also includes a small fix for a bug where the tool would not fail
      properly when the requested Terraform version is not available for
      installation, instead just producing a zip file with no "terraform"
      executable inside at all. Now it will fail, allowing automated build
      processes to detect it and not produce a broken archive for distribution.
      c70954ae
    • James Bardin's avatar
      don't remove empty diff values · 37b5e2dc
      James Bardin authored
      Our new diff handling no longer requires stripping the empty diffs out,
      and provider may be relying on some of the empty-value quirks in
      helper/schema.
      37b5e2dc
    • James Bardin's avatar
      test for missing map entries · 675d700a
      James Bardin authored
      675d700a
    • James Bardin's avatar
      missing prefix in recounted map · 9b30da50
      James Bardin authored
      Missing prefix in map recount. This generally passes tests since the
      actual count should already be there and be correct, then ethe extra key
      is ignored by the shims.
      9b30da50
    • Kristin Laemmert's avatar
      mildwonkey/b-show-state (#20032) · f00fcb90
      Kristin Laemmert authored
      * command/show: properly marshal attribute values to json
      
      marshalAttributeValues in jsonstate and jsonplan packages was returning
      a cty.Value, which json/encoding could not marshal. These functions now
      convert those cty.Values into json.RawMessages.
      
      * command/jsonplan: planned values should include resources that are not changing
      * command/jsonplan: return a filtered list of proposed 'after' attributes
      
      Previously, proposed 'after' attributes were not being shown if the
      attributes were not WhollyKnown. jsonplan now iterates through all the
      `after` attributes, omitting those which are not wholly known.
      
      The same was roughly true for after_unknown, and that structure is now
      correctly populated. In the future we may choose to filter the
      after_unknown structure to _only_ display unknown attributes, instead of
      all attributes.
      
      * command/jsonconfig: use a unique key for providers so that aliased
      providers don't get munged together
      
      This now uses the same "provider" key from configs.Module, e.g.
      `providername.provideralias`.
      
      * command/jsonplan: unknownAsBool needs to iterate through objects that are not wholly known
      
      * command/jsonplan: properly display actions as strings according to the RFC,
      instead of a plans.Action string.
      
      For example:
      a plans.Action string DeleteThenCreate should be displayed as ["delete",
      "create"]
      
      Tests have been updated to reflect this.
      
      * command/jsonplan: return "null" for unknown list items.
      
      The length of a list could be meaningful on its own, so we will turn
      unknowns into "null". The same is less likely true for maps and objects,
      so we will continue to omit unknown values from those.
      f00fcb90
    • Radek Simko's avatar
      Merge pull request #20089 from hashicorp/t-cmd-fmt-sensitive-update · b492c366
      Radek Simko authored
      command/format: Add test to cover update of sensitive field
      b492c366
    • Radek Simko's avatar
      Update CHANGELOG.md · ffb887f8
      Radek Simko authored
      ffb887f8
    • Radek Simko's avatar
      Merge pull request #20071 from hashicorp/b-fix-json-diff-formatting · 71d07832
      Radek Simko authored
      command/format: Fix nested (JSON) object formatting
      71d07832
    • Radek Simko's avatar
    • Sander van Harmelen's avatar
      backend/remote: make sure we show the correct error · 1e4c2068
      Sander van Harmelen authored
      Previously we would show two errors when there was a version constraint
      error. But of course one is enough.
      1e4c2068
    • Tom Harvey's avatar
      ec0419fe
    • Radek Simko's avatar
      953eae7e
    • Radek Simko's avatar
      command/format: Fix tuple diff formatting · f3d1565d
      Radek Simko authored
      f3d1565d
    • Martin Atkins's avatar
      config/hcl2shim: ValuesSDKEquivalent float64 comparison of numbers · 99504266
      Martin Atkins authored
      The SDK uses only the native int and float64 types internally for values
      that are specified as being "number" in schema, so for SDK purposes only
      a float64 level of precision is significant.
      
      To avoid any weirdness introduced as we shim and un-shim numbers, we'll
      reduce floating point numbers to float64 precision before comparing them
      to try to mimic the result the SDK itself would've gotten from comparing
      its own float64 versions of these values using the Go "==" operator.
      99504266
    • James Bardin's avatar
      Merge pull request #20081 from hashicorp/jbardin/list-block · 46a46287
      James Bardin authored
      New Diff.Apply method
      46a46287
  6. 22 Jan, 2019 4 commits
    • Martin Atkins's avatar
      helper/plugin: Discard meaningless differences from provider planning · f65b7c53
      Martin Atkins authored
      Due to various inprecisions in the old SDK implementation, applying the
      generated diff can potentially make changes to the data structure that
      have no real effect, such as replacing an empty list with a null list or
      vice-versa.
      
      Although we can't totally eliminate such diff noise, here we attempt to
      avoid it in situations where there are _only_ meaningless changes -- where
      the prior state and planned state are equivalent -- by just echoing back
      the prior state verbatim to ensure that Terraform will treat it as a noop
      change.
      
      If there _are_ some legitimate changes then the result may still contain
      meaningless changes alongside it, but that is just a cosmetic problem for
      the diff renderer, because the meaningless changes will be ignored
      altogether during a subsequent apply anyway. The primary goal here is just
      to ensure we can converge on a fixpoint when there are no explicit changes
      in the configuration.
      f65b7c53
    • Martin Atkins's avatar
      config/hcl2shim: ValuesSDKEquivalent function · 6b03c813
      Martin Atkins authored
      This is a first pass of an "approximately equal" function that tries to
      mimic the reduced precision caused by the field reader abstraction in
      helper/schema so that we can distinguish between meaningful changes to
      the proposed new state and incidental ones that just result from the loss
      of precision in the SDK implementation.
      6b03c813
    • James Bardin's avatar
      update comment and fix core test · 273f20ec
      James Bardin authored
      One terraform test was broken when the result became more correct.
      273f20ec
    • James Bardin's avatar
      disable broken import test for now · 93d78c4e
      James Bardin authored
      93d78c4e