Skip to content

Conversation

@komer3
Copy link
Contributor

@komer3 komer3 commented Dec 1, 2025

  • Add FrontendAddressType and FrontendVPCSubnetID fields to NodeBalancer struct
  • Add FrontendVPCs field to NodeBalancerCreateOptions struct
  • Add clarifying comment to IPv4RangeAutoAssign field in NodeBalancerVPCOptions

📝 Description

What does this PR do and why is this change necessary?

✔️ How to Test

What are the steps to reproduce the issue or verify the changes?

How do I run the relevant unit/integration tests?

📷 Preview

If applicable, include a screenshot or code snippet of this change. Otherwise, please remove this section.

- Add `FrontendAddressType` and `FrontendVPCSubnetID` fields to `NodeBalancer` struct
- Add `FrontendVPCs` field to `NodeBalancerCreateOptions` struct
- Add clarifying comment to `IPv4RangeAutoAssign` field in `NodeBalancerVPCOptions`
@komer3 komer3 marked this pull request as ready for review December 15, 2025 20:56
@komer3 komer3 requested a review from a team as a code owner December 15, 2025 20:56
@komer3 komer3 requested review from Copilot, yec-akamai and zliang-akamai and removed request for a team December 15, 2025 20:56
Copy link
Contributor

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 adds support for frontend VPC configuration to NodeBalancers, enabling VPC-based frontend addressing alongside the existing backend VPC support. The changes introduce new fields to track frontend VPC subnet information and allow frontend VPC specification during NodeBalancer creation.

Key changes:

  • Added FrontendAddressType and FrontendVPCSubnetID fields to track frontend VPC configuration
  • Added FrontendVPCs option to enable frontend VPC specification during creation
  • Clarified that IPv4RangeAutoAssign applies only to backend VPC configuration

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

Comment on lines +25 to +26
// Frontend address type (e.g., "vpc")
FrontendAddressType *string `json:"frontend_address_type,omitempty"`
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

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

The comment should specify what valid values are accepted for FrontendAddressType beyond the example 'vpc'. Consider documenting all possible values or using a constant/enum type to make valid options explicit.

Copilot uses AI. Check for mistakes.
Comment on lines +62 to +63
// IPv4RangeAutoAssign is only used for backend VPC configuration.
// For frontend VPCs, this field is ignored.
Copy link

Copilot AI Dec 15, 2025

Choose a reason for hiding this comment

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

This comment creates ambiguity since NodeBalancerVPCOptions is now used for both VPCs (line 80) and FrontendVPCs (line 81). The behavior of IPv4RangeAutoAssign should be clarified based on context of use rather than stating it's 'ignored' for frontend VPCs, as the same struct is used in both contexts.

Suggested change
// IPv4RangeAutoAssign is only used for backend VPC configuration.
// For frontend VPCs, this field is ignored.
// IPv4RangeAutoAssign is only used when NodeBalancerVPCOptions is provided as part of the VPCs field (backend VPC configuration) in NodeBalancerCreateOptions.
// When used in the FrontendVPCs field (frontend VPC configuration), this field is ignored.

Copilot uses AI. Check for mistakes.
Comment on lines -49 to +55
Out *float64 `json:"out"`
// The total outbound transfer, in MB, used for this NodeBalancer this month.
In *float64 `json:"in"`
// The total outbound transfer, in MB, used for this NodeBalancer this month.
Out *float64 `json:"out"`

Choose a reason for hiding this comment

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

good catch

Tags []string `json:"tags"`
FirewallID int `json:"firewall_id,omitempty"`
Type NodeBalancerPlanType `json:"type,omitempty"`
VPCs []NodeBalancerVPCOptions `json:"vpcs,omitempty"`

Choose a reason for hiding this comment

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

Thoughts on adding a new BackendVPCs field and marking the VPCs field as deprecated in favor of the BackendVPCs field?

IPv4 *string `json:"ipv4"`
// This NodeBalancer's public IPv6 address.
IPv6 *string `json:"ipv6"`
// Frontend address type (e.g., "vpc")
Copy link

@AshleyDumaine AshleyDumaine Dec 16, 2025

Choose a reason for hiding this comment

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

Is vpc the only supported type currently / are do we expect other types to be needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

AFAIK, vpc is the only one right now. May others will be introduced in future

// Frontend address type (e.g., "vpc")
FrontendAddressType *string `json:"frontend_address_type,omitempty"`
// Frontend VPC subnet ID when using VPC addressing
FrontendVPCSubnetID *int `json:"frontend_vpc_subnet_id,omitempty"`

Choose a reason for hiding this comment

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

I know this PR is for adding frontendVPC support, but why don't we already have (Backend)VPC fields?

Choose a reason for hiding this comment

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

Also, I didn't see this field used in your CCM PR, is this field necessary?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

These field a primarily used for returned response body!

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.

2 participants