upcoming: [M3-9981] – Add support for VPC IPv6 in the Assign/Unassign Linodes drawers - #12778
Conversation
…s and update instances where they are used
…d(), small copy changes
…drawer; add VPC IPv6 input and IPv6 range support; update recently assigned/unassigned table and downloadable CSVs to have new IPv6 columns
…drawer; add VPC IPv6 input and IPv6 range support; update recently assigned/unassigned table and downloadable CSVs to have new IPv6 columns
| message: 'Must be a /64 IPv6 network CIDR', | ||
| test: (value) => validateIPv6PrefixLengthIs64(value), | ||
| }), | ||
| address: string().required(), |
There was a problem hiding this comment.
Per the API spec, this is a read-only field, so I removed it from the schema.
|
|
||
| export interface IPv6SLAAC { | ||
| address: string; | ||
| address?: string; |
There was a problem hiding this comment.
read-only field only present in data returned from the API
There was a problem hiding this comment.
Looks good @dwiley-akamai - just noticed this tooltip has extra left-margin that the others don't have

Otherwise, it preformed as I expected.
hana-akamai
left a comment
There was a problem hiding this comment.
Can we tighten the spacing up a bit for the Assign additional IP ranges section?
Looks like there are some minor loading state issues for unassigning a linode:
- No loading state while interface data is loading in the drawer leading to UI jumping after data loads
- There is no loading state for the Assign/Unassign buttons in the drawer so after clicking, it doesn't seem like anything is happening for 1-2s
- The SubnetLinodeRow briefly flickers with
Error retrieving VPC IPv4/6while unassigning
Screen.Recording.2025-09-03.at.2.05.15.PM.mov
…just spacing in IP ranges section; make use of useVPCDualStack() hook; add loading state for Assign/Unassign buttons
@hana-akamai The most recent commit tightens up the spacing: I also added loading states for the Assign/Unassign buttons when the form is being submitted. The UI jump and brief flicker are existing issues from what I can see as I observed them in prod as well -- we can create a separate ticket to look into those |
…e Auto-assign checkboxes for IPv4 and IPv6, validation: allow empty string value for nat_1_1 in ipv4ConfigInterface
…e Auto-assign checkboxes for IPv4 and IPv6, validation: allow empty string value for nat_1_1 in ipv4ConfigInterface, resolve conflicts
3b3676f to
77b2b8d
Compare
hana-akamai
left a comment
There was a problem hiding this comment.
Functionality LGTM. Confirmed auto-assign checkboxes, IPv6 functionality, tooltips, CSVs
Scope 🚢
Upon production release, changes in this PR will be visible to:
No customers / Not applicable
Nit: The Public access section with 1:1 NAT checkbox is something new that will be visible to customers with the VPC IPV6 feature flag off
Thanks @hana-akamai, forgot to update the PR description. We did determine last week that visibility was fine without the feature flag on |
Cloud Manager UI test results🎉 745 passing tests on test run #14 ↗︎
|

Description 📝
Update the Assign Linodes & Unassign Linodes drawers to support VPC IPv6 and display the relevant information
Changes 🔄
Public accesssectiongenerateVPCIPv6InputHelperTextfunction added with test coverageScope 🚢
Upon production release, changes in this PR will be visible to:
Target release date 🗓️
9/23/25
Preview 📷
How to test 🧪
Prerequisites
Ensure the
vpc-ipv6tag is on your account and theVPC IPv6feature flag is enabled in our Dev Tool. You can point to DevCloud or prod (in which case you should use the Oslo region).Verification steps
Public accesssection with 1:1 NAT checkbox should be presentWith the feature flag off, not having the "VPC Dual Stack" account capability, or using a VPC/subnet that only has VPC IPv4, you should never see the
ipv6object in the assignment payload.vpc.ipv4.addresses[0].address==="auto"vpc.ipv4.addresses[0].address=== whatever VPC IPv4 you inputvpc.ipv6.slaac[0].range==="auto"vpc.ipv6.slaac[0].range=== whatever VPC IPv6 you inputnat_1_1_address: "auto"(if linode you're assigning uses Linode Interfaces) ornat_1_1: "any"(legacy interfaces)nat_1_1_address: null(Linode Interfaces) ornat_1_1:''(legacy interfaces)vpc.ipv6.is_public: truevpc.ipv6.is_public: falseAuthor Checklists
As an Author, to speed up the review process, I considered 🤔
👀 Doing a self review
❔ Our contribution guidelines
🤏 Splitting feature into small PRs
➕ Adding a changeset
🧪 Providing/improving test coverage
🔐 Removing all sensitive information from the code and PR description
🚩 Using a feature flag to protect the release
👣 Providing comprehensive reproduction steps
📑 Providing or updating our documentation
🕛 Scheduling a pair reviewing session
📱 Providing mobile support
♿ Providing accessibility support
As an Author, before moving this PR from Draft to Open, I confirmed ✅