Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/api-v4": Changed
---

UIE-9888: Added new fields in NodeBalancer details object and NodeBalancerVPC object as per API changes ([#13394](https://github.com/linode/manager/pull/13394))
5 changes: 4 additions & 1 deletion packages/api-v4/src/nodebalancers/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type UDPStickiness = 'none' | 'session' | 'source_ip';

export type Stickiness = TCPStickiness | UDPStickiness;

type NodeBalancerType = 'common' | 'premium';
type NodeBalancerType = 'common' | 'premium' | 'premium_40GB';

export interface LKEClusterInfo {
id: number;
Expand All @@ -33,6 +33,8 @@ export interface NodeBalancer {
*/
client_udp_sess_throttle?: number;
created: string;
frontend_address_type: 'public' | 'vpc';
frontend_vpc_subnet_id: null | number;
hostname: string;
id: number;
ipv4: string;
Expand Down Expand Up @@ -145,6 +147,7 @@ export interface NodeBalancerVpcConfig {
ipv4_range: null | string;
ipv6_range: null | string;
nodebalancer_id: number;
purpose: 'backend' | 'frontend';
subnet_id: number;
vpc_id: number;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@linode/manager": Changed
---

UIE-9888: Display front end IP and backend VPCs for Nodebalancer ([#13394](https://github.com/linode/manager/pull/13394))
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {
nodeBalancerConfigFactory,
nodeBalancerConfigVPCFactory,
nodeBalancerFactory,
nodeBalancerVPCFactory,
} from '@linode/utilities';
import { waitFor } from '@testing-library/react';
import * as React from 'react';
Expand Down Expand Up @@ -51,8 +51,8 @@
};
});

const nodeBalancerDetails = 'NodeBalancer Details';
const nbVpcConfig = nodeBalancerConfigVPCFactory.build();
const nodeBalancerDetails = 'Details';
const nbVpcConfig = nodeBalancerVPCFactory.build();

describe('SummaryPanel', () => {
beforeEach(() => {
Expand Down Expand Up @@ -110,8 +110,8 @@
expect(getByText('Host Name:')).toBeVisible();
expect(getByText('example.com')).toBeVisible();
expect(getByText('Region:')).toBeVisible();
// Type should not display for non-premium NBs
expect(queryByText('Type:')).not.toBeInTheDocument();
// Type should be visible and default to Basic since the NB is not premium
expect(getByText('Basic')).toBeVisible();
// Cluster should not display for if the NB is not associated with LKE or LKE-E
expect(queryByText('Cluster:')).not.toBeInTheDocument();

Expand All @@ -120,11 +120,11 @@
expect(getByText('mock-firewall-1')).toBeVisible();

// IP Address panel
expect(getByText('IP Addresses')).toBeVisible();
expect(getByText('Frontend Configuration')).toBeVisible();
expect(getByText('0.0.0.0')).toBeVisible();

// VPC Details Panel
expect(getByText('VPC')).toBeVisible();
expect(getByText('Backend Configuration - VPC')).toBeVisible();
expect(getByText('Subnets:')).toBeVisible();
expect(getByText(`${nbVpcConfig.ipv4_range}`)).toBeVisible();

Expand All @@ -133,6 +133,18 @@
expect(getByText('Add a tag')).toBeVisible();
});

it('displays type: Basic if the nodebalancer is non premium', () => {
queryMocks.useNodeBalancerQuery.mockReturnValue({
data: nodeBalancerFactory.build({ type: 'common' }),
});

const { container } = renderWithTheme(<SummaryPanel />);

expect(container.querySelector('[data-qa-type]')).toHaveTextContent(

Check warning on line 143 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerSummary/SummaryPanel.test.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Define a constant instead of duplicating this literal 3 times. Raw Output: {"ruleId":"sonarjs/no-duplicate-string","severity":1,"message":"Define a constant instead of duplicating this literal 3 times.","line":143,"column":36,"nodeType":"Literal","endLine":143,"endColumn":52}

Check warning on line 143 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerSummary/SummaryPanel.test.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Avoid direct Node access. Prefer using the methods from Testing Library. Raw Output: {"ruleId":"testing-library/no-node-access","severity":1,"message":"Avoid direct Node access. Prefer using the methods from Testing Library.","line":143,"column":22,"nodeType":"MemberExpression","messageId":"noNodeAccess"}

Check warning on line 143 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerSummary/SummaryPanel.test.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Avoid using container methods. Prefer using the methods from Testing Library, such as "getByRole()" Raw Output: {"ruleId":"testing-library/no-container","severity":1,"message":"Avoid using container methods. Prefer using the methods from Testing Library, such as \"getByRole()\"","line":143,"column":12,"nodeType":"MemberExpression","messageId":"noContainer","endLine":143,"endColumn":35}
'Type: Basic'
);
});

it('displays type: premium if the nodebalancer is premium', () => {
queryMocks.useNodeBalancerQuery.mockReturnValue({
data: nodeBalancerFactory.build({ type: 'premium' }),
Expand All @@ -145,6 +157,18 @@
);
});

it('displays type: Enterprise if the nodebalancer is premium_40GB', () => {
queryMocks.useNodeBalancerQuery.mockReturnValue({
data: nodeBalancerFactory.build({ type: 'premium_40GB' }),
});

const { container } = renderWithTheme(<SummaryPanel />);

expect(container.querySelector('[data-qa-type]')).toHaveTextContent(

Check warning on line 167 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerSummary/SummaryPanel.test.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Avoid direct Node access. Prefer using the methods from Testing Library. Raw Output: {"ruleId":"testing-library/no-node-access","severity":1,"message":"Avoid direct Node access. Prefer using the methods from Testing Library.","line":167,"column":22,"nodeType":"MemberExpression","messageId":"noNodeAccess"}

Check warning on line 167 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerSummary/SummaryPanel.test.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Avoid using container methods. Prefer using the methods from Testing Library, such as "getByRole()" Raw Output: {"ruleId":"testing-library/no-container","severity":1,"message":"Avoid using container methods. Prefer using the methods from Testing Library, such as \"getByRole()\"","line":167,"column":12,"nodeType":"MemberExpression","messageId":"noContainer","endLine":167,"endColumn":35}
'Type: Enterprise'
);
});

it('displays link to cluster if it exists', () => {
queryMocks.useNodeBalancerQuery.mockReturnValue({
data: nodeBalancerFactory.build({
Expand Down
Loading