Skip to content

Bugfix: Implement egress firewall cidr validation#297

Open
elivlo wants to merge 2 commits into
apache:mainfrom
elivlo:bugfix/egress-firewall-cidr-validation
Open

Bugfix: Implement egress firewall cidr validation#297
elivlo wants to merge 2 commits into
apache:mainfrom
elivlo:bugfix/egress-firewall-cidr-validation

Conversation

@elivlo

@elivlo elivlo commented Jun 25, 2026

Copy link
Copy Markdown

Hi :)

This PR adds validation to the egress firewall for the set cidr_list. The set currently allows the cidr 0.0.0.0/0 that get is rewritten to the cidr of the network. So the resource gets recreated everytime terraform runs.

So this PR will disallow the cidr 0.0.0.0/0.

elivlo added 2 commits June 25, 2026 09:51
The CloudStack API does not reject 0.0.0.0/0 as an egress firewall CIDR
but silently replaces it with the network's own CIDR. This causes a
permanent drift between the Terraform state (which stores 0.0.0.0/0)
and the actual API state (which returns the network CIDR), resulting in
Terraform perpetually planning to recreate the resource.

Validate early in verifyEgressFirewallRuleParams to surface a clear
error before the API call is made.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 addresses a CloudStack egress firewall drift issue by rejecting the special CIDR 0.0.0.0/0 in cidr_list, which CloudStack rewrites to the network CIDR and can cause perpetual Terraform diffs/recreates.

Changes:

  • Add validation in egress firewall rule parameter verification to disallow 0.0.0.0/0 in cidr_list.
  • Add unit tests covering the new CIDR validation behavior (disallow 0.0.0.0/0, allow a normal subnet CIDR).
  • Ignore a local .worktrees/ directory via .gitignore.

Reviewed changes

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

File Description
cloudstack/resource_cloudstack_egress_firewall.go Adds rule-level validation rejecting 0.0.0.0/0 for egress firewall cidr_list (and cleans up unused params).
cloudstack/resource_cloudstack_egress_firewall_test.go Adds unit tests for the new CIDR validation behavior.
.gitignore Ignores .worktrees/ directory.

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

@artem-sidorenko

Copy link
Copy Markdown

@elivlo the 0.0.0.0/0 was a very nice hack I used several times to avoid specification of specific subnet, now it's gone :-D

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants