Skip to content

Commit 61c59fb

Browse files
Merge pull request #12900 from linode/vpc-ipv6-remaining
feat: [M3-9182] - `vpc-ipv6-remaining` feature branch → `staging`
2 parents 75f1830 + 239ff0b commit 61c59fb

File tree

54 files changed

+1506
-386
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1506
-386
lines changed

packages/manager/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
6363
- Cypress tests for Premium Plans and Horizontal Resizing ([#12854](https://github.com/linode/manager/pull/12854))
6464
- Cypress test flake in "events-fetching.spec.ts" ([#12875](https://github.com/linode/manager/pull/12875))
6565
- Update Cypress tests following LKE-E postLa feature flag enablement ([#12883](https://github.com/linode/manager/pull/12883))
66+
- Reflect 'Allow public IPv4 access (1:1 NAT)' copy change in E2E and unit tests related to Linode Create and networking flows ([#12885](https://github.com/linode/manager/pull/12885))
6667

6768
### Upcoming Features:
6869

@@ -81,6 +82,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
8182
- ACLP: Add `GlobalFilterGroupByRendererComponent` and `WidgetFilterGroupByRendererComponent` ([#12865](https://github.com/linode/manager/pull/12865))
8283
- Account scope support for ACLP-Alerting firewall dimension filters ([#12879](https://github.com/linode/manager/pull/12879))
8384
- Ability to edit tags on volume details page ([#12800](https://github.com/linode/manager/pull/12800))
85+
- Add VPC IPv6 support in Linode Create flow ([#12885](https://github.com/linode/manager/pull/12885))
86+
- Add VPC IPv6 support in the Linode Details page -> Network tab ([#12856](https://github.com/linode/manager/pull/12856))
8487

8588
## [2025-09-11] - v1.150.1
8689

packages/manager/cypress/e2e/core/cloudpulse/timerange-verification.spec.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,6 @@ describe('Integration tests for verifying Cloudpulse custom and preset configura
279279
cy.get(`[aria-label="${startHour} hours"]`).click();
280280
});
281281

282-
283282
cy.findByLabelText('Select minutes')
284283
.as('selectMinutes')
285284
.scrollIntoView({ duration: 500, easing: 'linear' });
@@ -288,7 +287,6 @@ describe('Integration tests for verifying Cloudpulse custom and preset configura
288287
cy.get(`[aria-label="${startMinute} minutes"]`).click();
289288
});
290289

291-
292290
cy.findByLabelText('Select meridiem')
293291
.as('startMeridiemSelect')
294292
.scrollIntoView();

packages/manager/cypress/e2e/core/linodes/create-linode-with-vpc.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ describe('Create Linode with VPCs (Legacy)', () => {
311311
.click();
312312

313313
// Check box to assign public IPv4.
314-
cy.findByText('Assign a public IPv4 address for this Linode')
314+
cy.findByText('Allow public IPv4 access (1:1 NAT)')
315315
.should('be.visible')
316316
.click();
317317

@@ -548,7 +548,7 @@ describe('Create Linode with VPCs (Linode Interfaces)', () => {
548548
* - Confirms that outgoing API request contains expected VPC interface data.
549549
* - Confirms newly assigned Linode does not have an unrecommended config notice inside VPC
550550
*/
551-
it('can assign existing VPCs during Linode Create flow (Linode Inteface)', () => {
551+
it('can assign existing VPCs during Linode Create flow (Linode Interface)', () => {
552552
const mockSubnet = subnetFactory.build({
553553
id: randomNumber(),
554554
ipv4: `${randomIp()}/0`,
@@ -820,7 +820,7 @@ describe('Create Linode with VPCs (Linode Interfaces)', () => {
820820
.click();
821821

822822
// Check box to assign public IPv4.
823-
cy.findByText('Assign a public IPv4 address for this Linode')
823+
cy.findByText('Allow public IPv4 access (1:1 NAT)')
824824
.should('be.visible')
825825
.click();
826826

@@ -1005,7 +1005,7 @@ describe('Create Linode with VPCs (Linode Interfaces)', () => {
10051005
.click();
10061006

10071007
// Check box to assign public IPv4.
1008-
cy.findByText('Assign a public IPv4 address for this Linode')
1008+
cy.findByText('Allow public IPv4 access (1:1 NAT)')
10091009
.should('be.visible')
10101010
.click();
10111011

packages/manager/cypress/e2e/core/linodes/linode-config.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ describe('Linode Config management', () => {
727727
/*
728728
* - Tests Linode config edit and VPC interface assignment UI flows using mock API data.
729729
* - When the user sets primary interface to eth0, sets eth0 to "Public Internet", and sets eth1 to "VPC", confirm that correct notice appears.
730-
* - When the user sets primary interface to eth0, sets eth0 to "Public Internet", sets eth1 to "VPC", and checks "Assign a public IPv4 address for this Linode", confirm that correct notice appears.
730+
* - When the user sets primary interface to eth0, sets eth0 to "Public Internet", sets eth1 to "VPC", and checks "Allow public IPv4 access (1:1 NAT)", confirm that correct notice appears.
731731
* - Confirms that "REBOOT NEEDED" status indicator appears upon creating VPC config.
732732
*/
733733
it('Creates a new config using non-recommended settings and confirm the informational notices', () => {
@@ -823,7 +823,7 @@ describe('Linode Config management', () => {
823823
cy.findByText(LINODE_UNREACHABLE_HELPER_TEXT).should('be.visible');
824824

825825
// Sets eth0 to "Public Internet", and sets eth1 to "VPC",
826-
// and checks "Assign a public IPv4 address for this Linode"
826+
// and checks "Allow public IPv4 access (1:1 NAT)"
827827
cy.get('[data-qa-textfield-label="VPC"]').scrollIntoView();
828828
cy.get('[data-qa-textfield-label="VPC"]').click();
829829
cy.focused().type(`${mockVPC.label}`);
@@ -840,7 +840,7 @@ describe('Linode Config management', () => {
840840
.findByTitle(`${mockSubnet.label} (${mockSubnet.ipv4})`)
841841
.should('be.visible')
842842
.click();
843-
cy.findByText('Assign a public IPv4 address for this Linode')
843+
cy.findByText('Allow public IPv4 access (1:1 NAT)')
844844
.should('be.visible')
845845
.click();
846846
// Confirm that internet access warning is displayed.

packages/manager/cypress/e2e/core/nodebalancers/nodebalancer-create-with-vpc.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { ui } from 'support/ui';
1414
import { randomIp, randomLabel, randomNumber } from 'support/util/random';
1515
import { chooseRegion } from 'support/util/regions';
1616

17-
import { subnetFactory, vpcFactory, vpcIPFactory } from 'src/factories';
17+
import { subnetFactory, vpcFactory, vpcIPv4Factory } from 'src/factories';
1818

1919
authenticate();
2020
describe('Create a NodeBalancer with VPCs', () => {
@@ -48,7 +48,7 @@ describe('Create a NodeBalancer with VPCs', () => {
4848
region: region.id,
4949
});
5050

51-
const mockLinodeVPCIPv4 = vpcIPFactory.build({
51+
const mockLinodeVPCIPv4 = vpcIPv4Factory.build({
5252
address: '10.0.0.2',
5353
vpc_id: mockVPC.id,
5454
subnet_id: mockSubnet.id,

packages/manager/src/components/SelectFirewallPanel/SelectFirewallPanel.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,10 @@ export const SelectFirewallPanel = (props: Props) => {
114114
value={selectedFirewall}
115115
/>
116116
<StyledLinkButtonBox>
117-
<LinkButton disabled={!permissions.create_firewall} onClick={handleCreateFirewallClick}>
117+
<LinkButton
118+
disabled={!permissions.create_firewall}
119+
onClick={handleCreateFirewallClick}
120+
>
118121
Create Firewall
119122
</LinkButton>
120123
</StyledLinkButtonBox>

packages/manager/src/factories/vpcs.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,46 @@ export const vpcFactory = Factory.Sync.makeFactory<VPC>({
1212
updated: '2023-07-12T16:08:53',
1313
});
1414

15-
export const vpcIPFactory = Factory.Sync.makeFactory<VPCIP>({
15+
export const vpcIPv4Factory = Factory.Sync.makeFactory<VPCIP>({
1616
active: true,
1717
address: '192.0.2.141',
1818
address_range: null,
1919
config_id: Factory.each((i) => i),
2020
gateway: '192.0.2.1',
2121
interface_id: Factory.each((i) => i),
22+
ipv6_addresses: [],
23+
ipv6_is_public: null,
24+
ipv6_range: null,
25+
linode_id: Factory.each((i) => i),
26+
nat_1_1: '192.0.2.97',
27+
nodebalancer_id: null,
28+
prefix: 24,
29+
region: 'us-east',
30+
subnet_id: Factory.each((i) => i),
31+
subnet_mask: '192.0.2.3',
32+
vpc_id: Factory.each((i) => i),
33+
});
34+
35+
export const vpcIPv6Factory = Factory.Sync.makeFactory<VPCIP>({
36+
active: true,
37+
address: null,
38+
address_range: null,
39+
config_id: Factory.each((i) => i),
40+
gateway: null,
41+
interface_id: Factory.each((i) => i),
2242
ipv6_addresses: [
2343
{
2444
slaac_address: '2001:DB8::0000',
2545
},
2646
],
2747
ipv6_is_public: null,
28-
ipv6_range: null,
48+
ipv6_range: '2600:3c11:e41c:1::/64',
2949
linode_id: Factory.each((i) => i),
30-
nat_1_1: '192.0.2.97',
50+
nat_1_1: '',
3151
nodebalancer_id: null,
3252
prefix: 24,
3353
region: 'us-east',
3454
subnet_id: Factory.each((i) => i),
35-
subnet_mask: '192.0.2.3',
55+
subnet_mask: '',
3656
vpc_id: Factory.each((i) => i),
3757
});

packages/manager/src/features/CloudPulse/Alerts/CreateAlert/Criteria/DimensionFilterValue/utils.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ describe('Utils', () => {
122122
];
123123

124124
it('should return matched resources by entity IDs', () => {
125-
expect(getFilteredFirewallParentEntities(resources, ['1'])).toEqual(['a']);
125+
expect(getFilteredFirewallParentEntities(resources, ['1'])).toEqual([
126+
'a',
127+
]);
126128
});
127129

128130
it('should return empty array if no match', () => {
@@ -131,7 +133,9 @@ describe('Utils', () => {
131133

132134
it('should handle undefined inputs', () => {
133135
expect(getFilteredFirewallParentEntities(undefined, ['1'])).toEqual([]);
134-
expect(getFilteredFirewallParentEntities(resources, undefined)).toEqual([]);
136+
expect(getFilteredFirewallParentEntities(resources, undefined)).toEqual(
137+
[]
138+
);
135139
});
136140
});
137141

0 commit comments

Comments
 (0)