From a54d55200413d4d526ce742e794a628fb3439f00 Mon Sep 17 00:00:00 2001 From: mufazalov Date: Fri, 29 Mar 2024 12:53:54 +0300 Subject: [PATCH] fix(Storage): use media type for groups --- .../StorageGroups/getStorageGroupsColumns.tsx | 14 +++++++------- src/store/reducers/pdisk/utils.ts | 2 +- src/store/reducers/storage/types.ts | 2 +- src/store/reducers/storage/utils.ts | 16 +++++++++------- src/types/api/storage.ts | 2 ++ src/utils/storage.ts | 1 + 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/containers/Storage/StorageGroups/getStorageGroupsColumns.tsx b/src/containers/Storage/StorageGroups/getStorageGroupsColumns.tsx index 680473ce2..d872366b2 100644 --- a/src/containers/Storage/StorageGroups/getStorageGroupsColumns.tsx +++ b/src/containers/Storage/StorageGroups/getStorageGroupsColumns.tsx @@ -29,7 +29,7 @@ type StorageGroupsColumn = VirtualTableColumn & export const GROUPS_COLUMNS_IDS = { PoolName: 'PoolName', - Kind: 'Kind', + MediaType: 'MediaType', Erasure: 'Erasure', GroupId: 'GroupId', Used: 'Used', @@ -64,14 +64,14 @@ const poolNameColumn: StorageGroupsColumn = { align: DataTable.LEFT, }; -const kindColumn: StorageGroupsColumn = { - name: GROUPS_COLUMNS_IDS.Kind, +const typeColumn: StorageGroupsColumn = { + name: GROUPS_COLUMNS_IDS.MediaType, header: 'Type', width: 100, align: DataTable.LEFT, render: ({row}) => ( <> - + {'\u00a0'} {row.Encryption && ( ({ }); export const getStorageTopGroupsColumns = (): StorageGroupsColumn[] => { - return [groupIdColumn, kindColumn, erasureColumn, usageColumn, usedColumn, limitColumn]; + return [groupIdColumn, typeColumn, erasureColumn, usageColumn, usedColumn, limitColumn]; }; export const getPDiskStorageColumns = (nodes?: NodesMap): StorageGroupsColumn[] => { return [ poolNameColumn, - kindColumn, + typeColumn, erasureColumn, degradedColumn, groupIdColumn, @@ -263,7 +263,7 @@ export const getPDiskStorageColumns = (nodes?: NodesMap): StorageGroupsColumn[] const getStorageGroupsColumns = (nodes?: NodesMap): StorageGroupsColumn[] => { return [ poolNameColumn, - kindColumn, + typeColumn, erasureColumn, degradedColumn, usageColumn, diff --git a/src/store/reducers/pdisk/utils.ts b/src/store/reducers/pdisk/utils.ts index 30d7ea895..38794e096 100644 --- a/src/store/reducers/pdisk/utils.ts +++ b/src/store/reducers/pdisk/utils.ts @@ -43,7 +43,7 @@ export function preparePDiskStorageResponse( }); if (groupHasPDiskVDisks) { - preparedGroups.push(prepareStorageGroupData(group, pool.Name)); + preparedGroups.push(prepareStorageGroupData(group, pool)); } }), ); diff --git a/src/store/reducers/storage/types.ts b/src/store/reducers/storage/types.ts index 486fca395..8d1eb992b 100644 --- a/src/store/reducers/storage/types.ts +++ b/src/store/reducers/storage/types.ts @@ -47,7 +47,7 @@ export interface PreparedStorageGroup extends TStorageGroupInfo { Used: number; Limit: number; Degraded: number; - Kind?: string; + MediaType?: string; UsedSpaceFlag: number; diff --git a/src/store/reducers/storage/utils.ts b/src/store/reducers/storage/utils.ts index bfe20d4db..d4172c04d 100644 --- a/src/store/reducers/storage/utils.ts +++ b/src/store/reducers/storage/utils.ts @@ -45,7 +45,7 @@ const prepareVDisk = (vDisk: TVDiskStateInfo, poolName: string | undefined) => { export const prepareStorageGroupData = ( group: TStorageGroupInfo, - poolName?: string, + pool: TStoragePoolInfo, ): PreparedStorageGroup => { let missing = 0; let usedSpaceFlag = 0; @@ -53,7 +53,9 @@ export const prepareStorageGroupData = ( let limitSizeBytes = 0; let readSpeedBytesPerSec = 0; let writeSpeedBytesPerSec = 0; - let mediaType = ''; + let mediaType: string | undefined; + + const {Name: poolName, MediaType: poolMediaType} = pool; if (group.VDisks) { for (const vDisk of group.VDisks) { @@ -91,8 +93,7 @@ export const prepareStorageGroupData = ( readSpeedBytesPerSec += Number(ReadThroughput) || 0; writeSpeedBytesPerSec += Number(WriteThroughput) || 0; - mediaType = - PDiskType && (PDiskType === mediaType || mediaType === '') ? PDiskType : 'Mixed'; + mediaType = PDiskType && (PDiskType === mediaType || !mediaType) ? PDiskType : 'Mixed'; } } @@ -110,7 +111,7 @@ export const prepareStorageGroupData = ( Limit: limitSizeBytes, Degraded: missing, UsedSpaceFlag: usedSpaceFlag, - Kind: mediaType || undefined, + MediaType: poolMediaType || mediaType || undefined, }; }; @@ -125,6 +126,7 @@ export const prepareStorageGroupDataV2 = (group: TStorageGroupInfoV2): PreparedS Limit = 0, Degraded = 0, Kind, + MediaType, } = group; const UsedSpaceFlag = VDisks.reduce((acc, {DiskSpace}) => { @@ -141,7 +143,7 @@ export const prepareStorageGroupDataV2 = (group: TStorageGroupInfoV2): PreparedS ...group, UsedSpaceFlag, PoolName, - Kind, + MediaType: MediaType || Kind, VDisks: vDisks, Usage: usage, Read: Number(Read), @@ -162,7 +164,7 @@ export const prepareStorageGroups = ( } else { StoragePools?.forEach((pool) => { pool.Groups?.forEach((group) => { - preparedGroups.push(prepareStorageGroupData(group, pool.Name)); + preparedGroups.push(prepareStorageGroupData(group, pool)); }); }); } diff --git a/src/types/api/storage.ts b/src/types/api/storage.ts index 3804db2bd..0b6789198 100644 --- a/src/types/api/storage.ts +++ b/src/types/api/storage.ts @@ -33,11 +33,13 @@ export interface TStoragePoolInfo { MaximumThroughput?: string; /** uint64 */ MaximumSize?: string; + MediaType?: string; } export interface TStorageGroupInfoV2 extends TStorageGroupInfo { PoolName?: string; Kind?: string; + MediaType?: string; /** uint64 */ Degraded?: string; diff --git a/src/utils/storage.ts b/src/utils/storage.ts index 3f9286b4e..01ccca55a 100644 --- a/src/utils/storage.ts +++ b/src/utils/storage.ts @@ -20,6 +20,7 @@ export const getUsage = (data: T, step = 1) => { export const STORAGE_SORT_VALUES = { PoolName: 'PoolName', Kind: 'Kind', + MediaType: 'MediaType', Erasure: 'Erasure', Degraded: 'Degraded', Usage: 'Usage',