Skip to content

fix: use cleaned relative path instead of absolute path for local module hash#5280

Merged
SwarnaBharathiMantena merged 2 commits intoGoogleCloudPlatform:developfrom
mtibben:fix-gcluster-absolute-path
Mar 23, 2026
Merged

fix: use cleaned relative path instead of absolute path for local module hash#5280
SwarnaBharathiMantena merged 2 commits intoGoogleCloudPlatform:developfrom
mtibben:fix-gcluster-absolute-path

Conversation

@mtibben
Copy link
Copy Markdown
Contributor

@mtibben mtibben commented Feb 24, 2026

When gcluster create computes the deployment source directory name for local terraform modules, it generates a short hash to disambiguate modules with the same basename. Previously this hash was based on filepath.Abs(mod.Source), which resolves relative to the current working directory. Since the absolute path includes the user's home directory and checkout location, different developers running the same blueprint get different hashes, producing spurious terraform diffs.

This changes the hash input from the absolute path to filepath.Clean(mod.Source), which normalises the path string (resolves .., removes redundant separators/dots) without resolving against the working directory. The cleaned path is the same on every machine because it comes directly from the shared blueprint YAML.

Alternatives considered:

  • Hash relative to the blueprint file's directory — resolve mod.Source against the blueprint dir, then make it relative to the blueprint dir again. For relative paths this produces the same result as filepath.Clean. However it breaks at deploy time: the expanded blueprint is re-loaded from the artifacts directory (.ghpc/expanded_blueprint.yaml), so the blueprint dir differs between creation and deploy, and the hash no longer matches.

  • Hash relative to the git repository root — resolve mod.Source to an absolute path and then make it relative to the git root. This strips the machine-specific prefix and works at creation time, but has the same deploy-time problem: mod.Source is still the raw string from the YAML, and resolving it against a different context (the artifacts directory) produces a different relative-to-git-root path.

  • Hash the directory contents — truly content-addressed, but expensive (must walk the full directory tree), and the hash would change on every content edit, causing spurious terraform diffs during development.

Both resolution-based alternatives fail because mod.Source is stored as-is in the expanded blueprint and is not rewritten when the blueprint is saved to the artifacts directory. Any approach that resolves the path against a contextual anchor (CWD, blueprint dir, git root) produces inconsistent results between creation and deploy. filepath.Clean avoids this by operating purely on the path string.

@mtibben mtibben requested review from a team and samskillman as code owners February 24, 2026 20:21
@mtibben mtibben changed the base branch from main to develop February 24, 2026 20:22
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @mtibben, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request delivers significant improvements in development consistency and introduces new infrastructure deployment capabilities. It rectifies a core issue with local module hashing that caused environment-specific Terraform diffs and updates the baseline Terraform version. Furthermore, it expands the toolkit's offerings with new GKE consumption options for advanced TPU hardware and a dedicated blueprint for A4X Max bare metal GPUs. The changes also include enhancements to logging for better traceability and a new validation mechanism for more robust blueprint configurations.

Highlights

  • Local Module Hashing Fix: Resolved an issue where local Terraform module hashes varied across developer environments due to the use of absolute paths. The hashing mechanism now uses filepath.Clean(mod.Source) to ensure consistent, cleaned relative paths, preventing spurious Terraform diffs.
  • Terraform Version Update: The minimum required Terraform version has been standardized and updated to 1.12.2 across numerous modules, examples, and CI/CD configurations.
  • Expanded GKE Consumption Options: Introduced new examples and configurations for GKE TPU 7x and TPU v6e nodes, specifically demonstrating Dynamic Workload Scheduler (DWS) with Queued Provisioning capabilities.
  • New A4X Max GPU Metal Blueprint: Added a comprehensive blueprint for deploying A4X Max a4x-maxgpu-4g-metal VMs with Slurm, featuring support for MRDMA, custom image build scripts, and dedicated system benchmarks.
  • Kueue Configuration via Helm: Refactored the kubectl-apply module to manage Kueue configurations using a Helm chart, enhancing reliability and maintainability compared to direct kubectl application.
  • Timestamped Command Output: Implemented a new timestampWriter utility to automatically add UTC timestamps to packer and terraform command outputs, improving log readability and debugging.
  • Conditional Validator for Blueprints: Introduced a new conditional validator type in metadata.yaml to enforce dependencies between blueprint variables, ensuring that a dependent variable is correctly set when a trigger condition is met.
  • Automated Reservation Existence Check: Added a new test_reservation_exists validator that automatically checks for the existence and correct zone of specified reservations, providing clearer error messages and hints.
Changelog
  • .yamllint
    • Added an ignore path for raw-config-chart/templates/.
  • Makefile
    • Updated MIN_TERRAFORM_VERSION to 1.12.2.
  • community/front-end/ofe/infrastructure_files/vpc_tf/GCP/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/front-end/ofe/infrastructure_files/vpc_tf/GCP/versions.tf
    • Updated required_version to = 1.12.2.
  • community/front-end/ofe/infrastructure_files/workbench_tf/google/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/front-end/ofe/infrastructure_files/workbench_tf/google/versions.tf
    • Updated required_version to = 1.12.2.
  • community/front-end/ofe/infrastructure_files/workbench_tf/google/wait-for-startup/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/front-end/ofe/infrastructure_files/workbench_tf/google/wait-for-startup/versions.tf
    • Updated required_version to = 1.12.2.
  • community/front-end/ofe/requirements.txt
    • Updated cryptography version to 46.0.5.
  • community/front-end/ofe/tf/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/front-end/ofe/tf/network/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/front-end/ofe/tf/network/versions.tf
    • Updated required_version to = 1.12.2.
  • community/front-end/ofe/tf/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/gke-nodeset/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/gke-nodeset/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/gke-partition/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/gke-partition/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/htcondor-execute-point/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/htcondor-execute-point/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/mig/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/mig/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/notebook/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/notebook/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-nodeset-dynamic/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-nodeset-dynamic/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-nodeset-tpu/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-nodeset-tpu/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-nodeset/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-nodeset/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-partition/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/compute/schedmd-slurm-gcp-v6-partition/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/container/artifact-registry/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/container/artifact-registry/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/database/bigquery-dataset/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/database/bigquery-dataset/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/database/bigquery-table/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/database/bigquery-table/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/database/slurm-cloudsql-federation/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/database/slurm-cloudsql-federation/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/file-system/nfs-server/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/file-system/nfs-server/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/file-system/weka-client/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/file-system/weka-client/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/files/fsi-montecarlo-on-batch/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/files/fsi-montecarlo-on-batch/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/internal/slurm-gcp/instance/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/internal/slurm-gcp/instance/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/internal/slurm-gcp/instance_template/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/internal/slurm-gcp/instance_template/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/internal/slurm-gcp/internal_instance_template/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/internal/slurm-gcp/internal_instance_template/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/internal/slurm-gcp/login/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/internal/slurm-gcp/login/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/internal/slurm-gcp/nodeset_tpu/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/internal/slurm-gcp/nodeset_tpu/metadata.yaml
    • Added a conditional validator for subnetwork and enable_public_ip.
  • community/modules/internal/slurm-gcp/nodeset_tpu/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/management/dependencies-installer/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/management/dependencies-installer/helm_install/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/management/dependencies-installer/helm_install/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/management/dependencies-installer/kubernetes_manifest/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/management/dependencies-installer/kubernetes_manifest/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/management/dependencies-installer/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/project/service-enablement/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/project/service-enablement/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/pubsub/bigquery-sub/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/pubsub/bigquery-sub/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/pubsub/topic/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/pubsub/topic/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/remote-desktop/chrome-remote-desktop/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/remote-desktop/chrome-remote-desktop/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/htcondor-access-point/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/htcondor-access-point/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/htcondor-central-manager/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/htcondor-central-manager/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/htcondor-pool-secrets/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/htcondor-pool-secrets/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/htcondor-service-accounts/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/htcondor-service-accounts/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/htcondor-setup/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/htcondor-setup/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/cleanup_compute/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/cleanup_compute/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/cleanup_tpu/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/cleanup_tpu/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/metadata.yaml
    • Added a conditional validator for enable_hybrid and slurm_control_host.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-controller/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-login/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/schedmd-slurm-gcp-v6-login/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scheduler/slinky/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scheduler/slinky/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/gcloud/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/gcloud/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/htcondor-install/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/htcondor-install/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/ramble-execute/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/ramble-execute/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/ramble-setup/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/ramble-setup/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/spack-execute/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/spack-execute/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/spack-setup/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/spack-setup/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/wait-for-startup/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/wait-for-startup/versions.tf
    • Updated required_version to = 1.12.2.
  • community/modules/scripts/windows-startup-script/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • community/modules/scripts/windows-startup-script/versions.tf
    • Updated required_version to = 1.12.2.
  • docs/blueprint-validation.md
    • Added documentation for the new Conditional Validator.
  • examples/README.md
    • Removed ps-slurm.yaml entry.
    • Updated formatting for hpc-slurm-ubuntu2204.yaml and hpc-slurm-h4d.yaml.
    • Added provisioning and cleanup instructions for serverless-batch.yaml.
    • Expanded GKE consumption options with specific TPU examples.
  • examples/gke-a3-megagpu/README.md
    • Added a section on additional consumption options for GKE-A3M clusters.
  • examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml
    • Removed wait: false for Kueue installation.
  • examples/gke-a4/gke-a4.yaml
    • Removed wait: false for Kueue installation.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/README.md
    • Made minor formatting adjustments.
    • Updated bucket creation command.
    • Added hardware-specific guides for TPU v6e and TPU 7x.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-7x/README.md
    • Added new README for TPU 7x DWS Queued Provisioning.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-7x/gke-tpu-7x-deployment.yaml
    • Added new deployment YAML for TPU 7x DWS Queued Provisioning.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-7x/gke-tpu-7x.yaml
    • Added new blueprint YAML for TPU 7x DWS Queued Provisioning.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-7x/tpu-7x-test-job-gcs.yaml
    • Added new GCS FIO benchmark job for TPU 7x.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-7x/tpu-7x-test-job.yaml
    • Added new simple test job for TPU 7x.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-v6e/README.md
    • Added new README for TPU v6e DWS Queued Provisioning.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-v6e/gke-tpu-v6e-deployment.yaml
    • Added new deployment YAML for TPU v6e DWS Queued Provisioning.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-v6e/gke-tpu-v6e.yaml
    • Added new blueprint YAML for TPU v6e DWS Queued Provisioning.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-v6e/tpu-v6e-test-job-gcs.yaml
    • Added new GCS FIO benchmark job for TPU v6e.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/gke-tpu-v6e/tpu-v6e-test-job.yaml
    • Added new simple test job for TPU v6e.
  • examples/gke-consumption-options/dws-flex-start-queued-provisioning/tpu-dws-queues.yaml.tftpl
    • Added new Kueue configuration template for DWS.
  • examples/gke-tpu-7x/README.md
    • Added links to new DWS Flex with Queued Provisioning blueprints for TPU 7x.
  • examples/gke-tpu-7x/gke-tpu-7x-advanced.yaml
    • Corrected comment for Kueue configuration path.
  • examples/gke-tpu-7x/gke-tpu-7x.yaml
    • Added Kueue configuration path and settings for workload manager install.
  • examples/gke-tpu-v6e/README.md
    • Added links to new DWS Flex with Queued Provisioning blueprints for TPU v6e.
  • examples/gke-tpu-v6e/gke-tpu-v6e-advanced.yaml
    • Corrected comment for Kueue configuration path.
  • examples/gke-tpu-v6e/gke-tpu-v6e.yaml
    • Added Kueue configuration path and settings for workload manager install.
  • examples/machine-learning/a3-highgpu-8g/README.md
    • Updated gcluster deploy commands to use full paths.
  • examples/machine-learning/a3-megagpu-8g/a3mega-slurm-deployment.yaml
    • Updated placeholder comments for deployment variables.
  • examples/machine-learning/a4x-highgpu-4g/README.md
    • Expanded description to include standalone VM deployment.
    • Added new section for A4X-High VM Deployment with deployment and destroy instructions.
  • examples/machine-learning/a4x-highgpu-4g/a4x-vm-deployment.yaml
    • Added new deployment YAML for A4X-High standalone VMs.
  • examples/machine-learning/a4x-highgpu-4g/a4x-vm.yaml
    • Added gpu_topology to placement policy.
  • examples/machine-learning/a4x-maxgpu-4g-metal/README.md
    • Added new README for A4X Max GPU Metal blueprint.
  • examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml
    • Added new blueprint YAML for A4X Max bare metal Slurm cluster.
  • examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-deployment.yaml
    • Added new deployment YAML for A4X Max bare metal Slurm cluster.
  • examples/machine-learning/a4x-maxgpu-4g-metal/system_benchmarks/README.md
    • Added new README for running system benchmarks with Ramble.
  • examples/machine-learning/a4x-maxgpu-4g-metal/system_benchmarks/run-nccl-tests-via-ramble.sh
    • Added new script for running NCCL tests via Ramble.
  • modules/compute/gke-job-template/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/compute/gke-job-template/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/compute/gke-node-pool/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/compute/gke-node-pool/main.tf
    • Added cloud.google.com/gke-queued label for queued provisioning.
    • Updated precondition for compact placement with TPUs.
  • modules/compute/gke-node-pool/metadata.yaml
    • Added conditional validators for enable_flex_start and enable_queued_provisioning.
  • modules/compute/gke-node-pool/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/compute/resource-policy/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/compute/resource-policy/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/compute/vm-instance/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/compute/vm-instance/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/cloud-storage-bucket/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/cloud-storage-bucket/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/filestore/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/filestore/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/gke-persistent-volume/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/gke-persistent-volume/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/gke-storage/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/gke-storage/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/managed-lustre/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/managed-lustre/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/netapp-storage-pool/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/netapp-storage-pool/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/netapp-volume/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/netapp-volume/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/parallelstore/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/parallelstore/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/file-system/pre-existing-network-storage/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/file-system/pre-existing-network-storage/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/internal/gpu-definition/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/internal/gpu-definition/main.tf
    • Added new A4X Max GPU machine types (a4x-maxgpu-4g-metal, a4x-maxgpu-4g-metal-nolssd).
  • modules/internal/gpu-definition/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/internal/instance_validations/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/internal/instance_validations/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/internal/network-attachment/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/internal/network-attachment/main.tf
    • Updated required_version to = 1.12.2.
  • modules/internal/tpu-definition/README.md
    • Updated Terraform version requirement to = 1.12.2.
    • Added kubernetes_label output.
  • modules/internal/tpu-definition/main.tf
    • Updated required_version to = 1.12.2.
  • modules/internal/tpu-definition/outputs.tf
    • Added kubernetes_label output.
  • modules/internal/vpc_peering/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/internal/vpc_peering/main.tf
    • Updated required_version to = 1.12.2.
  • modules/management/kubectl-apply/README.md
    • Updated Terraform version requirement to = 1.12.2.
    • Changed configure_kueue source to ./helm_install.
  • modules/management/kubectl-apply/helm_install/README.md
    • Updated Terraform version requirement to = 1.12.2.
    • Added dependencies input.
  • modules/management/kubectl-apply/helm_install/main.tf
    • Added tf_dependency_anchor for implicit dependencies.
  • modules/management/kubectl-apply/helm_install/variables.tf
    • Added dependencies variable.
  • modules/management/kubectl-apply/helm_install/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/management/kubectl-apply/kubectl/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/management/kubectl-apply/kubectl/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/management/kubectl-apply/main.tf
    • Refactored Kueue configuration to use a Helm chart.
    • Added system_node_pool_id dependency.
  • modules/management/kubectl-apply/raw-config-chart/Chart.yaml
    • Added new Helm chart for raw config application.
  • modules/management/kubectl-apply/raw-config-chart/templates/manifests.yaml
    • Added new template for raw config application.
  • modules/management/kubectl-apply/raw-config-chart/values.yaml
    • Added new values file for raw config application.
  • modules/management/kubectl-apply/variables.tf
    • Removed wait variable from Kueue input.
    • Added system_node_pool_id variable.
  • modules/management/kubectl-apply/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/monitoring/dashboard/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/monitoring/dashboard/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/firewall-rules/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/firewall-rules/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/gpu-rdma-vpc/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/gpu-rdma-vpc/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/multivpc/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/multivpc/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/pre-existing-subnetwork/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/pre-existing-subnetwork/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/pre-existing-vpc/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/pre-existing-vpc/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/private-service-access/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/private-service-access/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/network/vpc/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/network/vpc/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/project/service-account/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/project/service-account/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/scheduler/batch-job-template/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/scheduler/batch-job-template/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/scheduler/batch-login-node/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/scheduler/batch-login-node/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/scheduler/gke-cluster/README.md
    • Updated Terraform version requirement to = 1.12.2.
    • Added system_node_pool_id output.
  • modules/scheduler/gke-cluster/outputs.tf
    • Added system_node_pool_id output.
  • modules/scheduler/gke-cluster/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/scheduler/pre-existing-gke-cluster/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/scheduler/pre-existing-gke-cluster/versions.tf
    • Updated required_version to = 1.12.2.
  • modules/scripts/startup-script/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • modules/scripts/startup-script/versions.tf
    • Updated required_version to = 1.12.2.
  • pkg/logging/logging.go
    • Added timestamp formatting and coloring for log outputs.
  • pkg/modulereader/modules/test_role/test_module/versions.tf
    • Updated required_version to = 1.12.2.
  • pkg/modulewriter/modulewriter.go
    • Changed local module hash generation to use filepath.Clean instead of filepath.Abs.
  • pkg/modulewriter/modulewriter_test.go
    • Updated required_version in test.
    • Added tests for DeploymentSource with filepath.Clean.
  • pkg/modulewriter/tfwriter.go
    • Updated required_version to = 1.12.2.
  • pkg/shell/packer.go
    • Integrated newTimestampWriter for packer command outputs.
  • pkg/shell/terraform.go
    • Integrated newTimestampWriter for terraform command outputs.
  • pkg/shell/writer.go
    • Added new timestampWriter utility for adding timestamps to output.
  • pkg/shell/writer_test.go
    • Added tests for timestampWriter.
  • pkg/sourcereader/modules/network/vpc/main.tf
    • Updated required_version to = 1.12.2.
  • pkg/validators/cloud.go
    • Added TestReservationExists function.
    • Integrated TestReservationExists into testReservationExists for automatic reservation validation.
  • pkg/validators/metadata_validator_helpers.go
    • Improved error handling for missing settings.
    • Added parseString, convertToCty, ValuesMatch, and formatValue helper functions.
  • pkg/validators/metadata_validators.go
    • Added ConditionalValidator for enforcing dependent variable conditions.
  • pkg/validators/metadata_validators_test.go
    • Added tests for isVarSet, convertToCty, ValuesMatch, and ConditionalValidator.
  • pkg/validators/registry.go
    • Registered ConditionalValidator.
  • pkg/validators/validators.go
    • Added testReservationExistsName.
    • Integrated testReservationExistsName into default validators.
  • pkg/validators/validators_test.go
    • Added tests for default validators including testReservationExists.
  • tools/cleanup.sh
    • Updated cleanup logic to use time-to-live label with more flexible date/time format.
  • tools/cloud-build/daily-tests/ansible_playbooks/test-validation/test-gke-a4x-kueue-config.yml
    • Added cleanup for Kubernetes resources.
  • tools/cloud-build/daily-tests/ansible_playbooks/test-validation/test-gke-kueue-config.yml
    • Added cleanup for Kubernetes resources.
  • tools/cloud-build/daily-tests/ansible_playbooks/test-validation/test-gke-kueue.yml
    • Wrapped tasks in a block.
    • Added cleanup for Kubernetes resources.
  • tools/cloud-build/images/cluster-toolkit-dockerfile/Dockerfile
    • Updated TERRAFORM_VERSION to 1.12.2.
  • tools/cloud-build/images/cluster-toolkit-dockerfile/README.md
    • Updated default TERRAFORM_VERSION to 1.12.2.
  • tools/cloud-build/provision/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • tools/cloud-build/provision/pr-tests.tf
    • Added _TEST_PREFIX substitution.
  • tools/cloud-build/provision/trigger-schedule/README.md
    • Updated Terraform version requirement to = 1.12.2.
  • tools/cloud-build/provision/trigger-schedule/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/cloud-build/provision/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/validate_configs/golden_copies/expectations/igc_pkr/zero/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/validate_configs/golden_copies/expectations/igc_tf/one/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/validate_configs/golden_copies/expectations/igc_tf/zero/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/validate_configs/golden_copies/expectations/merge_flatten/zero/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/validate_configs/golden_copies/expectations/versioned_blueprint/primary/versions.tf
    • Updated required_version to = 1.12.2.
  • tools/validate_configs/validate_configs.sh
    • Added test_reservation_exists to validators to skip.
Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/label-external.yml
    • .github/workflows/pr-precommit.yml
Activity
  • The pull request introduces a fix for local module hashing, updates Terraform versions, and adds new GKE and A4X Max blueprints.
  • It also includes enhancements to logging with timestamped outputs and a new conditional validator.
  • Several documentation and example files have been updated to reflect these changes and new features.
  • CI/CD related files (cloud-build, ansible playbooks) have been adjusted for new cleanup procedures and test configurations.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request fixes a bug where the hash generated for local Terraform modules was not deterministic across different developer machines, causing spurious diffs. The change replaces the use of filepath.Abs with filepath.Clean to generate the hash from a normalized, machine-independent path string. The implementation is correct and effectively solves the issue. The associated test changes are also good, making the tests deterministic and adding a new test case for equivalent paths. I have one minor suggestion in the test file to improve consistency and robustness.

@github-actions github-actions bot added the external PR from external contributor label Feb 25, 2026
@mtibben mtibben force-pushed the fix-gcluster-absolute-path branch from 4a230fc to 58ec1a1 Compare February 25, 2026 00:25
@mtibben
Copy link
Copy Markdown
Contributor Author

mtibben commented Mar 10, 2026

@SwarnaBharathiMantena @samskillman let me know if you have any feedback

@SwarnaBharathiMantena
Copy link
Copy Markdown
Contributor

/gcbrun

Copy link
Copy Markdown
Contributor

@SwarnaBharathiMantena SwarnaBharathiMantena left a comment

Choose a reason for hiding this comment

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

Thanks for submitting a PR. LGTM.

(Apologies on the delayed review)

@agrawalkhushi18 agrawalkhushi18 force-pushed the fix-gcluster-absolute-path branch from 58ec1a1 to f3b1a66 Compare March 23, 2026 09:32
@SwarnaBharathiMantena SwarnaBharathiMantena added the release-improvements Added to release notes under the "Improvements" heading. label Mar 23, 2026
@agrawalkhushi18 agrawalkhushi18 self-requested a review March 23, 2026 13:18
mtibben added 2 commits March 23, 2026 18:50
…ule hash

Replace filepath.Abs with filepath.Clean when computing the short hash
for local module deployment source directories. This ensures the hash is
deterministic across machines regardless of where the repository is
checked out.
@agrawalkhushi18 agrawalkhushi18 force-pushed the fix-gcluster-absolute-path branch from f3b1a66 to 178fbfc Compare March 23, 2026 13:20
@agrawalkhushi18
Copy link
Copy Markdown
Contributor

/gcbrun

@SwarnaBharathiMantena SwarnaBharathiMantena merged commit 3db9949 into GoogleCloudPlatform:develop Mar 23, 2026
12 of 72 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external PR from external contributor release-improvements Added to release notes under the "Improvements" heading.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants