mirror of https://github.com/hashicorp/terraform
radek/pss-reconfig
add-deprecation-message
dbanck/init-graph
sebasslash/denote-sensitive-list-input-configuration
deprecated-resource-block-marks
main
modernize-console-command-to-use-arguments
pss/discovery-block-download-via-download-event-callbacks
jbardin/inline-type-conversion
modernize-providers-commands-to-use-command-package
modernize-state-commands-to-use-arguments-package
sams/skip-cleanup-release
expanding-moved-blocks
v1.14
modernize-taint-commands
modernize-state-commands
modernize-taint-commands-2
mildwonkey/action-prep
stacks-variable-validations
modernize-import-command
modernize-providers-lock-command
providers-command-modernization
mildwonkey/action-graph
sams/f-plan
sams/marks-provenance
tfdiags-test-helper-with-extras
pss/discovery-block-download-via-installer-as-blackbox-2
changelog-link-verification
pss/discovery-block-download-via-installer-as-blackbox
sams/jit-instances
refactor-config-types
pss/init-security-workflow-changes
sarah/workspace-list-json-output-nonbreaking
experimental/sams_matej/safe_targeting
sams/feat-targeting
sarah/workspace-list-using-views
v1.11
v1.13
v1.12
matejrisek/actions/on_failure
prototype-destroy-action
sarah/error-plan-workspace-mismatch-rebase
limit-usage-of-deep-unmarking
use-deprecation-marks-for-resource-deprecation-2
shweta/remove_extra_color_code_in_plan_string
sarah/init-cmd-testing-comments
prepare/1.15.0-alpha20260114
stacks-destory-argument
jbardin/planned-private-for-random
pss/validate-backend-state-store-config-in-plans
backport/fix-replace-triggered-by-validation/openly-selected-imp
pss/change-experiment-control
example-current-experiment
sarah/allow-experiment-overrides
use-deprecation-marks-for-resource-deprecation
deprecation-marks-2
fix-actions-not-respecting-resource-dependencies
changelog-fix-2
changelog-fix
backport/stacks-surface-diagnostics-from-locals/externally-sacred-snapper
backport/fails-in-apply-should-not-set-empty-state/gladly-leading-cattle
sarah/refactor-passing-backend-state-to-plan
stacks-invalid-locals
jbardin/terraform-data-write-only
undeferred-components-should-not-have-unknown-inputs
mildwonkey/actions-deps-tests
pss/update-how-operations-use-backend-config-state
mildwonkey/poc
sarah/plan-workspace-not-used-test
compliance/update-headers
1.13-bump-crypto-dep
experimental/add-on-failure
mjyocca/TF-25756-tf-reg-comp-protocol
prepare/1.15.0-alpha20251117
backport/bump-golang-crypto/lovely-cheerful-stud
proto/reg-comp
deprecation-structural-detection
backport/liamcervante/37841/remarkably-classic-tapir
deprecation-without-marks
azure/fix-empty-string-ignore
backport/dependabot/go_modules/golang.org/x/crypto-0.45.0/nominally-still-dory
backport/radek/pss-isolate-init/slowly-literate-molly
backport/dbanck/fix-list-no-identity-crash/vastly-driving-pig
backport/liamcervante/ephemeral-outputs-state/thankfully-easy-spider
backport/liamcervante/stacks/component-ephemeral-output/repeatedly-perfect-molly
backport/t-bump-go-getter/clearly-master-chow
mildwonkey/de-feral-actions
backport/alanpchua/update-release-scan-config/conversely-adequate-weevil
backport/alanpchua/update-release-scan-config/merely-together-hagfish
backport/liamcervante/ephemerals/stacks-and-tests/indirectly-arriving-shrimp
pss/add-pss-implementations-in-grpcwrap
liamcervante/37784
deps-oci-sdk-update
deprecation-marks
fix-action-targeting-2-backport-1-14
backport/refactor-action-apply-graph/gratefully-upward-perch
backport/liamcervante/actions/validate-ephemeral/remotely-next-monster
pss/2025-10-init-new-workdir
sams/query-validate-identity-change
backport/dbanck/check-identity-schema-decode/notably-heroic-moose
add-duration-to-action-complete
liamcervante/actions/defers-with-edges
backport/mildwonkey/actions/dont-panic-on-refresh/commonly-needed-bullfrog
backport/add-test-case-for-conditions-referencing-triggering-resource/forcibly-square-wahoo
fix-query-action-interference-2
fix-query-action-interference
sams/xtract-config
backport/sams/list-remove-experiments/rapidly-usable-macaque
mend-security/deploy-workflow-psirt_prd0014263
pss/migrate-state-store-to-backend
TF-27458-2-old
TF-27458-with-partial-expansion
TF-27480
TF-27458-with-partial-expansion-based-on-validation
sarah/add-azure-backend-testing-notes
TF-27460-with-unknown-conditions
TF-27460-with-count-and-index
pss/update-workspace-commands
actions/invoke-command-prototype
actions-in-modules
backport/sams/flaky-test/reliably-fond-flounder
equivalence-testing/add-action-invocations-to-summary
actions/prototype-looping-syntax
TF-27458-old
experiment/actions-no-reference-cycle
pss/prototyping-2025-08-12
backport/dbanck/identity-apply-error/wildly-intent-chamois
backport/dbanck/identity-apply-error/newly-pumped-bonefish
backport/dbanck/identity-apply-error/naturally-vital-grouper
pss/prototyping-2025-06-11
backport/dbanck/identity-apply-error/notably-allowing-macaw
provider-using-hashicorp-namespace
sams/exp/test-breakpoints
pss/enable-specific-experiment-for-init-via-flag
diagnostics-playground
local-state-via-terraform-provider
revert-37307-sams/no-runtime-build
TF-27252
stack-cli-download-in-plugin-cache
radek/pss-builtin-provider-impl
jbardin/ignore_changes
TF-25933
radek/pluggable-backends-protocol
sams/memo-eval-ctx
pss/warning-ss-in-child-module
radek/f-state-storage-cfg
ds-experimenting
sams/parallel-cleanup
bump/consul-remote-state-deps
build-workflow-dev/validate-window-symlink-pack-fix
fix-windows-symlink
sarah/pss-prototype-be-state
backport/radditude/remove-cgo-default/personally-calm-cat
v1.7
v1.6
v1.3
v1.10
v1.9
v1.8
v1.1
v1.0
backport/patch-1/virtually-up-fowl
v1.2
v1.4
v1.5
backport/patch-1/finally-wired-stingray
backport/patch-1/suddenly-stirred-piranha
backport/patch-1/nationally-working-kite
backport/bmm/update-use-cases/lovely-relevant-haddock
docs/reference-rewrites-phrase-1
backport/ilu/bump-vul/logically-robust-tomcat
sarah/pss-prototype-backend-state
backport/dbanck/fix-import-ui-identity/hugely-super-hippo
sams/tfquery-execute-res
sams/ephem-blocks
fixing-stacks-plugin-server-panics
sams/query-list
stacks-subcommand-plugin
backport/dbanck/relax-identity-validation/partly-bursting-llama
f-terraform-actions
backport/iframe-to-videoembed/promptly-grand-turtle
backport/iframe-to-videoembed/safely-ideal-platypus
backport/iframe-to-videoembed/strongly-capable-maggot
backport/dbanck/validate-identity-matches-schema/carefully-many-malamute
sarah/merge-main-controlling-destroys
sarah/partial-config-nested-attrs-bugfix
refactor-with-hcloverlay
f-controlling-destroys
docs/resource-block-ref-rewrite
sarah/add-file-fields
rs/remove_io_links
radek/testing-remove-unused-fields
sams/invalid-triggered-by-ref
docs/march-sprint-lang-rewrites
TF-24447-spike-stacks-cli-as-a-plugin
sarah/refactor-local-state-backend
tfmigrate-links
sams/deferred-targeting
output-deprecation
TF-24682-save
sams/inverse-target
sams/fix-single-wrapped-null
update-aws-sdk-go-base
RK/feedback-on-ephemeral-value-changes
RK/checks-draft
sams/resource-level-concurrency
sarah/auto-label-no-changelog
stacks-debugging-info
f-output-type
backport/sams/tf-test
backport/sams/fix-empty-state/cleanly-moral-maggot
backport/oss/solely-organic-gull
test-changie-check
backport/docs/stacks-deploy/clearly-curious-lioness
sarah/TF-21877
backport/IPL-7602/saved-plan-apply-hangs-with-auto-approve-flag/privately-humorous-jay
output-deprecation-with-marks
sams/cancel-ch-to-ctx
demo-pr
backport/changelog-and-experiments/adequately-ultimate-pika
sams/tf-test-parallel
backport-changie-changelog-to-1-10
cleanup/1.11.0-beta1
backport-changie-changelog
prepare/1.11.0-alpha20250107
prepare/-alpha20250107
ds/main-clean
Content-rewrites-part-1
TF-21851
TF-21851-only-dynamic-backend-first-try
release-0-10-3
equivalence-testing/sams/skip-graph-cycle-validation
f-builtin-write-only-attr
changelog-process
equivalence-testing/update-backend-comments
TF-21877
release/liamcervante-testing
cleanup-1.10-rc.3
equivalence-testing/jbardin/data-depends_on
input-deprecation
equivalence-testing/docs/dnf5
TF-18617-remove-in-the-end-version
equivalence-testing/docs/update-version-constraints-operators-reference
equivalence-testing/main
equivalence-testing/fix/typo-infrastructure
jbardin/no-refresh-objcompat
equivalence-testing/d-update-json-schema
equivalence-testing/jbardin/undeclared-vars
TF-21888
backport/jbardin/ephemeral-funcs/safely-quick-cougar
backport/dependabot/go_modules/github.com/golang-jwt/jwt/v4-4.5.1/daily-probable-ewe
rln-ephemeral-values-updates
trying-to-get-interactive-inputs-to-work
RK/ephemeral-values
ensure-checks-dont-leak-ephemeral-values
ephemeral-checks
add-ephemeral-func
ds/experiment/trigger-block
TF-18609
TF-18610-with-cross-component-ephemeral-values
backport/patch-1/hopelessly-enabled-magpie
ds/deferred-ephemeral-resources-with-change
ds/deferred-ephemeral-resources
ds/office-hours-removed-block
20240919
improve-error-message-for-removed-block-component-collission
apply-destroy-and-forget-plans
nolegacysdk-azure
add-removed-blocks-to-find-stack-config-components-rpc-call
radek/f-ev-ephemeral-func
radek/f-ev-variable-validation
docs/cli-nav-rename
docs/write-configuration-proposal
alisdair/stacks/sensitive-inputs
kmoe/render-output-sensitivity-changes
brandonc/plan_options_replace
brandonc/contains_equality_docs
docs/re-reformat-templatestring-funct
make-plan-public-with-deferred-plan-renderer
make-plan-public-with-deferred-plan-renderer-2
make-plan-public
TF-19059
artifact-manifest/main/presumably-calm-ostrich
jbardin/destroy-validations
f-collections-iterators
revert-32615-patch-1
TF-18435
TF-18463-2
TF-18463
TF-9822
b-variable-default-validation-context
TF-13968
TF-10919
spike-component-remove
f-actions-prototype
TF-17949
kmoe/ephemeral-output-values
f-core-finer-semaphore
f-fmt-required-providers
f-ephemeral-values
f-ephemeral-values-2
b-stacks-apply-variables-not-passed
f-ephemeral-values-stacks
docs/atrujill0-1.9-review
doc-provider-req-cta
f-cmd-console-release-lock
RK/renameAzureAD
f-rpcapi-multipkg
f-stacks-state-plan-handles
TF-13085
TF-13952
f-templatestring-dynamic-traversals
bmm/migrate-tf-phases-doc
f-events-actions
apparentlymart-patch-4
brandonc/deprecated_module_warnings
mjyocca/stacks-rpcapi-package-service
sebasslash/tf-15302_modifiable-snapshot-interval
TF-12601/deprecated-module-warnings
f-stacks-provider-singletons
b-plan-snapshot-experiments
TF-13965
backend/azure/update-to-latest-sdks
docs/atrujillo/lang-add-moved-ref
consistency-provider-deferred
nf/apr24-pr-template
TF-14641
TF-13964
TF-13963
nf/may24-alpha-release
jbardin/plan-valid-nested-null
ensure-all-deferred-provider-workflows-have-same-behavior
TF-13961
f-collections-set-zeroval
backport/RK/fix-links/adequately-related-bear
backport/RK/fix-links/willingly-ultimate-catfish
RK/fix-links
f-stacks-provider-cancel
testing-renovate
f-robust-marks-handling
tf-init-json
TF-13960
TF-13959
radditude/fix-provider-for-each
f-junit-xml-round-2
TF-13960-old
TF-13959-old
TF-13958-old
modify-dev-override-warn-with-backend
TF-13951
bmm/fix-style-anchor
WAF-110-Terraform-Code-Style-Guide
bmm/custom-condition-docs-fix
doc-dependency-updates
f-rehearse-gosum-changes
f-genconfig-hclwrite
f-no-more-helperschema
TF-13084
radditude/stacks-checkable
f-removed-provisioners
TF-10521-Implement-component-resource-correlators-in-the-agent
b-stacks-remove-data-resource
laurenolivia/changelog-fix-cloud-colorize
kmoe/dynamic-foreach-sensitive-error
alisdair/stackeval-hook-replace-action-counts-slice
alisdair/stackeval-hook-replace-action-counts
radditude/standard-panics
improve-dynamic-block-iterator-error
backport/patch-1/lovely-splendid-mackerel
improve-dynamic-block-error-message
document-provider-lock-using-cache
individual-element-diffs
b-evalcontext-funcs-in-partial-expanded-module
fix-is-sensitive
f-plan-applyable-complete-flags
use-plugin-cache-for-provider-lock
b-terraform-test-junit-invalid
heat/chore/update-website-node-version
f-deferred-actions-placeholder-eval
RK/fix-nav-upgrade-name
laurenolivia/fix-cloud-colorize
apparentlymart-patch-3
alisdair/stacks-sensitive-component-outputs
f-stacks-apply-ordering
kmoe/forget-plan-proto-2
backport/bmm/tf-test-mock-doc-update/trivially-kind-burro
bmm/tf-test-mock-doc-update
feature/applied_changes/add_component_addr
gh-issue-34396
brandonc/bump_go-slug_0.13.3
backport/patch-1/scarcely-touched-jennet
sebasslash/cloudplugin_terminal
RELPLAT-955-EOY-license-updates
feature/add-additional-fields-to-resource-proto
f-module-eval-plan
f-deferred-actions
apparentlymart-patch-2
f-addrs-localval-uniquekey
radditude/apply-sensitive-values
f-cmd-graph-simpler
jbardin/provider-functions
RK/update-oracle-registry-links
f-sso-endpoint
dep-minor-upgrades-v1.7
kmoe/import-moved-validation
tests_docs_fixup
apparentlymart-patch-1
b-val-refinements-panics
backport/mock-importstate-data-race/adversely-prompt-halibut
backport/s3/fix-coerce-value/certainly-saving-owl
backport/s3/fix-coerce-value/deeply-on-marlin
backport/s3/f-schema-single-nested-object/accurately-noble-stingray
backport/s3/f-schema-single-nested-object/miserably-well-arachnid
s3/f-check-for-bucket-in-init
backport/s3/improved-s3-error-messages/extremely-natural-filly
backport/TF-9149-terraform-1-5-should-not-enable-snapshots-when-x-terraform-snapshot-interval-is-not-sent/ghastly-social-hippo
s3/request-logging
backport/s3/request-logging/locally-feasible-snail
backport/s3/testing-endpoints/nominally-becoming-caiman
backport/s3/testing-endpoints/possibly-supreme-kite
backport/s3/testing-endpoints/strangely-cunning-manatee
s3/log-base
backport/s3/log-base/blatantly-ethical-buffalo
backport/TF-9149-terraform-1-5-should-not-enable-snapshots-when-x-terraform-snapshot-interval-is-not-sent/remarkably-moral-oriole
backport/TF-9149-terraform-1-5-should-not-enable-snapshots-when-x-terraform-snapshot-interval-is-not-sent/remarkably-stunning-mule
backport/TF-9149-terraform-1-5-should-not-enable-snapshots-when-x-terraform-snapshot-interval-is-not-sent/naturally-wise-primate
backport/jbardin/types/gently-unbiased-walleye
backport/jbardin/types/loudly-hot-poodle
alisdair-patch-1
backport/s3/allow-forbid-account-ids/rarely-casual-louse
backport/s3/allow-forbid-account-ids/violently-on-adder
alisdair/check-results-state-compatibility-1.5
backport/alisdair/check-results-state-compatibility/jointly-curious-kit
alisdair/check-results-state-compatibility-1.3
IPL-3022-terraform-cloud-state-locking-regression-for-local-users
brandonc/state_upload_fallback
import-id-interp-docs
go1.21
radditude/validate-module-names
brandonc/CHANGELOG-go-tfe-bump-v1.38.1
swap_ironbank_stanza
codeowners-core
enable_ironbank
backport/brandonc/bump_go-tfe_v1.32.1/adversely-fit-mite
radditude/check-ci
RK/remove-language
compliance/license-updates
compliance/license-update
s3/more-validation-modernization
update-linux-package-license
backport/jbardin/init-from-module-warnings/informally-trusting-asp
radditude/go-1.20.7
sebasslash/saved-cloud-plans-changelog
cli-team/saved-cloud-plans
brandonc/changelog_33333
TF-7327-using-multiple-terraform-remote-state-data-sources-can-cause-race-conditions-when-the-backend-configuring-localterraform-com
deps-grpc-cve-2023-32731
TF-7056-uploading-state-directly-to-hosted-state-upload-url-when-available
b-svchost-race-panic-v1.5
backport/b-svchost-race-panic/evidently-intense-horse
RK/add-checks-tutorial-and-fix-headers
sebasslash/snapshot-interval-header-check
RELENG-297-patch-set-output-deprecation
backport/fix-iss-33220/allegedly-oriented-warthog
kmoe/genconfig-timeouts
radditude/duplicate-import-blocks
TF-6378-Workspaces-can-use-agent-pools-when-not-in-allowed-workspaces
sarah-test-changes
nf/suggest/laurenolivia/codify-remote-plan-artifact
radditude/ci-test
jbardin/import-with-config
vravind1/plugin-framework-tutorial
alisdair/goimports-fixes
releng/disable-reproducability-checks
f-sourcebundle
laurenolivia/add-resource-drift-logtype
kmoe/plannable-import-plan-renderer
kmoe/plannable-import-types
jbardin/provider-resource-types
backport/patch-1/personally-brave-snapper
tf-5529-sro-tfe-version-check
bflad/debugging-link-to-provider-logging
releng/fix-ecr-tag
releng/fix-trigger-dependencies
releng/migrate-common-release-tooling
b-1.4-no-cty-refinements-yet
backport/patch-3/horribly-patient-ape
f-deferred-actions-old
judith/state
releng/test-linux-arm-tests
ashleemboyer-patch-1
doc-break-plugin-cache-env
docs/amb.migrate-link-formats
f-break-plugin-cache-with-env-var
brandonc/TF-4560
sebasslash/sro-provisioner-logs
sebasslash/fix-credentials-sourcing-backend
sebasslash/cloud-e2e-testworkflow
TF-3527-detect-alias-localterraform-com-during-terraform-init
alisdair/hcl-v2.16.0
f-smoke-test-prototype
f-typeexpr-inferred
kmoe-patch-1
kmoe/import-refresh-false
f-default-provider-address-allowlist
mktg-tf-ee07f063062f473a65a2c1d9c3036251
null-values-fix
f-output-value-types
backport/fix-future-lang-2/mostly-helped-shrew
fix-future-lang-2
f-cli-hide-fast-refresh
f-cmd-web
doc-unicode-hcl
brandonc/changelog_sensitive_diff_fixes
brandonc/changelog_nested_sensitive
f-build-go1.19.3
fix-links-devdot
brandonc/providers-estimate
brandonc/nested_attr_sensitive
fix-future-facing-language
gcs-backend-add-private-connect-support
mg_no_code_prov_followup
add-cont-valid-callout
f-partial-plan-on-error
gcs-backend-add-kms
doc-yamlencode-stable
mg_cli_install_architectures
b-check-output-multi-expand
b-check-resource-multi-expand
uk1288-redact-output-sensitive-values
fix-internals-overview
update-lang-frontmatter
megan_pr_touch_up
kmoe/init-checksum-miss-error
dividers-devdot-fixes
fix-dividers-for-devdot
megan_tf563
f-dynamic-provider-assignment
dev-portal-updates-docs
f-persistent-checks-old
f-jsonstate-2
b-flatten-panic
backport/patch-1/badly-correct-zebra
backport/patch-1/fully-fine-macaw
backport/patch-1/globally-true-burro
backport/patch-1/heavily-moving-teal
backport/patch-1/overly-fleet-polecat
backport/patch-1/presently-upright-newt
backport/patch-1/yearly-first-impala
update-readme
backport/patch-1/yearly-rich-skunk
tiny-fix-readme
kevin/remove-guides-docs
remove-terraform-docs
docs-readme-updates-versioned-docs
module-invocation-warning
update-important-section
f-expand-root-outputs
f-addrs-static-checkable
gs/add-pre-plan-run-tasks
f-moduletest-2
stable-website
backport/bugfix_typos/hardly-sharp-mosquito
fix-readme-again
fix-cdktf-link
backport/fix-apt-page/abnormally-relative-quagga
fix-apt-page
laura-update-docs-readme
MatthewTestBranch
tfexec-0.17.0
add-jsonstate-to-cloudbackendstate2
update-optional-type-attributes
docs-for-each-list-toset
add-jsonstate-to-cloudbackendstate
add-internals-to-sidebar
backport/patch-1/rarely-informed-gopher
f-functions-in-providers
f-testing-with-conditions
add-warnings-backends
add-version-notes-1.2
add-tutorial-custom-conditions
non-interactive-workflows
alisdair/fix-configload-snapshot-panic
fix-postconditions-example
f-partial-plan-on-error-ui
thiskevinwang-patch-1
brandonc/cloud_upgrade_013
update-run-task-result
taiidani/cloudScheme
brandonc/scheme_override_cloud
alisdair/metadata-functions-command
update-runtasks
add-note-about-spaces
sebasslash/err-approval-input-false
sebasslash/config-token-precedence
kevin/preview
update-TF-WORKSPACE-variable
sebasslash/rename-env-vars
laura-update-pre-post-conditions
release-notes-env-credentials
rt-changelog-entry-1.1
sebasslash/env-cloud-e2e-tests
sebasslash/add-cloud-e2e-test-workflow
sebasslash/tf-workspace-cloud-config
kevin/vercel-config
build-pr-checks
uk1288/update-changelog-md-v1-1
uk1288/update-changelog-md
sebasslash/resolve-flaky-env-var-test
uk1288/fix-for-cloud-integration-panic
sebasslash/add-tf-hostname-env-var
f-init-provider-source-feedback
sebasslash/add-tf-org-env-var
uturunku1-patch-2
link_workflow_tutorials
migrate-go-tfe-1_0
f-ng-workflow
uturunku1-patch-1
update-cidrnetmask-docs
tchupp/override-local-vars
backport/barrettclark/update-go-slug/severely-destined-crow
preapply-runtasks-clioutput
fix-broken-link
kmoe/unused-resource-attributes
f-e2etest-deps-forbidden
alisdair/disable-preconditions-postconditions
update-depends-on-docs
fix-preconditions
preapply-runtasks-cli-output
barrettclark/fix-state-outputs-read-permissions
fix-last-intro-nits
fix-intro-page-images
add-new-intro-docs
fix-provisioners-content
update-packaging-action-name
update_gen_meta
f-diagnostics-cli-reorg
test-branch-protection-workflow
alisdair/resource-instance-object-dependencies
f-new-build-pipeline
f-implied-move-module-call
b-1.1-module-source-git
backport/doc-refactoring-nav-link/honestly-sweet-sawfly
tfc-integration-docs
f-svcauth-environment
f-preconditions-postconditions
nf/nov21-migrate-away-from-cloud
tags-reconfigure-msg
backport/jbardin/k8s-mod-update/likely-probable-falcon
lafentres/autolabel-dependabot-prs
cloud-e2e-fix
f-validate-lint
f-rpcplugin-interface
brandonc/variable_parsing_refactor
nq.docs-content-update
backport/jbardin/coerce-value-nested-types/certainly-rested-chigger
backport/jbardin/optional-attrs/obviously-growing-duck
f-plugin-finder
backport/main/absolutely-sterling-whippet
revert-29088-minify_jsonencode
omarismail/run-vars
backport/jbardin/format-empty-nested-attrs/rightly-uncommon-bluegill
backport/jbardin/format-id-name-marks/perfectly-boss-bass
b-miekg-dns-upgrade
f-unused-attr
backport/jbardin/ignore-changes-marks/formerly-new-insect
prototype-implicit-graph
f-moved-again
f-decode-moved
f-derived-values-tracking
alisdair/prototype-moved-actions
v0.15
doc-config-refactoring
review-1.0-docs
f-template-values
cgriggs01-tpdp-default
f-plan-immediate-ops
backport/f-plan-refresh-only-and-replace/really-absolute-silkworm
backport/f-plan-action-reason/incredibly-concrete-jackal
v0.14
v0.13
v0.11
v0.12
f-submodule-outputs-inferred-sensitive
backport/k8s-backend-credentials/radically-decent-mite
res-add-learn-link-debug
f-func-expandnull
f-new-plan-modes
alisdair/version-should-include-prerelease
f-debugger
update-tfe-login-flow
json-schema-export-crash
f-exprstress
alisdair/still-applying-consolidation
f-fewer-apply-updates
pselle/env_delete
b-tf-builtin-provider-parser-fix
f-gen-integration-tests
jan21_language_urls
jan21_url_rfc
b-dev-overrides-plan-warning
jan21_test_broken_link_check
f-prototype-workspaces-are-states
f-cmd-output-raw
pault/0.14-tfce-continue-on-error
cmd-fmt-parens-error
alisdair/mildwonkey/type-func
revamp-cli-config
f-prototype-drift
gitrgoliveira-patch-1
fix-value-assertion-errors
f-nix-legacy-providers
26258
alisdair/are-consul-tests-running
f-temp-without-provider-blocks
f-depfile-pkg
alisdair/plan-summary-after-changes
mnomitch/varialbe-errors-on-remote-backend
alisdair/concise-diff-experiment
alisdair/remote-input-variable-unset
alisdair/backend-config-override-fix-remote-test
f-skip-attrs-as-blocks
alisdair/duplicate-no-color
cgriggs01-stable-pdp
guide-v0.13-beta
july2020_pre0.13_stable-website_backup
f-terraform-version-lock
b-module-instance-resource-deps
f-playground
alisdair/alpine-latest
alisdair/providers-list
f-provider-http-mirrors
f-providers-mirror-2
f-outputs-plan
f-plan-reads
f-cmdline-funcs
ps-protocol2
k8sback
f-refresh-plan
alisdair/getproviders-retries-bad-branch-do-not-use
registry-provider-tiers
f-providerinst-command-tests
f-provider-source-local-discovery
f-cmd-show-config
f-langserver
paddy_module_attribution_tmp
f-providers-new-installer
paddy_paul_proto52
f-providers-mirror
f-cliconfig-hcl2api
build-circleci
f-possible-apply-refactoring
f-core-rpc
f-provider-state-storage
f-workspaces2-prototype
p-go-azure-helpers-0.10.0
f-func-cidrsubnets
regenerate-protobufs
f-resource-for_each-and-experiments
f-testing-eval-prototype
sdk-removed
Incident16886
f-state-upgrade-always
sdk-v0.11-with-go-modules
pluginsdk-v0.12-early8
pluginsdk-v0.12-early7
pluginsdk-v0.12-early6
pluginsdk-v0.12-early5
cd/deprecate-in-docs
pluginsdk-v0.12-early4
pluginsdk-v0.12-early3
f-objchange-nulls
b-nested-set-unknown
b-sdk-nested-id
vendor-bump-hil
b-sdk-import-verify-test
pluginsdk-v0.12-early2
pluginsdk-v0.12-early1
v011
v0.12-alpha
allthingsclowd-patch-1
f-v0.12-cmdvars
f-outputs-in-plan
azurerm-backend-proxy
go1.11rc1-vendor-experiment
f-hcl2-planstate
f-provider-schema-init
f-hcl2-context-old
proto-test-harness
f-svchost-disco
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc1
v1.3.9
v1.4.0-beta2
v1.3.8
v1.4.0-beta1
v1.3.7
v1.4.0-alpha20221207
v1.3.6
v1.3.5
v1.4.0-alpha20221109
v1.3.4
v1.3.3
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc1
v1.2.9
v1.3.0-beta1
v1.2.8
v1.3.0-alpha20220817
v1.2.7
v1.3.0-alpha20220803
v1.2.6
v1.2.5
v1.3.0-alpha20220706
v1.2.4
v1.3.0-alpha20220622
v1.2.3
v1.3.0-alpha20220608
v1.2.2
v1.2.1
v1.3.0-dev
v1.2.0
v1.2.0-rc2
v1.2.0-rc1
v1.2.0-beta1
v1.1.9
v1.2.0-alpha20220413
v1.1.8
v1.2.0-alpha-20220328
v1.1.7
v1.1.6
v1.1.5
v1.1.4
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.1.0-rc1
v1.1.0-beta2
v1.0.11
v1.1.0-beta1
v1.1.0-alpha20211029
v1.0.10
v1.1.0-alpha20211020
v1.0.9
v1.1.0-alpha20211006
v1.0.8
v1.1.0-alpha20210922
v1.0.7
v1.1.0-alpha20210908
v1.0.6
v1.0.5
v1.1.0-alpha20210811
v1.0.4
v1.1.0-alpha20210728
v1.0.3
v1.1.0-alpha20210714
v1.0.2
v1.1.0-alpha20210630
v1.0.1
v1.1.0-alpha20210616
v1.0.0
v0.15.5
v0.15.4
v0.15.3
v0.15.2
v0.11.15
v0.12.31
v0.13.7
v0.14.11
v0.15.1
v0.15.0
v0.14.10
v0.15.0-rc2
v0.15.0-rc1
v0.14.9
v0.15.0-beta2
v0.14.8
v0.15.0-beta1
v0.14.7
v0.15.0-alpha20210210
v0.14.6
v0.15.0-alpha20210127
v0.14.5
v0.15.0-alpha20210107
v0.14.4
v0.13.6
v0.12.30
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.14.0-rc1
v0.14.0-beta2
v0.13.5
v0.14.0-beta1
v0.14.0-alpha20201007
v0.13.4
v0.14.0-alpha20200923
v0.13.3
v0.14.0-alpha20200910
v0.13.2
v0.13.1
v0.13.0
v0.12.29
v0.13.0-rc1
v0.13.0-beta3
v0.12.28
v0.12.27
v0.13.0-beta2
v0.13.0-beta1
v0.12.26
v0.12.25
v0.12.24
v0.12.23
v0.12.22
v0.12.21
v0.12.20
v0.12.19
v0.12.18
v0.12.17
v0.12.16
v0.12.15
v0.12.14
v0.12.13
v0.12.12
v0.12.11
v0.12.10
v0.12.9
v0.12.8
v0.12.7
v0.12.6
v0.12.5
v0.12.4
v0.12.3
v0.12.2
v0.12.1
v0.12.0
v0.12.0-dev20190520H16
v0.11.14
v0.12.0-rc1
v0.12.0-beta2
v0.11.13
v0.11.12
v0.12.0-beta1
v0.11.12-beta1
v0.11.11
v0.12.0-alpha4
v0.12.0-alpha3
v0.12.0-alpha2
v0.11.10
v0.12.0-alpha1
v0.11.9
v0.11.9-beta1
v0.11.8
v0.11.7
v0.11.6
v0.11.5
v0.11.4
v0.11.3
v0.11.2
v0.11.1
v0.11.0
v0.11.0-rc1
v0.11.0-beta1
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0-rc1
v0.10.0-beta2
v0.9.11
v0.9.10
v0.9.9
v0.10.0-beta1
v0.9.8
v0.9.7
v0.9.6
v0.9.5
v0.9.4
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.9.0-beta2
v0.8.8
v0.9.0-beta1
v0.8.7
v0.8.6
v0.8.5
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.8.0-rc3
v0.8.0-rc2
v0.7.13
v0.8.0-rc1
v0.7.12
v0.8.0-beta2
v0.7.11
v0.8.0-beta1
v0.7.9
v0.7.8
v0.7.7
v0.7.6
v0.7.5
v0.7.4
v0.7.3
v0.7.2
v0.7.1
v0.7.0
v0.7.0-rc4
v0.7.0-rc3
v0.7.0-rc2
v0.7.0-rc1
v0.6.16
v0.6.15
v0.6.14
v0.6.13
v0.6.12
v0.6.11
v0.6.10
v0.6.9
v0.6.8
v0.6.7
v0.6.6
v0.6.5
v0.6.4
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.3
0.7.7
list
v0.1.0
v0.1.1
v0.10.0
v0.2.0
v0.2.1
v0.2.2
v0.3.0
v0.3.1
v0.3.5
v0.3.6
v0.3.7
v0.4.0
v0.4.1
v0.4.2
v0.5.0
v0.5.1
v0.7.10
v1.10.0
v1.10.0-alpha20240606
v1.10.0-alpha20240619
v1.10.0-alpha20240717
v1.10.0-alpha20240730
v1.10.0-alpha20240807
v1.10.0-alpha20240814
v1.10.0-alpha20240828
v1.10.0-alpha20240911
v1.10.0-alpha20240918
v1.10.0-alpha20240926
v1.10.0-alpha20241009
v1.10.0-alpha20241023
v1.10.0-beta1
v1.10.0-rc1
v1.10.0-rc2
v1.10.0-rc3
v1.10.1
v1.10.2
v1.10.3
v1.10.4
v1.10.5
v1.11.0
v1.11.0-alpha20241106
v1.11.0-alpha20241211
v1.11.0-alpha20241218
v1.11.0-alpha20250107
v1.11.0-beta1
v1.11.0-beta2
v1.11.0-rc1
v1.11.0-rc2
v1.11.0-rc3
v1.11.1
v1.11.2
v1.11.3
v1.11.4
v1.12.0
v1.12.0-alpha20250213
v1.12.0-alpha20250312
v1.12.0-alpha20250319
v1.12.0-beta1
v1.12.0-beta2
v1.12.0-beta3
v1.12.0-rc1
v1.12.0-rc2
v1.12.1
v1.12.2
v1.13.0
v1.13.0-alpha20250521
v1.13.0-alpha20250604
v1.13.0-alpha20250623
v1.13.0-alpha20250702
v1.13.0-alpha20250708
v1.13.0-beta1
v1.13.0-beta2
v1.13.0-beta3
v1.13.0-rc1
v1.13.1
v1.13.2
v1.13.3
v1.13.4
v1.13.5
v1.14.0
v1.14.0-alpha20250716
v1.14.0-alpha20250724
v1.14.0-alpha20250806
v1.14.0-alpha20250813
v1.14.0-alpha20250827
v1.14.0-alpha20250903
v1.14.0-alpha20250911
v1.14.0-beta1
v1.14.0-beta2
v1.14.0-beta3
v1.14.0-rc1
v1.14.0-rc2
v1.14.1
v1.14.2
v1.14.3
v1.14.4
v1.14.5
v1.15.0-alpha20251119
v1.15.0-alpha20251203
v1.15.0-alpha20260204
v1.15.0-alpha20260218
v1.3.10
v1.4.3
v1.4.4
v1.4.5
v1.4.6
v1.4.7
v1.5.0
v1.5.0-alpha20230405
v1.5.0-alpha20230504
v1.5.0-beta1
v1.5.0-beta2
v1.5.0-rc1
v1.5.0-rc2
v1.5.1
v1.5.2
v1.5.3
v1.5.4
v1.5.5
v1.5.6
v1.5.7
v1.6.0
v1.6.0-alpha20230719
v1.6.0-alpha20230802
v1.6.0-alpha20230816
v1.6.0-beta1
v1.6.0-beta2
v1.6.0-beta3
v1.6.0-rc1
v1.6.1
v1.6.2
v1.6.3
v1.6.4
v1.6.5
v1.6.6
v1.7.0
v1.7.0-alpha20231025
v1.7.0-alpha20231108
v1.7.0-alpha20231130
v1.7.0-beta1
v1.7.0-beta2
v1.7.0-rc1
v1.7.0-rc2
v1.7.1
v1.7.2
v1.7.3
v1.7.4
v1.7.5
v1.8.0
v1.8.0-alpha20240131
v1.8.0-alpha20240214
v1.8.0-alpha20240216
v1.8.0-alpha20240228
v1.8.0-beta1
v1.8.0-rc1
v1.8.0-rc2
v1.8.1
v1.8.2
v1.8.3
v1.8.4
v1.8.5
v1.9.0
v1.9.0-alpha20240404
v1.9.0-alpha20240501
v1.9.0-alpha20240516
v1.9.0-beta1
v1.9.0-rc1
v1.9.0-rc2
v1.9.0-rc3
v1.9.1
v1.9.2
v1.9.3
v1.9.4
v1.9.5
v1.9.6
v1.9.7
v1.9.8
${ noResults }
2447 Commits (eecbfbf2cccedfb581469ee63599c4b4abc5c60f)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
84df5562f2 |
moduleaddrs: Terraform now owns module source address normalization
We've been gradually chipping away at how much we use go-getter for source packages, because it's generally been a bit of a nightmare and sharing it with other codebases means that any time someone wants to change something we end up needing to find some way to prevent it breaking Terraform's compatibility promises. Here we make one further step: Terraform owns the "detectors" idea that deals with source address normalization, and now always produces fully-qualified addresses for go-getter to chew on only for the getting and decompressing steps. Retaining go-getter for the actual getting part is helpful because we can then benefit from security fixes upstream, but Terraform owning the first layer of parsing means that we can fix in place the definition of what "module source address" syntax means, and thus we can avoid having everything in this codebase indirectly depend on go-getter just because it wants to parse module source addresses. Now only the module installer actually depends indirectly on go-getter, which finally disconnects go-getter's subtree from all of the remote state backend dependency graphs. |
2 years ago |
|
|
78ae6af906 |
legacy/terraform: Minimize the contents of this legacy package
At one point we were relying on this for a few different things, but now it's here exclusively to support legacy/helper/schema, the legacy SDK snapshot that is still being used by a few of the remote state backends. The SDK only really needs a tiny portion of the functionality from this package, and by deleting as much of the unused stuff as possible we can reduce the indirect dependencies of this package and thus, in turn, the indirect dependencies of the remote state backends. This also selectively deletes a few parts of the legacy SDK that are focused on providers and provisioners, because we know that we have this here only to support the backends that haven't yet been weaned off it, but we'll save a more adventurous purge of _that_ package for another day. |
2 years ago |
|
|
621befc3a2 |
configtesting: Separate package for the SynthBody helper
This "SynthBody" helper doesn't really have anything to do with package configs except that it's sometimes useful for creating fake instances of the types in there for testing. Moving it into its own package means that package backend no longer needs to depend on package configs, since it doesn't actually have any need for parsing module configurations. The old configs.SynthBody function is still available as a forwarding alias, because most of the existing callers of it are from packages that already need to import package configs for other reasons, and so this reduces the need to churn loads of existing tests. |
2 years ago |
|
|
5d87e32eb9 |
moduleaddrs: Split module source address parsing from package addrs
Our package addrs ends up getting imported from just about ever other package in Terraform, because it contains the types we use to talk about various different kinds of objects. Therefore we typically try to keep its transitive dependency graph relatively small, because anything it depends on becomes an indirect dependency of nearly everything else. A while back we moved the module source address models into package addrs, which also brought with them the code for parsing strings to produce those addresses. Unfortunately, remote module source addresses are defined using the external dependency go-getter, which is pretty heavy itself and also brings with it numerous other external dependencies such as the AWS SDK, the Google Cloud Platform SDK, etc. Since only relatively few packages actually need to _parse_ source addresses -- with most either not caring about them at all or only consuming addresses that were already parsed by someone else -- we'll move the parser functions into their own package, while keeping the resulting address types in package addrs. This does still retain the package addrs dependency on external module github.com/hashicorp/terraform-registry-address, which is not ideal but that one at least has a relatively shallow dependency subgraph, so there's not so much urgency to tidy that one. |
2 years ago |
|
|
58b48f4bab |
provider/terraform: Use new convention for function names
When we added these functions we hadn't yet settled on a single convention for how provider-contributed functions ought to be named, and so these followed the convention previously used for Terraform's own built-in functions. We've now decided to use the new provider namespace as an opportunity to partially fix the historical design error of naming functions as all lowercase without any separation between words. This makes the provider functions inconsistent with the built-in functions, but should at least hopefully encourage the provider functions to be consistent with one another, so that the rule for which to use is relatively easy to remember. This also switches the word order because the provider functions convention prefers the verb to come first: encode_tfvars instead of tfvarsencode. |
2 years ago |
|
|
56006416ba |
go.mod: go get golang.org/x/tools@v0.19.0
We use this just for development-time tools like "stringer", so this upgrade should not have any runtime impact. |
2 years ago |
|
|
c541757f4a |
go.mod: go get golang.org/x/mod@v0.16.0
Aside from development tool dependencies we use this only for the directory hashing logic used to compute go module hashes, which we also use for Terraform provider hashes. There are no changes to the dirhash package in this update, so this should have no runtime impact. |
2 years ago |
|
|
b059985227 |
go.mod: go get golang.org/x/sync@v0.6.0
This update only changes a documentation comment, so cannot affect runtime behavior. |
2 years ago |
|
|
caa7a757bc |
go.mod: go get golang.org/x/oauth2@v0.18.0
This only upgrades a Google-specific subpackage, and so the only potential impact is to the GCS backend. |
2 years ago |
|
|
9c7ece8ad4 |
go.mod: go get golang.org/x/net@v0.22.0
This update is largely focused on QUIC implementation changes, which do not directly affect Terraform. There is one fix for the HTTP2 implementation to terminate the stream if a sender recieves an out-of-bounds window update, which makes the implementation better match the specification. This seems unlikely to cause any practical problems for Terraform. |
2 years ago |
|
|
fad9c2a4cd |
go.mod: go get golang.org/x/crypto@v0.21.0
This update is mostly internal changes that don't affect external behavior. The only update potentially significant to Terraform is the new exclusion of a particular root certificate that is used only for some specific names under the .tr CCTLD, but the certificate database doesn't specify that constraint in a way that the library can understand, so it's excluded to avoid making the trust for that certificate broader than intended. |
2 years ago |
|
|
a1d2169c85 |
go.mod: go get golang.org/x/term@v0.18.0
This update contains no real changes. It just updates transitive dependencies to newer versions that we've already selected anyway. |
2 years ago |
|
|
b3f6a6230d |
go.mod: go get golang.org/x/sys@v0.18.0
This small update does not directly affect any Terraform functionality. |
2 years ago |
|
|
61a5c1f57b |
go.mod: go get github.com/hashicorp/terraform-registry-address@v0.2.3
This is really just a bunch of changes to the upstream go.mod for updates to its own dependencies, but Terraform already has new enough versions of those dependencies for other reasons and so this changes nothing. |
2 years ago |
|
|
8603ee0ab5 |
go.mod: go get github.com/hashicorp/go-slug@v0.14.0
This has just some changes to the "sourcebundle" building API, which doesn't affect Terraform CLI or Terraform Core because they currently only consume source bundles, not build them. |
2 years ago |
|
|
914618b061 |
gcs: Adopt the "ReadPathOrContents" helper function
Package backend previously had a ReadPathOrContents helper that takes a string that could represent either a filename or some literal content, and then reads the given file if it's a filename or just returns the literal content otherwise. We originally used variations of this helper to shim a number of different situations that had originally accepted filenames but later changed to accept literal content, but over time we've eliminated all of those and so the only remaining caller is the gcs backend which uses it to accept GCP credentials either as literal content or as a file containing the credentials. Therefore here we move that helper function to be just an unexported part of the gcs backend package. This is part of an ongoing effort to minimize what each remote state backend depends on (either directly or indirectly) so that we can make gradual progress towards these remote state backends being self-contained enough to move into other codebases. In the short term though, it just puts this helper function closer to its caller so it's easier to maintain them both together if needed. |
2 years ago |
|
|
dbde17b535 |
terraform console: Multi-line entry support
The console command, when running in interactive mode, will now detect if the input seems to be an incomplete (but valid enough so far) expression, and if so will produce another prompt to accept another line of expression input. This is primarily to make it easier to paste in multi-line expressions taken from elsewhere, but it could also be used for manual input. The support for multi-line _editing_ is limited by the fact that the readline dependency we use doesn't support multiline input and so we're currently doing this in spite of that library. Hopefully we'll be able to improve on that in future either by contributing multi-line editing support upstream or by switching to a different readline dependency. The delimiter-counting heuristic employed here is similar to the one used by HCL itself to decide whether a newline should end the definition of an attribute, but this implementation is simpler because it doesn't need to produce error messages or perform any recovery. Instead, it just bails out if it encounters something strange so that the console session can return a parse error. Because some invalid input may cause a user to become "stuck" in a multi- line sequence, we consider a blank line as intent to immediately try to evaluate what was entered, and also interpret SIGINT (e.g. Ctrl+C) as cancellation of multi-line input, assuming that at least one line was already entered, extending the previous precedent that SIGINT cancels when at least one character was already entered at the prompt. |
2 years ago |
|
|
f058de612c |
statemgr: Incorporate IntermediateStateConditionalPersister
This interface was originally in the local backend's package because that backend is the only one that _truly_ runs Terraform operations and thus needs to negotiate how to store the intermediate state snapshots that result from them. However, putting the interface and its supporting types/functions there means that anything that wants to implement this interface needs to import the local backend package, and thus indirectly depends on the entire modules runtime, etc. We already had package stagemgr as a home for the shared stuff used by most state storage managers, and so we'll just move these symbols over there and then we can shed some internal dependencies on package local. This also severs the last dependency link between the remote state backends and the modules runtime, allowing us to shed a bunch of indirect dependencies from those remote state backends. |
2 years ago |
|
|
c6ff573180
|
Include provider functions in scope used to evaluate test assertions (#34825)
|
2 years ago |
|
|
8bab2a588d
|
stacks: use component config address relative to stack
|
2 years ago |
|
|
1fd99fe6e4
|
stacks: adjust tests to include component addr
|
2 years ago |
|
|
0cea00e919
|
stacks: emit component address in find stack configuration component response
|
2 years ago |
|
|
cf3bbb890f |
State managers use schemarepo.Schemas instead of terraform.Schemas
schemarepo.Schemas used to be terraform.Schemas, but its presence in the terraform package was the only reason for a state manager to need to import package terraform, so we've moved it out into its own package in the parent commit. This means that none of the state-related packages need to import package terraform any longer, and so once we've untangled some other dependencies this will curtail the number of packages in this codebase that the remote state backends transitively depend on, as part of an ongoing effort to eventually separate them from this codebase entirely. |
2 years ago |
|
|
034bf4487f |
schemarepo: Schema repositories get their own package
It's a cross-cutting concern to need the dynamic value schemas of the various plugins used with a Terraform configuration, but previously we had the type for that in "package terraform", forcing lots of packages to depend on the modules runtime even though they have no direct interest in evaluating Terraform modules. We'll now split it out into its own package "schemarepo". There are currently forwarding aliases left behind in "package terraform" so that we don't need to update all of the callers at once. We'll update the callers whose dependency changes will have the most significant benefits in future commits. The new package is further split into a separate "laodschemas" part that deals with the plugin interactions, because most packages that use a schema repository expect that it was already constructed by someone else, and so don't need or want to depend indirectly on all of the plugin execution machinery. |
2 years ago |
|
|
88cb4aeea3 |
backendrun: Separate the types/etc for backends that support operations
We previously had all of the types and helpers for all kinds of backends together in package backend. That kept things relatively simple, but it also meant that the majority of backends that only deal with remote state storage ended up still indirectly depending on the entire Terraform modules runtime, configuration loader, etc, etc, which brings into scope a bunch of external dependencies that the remote state backends don't really need. Since backends that support operations are a rare exception, we'll move the types and helpers for those into a separate package "backendrun", and then the main package backend can have a much more modest set of types and, more importantly, a modest set of dependencies on other packages in this codebase. This is part of an ongoing effort to reduce the exposure of Terraform Core and CLI code to the remote backends and vice-versa, so that in the long run we can more often treat them as separate for dependency maintenance purposes. |
2 years ago |
|
|
545980d664 |
langrefs: Separate package for expression reference analysis
Finding references in an expression is a static analysis operation, but we previously had it grouped in with "package lang" that primarily deals with dynamic evaluation of expressions. We need to do static analysis in far more locations than we do full expression evaluation, the static-analysis-only callers don't need anything else from package lang, and the reference-analysis functions are self-contained little wrappers around the address parsing logic in package addrs anyway. Splitting these into a separate package therefore minimizes which packages depend indirectly on package lang, and thus which packages depend indirectly on the implementations of the built-in functions. Some of the built-in functions rely on dependencies we don't use anywhere else, so cutting these out shrinks how many packages indirectly depend on those external dependencies. In particular, they are no longer in the indirect import chain for the "legacy" module. |
2 years ago |
|
|
5f2eab6944 |
providerreqs: Provider requirement/version types in their own package
As we previously found with "package addrs", any package that contains types used as identifiers or addresses tends to get imported from all over, which means that if we mix real logic with those types in the same package then a lot more packages end up depending indirectly on our external dependencies. In this case, the getproviders package depends on various things we need only during provider installation, such as the library we use for GPG signature verification. Lots of different packages in Terraform need to talk about provider requirements, but only the CLI layer actually needs to do provider installation, and so this commit splits the types we use to talk about requirements into a new package "providerreqs", which package getproviders then depends on. To keep the size of this diff relatively small to start I've left forwarding aliases in package getproviders, which means that not all of the callers needed to be updated all at once. This commit does update all of the packages that the remote state backends depend on though, because that then allows us to reduce the set of indirect dependencies for each of those backends. The nested module go.mod files show that this has disconnected the indirect dependencies on github.com/ProtonMail/go-crypto and on github.com/cloudflare/circl , both of which Terraform CLI uses only for provider installation. |
2 years ago |
|
|
154f9ada90 |
disconnect remote-exec immediately
The remote-exec provisioner was not disconnecting immediately after provisioning. The remote exec context was tired to the lifetime of the provisioner, but the provisioner node used to not live long after the remote execution had completed so it was not noticed. Some more recent refactoring extends the lifetime of the node, and causes the provisioner connections to hang around longer when they're not needed. Ensure we disconnect immediately after the remote execution is complete. |
2 years ago |
|
|
310331bdc6 |
backend/consul: go.mod updates from a merge conflict
Two changes landed concurrently and caused these dependencies to get out of sync. |
2 years ago |
|
|
5811be26f8 |
go.mod: Separate modules at code ownership boundaries
Historically it's been hard for us to keep on top of dependency upgrades as a matter of course because it's unclear which code owners might be affected by or responsible for an upgrade of each module. After trying a few different techniques to try to mitigate this, the most promising one seems to be to tell the Go toolchain that each of these components is a separate Go module, but then to stitch them all back together again using replace directives so that we can mostly ignore these module boundaries in everyday development. The one case where we _do_ need to pay attention to these boundaries is also the case where the separation is useful: upgrading a dependency of any one of these modules might potentially force upgrading it for another module too, and so the Go toolchain will help us notice that interaction and we can immediately which code owners might need to be involved in reviewing and testing that particular upgrade. To make that process less onerous, this adds a new makefile target "make syncdeps" which runs "go mod tidy" in all of the modules at once and thus forces the toolchain to align their dependencies to the extent required for them all to be linked together successfully, and to generate go.mod and/or go.sum diffs that will match our configured code ownership paths to trigger the appropriate code review requests. Hopefully before too long we'll be able to move all the backends out into provider plugins and delete the "legacy" module entirely and then this oddness won't be needed anymore, but as long as we're all trying to play together in this same sandbox this is a small amount of extra ceremony in return for hopefully reducing the level of anxiety involved in keeping the system's dependencies up to date more consistently. |
2 years ago |
|
|
6bd1c66cbc |
backendbase: Basic support for default values
Some existing backends make very heavy use of environment variable-based default values and fallback values, which are available in the legacy SDK but not in Terraform's own schema model. To ease the migration away from the legacy SDK for those backends, backendbase.Base now supports a lightweight mechanism for declaring such defaults, and applies them automatically as part of PrepareConfig. This gets us pretty close to the assumptions that the SDK allowed callers to make, but with considerably less code. It's intentionally considerably less flexible than the legacy SDK was, because in practice most backends use only a tiny subset of the SDK functionality anyway. |
2 years ago |
|
|
b16cb49fb6 |
backendbase: "SDK-like" helpers
A lot of the remote state backends' current Configure functions unfortunately rely quite heavily on the "do the best you can" API of the legacy SDK, which makes questionable shortcuts like treating null as equivalent to the Go zero value of a type, but in return makes it convenient to assign into other data structures that happen to make similar assumptions. And of course that means that the backends' other data structures were built to make those similar assumptions! This new set of utilities therefore aims to provide a bare-minimum subset of "SDK-like" functionality to ease the initial migration away from the legacy SDK. It isn't exactly equivalent an in particular focuses only on the small subset of legacy SDK functionality that most existing backends rely on, but this should at least make the initial adaptations a little more mechanical so that we can continue to defer the full modernization of these backends for some undetermined future time without having to continue retaining the huge legacy SDK snapshot in this codebase. |
2 years ago |
|
|
a5d63a23ab |
backend/consul: Use backendbase instead of helper/schema
The legacy helper/schema package is really just a frozen copy of Terraform's old plugin SDK, which is a complicated heap of code that nobody at HashiCorp really understands anymore. This backend will now use the lightweight "backendbase" helper package instead, which is at a slightly lower level of abstraction and therefore requires more explicit logic during config decoding, but these extra calls to helper functions are still considerably less code than the whole helper/schema package and its various external dependencies that Terraform imports purely to keep it working. |
2 years ago |
|
|
eb87e86ddf |
backend/http: Use backendbase instead of helper/schema
The legacy helper/schema package is really just a frozen copy of Terraform's old plugin SDK, which is a complicated heap of code that nobody at HashiCorp really understands anymore. This backend will now use the lightweight "backendbase" helper package instead, which is at a slightly lower level of abstraction and therefore requires more explicit logic during config decoding, but these extra calls to helper functions are still considerably less code than the whole helper/schema package and its various external dependencies that Terraform imports purely to keep it working. |
2 years ago |
|
|
2222c23d4b |
backendbase: BoolValue and MustBoolValue
With legacy helper/schema it's common to just type-assert whatever ResourceData.Get returns and trust that it'll always be valid. We can't achieve something quite that lazy with cty, but we can at least factor out the work of turning a value we already know is a bool into a bool value. We also have a "must" variant for this one, because it's relatively easy for a caller to ensure that it controls all of the inputs enough to ensure that it should never fail. |
2 years ago |
|
|
1eaa18d60a |
backendbase: IntValue
With legacy helper/schema it's common to just type-assert whatever ResourceData.Get returns and trust that it'll always be valid. We can't achieve something quite that lazy with cty, but we can at least factor out the work of turning a value we already know is a number into an int64 value. |
2 years ago |
|
|
70537aab08 |
backendbase: ErrorAsDiagnostics
The legacy helper/schema based Backend implementation expected the backend-specific code to return error and then wrapped it in diagnostics itself before returning. Backends using backendbase are supposed to return diagnostics directly themselves, but having to manually replace every error case with a higher-quality diagnostic message would get in the way of EOLing the legacy helper/schema implementation, and so this helper function is a pragmatic compromise to allow us to keep those updates purely mechanical for now and then improve diagnostics as a separate effort later. |
2 years ago |
|
|
46951b5b35 |
backendbase: Attribute lookup helpers
Most of the remote state backends are currently written in terms of schema.ResourceData, lookup up attributes by path and possibly substituting default values when the attributes aren't explicitly set. These helpers aim to substitute for those common applications so that we can convert the existing backend logic more directly, without significantly increasing its complexity by suddenly moving the default value handling inline in their Configure functions. |
2 years ago |
|
|
d4c58fac4c |
backend/inmem: No more legacy/helper/schema
This now uses "backendbase", which is a lighter replacement for our local copy of Terraform's legacy plugin SDK. |
2 years ago |
|
|
df4cefbea9 |
backend: new "backendbase" helper package
This is intended as a lighter-weight replacement for the Backend type in the legacy/helper/schema package, which indirectly pulls in our local copy of the entire legacy Terraform plugin SDK. This depends on the slightly-lower-level configschema package, which means that it's not quite as feature-rich as what it's replacing, but backends have relatively modest needs and so we can compensate with just some extra logic in their Configure functions, which will be considerably simpler than the huge bunch of legacy code we're currently depending on to get the same effects. In particular, configschema has no concept of "default values" for arguments, and so we'll need to deal with those in the Configure methods using imperative code, instead of declaratively. Nothing is using this yet, but in future commits we'll gradually convert all of the remote state backends to use this instead of the legacy system, and then remove the legacy system. |
2 years ago |
|
|
66bec6c3c7 |
command: TestWorkspace_deleteWithState uses modern state format
This test is intending to test behavior in the presence of a state snapshot but was achieving that using the legacy state snapshot format that we preserved only for its previous (now eliminated, in an earlier commit) purpose of implementing the CLI backend state format. Instead, we'll construct a state snapshot format using the modern API for doing that, which therefore constructs a modern state snapshot file as would be created by today's Terraform. This eliminates the last use of the "legacy/terraform" package aside from the calls from other packages under "legacy". |
2 years ago |
|
|
06f51dbe04 |
command/workdir: Model the "backend state" file format
Historically (before there were "backends") Terraform had a single state file format used both for real state snapshots and for tracking where remote state was stored. Terraform v0.12 caused these two to be split because we adopted state snapshot version 4 for real snapshots but retained a subset of version 3 for tracking the remote backend configuration in the local working directory. Unfortunately we previously kept that working by retaining a snapshot of the entire Terraform v0.11 "terraform" package as legacy/terraform, which happened to still be around because we also needed to retain a copy of the entire legacy SDK to keep the remote state backends working. This now hoists just the tiny slice of legacy terraform package functionality needed to implement the "backend state" file format into package workdir. This package is a good home for it because it's part of the working directory state. Ideally it would be accessed through methods of the workdir.Dir type, but that's too disruptive a refactor to combine into this and so that'll need to wait for another day; for now we'll keep the existing callers doing their access through our "clistate" package that is itself a forked snapshot of what statemgr.Filesystem used to be in Terraform v0.11. This removes all but one of the uses of "legacy/terraform" aside from calls in the other packages under "legacy". We'll clean up the last one in a later commit, because it's not related to the backend state file format. |
2 years ago |
|
|
53fd930d6a |
legacy/helper/acctest: Entirely remove
This is no longer called from anywhere in this codebase. |
2 years ago |
|
|
c0943fdd2a |
backend/azure: Bring randString test helper into this package
We've been keeping around the whole legacy "acctest" package just for this one function, used only by the Azure provider. Instead we'll inline the function into this package, so that we can delete the acctest package in a future commit. |
2 years ago |
|
|
049093a3ad |
statefile: Use lighter techniques for data copying
This package was our last non-legacy use of the third-party "copystructure" library, and that library is far more general than most of this work needs. Most of this is replacing overly-general code with more specific code, since it's not exactly hard to shallow-copy a map or a slice of strings. The 2-to-3 upgrade is a little trickier because we were previously copying the entire data structure before making light modifications to it, since the V2 and V3 formats are similar enough. However, we can be a little naughty and use our mainly-test-oriented copy.DeepCopyValue helper instead of copystructure, since these structures are simple enough for that to work and are never going to change because they are here only to support upgrading from long-obsolete file formats. This removes Terraform's last non-legacy dependency on copystructure, and with it the last non-legacy indirect dependency on the sibling module "reflectwalk". |
2 years ago |
|
|
af44fdbbf5 |
cloud: Use copy.DeepCopyValue instead of copystructure dependency
The mock implementations of the Terraform Cloud SDK types were previously using the rather-heavy external dependency mitchellh/copystructure for creating deep copies of the mock values. This package doesn't need all of the customizability and generality of that library, and so our smaller internal helper copy.DeepCopyValue is sufficient. |
2 years ago |
|
|
d14c149001 |
copy: DeepCopyValue utility
Over the years we've gradually removed all use of various third-party reflection-based libraries for deep-copying and projecting data structures from main code, because they proved to be a maintenance nightmare and thus better replaced by direct code that is less fun to write but far clearer to read. However, we've still got a few examples of _test_ code hanging on to these helpers because the tradeoffs for unit tests tend to be different. That's valid, but it's annoying to have to include several large and very general dependencies just to support some tests whose needs are well-known and relatively simple. Therefore this new helper function copy.DeepCopyValue aims to be a more straightforward replacement for mitchellh/copystructure (which also indirectly subsumes mitchellh/reflectwalk) that eschews all of the customizability that those libraries offered and instead focuses narrowly on what our few remaining unit tests need. In particular, this replacement doesn't offer any means for registering helper functions to translate struct types with unexported fields. Those instead just get left set to their zero value in the result. Since our focus is only on unit test code, we can know ahead of time when that limitation is relevant and code around it in the calling test rather than complicating this utility code. |
2 years ago |
|
|
4295cebb05 |
dependencies: No more golang.org/x/exp
This module was a temporary home for what are now the standard library "slices" and "maps" packages. We're building Terraform with a sufficiently new version of Go that we can use the standard library equivalents, so we no longer need this dependency. It lives on as an indirect dependency for now because hashicorp/aws-sdk-go-base is also using it, but hopefully it'll vanish altogether in future if that library is updated to also use stdlib instead. |
2 years ago |
|
|
f409639934
|
Merge pull request #34765 from hashicorp/alisdair/stack-root-input-variable-defaults
stackruntime: Apply defaults to root variables |
2 years ago |
|
|
e6ad0c282d |
tfdiags: Support errors.Join and stdlib wrapped errors
HashiCorp needed support for wrapping multiple errors into a single error and for wrapping one error inside another long before that was in the standard library, and so built its own libraries for those needs. However, the standard library now has its own answers for both and so the HashiCorp libraries are redundant. We've already eliminated all use of both elsewhere in Terraform (except for some legacy packages that predate tfdiags anyway), so we no longer need to support them in package tfdiags. |
2 years ago |