Skip to content

Fix nat_router validation when variable is null#2153

Open
nacholiya wants to merge 1 commit intomysticaltech:masterfrom
nacholiya:fix-nat-router-null-validation
Open

Fix nat_router validation when variable is null#2153
nacholiya wants to merge 1 commit intomysticaltech:masterfrom
nacholiya:fix-nat-router-null-validation

Conversation

@nacholiya
Copy link

@nacholiya nacholiya commented Feb 23, 2026

When nat_router is set to null, the validation block attempted to access
attributes like enable_redundancy and standby_location, causing:

"Attempt to get attribute from null value"

This change makes the validation null-safe using try() while preserving
the original redundancy validation logic.

Closes #2152

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @nacholiya, 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 resolves a critical validation error that occurred when the nat_router variable was set to null. By integrating the try() function into the validation condition, the system can now gracefully handle cases where optional attributes are not present, preventing 'Attempt to get attribute from null value' errors and maintaining the integrity of the redundancy validation logic.

Highlights

  • Null-safe Validation: Implemented the try() function within the nat_router variable's validation block to prevent errors when nat_router is null, ensuring attributes like enable_redundancy and standby_location are accessed safely.
Changelog
  • variables.tf
    • Updated the nat_router variable's validation condition to use the try() function for null-safe attribute access.
Activity
  • No human activity has been recorded on this pull request yet.
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
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

The pull request correctly addresses the "Attempt to get attribute from null value" error when nat_router is null by introducing null-safe attribute access using try(). This ensures that the validation logic only executes when the object is present. I have suggested a more concise way to write this validation using a single try() wrapper, which is more idiomatic in Terraform and handles potential null values within the object attributes more robustly. Additionally, please note that the nat_router_hcloud_token variable validation (lines 188-191) likely suffers from the same issue and should be updated for consistency.


validation {
condition = var.nat_router == null || !var.nat_router.enable_redundancy || var.nat_router.standby_location != ""
condition = var.nat_router == null || !try(var.nat_router.enable_redundancy, false) || try(var.nat_router.standby_location, "") != ""
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

While the use of try() fixes the reported issue, the condition can be simplified for better readability. Using a single try() wrapper around the logic is more idiomatic in Terraform and avoids redundant checks. This approach also handles cases where attributes might be null more gracefully.

    condition     = try(!var.nat_router.enable_redundancy || var.nat_router.standby_location != "", true)

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.

[Bug]: if nat_router is not enabled, its validation fails tf validate/apply

1 participant