Skip to content

Conversation

@MaxymVlasov
Copy link
Collaborator

@MaxymVlasov MaxymVlasov commented Jan 22, 2026

Put an x into the box if that apply:

  • This PR introduces breaking change.
  • This PR fixes a bug.
  • This PR adds new functionality.
  • This PR enhances existing functionality.

Description of your changes

Fixes #640

How can we test changes

Install 2 versions of OpenTofu - older and newer than 1.10

Test both scenarios + scenario w/o OpenTofu binary, with next configuration:

repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
  rev: c615e24b293e080fe7c320fa273cd86a2f050d45
  hooks:
    - id: terraform_validate

…elism race conditions in Terraform setups during `t init`: allow use of `tofu` binary just for `t init`, as OpenTofu 1.10+ have native lock mechanism
@coderabbitai
Copy link

coderabbitai bot commented Jan 22, 2026

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Summary by CodeRabbit

  • Documentation

    • Expanded terraform_validate documentation to provide enhanced guidance when using Global Provider Cache alongside OpenTofu versions, including parallelism recommendations and version-specific options
  • New Features

    • Added automatic OpenTofu 1.10+ detection to enable optimized initialization workflows when supported tooling versions are available

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

Detects TF_PLUGIN_CACHE_DIR and adds an OpenTofu (tofu) version check (>= 1.10). If present and tofu ≥1.10, switches terraform init invocations to the tofu binary for init/retry flows. README guidance expanded to recommend either serial init or OpenTofu 1.10+ when plugin cache is used.

Changes

Cohort / File(s) Summary
Documentation
README.md
Expanded terraform_validate / TF_PLUGIN_CACHE_DIR guidance to offer two recommendations (set parallelism to 1 OR use OpenTofu 1.10+) and clarified affected tooling/scope.
Hook logic
hooks/_common.sh
Added common::tofu_version_ge_1_10 and updated common::terraform_init to detect a local provider plugin cache and, when present and OpenTofu ≥1.10, switch init binary to tofu; emits diagnostics and uses selected tf_init_path for init/retry flows.

Sequence Diagram(s)

sequenceDiagram
    participant Hook as Hook script
    participant Env as Environment
    participant Terraform as terraform CLI
    participant Tofu as tofu (OpenTofu CLI)
    participant Cache as TF_PLUGIN_CACHE_DIR

    Hook->>Env: check TF_PLUGIN_CACHE_DIR present?
    alt plugin cache present
        Hook->>Tofu: run `tofu --version`
        alt tofu version >= 1.10
            Tofu-->>Hook: version >= 1.10
            Hook->>Tofu: set tf_init_path = "tofu"
            Hook->>Tofu: run `init` (using tf_init_path)
            Tofu->>Cache: initialize providers (concurrent-safe)
        else version < 1.10 / unknown
            Tofu-->>Hook: version < 1.10 / unreadable
            Hook->>Terraform: set tf_init_path = "terraform"
            Hook->>Terraform: run `init` (with retry/serial workaround)
            Terraform->>Cache: initialize providers
        end
    else no plugin cache
        Hook->>Terraform: run `init` (normal flow)
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • antonbabenko
  • yermulnik
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title addresses the main change of adding OpenTofu 1.10+ support for terraform init to prevent parallelism race conditions, but is verbose and somewhat difficult to parse.
Description check ✅ Passed The description is related to the changeset, referencing issue #640 and explaining the test scenarios for the OpenTofu version detection feature.
Linked Issues check ✅ Passed The PR implements the core requirement from #640 by automatically handling parallelism race conditions when TF_PLUGIN_CACHE_DIR is set, using OpenTofu 1.10+ native lock mechanism.
Out of Scope Changes check ✅ Passed All changes are focused on addressing the linked issue #640: README documentation updates and implementation of OpenTofu version detection for init operations.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
hooks/_common.sh (1)

535-571: Fix tofu switch: readonly reassignment error and Terraform detection logic

tf_path is declared readonly at line 538 but reassigned at line 560. With set -e enabled, this causes an error and script exit. Additionally, the Terraform detection condition compares the full version output line (e.g., "Terraform v1.5.0...") against the literal string "Terraform", so the condition never matches and tofu switch fails to activate.

🔧 Suggested fix
-  local -r tf_path=$4
+  local -r tf_path=$4
+  local tf_init_path="$tf_path"
@@
-    if [[ -z $TF_PLUGIN_CACHE_DIR || $parallelism_disabled == true ]]; then
-      init_output=$("$tf_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1)
+    if [[ -z $TF_PLUGIN_CACHE_DIR || $parallelism_disabled == true ]]; then
+      init_output=$("$tf_init_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1)
@@
-      if [[ "$($tf_path -version | head -1 | grep '^Terraform')" == "Terraform" ]] &&
+      if "$tf_path" -version 2>/dev/null | head -1 | grep -q '^Terraform' &&
         common::tofu_version_ge_1.10; then
-        tf_path=$(command -v tofu)
-        common::colorify "green" "Using OpenTofu binary ($tf_path) for Terraform init operations, as it supports concurrent provider initialization."
+        tf_init_path=$(command -v tofu)
+        common::colorify "green" "Using OpenTofu binary ($tf_init_path) for Terraform init operations, as it supports concurrent provider initialization."
       fi
@@
-        init_output=$("$tf_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1)
+        init_output=$("$tf_init_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1)
🤖 Fix all issues with AI agents
In `@hooks/_common.sh`:
- Around line 633-647: The function common::tofu_version_ge_1.10 should first
check whether the tofu binary exists to avoid failing under set -eo pipefail;
add a guard using command -v tofu (or similar) at the start of
common::tofu_version_ge_1.10 so that if tofu is missing the function returns 1
(indicating "not >=1.10") without invoking tofu --version, then proceed with the
existing version extraction logic and return codes unchanged.

In `@README.md`:
- Around line 972-976: The ordered list in the README note has a missing space
after "2." which breaks Markdown rendering; update the second list item text to
include a space after the "2." so it reads "2. `tofu` < v1.10 or any `terraform`
version" (refer to the note mentioning "Global Provider Cache" and the "`tofu` <
v1.10" item) to restore proper ordered-list formatting.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@hooks/_common.sh`:
- Around line 562-566: tf_path is declared readonly (local -r) earlier so
reassigning it inside the tofu-detection block (the conditional that calls
common::tofu_version_ge_1.10) will fail at runtime; instead, introduce a new
mutable variable (e.g., tf_exec or terraform_path) and assign command -v tofu to
that variable when the condition is true, then use that new variable in the
common::colorify message and any later Terraform-init calls; update references
in the tofu-detection block (the if that checks "$($tf_path -version | head -1 |
grep '^Terraform')" and common::tofu_version_ge_1.10) to use the new mutable
variable rather than reassigning tf_path.
♻️ Duplicate comments (1)
hooks/_common.sh (1)

635-642: Add command -v tofu guard before invoking tofu --version.

As noted in a previous review, calling tofu --version without first checking if tofu exists can cause issues under set -eo pipefail. While the 2> /dev/null suppresses stderr, the pipeline exit code can still propagate failures in certain contexts.

Additionally, line 640's echo outputs to stdout. While this function returns via exit code (not stdout), diagnostic output should go to stderr for consistency.

🔧 Suggested fix (incorporates previous review feedback)
 function common::tofu_version_ge_1.10 {
   local tofu_version
 
+  command -v tofu >/dev/null 2>&1 || return 1
+
   # Extract version number (e.g., "tofu version v1.10.4" -> "1.10")
-  tofu_version=$(tofu --version 2> /dev/null | grep -oE '[0-9]+\.[0-9]+')
-  echo "Detected OpenTofu version: $tofu_version"
+  tofu_version=$(tofu --version 2> /dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+')
+  echo "Detected OpenTofu version: $tofu_version" >&2
   # If we can't parse version, default to older command
   [[ ! $tofu_version ]] && return 1
🧹 Nitpick comments (1)
hooks/_common.sh (1)

561-567: Consider redirecting diagnostic output to stderr.

The echo statements on lines 561 and 567 output to stdout. For consistency with other diagnostic messages in this file (e.g., common::colorify outputs to stderr on line 463), consider redirecting these to stderr or using common::colorify.

♻️ Suggested change
-      echo "Using Terraform binary path: $tf_path"
+      echo "Using Terraform binary path: $tf_path" >&2
       if [[ "$($tf_path -version | head -1 | grep '^Terraform')" == "Terraform" ]] &&
         common::tofu_version_ge_1.10; then
         tf_path=$(command -v tofu)
         common::colorify "green" "Using OpenTofu binary ($tf_path) for Terraform init operations, as it supports concurrent provider initialization."
       fi
-      echo "Running 'terraform init' with plugin cache dir: $TF_PLUGIN_CACHE_DIR"
+      echo "Running 'terraform init' with plugin cache dir: $TF_PLUGIN_CACHE_DIR" >&2

hooks/_common.sh Outdated
if [[ "$($tf_path -version | head -1 | grep '^Terraform')" == "Terraform" ]] &&
common::tofu_version_ge_1.10; then
tf_path=$(command -v tofu)
common::colorify "green" "Using OpenTofu binary ($tf_path) for Terraform init operations, as it supports concurrent provider initialization."
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logging messages below this line and to the end of the common::terraform_init function use the 'terraform init' words which might add a bit of confusion when the tf_path is switched to tofu.
Should we handle this and update logging messages in this function to reflect real state of things when tofu is used instead of terraform? 🤔

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one was resolved without actioning. Would you mind sharing your thoughts on my question above? Thanks.

MaxymVlasov and others added 3 commits January 22, 2026 18:23
Co-authored-by: George Yermulnik (Georgii Iermulnik) <yz@yz.kiev.ua>
@MaxymVlasov MaxymVlasov marked this pull request as ready for review January 22, 2026 16:36
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes race conditions that occur when multiple terraform init processes write to the global provider cache (TF_PLUGIN_CACHE_DIR) concurrently. The solution leverages OpenTofu v1.10+'s native locking mechanism for the provider cache by automatically switching to tofu init when running Terraform projects if OpenTofu v1.10+ is available on the system.

Changes:

  • Added logic to detect when using Terraform binary and switch to OpenTofu binary for init operations if OpenTofu >= 1.10 is available
  • Implemented common::tofu_version_ge_1.10 function to check OpenTofu version
  • Updated documentation to clarify the parallelism workaround options and the new OpenTofu fallback behavior

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
hooks/_common.sh Added version checking function and logic to switch from terraform to tofu binary for init operations when OpenTofu 1.10+ is available
README.md Updated terraform_validate documentation to explain the new workaround option of installing OpenTofu 1.10+

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@MaxymVlasov
Copy link
Collaborator Author

@maxbrunet @carlosjgp @fredleger is suggested in this PR workaround will work for you?

Copy link
Collaborator

@yermulnik yermulnik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM apart from suggestion below. Also GH Copilot suggestions above look reasonable.

Co-authored-by: George Yermulnik (Georgii Iermulnik) <yz@yz.kiev.ua>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@MaxymVlasov MaxymVlasov requested a review from yermulnik January 22, 2026 17:08
yermulnik
yermulnik previously approved these changes Jan 22, 2026
Copy link
Collaborator

@yermulnik yermulnik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
I'm still a bit concerned about discrepancy in logging messages when switched to tofu from terraform, which I mentioned at #956 (comment), which was resolved without comment (and hence I unresolved it).
Thanks

@MaxymVlasov
Copy link
Collaborator Author

MaxymVlasov commented Jan 23, 2026

Currently it does not work as expected:

  1. It replace registry in lockfile, and not all providers are in opentofu registry
image
  1. Some weird error, need to double-check
image

FIXES

  1. Not possible. More details - https://www.perplexity.ai/search/set-default-tofu-init-registry-EGWLLgHuRpqHCusx9x00EQ
  2. mkdir ~/.terraform.d/plugin-cache - this error is the same for terraform 1.10 and 1.13. Not sure why I didn't saw it before

@MaxymVlasov MaxymVlasov marked this pull request as draft January 23, 2026 11:02
@yermulnik
Copy link
Collaborator

  1. It replace registry in lockfile, and not all providers are in opentofu registry

Dang, this is an unacceptable and a breaking change which may impact consumers' workflows (including firewall rules etc) I reckon 😞

@yermulnik yermulnik dismissed their stale review January 23, 2026 11:37

The change to TF lock files needs more consideration

@MaxymVlasov
Copy link
Collaborator Author

There is no way to change tofu registry back to terraform registry, without explicitly set registry in all terraform provider sources, which I can't recommend to anyone as working solution

@MaxymVlasov MaxymVlasov deleted the tf_tofu_init branch January 23, 2026 14:42
@MaxymVlasov
Copy link
Collaborator Author

MaxymVlasov commented Jan 23, 2026

Btw, Terraform and OpenTofu are building hashicorp providers separately (and tofu versions lacks of some platforms as well) => they have different checksums

diff --git a/components/terraform/campaign-shared-resources/.terraform.lock.hcl b/components/terraform/campaign-shared-resources/.terraform.lock.hcl
index 7181aa6223..1d5ca3def0 100644
--- a/components/terraform/campaign-shared-resources/.terraform.lock.hcl
+++ b/components/terraform/campaign-shared-resources/.terraform.lock.hcl
@@ -1,7 +1,7 @@
-# This file is maintained automatically by "terraform init".
+# This file is maintained automatically by "tofu init".
 # Manual edits may be lost in future updates.
 
-provider "registry.terraform.io/cloudposse/utils" {
+provider "registry.opentofu.org/cloudposse/utils" {
   version     = "1.31.0"
   constraints = ">= 1.7.1, < 2.0.0"
   hashes = [
@@ -23,7 +23,7 @@ provider "registry.terraform.io/cloudposse/utils" {
   ]
 }
 
-provider "registry.terraform.io/eddycharly/kops" {
+provider "registry.opentofu.org/eddycharly/kops" {
   version     = "1.23.4"
   constraints = "1.23.4"
   hashes = [
@@ -39,104 +39,87 @@ provider "registry.terraform.io/eddycharly/kops" {
   ]
 }
 
-provider "registry.terraform.io/hashicorp/aws" {
+provider "registry.opentofu.org/hashicorp/aws" {
   version     = "6.28.0"
   constraints = ">= 2.0.0, >= 3.64.0, >= 4.0.0, ~> 6.0"
   hashes = [
-    "h1:wzZdGs0FFmNqIgPyo9tKnGKJ37BGNSgwRrEXayL29+0=",
-    "zh:0ba0d5eb6e0c6a933eb2befe3cdbf22b58fbc0337bf138f95bf0e8bb6e6df93e",
-    "zh:23eacdd4e6db32cf0ff2ce189461bdbb62e46513978d33c5de4decc4670870ec",
-    "zh:307b06a15fc00a8e6fd243abde2cbe5112e9d40371542665b91bec1018dd6e3c",
-    "zh:37a02d5b45a9d050b9642c9e2e268297254192280df72f6e46641daca52e40ec",
-    "zh:3da866639f07d92e734557d673092719c33ede80f4276c835bf7f231a669aa33",
-    "zh:480060b0ba310d0f6b6a14d60b276698cb103c48fd2f7e2802ae47c963995ec6",
-    "zh:57796453455c20db80d9168edbf125bf6180e1aae869de1546a2be58e4e405ec",
-    "zh:69139cba772d4df8de87598d8d8a2b1b4b254866db046c061dccc79edb14e6b9",
-    "zh:7312763259b859ff911c5452ca8bdf7d0be6231c5ea0de2df8f09d51770900ac",
-    "zh:8d2d6f4015d3c155d7eb53e36f019a729aefb46ebfe13f3a637327d3a1402ecc",
-    "zh:94ce589275c77308e6253f607de96919b840c2dd36c44aa798f693c9dd81af42",
-    "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425",
-    "zh:adaceec6a1bf4f5df1e12bd72cf52b72087c72efed078aef636f8988325b1a8b",
-    "zh:d37be1ce187d94fd9df7b13a717c219964cd835c946243f096c6b230cdfd7e92",
-    "zh:fe6205b5ca2ff36e68395cb8d3ae10a3728f405cdbcd46b206a515e1ebcf17a1",
+    "h1:tcau98fkhZ2RhbPHo8LdiiUk2RGpZUgT/t06sdMLids=",
+    "zh:38d58305206953783c150fb96d5c4f3ea5fe0b9e0987d927c884a6b0f2adf7a9",
+    "zh:43fd483251165f98b7a44360b41b437d309b007ef2bfff818eedcf3730e3f5cb",
+    "zh:4753decc5a718cb74b08244a02d00c150f0ddd6ebf2e1227f6a985c647c03ce9",
+    "zh:5956525650554bd3fbc4b695eb5250193f0ebf94c45862a7730457ab6a315069",
+    "zh:76d98fa1146750c01f607bae4421952ee9cd14ed3a4a59deb7136749adb9e0ae",
+    "zh:792c29e5ec91356baddb6219ac7f6f1df09c251cbe4ab6e089fc25d64270b22a",
+    "zh:856424380caa7c1536dc00515d12beac2693db1a8425da654eed5530abeb17d9",
+    "zh:e8982ec2bc692efa7236e3565e7094a09f52c5b71d8860a570a36fb31a40f27f",
+    "zh:f5e7ff825dc3f7356fb80936bfe7bb1b54a728ccf429cb753cfe590932f0403b",
   ]
 }
 
-provider "registry.terraform.io/hashicorp/external" {
+provider "registry.opentofu.org/hashicorp/external" {
   version     = "2.3.5"
   constraints = ">= 2.0.0"
   hashes = [
-    "h1:smKSos4zs57pJjQrNuvGBpSWth2el9SgePPbPHo0aps=",
-    "zh:6e89509d056091266532fa64de8c06950010498adf9070bf6ff85bc485a82562",
-    "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
-    "zh:86868aec05b58dc0aa1904646a2c26b9367d69b890c9ad70c33c0d3aa7b1485a",
-    "zh:a2ce38fda83a62fa5fb5a70e6ca8453b168575feb3459fa39803f6f40bd42154",
-    "zh:a6c72798f4a9a36d1d1433c0372006cc9b904e8cfd60a2ae03ac5b7d2abd2398",
-    "zh:a8a3141d2fc71c86bf7f3c13b0b3be8a1b0f0144a47572a15af4dfafc051e28a",
-    "zh:aa20a1242eb97445ad26ebcfb9babf2cd675bdb81cac5f989268ebefa4ef278c",
-    "zh:b58a22445fb8804e933dcf835ab06c29a0f33148dce61316814783ee7f4e4332",
-    "zh:cb5626a661ee761e0576defb2a2d75230a3244799d380864f3089c66e99d0dcc",
-    "zh:d1acb00d20445f682c4e705c965e5220530209c95609194c2dc39324f3d4fcce",
-    "zh:d91a254ba77b69a29d8eae8ed0e9367cbf0ea6ac1a85b58e190f8cb096a40871",
-    "zh:f6592327673c9f85cdb6f20336faef240abae7621b834f189c4a62276ea5db41",
+    "h1:jcVmeuuz74tdRt2kj0MpUG9AORdlAlRRQ3k61y0r5Vc=",
+    "zh:1fb9aca1f068374a09d438dba84c9d8ba5915d24934a72b6ef66ef6818329151",
+    "zh:3eab30e4fcc76369deffb185b4d225999fc82d2eaaa6484d3b3164a4ed0f7c49",
+    "zh:4f8b7a4832a68080f0bf4f155b56a691832d8a91ce8096dac0f13a90081abc50",
+    "zh:5ff1935612db62e48e4fe6cfb83dfac401b506a5b7b38342217616fbcab70ce0",
+    "zh:993192234d327ec86726041eb6d1efb001e41f32e4518ad8b9b162130b65ee9a",
+    "zh:ce445e68282a2c4b2d1f994a2730406df4ea47914c0932fb4a7eb040a7ec7061",
+    "zh:e305e17216840c54194141fb852839c2cedd6b41abd70cf8d606d6e88ed40e64",
+    "zh:edba65fb241d663c09aa2cbf75026c840e963d5195f27000f216829e49811437",
+    "zh:f306cc6f6ec9beaf75bdcefaadb7b77af320b1f9b56d8f50df5ebd2189a93148",
+    "zh:fb2ff9e1f86796fda87e1f122d40568912a904da51d477461b850d81a0105f3d",
   ]
 }
 
-provider "registry.terraform.io/hashicorp/kubernetes" {
+provider "registry.opentofu.org/hashicorp/kubernetes" {
   version     = "2.38.0"
   constraints = ">= 2.21.1, < 3.0.0"
   hashes = [
-    "h1:5CkveFo5ynsLdzKk+Kv+r7+U9rMrNjfZPT3a0N/fhgE=",
-    "zh:0af928d776eb269b192dc0ea0f8a3f0f5ec117224cd644bdacdc682300f84ba0",
-    "zh:1be998e67206f7cfc4ffe77c01a09ac91ce725de0abaec9030b22c0a832af44f",
-    "zh:326803fe5946023687d603f6f1bab24de7af3d426b01d20e51d4e6fbe4e7ec1b",
-    "zh:4a99ec8d91193af961de1abb1f824be73df07489301d62e6141a656b3ebfff12",
-    "zh:5136e51765d6a0b9e4dbcc3b38821e9736bd2136cf15e9aac11668f22db117d2",
-    "zh:63fab47349852d7802fb032e4f2b6a101ee1ce34b62557a9ad0f0f0f5b6ecfdc",
-    "zh:924fb0257e2d03e03e2bfe9c7b99aa73c195b1f19412ca09960001bee3c50d15",
-    "zh:b63a0be5e233f8f6727c56bed3b61eb9456ca7a8bb29539fba0837f1badf1396",
-    "zh:d39861aa21077f1bc899bc53e7233262e530ba8a3a2d737449b100daeb303e4d",
-    "zh:de0805e10ebe4c83ce3b728a67f6b0f9d18be32b25146aa89116634df5145ad4",
-    "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
-    "zh:faf23e45f0090eef8ba28a8aac7ec5d4fdf11a36c40a8d286304567d71c1e7db",
+    "h1:nY7J9jFXcsRINog0KYagiWZw1GVYF9D2JmtIB7Wnrao=",
+    "zh:1096b41c4e5b2ee6c1980916fb9a8579bc1892071396f7a9432be058aabf3cbc",
+    "zh:2959fde9ae3d1deb5e317df0d7b02ea4977951ee6b9c4beb083c148ca8f3681c",
+    "zh:5082f98fcb3389c73339365f7df39fc6912bf2bd1a46d5f97778f441a67fd337",
+    "zh:620fd5d0fbc2d7a24ac6b420a4922e6093020358162a62fa8cbd37b2bac1d22e",
+    "zh:7f47c2de179bba35d759147c53082cad6c3449d19b0ec0c5a4ca8db5b06393e1",
+    "zh:89c3aa2a87e29febf100fd21cead34f9a4c0e6e7ae5f383b5cef815c677eb52a",
+    "zh:96eecc9f94938a0bc35b8a63d2c4a5f972395e44206620db06760b730d0471fc",
+    "zh:e15567c1095f898af173c281b66bffdc4f3068afdd9f84bb5b5b5521d9f29584",
+    "zh:ecc6b912629734a9a41a7cf1c4c73fb13b4b510afc9e7b2e0011d290bcd6d77f",
   ]
 }
 
-provider "registry.terraform.io/hashicorp/local" {
+provider "registry.opentofu.org/hashicorp/local" {
   version     = "2.6.1"
   constraints = ">= 1.3.0"
   hashes = [
-    "h1:LMoX85QLTgCCqRuy2aXoz47P7gZ4WRPSA00fUPC/Rho=",
-    "zh:10050d08f416de42a857e4b6f76809aae63ea4ec6f5c852a126a915dede814b4",
-    "zh:2df2a3ebe9830d4759c59b51702e209fe053f47453cb4688f43c063bac8746b7",
-    "zh:2e759568bcc38c86ca0e43701d34cf29945736fdc8e429c5b287ddc2703c7b18",
-    "zh:6a62a34e48500ab4aea778e355e162ebde03260b7a9eb9edc7e534c84fbca4c6",
-    "zh:74373728ba32a1d5450a3a88ac45624579e32755b086cd4e51e88d9aca240ef6",
-    "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
-    "zh:8dddae588971a996f622e7589cd8b9da7834c744ac12bfb59c97fa77ded95255",
-    "zh:946f82f66353bb97aefa8d95c4ca86db227f9b7c50b82415289ac47e4e74d08d",
-    "zh:e9a5c09e6f35e510acf15b666fd0b34a30164cecdcd81ce7cda0f4b2dade8d91",
-    "zh:eafe5b873ef42b32feb2f969c38ff8652507e695620cbaf03b9db714bee52249",
-    "zh:ec146289fa27650c9d433bb5c7847379180c0b7a323b1b94e6e7ad5d2a7dbe71",
-    "zh:fc882c35ce05631d76c0973b35adde26980778fc81d9da81a2fade2b9d73423b",
+    "h1:QH/Ay/SWVoOLgvFacjcvQcrw2WfEktZHxCcIQG0A9/w=",
+    "zh:0416d7bf0b459a995cf48f202af7b7ffa252def7d23386fc05b34f67347a22ba",
+    "zh:24743d559026b59610eb3d9fa9ec7fbeb06399c0ef01272e46fe5c313eb5c6ff",
+    "zh:2561cdfbc90090fee7f844a5cb5cbed8472ce264f5d505acb18326650a5b563f",
+    "zh:3ebc3f2dc7a099bd83e5c4c2b6918e5b56ec746766c58a31a3f5d189cb837db5",
+    "zh:490e0ce925fc3848027e10017f960e9e19e7f9c3b620524f67ce54217d1c6390",
+    "zh:bf08934295877f831f2e5f17a0b3ebb51dd608b2509077f7b22afa7722e28950",
+    "zh:c298c0f72e1485588a73768cb90163863b6c3d4c71982908c219e9b87904f376",
+    "zh:cedbaed4967818903ef378675211ed541c8243c4597304161363e828c7dc3d36",
+    "zh:edda76726d7874128cf1e182640c332c5a5e6a66a053c0aa97e2a0e4267b3b92",
   ]
 }
 
-provider "registry.terraform.io/hashicorp/random" {
+provider "registry.opentofu.org/hashicorp/random" {
   version = "3.8.0"
   hashes = [
-    "h1:SqwYP3u2T4rNxWvcrUc693VLY1V7DJPusZR9nn5NqSo=",
-    "zh:0e71891d8f25564e8d0b61654ed2ca52101862b9a2a07d736395193ae07b134b",
-    "zh:1c56852d094161997df5fd8a6cbca7c6c979b3f8c3c00fbcc374a59305d117b1",
-    "zh:20698fb8a2eaa7e23c4f8e3d22250368862f578cf618be0281d5b61496cbef13",
-    "zh:3afbdd5e955f6d0105fed4f6b7fef7ba165cd780569483e688002108cf06586c",
-    "zh:4ce22b96e625dc203ea653d53551d46156dd63ad79e45bcbe0224b2e6357f243",
-    "zh:4ff84b568ad468d140f8f6201a372c6c4bea17d64527b72e341ae8fafea65b8e",
-    "zh:54b071cb509203c43e420cc589523709bbc6e65d80c1cd9384f5bd88fd1ff1a2",
-    "zh:63fc5f9f341a573cd5c8bcfc994a58fa52a5ad88d2cbbd80f5a9f143c5006e75",
-    "zh:73cb8b39887589914686d14a99b4de6e85e48603f7235d87da5594e3fbb7d8a7",
-    "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
-    "zh:7ee20f28aa6a25539a5b9fc249e751dec5a5b130dcd73c5d05efdf4d5e320454",
-    "zh:994a83fddab1d44a8f546920ed34e45ea6caefe4f08735bada6c28dc9010e5e4",
+    "h1:ey4eBIHiuAC5xsblxtXghXE3nWwUvGqTT6KAsggiAwo=",
+    "zh:2d5e0bbfac7f15595739fe54a9ab8b8eea92fd6d879706139dad7ecaa5c01c19",
+    "zh:349e637066625d97aaa84db1b1418c86d6457cf9c5a62f6dcc3f55cbd535112c",
+    "zh:5f4456d53f5256ccfdb87dd35d3bf34578d01bd9b71cffaf507f0692805eac8a",
+    "zh:6c1ecfacc5f7079a068d7f8eb8924485d4ec8183f36e6318a6e748d35921ddac",
+    "zh:6d86641edeb8c394f121f7b0a691d72f89cf9b938b987a01fc32aad396a50555",
+    "zh:76947bd7bc7033b33980538da149c94e386f9b0abb2ce63733f25a57517e4742",
+    "zh:79c07f4c8b3a63d9f89e25e4348b462c57e179bca66ba533710851c485e282db",
+    "zh:ac1c2b941d994728a3a93aba093fd2202f9311d099ff85f66678897c792161ba",
+    "zh:cbb2aa867fd828fcb4125239e00862b9a3bc2f280e945c760224276b476f4c49",
   ]
 }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

terraform validate: Force rerun t init when plugin cache is enabled and parrallelism conflit happens

3 participants