From 17185ccef8e5d700addcdb9c1a5544958cbdb6b4 Mon Sep 17 00:00:00 2001 From: mpolotsk-akamai <157619599+mpolotsk-akamai@users.noreply.github.com> Date: Mon, 3 Feb 2025 20:08:59 +0100 Subject: [PATCH] feat: [UIE-8372] - database migration event notification (#11590) * feat: [UIE-8372] - database migration event notification * Added changeset: new Database status for migration event * Added changeset: Database status display and new event notification for database migration --- .../.changeset/pr-11590-added-1738256458071.md | 5 +++++ packages/api-v4/src/account/types.ts | 1 + packages/api-v4/src/databases/types.ts | 2 ++ .../.changeset/pr-11590-added-1738256866553.md | 5 +++++ packages/manager/src/factories/databases.ts | 2 ++ .../DatabaseDetail/DatabaseStatusDisplay.tsx | 2 ++ .../Databases/DatabaseLanding/DatabaseRow.tsx | 5 ++++- .../src/features/Events/factories/database.tsx | 14 ++++++++++++++ packages/manager/src/mocks/serverHandlers.ts | 14 ++++++++++++++ 9 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 packages/api-v4/.changeset/pr-11590-added-1738256458071.md create mode 100644 packages/manager/.changeset/pr-11590-added-1738256866553.md diff --git a/packages/api-v4/.changeset/pr-11590-added-1738256458071.md b/packages/api-v4/.changeset/pr-11590-added-1738256458071.md new file mode 100644 index 00000000000..09140b82c58 --- /dev/null +++ b/packages/api-v4/.changeset/pr-11590-added-1738256458071.md @@ -0,0 +1,5 @@ +--- +"@linode/api-v4": Added +--- + +New database statuses for database_migration event ([#11590](https://github.com/linode/manager/pull/11590)) diff --git a/packages/api-v4/src/account/types.ts b/packages/api-v4/src/account/types.ts index 57855e0da78..ab7a9f001cb 100644 --- a/packages/api-v4/src/account/types.ts +++ b/packages/api-v4/src/account/types.ts @@ -331,6 +331,7 @@ export const EventActionKeys = [ 'database_scale', 'database_update_failed', 'database_update', + 'database_migrate', 'database_upgrade', 'disk_create', 'disk_delete', diff --git a/packages/api-v4/src/databases/types.ts b/packages/api-v4/src/databases/types.ts index 711dbb3aec3..72b0b03bc8d 100644 --- a/packages/api-v4/src/databases/types.ts +++ b/packages/api-v4/src/databases/types.ts @@ -33,6 +33,8 @@ export type DatabaseStatus = | 'active' | 'degraded' | 'failed' + | 'migrating' + | 'migrated' | 'provisioning' | 'resizing' | 'restoring' diff --git a/packages/manager/.changeset/pr-11590-added-1738256866553.md b/packages/manager/.changeset/pr-11590-added-1738256866553.md new file mode 100644 index 00000000000..af140678914 --- /dev/null +++ b/packages/manager/.changeset/pr-11590-added-1738256866553.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Added +--- + +Database status display and event notifications for database migration ([#11590](https://github.com/linode/manager/pull/11590)) diff --git a/packages/manager/src/factories/databases.ts b/packages/manager/src/factories/databases.ts index 715007bb1ef..35376a722a1 100644 --- a/packages/manager/src/factories/databases.ts +++ b/packages/manager/src/factories/databases.ts @@ -20,6 +20,8 @@ export const possibleStatuses: DatabaseStatus[] = [ 'active', 'degraded', 'failed', + 'migrating', + 'migrated', 'provisioning', 'resizing', 'restoring', diff --git a/packages/manager/src/features/Databases/DatabaseDetail/DatabaseStatusDisplay.tsx b/packages/manager/src/features/Databases/DatabaseDetail/DatabaseStatusDisplay.tsx index 5801fa42f61..204acfd1925 100644 --- a/packages/manager/src/features/Databases/DatabaseDetail/DatabaseStatusDisplay.tsx +++ b/packages/manager/src/features/Databases/DatabaseDetail/DatabaseStatusDisplay.tsx @@ -16,6 +16,8 @@ export const databaseStatusMap: Record = { active: 'active', degraded: 'inactive', failed: 'error', + migrated: 'inactive', + migrating: 'other', provisioning: 'other', resizing: 'other', restoring: 'other', diff --git a/packages/manager/src/features/Databases/DatabaseLanding/DatabaseRow.tsx b/packages/manager/src/features/Databases/DatabaseLanding/DatabaseRow.tsx index 2502c09d094..6506848b73a 100644 --- a/packages/manager/src/features/Databases/DatabaseLanding/DatabaseRow.tsx +++ b/packages/manager/src/features/Databases/DatabaseLanding/DatabaseRow.tsx @@ -63,7 +63,10 @@ export const DatabaseRow = ({ const formattedPlan = plan && formatStorageUnits(plan.label); const actualRegion = regions?.find((r) => r.id === region); const isLinkInactive = - status === 'suspended' || status === 'suspending' || status === 'resuming'; + status === 'suspended' || + status === 'suspending' || + status === 'resuming' || + status === 'migrated'; const { isDatabasesV2GA } = useIsDatabasesEnabled(); const configuration = diff --git a/packages/manager/src/features/Events/factories/database.tsx b/packages/manager/src/features/Events/factories/database.tsx index b34114cc9e8..94410f0e512 100644 --- a/packages/manager/src/features/Events/factories/database.tsx +++ b/packages/manager/src/features/Events/factories/database.tsx @@ -106,6 +106,20 @@ export const database: PartialEventMap<'database'> = { ), }, + database_migrate: { + finished: (e) => ( + <> + Database migration{' '} + completed. + + ), + started: (e) => ( + <> + Database migration{' '} + in progress. + + ), + }, database_resize: { failed: (e) => ( <> diff --git a/packages/manager/src/mocks/serverHandlers.ts b/packages/manager/src/mocks/serverHandlers.ts index 1d520b1a12c..0700354f257 100644 --- a/packages/manager/src/mocks/serverHandlers.ts +++ b/packages/manager/src/mocks/serverHandlers.ts @@ -1705,6 +1705,18 @@ export const handlers = [ message: 'Low disk space.', status: 'notification', }); + const dbMigrationEvents = eventFactory.buildList(1, { + action: 'database_migrate', + entity: { id: 11, label: 'database-11', type: 'database' }, + message: 'Database migration started.', + status: 'started', + }); + const dbMigrationFinishedEvents = eventFactory.buildList(1, { + action: 'database_migrate', + entity: { id: 11, label: 'database-11', type: 'database' }, + message: 'Database migration finished.', + status: 'finished', + }); const oldEvents = eventFactory.buildList(20, { action: 'account_update', percent_complete: 100, @@ -1745,6 +1757,8 @@ export const handlers = [ return HttpResponse.json( makeResourcePage([ ...events, + ...dbMigrationEvents, + ...dbMigrationFinishedEvents, ...dbEvents, ...placementGroupAssignedEvent, ...placementGroupCreateEvent,