diff --git a/packages/api-v4/src/aglb/types.ts b/packages/api-v4/src/aglb/types.ts
index c6a416f7a2f..7dcae7df052 100644
--- a/packages/api-v4/src/aglb/types.ts
+++ b/packages/api-v4/src/aglb/types.ts
@@ -131,7 +131,7 @@ export interface RuleCreatePayload {
}
export interface MatchCondition {
- hostname: string;
+ hostname: string | null;
match_field: MatchField;
match_value: string;
session_stickiness_cookie: string | null;
@@ -159,8 +159,8 @@ interface HealthCheck {
timeout: number;
unhealthy_threshold: number;
healthy_threshold: number;
- path: string;
- host: string;
+ path?: string | null;
+ host?: string | null;
}
export interface ServiceTarget extends ServiceTargetPayload {
@@ -169,7 +169,7 @@ export interface ServiceTarget extends ServiceTargetPayload {
export interface Endpoint {
ip: string;
- host?: string;
+ host?: string | null;
port: number;
rate_capacity: number;
}
diff --git a/packages/manager/.changeset/pr-9954-fixed-1701698397297.md b/packages/manager/.changeset/pr-9954-fixed-1701698397297.md
new file mode 100644
index 00000000000..0bda884c125
--- /dev/null
+++ b/packages/manager/.changeset/pr-9954-fixed-1701698397297.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Fixed
+---
+
+`TableCell` styling for `ActionMenu`s ([#9954](https://github.com/linode/manager/pull/9954))
diff --git a/packages/manager/.changeset/pr-9954-upcoming-features-1701698414248.md b/packages/manager/.changeset/pr-9954-upcoming-features-1701698414248.md
new file mode 100644
index 00000000000..0cf3ef7f731
--- /dev/null
+++ b/packages/manager/.changeset/pr-9954-upcoming-features-1701698414248.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Upcoming Features
+---
+
+AGLB copy changes and improvments ([#9954](https://github.com/linode/manager/pull/9954))
diff --git a/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-landing-page.spec.ts b/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-landing-page.spec.ts
index 87cec38587f..b7be9ae8955 100644
--- a/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-landing-page.spec.ts
+++ b/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-landing-page.spec.ts
@@ -72,14 +72,14 @@ describe('Akamai Global Load Balancer landing page', () => {
.should('be.visible')
.closest('tr')
.within(() => {
- // Confirm that regions are listed for load balancer.
- loadbalancerMock.regions.forEach((loadbalancerRegion: string) => {
- const regionLabel = getRegionById(loadbalancerRegion).label;
- cy.findByText(regionLabel, { exact: false }).should('be.visible');
- cy.findByText(loadbalancerRegion, { exact: false }).should(
- 'be.visible'
- );
- });
+ // TODO: AGLB - Confirm that regions from the API are listed for load balancer
+ // loadbalancerMock.regions.forEach((loadbalancerRegion: string) => {
+ // const regionLabel = getRegionById(loadbalancerRegion).label;
+ // cy.findByText(regionLabel, { exact: false }).should('be.visible');
+ // cy.findByText(loadbalancerRegion, { exact: false }).should(
+ // 'be.visible'
+ // );
+ // });
cy.findByText(loadbalancerMock.hostname).should('be.visible');
@@ -94,14 +94,14 @@ describe('Akamai Global Load Balancer landing page', () => {
.should('be.visible')
.closest('tr')
.within(() => {
- // Confirm that regions are listed for load balancer.
- loadbalancerMock.regions.forEach((loadbalancerRegion: string) => {
- const regionLabel = getRegionById(loadbalancerRegion).label;
- cy.findByText(regionLabel, { exact: false }).should('be.visible');
- cy.findByText(loadbalancerRegion, { exact: false }).should(
- 'be.visible'
- );
- });
+ // TODO: AGLB - Confirm that regions from the API are listed for load balancer
+ // loadbalancerMock.regions.forEach((loadbalancerRegion: string) => {
+ // const regionLabel = getRegionById(loadbalancerRegion).label;
+ // cy.findByText(regionLabel, { exact: false }).should('be.visible');
+ // cy.findByText(loadbalancerRegion, { exact: false }).should(
+ // 'be.visible'
+ // );
+ // });
ui.actionMenu
.findByTitle(
diff --git a/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-routes.spec.ts b/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-routes.spec.ts
index 8b6309f18d6..890c89f7066 100644
--- a/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-routes.spec.ts
+++ b/packages/manager/cypress/e2e/core/loadBalancers/load-balancer-routes.spec.ts
@@ -539,7 +539,7 @@ describe('Akamai Global Load Balancer routes page', () => {
.findByTitle('Edit Rule')
.should('be.visible')
.within(() => {
- cy.findByLabelText('Hostname')
+ cy.findByLabelText('Hostname (optional)')
.should('have.value', routes[0].rules[0].match_condition.hostname)
.clear()
.type('example.com');
diff --git a/packages/manager/src/components/TableCell/TableCell.tsx b/packages/manager/src/components/TableCell/TableCell.tsx
index bbcd7d7487e..159b10fcdde 100644
--- a/packages/manager/src/components/TableCell/TableCell.tsx
+++ b/packages/manager/src/components/TableCell/TableCell.tsx
@@ -10,14 +10,7 @@ import { TooltipIcon } from 'src/components/TooltipIcon';
const useStyles = makeStyles()((theme: Theme) => ({
actionCell: {
- // Prevents Safari from adding margins to the ActionMenu button
- '& > button': {
- margin: 0,
- },
- alignItems: 'center',
- display: 'flex',
- justifyContent: 'flex-end',
- padding: 0,
+ textAlign: 'right',
},
center: {
'&:last-child': {
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/ConfigurationDetails.tsx b/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/ConfigurationDetails.tsx
index 5db9413b6e3..daad8310f82 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/ConfigurationDetails.tsx
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/ConfigurationDetails.tsx
@@ -81,15 +81,16 @@ export const ConfigurationDetails = ({ index, name }: Props) => {
- ({
- marginLeft: '0 !important',
- marginRight: `${theme.spacing(1 / 2)} !important`,
- })}
- />
+ ({
+ marginLeft: '0 !important',
+ marginRight: theme.spacing(),
+ })}
+ component="span"
+ />
After the load balancer is created, and if the protocol is HTTPS,
- upload TLS termination certificates.
+ upload TLS termination certificates.{' '}
Learn more.
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/LoadBalancerRegions.tsx b/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/LoadBalancerRegions.tsx
index d1722ceda96..bdf4339f703 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/LoadBalancerRegions.tsx
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerCreate/LoadBalancerRegions.tsx
@@ -17,9 +17,12 @@ export const LoadBalancerRegions = () => {
Where this Load Balancer instance will be deployed.
- Load Balancers will
- be automatically provisioned in these 5 Regions. No charges with be
- incurred.
+
+ Load Balancers will be automatically provisioned in these 5 Regions.
+ No charges with be incurred.
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/CreateCertificateDrawer.tsx b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/CreateCertificateDrawer.tsx
index 7ad54c050e8..a1e04d70220 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/CreateCertificateDrawer.tsx
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/CreateCertificateDrawer.tsx
@@ -14,6 +14,7 @@ import {
CERTIFICATES_COPY,
exampleCert,
exampleKey,
+ initialValues,
labelMap,
titleMap,
} from './constants';
@@ -44,12 +45,7 @@ export const CreateCertificateDrawer = (props: Props) => {
const formik = useFormik({
enableReinitialize: true,
- initialValues: {
- certificate: '',
- key: '',
- label: '',
- type,
- },
+ initialValues: initialValues[type],
async onSubmit(values) {
try {
await createCertificate(values);
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/constants.ts b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/constants.ts
index b56aa642b9a..e1c6d48d616 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/constants.ts
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/constants.ts
@@ -1,5 +1,19 @@
import type { Certificate } from '@linode/api-v4';
+export const initialValues = {
+ ca: {
+ certificate: '',
+ label: '',
+ type: 'ca',
+ },
+ downstream: {
+ certificate: '',
+ key: '',
+ label: '',
+ type: 'downstream',
+ },
+} as const;
+
export const CERTIFICATES_COPY = {
Create: {
ca:
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/index.tsx b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/index.tsx
index 3d59c93eb9c..fa7ab4db202 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/index.tsx
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Certificates/index.tsx
@@ -38,7 +38,7 @@ export const LoadBalancerCertificates = () => {
Upload certificates to your Load Balancer for use across your
Configurations and Service Targets.
-
+ null}>
({ ...t, routeName: `${url}/${t.path}` }))}
/>
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/LoadBalancerSummary.tsx b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/LoadBalancerSummary.tsx
index 281f4d35606..5899ffb2c63 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/LoadBalancerSummary.tsx
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/LoadBalancerSummary.tsx
@@ -3,13 +3,14 @@ import React from 'react';
import { useParams } from 'react-router-dom';
import { Paper } from 'src/components/Paper';
+import { Stack } from 'src/components/Stack';
import { Typography } from 'src/components/Typography';
import { IPAddress } from 'src/features/Linodes/LinodesLanding/IPAddress';
import { useLoadBalancerQuery } from 'src/queries/aglb/loadbalancers';
-import { useRegionsQuery } from 'src/queries/regions';
+// import { useRegionsQuery } from 'src/queries/regions';
import { Ports } from '../LoadBalancerLanding/Ports';
-import { Stack } from 'src/components/Stack';
+import { LoadBalancerRegions } from './LoadBalancerRegions';
export const LoadBalancerSummary = () => {
const { loadbalancerId } = useParams<{ loadbalancerId: string }>();
@@ -17,12 +18,20 @@ export const LoadBalancerSummary = () => {
const id = Number(loadbalancerId);
const { data: loadbalancer } = useLoadBalancerQuery(id);
- const { data: regions } = useRegionsQuery();
+ // const { data: regions } = useRegionsQuery();
const items = [
{
title: 'Hostname',
- value: ,
+ value: loadbalancer?.hostname ? (
+
+ ) : (
+ None
+ ),
+ },
+ {
+ title: 'Load Balancer ID',
+ value: {loadbalancer?.id},
},
{
title: 'Ports',
@@ -30,17 +39,15 @@ export const LoadBalancerSummary = () => {
},
{
title: 'Regions',
- value: (
-
- {loadbalancer?.regions
- .map((region) => regions?.find((r) => r.id === region)?.label)
- .join(', ')}
-
- ),
- },
- {
- title: 'Load Balancer ID',
- value: {loadbalancer?.id},
+ value: ,
+ // Uncomment the line below to show the regions returned by the API.
+ // value: (
+ //
+ // {loadbalancer?.regions
+ // .map((region) => regions?.find((r) => r.id === region)?.label)
+ // .join(', ')}
+ //
+ // ),
},
];
@@ -50,7 +57,7 @@ export const LoadBalancerSummary = () => {
{items.map(({ title, value }) => (
-
+
{title}
{value}
diff --git a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Routes/CreateRouteDrawer.tsx b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Routes/CreateRouteDrawer.tsx
index 99a82d43fbb..6471e71731e 100644
--- a/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Routes/CreateRouteDrawer.tsx
+++ b/packages/manager/src/features/LoadBalancers/LoadBalancerDetail/Routes/CreateRouteDrawer.tsx
@@ -61,7 +61,9 @@ export const CreateRouteDrawer = (props: Props) => {
return (