Skip to content

Conversation

posquit0
Copy link
Member

Summary

Update resource group configuration to use object-based pattern.

Changes

  • Update module version from ~> 0.10.0 to ~> 0.12.0
  • Replace individual resource_group_* variables with single object variable
  • Update all references to use var.resource_group.* structure
  • Add resource_group output to each module

Modules Updated

  • dns-firewall
  • dns-firewall-domain-list
  • dns-firewall-rule-group
  • fms-dns-firewall-policy
  • waf-ip-set

Test Plan

  • Review variable changes
  • Verify resource-group module references are correct
  • Check outputs are properly formatted

Copy link

@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.

Summary of Changes

Hello @posquit0, 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 refactors the configuration of resource groups across several Terraform modules, including DNS Firewall and WAF IP Set related components. The core change involves transitioning from disparate boolean and string variables for resource group settings to a single, comprehensive object variable. This enhancement aims to streamline module interfaces, improve configuration consistency, and simplify the overall management of resource group definitions within the infrastructure as code.

Highlights

  • Variable Consolidation: Consolidated multiple individual resource_group_* variables into a single, structured resource_group object variable across all affected modules for improved configuration and consistency.
  • Module Version Update: Updated the tedilabs/misc/aws//modules/resource-group module version from ~> 0.10.0 to ~> 0.12.0 in all relevant module configurations.
  • Reference Updates: All internal references to resource group variables were updated to utilize the new var.resource_group.* object structure, ensuring proper integration with the consolidated variable.
  • New Module Output: Added a resource_group output to each affected module, providing details such as ARN and name of the created resource group when enabled.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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.

@github-actions github-actions bot added 💾 dns-firewall-domain-list This issue or pull request is related to dns-firewall-domain-list module. 💾 dns-firewall-rule-group This issue or pull request is related to dns-firewall-rule-group module. 💾 dns-firewall This issue or pull request is related to dns-firewall module. 💾 fms-dns-firewall-policy This issue or pull request is related to fms-dns-firewall-policy module. 💾 waf-ip-set This issue or pull request is related to waf-ip-set module. size/L Large size issue or PR. labels Sep 10, 2025
Copy link

@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 refactors the resource group configuration across several modules to use a more modern object-based pattern. The changes are well-implemented, replacing multiple variables with a single resource_group object. I've suggested an improvement to the new resource_group outputs to ensure they have a consistent structure, which is a best practice for module development. Overall, this is a good improvement to the modules' usability and maintainability.

Comment on lines +23 to +34
value = merge(
{
enabled = var.resource_group.enabled && var.module_tags_enabled
},
(var.resource_group.enabled && var.module_tags_enabled
? {
arn = module.resource_group[0].arn
name = module.resource_group[0].name
}
: {}
)
)

Choose a reason for hiding this comment

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

medium

The current implementation for the resource_group output value is a bit complex and produces an inconsistent object structure. When the resource group is disabled, the output object only contains the enabled key. When enabled, it contains enabled, arn, and name.

It's a best practice for module outputs to have a consistent structure. You can simplify this logic and ensure a consistent output by using the try() function. This makes the output predictable for module consumers.

  value = {
    enabled = var.resource_group.enabled && var.module_tags_enabled
    arn     = try(module.resource_group[0].arn, null)
    name    = try(module.resource_group[0].name, null)
  }

Comment on lines +65 to +76
value = merge(
{
enabled = var.resource_group.enabled && var.module_tags_enabled
},
(var.resource_group.enabled && var.module_tags_enabled
? {
arn = module.resource_group[0].arn
name = module.resource_group[0].name
}
: {}
)
)

Choose a reason for hiding this comment

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

medium

The current implementation for the resource_group output value is a bit complex and produces an inconsistent object structure. When the resource group is disabled, the output object only contains the enabled key. When enabled, it contains enabled, arn, and name.

It's a best practice for module outputs to have a consistent structure. You can simplify this logic and ensure a consistent output by using the try() function. This makes the output predictable for module consumers.

  value = {
    enabled = var.resource_group.enabled && var.module_tags_enabled
    arn     = try(module.resource_group[0].arn, null)
    name    = try(module.resource_group[0].name, null)
  }

Comment on lines +37 to +48
value = merge(
{
enabled = var.resource_group.enabled && var.module_tags_enabled
},
(var.resource_group.enabled && var.module_tags_enabled
? {
arn = module.resource_group[0].arn
name = module.resource_group[0].name
}
: {}
)
)

Choose a reason for hiding this comment

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

medium

The current implementation for the resource_group output value is a bit complex and produces an inconsistent object structure. When the resource group is disabled, the output object only contains the enabled key. When enabled, it contains enabled, arn, and name.

It's a best practice for module outputs to have a consistent structure. You can simplify this logic and ensure a consistent output by using the try() function. This makes the output predictable for module consumers.

  value = {
    enabled = var.resource_group.enabled && var.module_tags_enabled
    arn     = try(module.resource_group[0].arn, null)
    name    = try(module.resource_group[0].name, null)
  }

Comment on lines +47 to +58
value = merge(
{
enabled = var.resource_group.enabled && var.module_tags_enabled
},
(var.resource_group.enabled && var.module_tags_enabled
? {
arn = module.resource_group[0].arn
name = module.resource_group[0].name
}
: {}
)
)

Choose a reason for hiding this comment

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

medium

The current implementation for the resource_group output value is a bit complex and produces an inconsistent object structure. When the resource group is disabled, the output object only contains the enabled key. When enabled, it contains enabled, arn, and name.

It's a best practice for module outputs to have a consistent structure. You can simplify this logic and ensure a consistent output by using the try() function. This makes the output predictable for module consumers.

  value = {
    enabled = var.resource_group.enabled && var.module_tags_enabled
    arn     = try(module.resource_group[0].arn, null)
    name    = try(module.resource_group[0].name, null)
  }

Comment on lines +38 to +49
value = merge(
{
enabled = var.resource_group.enabled && var.module_tags_enabled
},
(var.resource_group.enabled && var.module_tags_enabled
? {
arn = module.resource_group[0].arn
name = module.resource_group[0].name
}
: {}
)
)

Choose a reason for hiding this comment

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

medium

The current implementation for the resource_group output value is a bit complex and produces an inconsistent object structure. When the resource group is disabled, the output object only contains the enabled key. When enabled, it contains enabled, arn, and name.

It's a best practice for module outputs to have a consistent structure. You can simplify this logic and ensure a consistent output by using the try() function. This makes the output predictable for module consumers.

  value = {
    enabled = var.resource_group.enabled && var.module_tags_enabled
    arn     = try(module.resource_group[0].arn, null)
    name    = try(module.resource_group[0].name, null)
  }

@posquit0 posquit0 merged commit 4e51280 into main Sep 10, 2025
17 checks passed
@posquit0 posquit0 deleted the feat/improve-resource-group-usage branch September 10, 2025 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💾 dns-firewall This issue or pull request is related to dns-firewall module. 💾 dns-firewall-domain-list This issue or pull request is related to dns-firewall-domain-list module. 💾 dns-firewall-rule-group This issue or pull request is related to dns-firewall-rule-group module. 💾 fms-dns-firewall-policy This issue or pull request is related to fms-dns-firewall-policy module. 💾 waf-ip-set This issue or pull request is related to waf-ip-set module. size/L Large size issue or PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant