From bb53f1b200e88fab14bb211ce4280222f45901f0 Mon Sep 17 00:00:00 2001 From: Charlie Park Date: Thu, 15 Aug 2024 00:53:45 -0500 Subject: [PATCH] Refactor Router deletion process (#2371) * Update message on Router deletion to warn about routes; disable system router deletion --------- Co-authored-by: David Crespo --- app/forms/vpc-router-route/shared.tsx | 4 +++- app/pages/project/vpcs/VpcPage/tabs/VpcRoutersTab.tsx | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/forms/vpc-router-route/shared.tsx b/app/forms/vpc-router-route/shared.tsx index 0063aa954..ce528052f 100644 --- a/app/forms/vpc-router-route/shared.tsx +++ b/app/forms/vpc-router-route/shared.tsx @@ -65,7 +65,9 @@ export const routeFormMessage = { // https://github.com/oxidecomputer/omicron/blob/914f5fd7d51f9b060dcc0382a30b607e25df49b2/nexus/src/app/vpc_router.rs#L201-L204 noNewRoutesOnSystemRouter: 'User-provided routes cannot be added to a system router', // https://github.com/oxidecomputer/omicron/blob/914f5fd7d51f9b060dcc0382a30b607e25df49b2/nexus/src/app/vpc_router.rs#L300-L304 - noDeletingRoutesOnSystemRouter: 'System routes can not be deleted', + noDeletingRoutesOnSystemRouter: 'System routes cannot be deleted', + // https://github.com/oxidecomputer/omicron/blob/914f5fd7d51f9b060dcc0382a30b607e25df49b2/nexus/src/app/vpc_router.rs#L136-L138 + noDeletingSystemRouters: 'System routers cannot be deleted', } export const targetValueDescription = (targetType: RouteTarget['type']) => diff --git a/app/pages/project/vpcs/VpcPage/tabs/VpcRoutersTab.tsx b/app/pages/project/vpcs/VpcPage/tabs/VpcRoutersTab.tsx index bc8d98c66..06c6b37ff 100644 --- a/app/pages/project/vpcs/VpcPage/tabs/VpcRoutersTab.tsx +++ b/app/pages/project/vpcs/VpcPage/tabs/VpcRoutersTab.tsx @@ -11,6 +11,7 @@ import { Outlet, useNavigate, type LoaderFunctionArgs } from 'react-router-dom' import { apiQueryClient, useApiMutation, type VpcRouter } from '@oxide/api' +import { routeFormMessage } from '~/forms/vpc-router-route/shared' import { getVpcSelector, useVpcSelector } from '~/hooks' import { confirmDelete } from '~/stores/confirm-delete' import { addToast } from '~/stores/toast' @@ -84,14 +85,17 @@ export function VpcRoutersTab() { }, { label: 'Delete', + className: 'destructive', onActivate: confirmDelete({ doDelete: () => deleteRouter.mutateAsync({ path: { router: router.name }, query: { project, vpc }, }), + extraContent: 'This will also delete any routes belonging to this router.', label: router.name, }), + disabled: router.kind === 'system' && routeFormMessage.noDeletingSystemRouters, }, ], [deleteRouter, project, vpc, navigate]