Skip to content

Commit d254ee2

Browse files
feat(Storage): add disk space usage column (#1425)
1 parent 73e9e6b commit d254ee2

File tree

18 files changed

+89
-56
lines changed

18 files changed

+89
-56
lines changed

src/components/nodesColumns/columns.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import DataTable from '@gravity-ui/react-data-table';
33
import {getLoadSeverityForNode} from '../../store/reducers/nodes/utils';
44
import type {TPoolStats} from '../../types/api/nodes';
55
import type {TTabletStateInfo} from '../../types/api/tablet';
6+
import {valueIsDefined} from '../../utils';
67
import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants';
78
import {formatStorageValuesToGb} from '../../utils/dataFormatters/dataFormatters';
9+
import {getSpaceUsageSeverity} from '../../utils/storage';
810
import {CellWithPopover} from '../CellWithPopover/CellWithPopover';
911
import {NodeHostWrapper} from '../NodeHostWrapper/NodeHostWrapper';
1012
import type {NodeHostData} from '../NodeHostWrapper/NodeHostWrapper';
@@ -184,6 +186,25 @@ export function getLoadColumn<T extends {LoadAveragePercents?: number[]}>(): Col
184186
resizeMinWidth: 70,
185187
};
186188
}
189+
export function getDiskSpaceUsageColumn<T extends {DiskSpaceUsage?: number}>(): Column<T> {
190+
return {
191+
name: NODES_COLUMNS_IDS.DiskSpaceUsage,
192+
header: NODES_COLUMNS_TITLES.DiskSpaceUsage,
193+
render: ({row}) => {
194+
return valueIsDefined(row.DiskSpaceUsage) ? (
195+
<UsageLabel
196+
value={Math.floor(row.DiskSpaceUsage)}
197+
theme={getSpaceUsageSeverity(row.DiskSpaceUsage)}
198+
/>
199+
) : (
200+
EMPTY_DATA_PLACEHOLDER
201+
);
202+
},
203+
align: DataTable.LEFT,
204+
width: 115,
205+
resizeMinWidth: 75,
206+
};
207+
}
187208
export function getSessionsColumn<T extends {TotalSessions?: number}>(): Column<T> {
188209
return {
189210
name: NODES_COLUMNS_IDS.TotalSessions,

src/components/nodesColumns/constants.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const NODES_COLUMNS_IDS = {
1616
CPU: 'CPU',
1717
LoadAverage: 'LoadAverage',
1818
Load: 'Load',
19+
DiskSpaceUsage: 'DiskSpaceUsage',
1920
SharedCacheUsage: 'SharedCacheUsage',
2021
TotalSessions: 'TotalSessions',
2122
Missing: 'Missing',
@@ -60,6 +61,9 @@ export const NODES_COLUMNS_TITLES = {
6061
get Load() {
6162
return i18n('load');
6263
},
64+
get DiskSpaceUsage() {
65+
return i18n('disk-usage');
66+
},
6367
get SharedCacheUsage() {
6468
return i18n('caches');
6569
},

src/components/nodesColumns/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"uptime": "Uptime",
99
"memory": "Memory",
1010
"cpu": "CPU",
11+
"disk-usage": "Disk usage",
1112
"tablets": "Tablets",
1213
"load-average": "Load Average",
1314
"load": "Load",

src/containers/Storage/StorageControls/StorageControls.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export function StorageGroupsControls({
8888
<Select
8989
hasClear
9090
placeholder={'-'}
91-
width={170}
91+
width={150}
9292
defaultValue={
9393
storageGroupsGroupByParam ? [storageGroupsGroupByParam] : undefined
9494
}
@@ -168,7 +168,7 @@ export function StorageNodesControls({
168168
<Select
169169
hasClear
170170
placeholder={'-'}
171-
width={170}
171+
width={150}
172172
defaultValue={
173173
storageNodesGroupByParam ? [storageNodesGroupByParam] : undefined
174174
}

src/containers/Storage/StorageGroups/columns/columns.tsx

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import {valueIsDefined} from '../../../../utils';
1414
import {cn} from '../../../../utils/cn';
1515
import {EMPTY_DATA_PLACEHOLDER} from '../../../../utils/constants';
1616
import {formatNumber} from '../../../../utils/dataFormatters/dataFormatters';
17-
import {isSortableStorageProperty} from '../../../../utils/storage';
17+
import {getSpaceUsageSeverity, isSortableStorageProperty} from '../../../../utils/storage';
1818
import {formatToMs} from '../../../../utils/timeParsers';
1919
import {bytesToGB, bytesToSpeed} from '../../../../utils/utils';
2020
import {Disks} from '../../Disks/Disks';
21-
import {getDegradedSeverity, getUsageSeverityForStorageGroup, isVdiskActive} from '../../utils';
21+
import {getDegradedSeverity, isVdiskActive} from '../../utils';
2222
import i18n from '../i18n';
2323

2424
import {STORAGE_GROUPS_COLUMNS_IDS, STORAGE_GROUPS_COLUMNS_TITLES} from './constants';
@@ -102,19 +102,32 @@ const degradedColumn: StorageGroupsColumn = {
102102
const usageColumn: StorageGroupsColumn = {
103103
name: STORAGE_GROUPS_COLUMNS_IDS.Usage,
104104
header: STORAGE_GROUPS_COLUMNS_TITLES.Usage,
105-
width: 75,
105+
width: 85,
106106
resizeMinWidth: 75,
107107
render: ({row}) => {
108-
// without a limit the usage can be evaluated as 0,
109-
// but the absence of a value is more clear
110-
return row.Limit ? (
111-
<UsageLabel value={row.Usage} theme={getUsageSeverityForStorageGroup(row.Usage)} />
108+
return valueIsDefined(row.Usage) ? (
109+
<UsageLabel value={Math.floor(row.Usage)} theme={getSpaceUsageSeverity(row.Usage)} />
112110
) : (
113-
'-'
111+
EMPTY_DATA_PLACEHOLDER
112+
);
113+
},
114+
align: DataTable.LEFT,
115+
};
116+
const diskSpaceUsageColumn: StorageGroupsColumn = {
117+
name: STORAGE_GROUPS_COLUMNS_IDS.DiskSpaceUsage,
118+
header: STORAGE_GROUPS_COLUMNS_TITLES.DiskSpaceUsage,
119+
width: 115,
120+
resizeMinWidth: 75,
121+
render: ({row}) => {
122+
return valueIsDefined(row.DiskSpaceUsage) ? (
123+
<UsageLabel
124+
value={Math.floor(row.DiskSpaceUsage)}
125+
theme={getSpaceUsageSeverity(row.DiskSpaceUsage)}
126+
/>
127+
) : (
128+
EMPTY_DATA_PLACEHOLDER
114129
);
115130
},
116-
// without a limit exclude usage from sort to display at the bottom
117-
sortAccessor: (row) => (row.Limit ? row.Usage : null),
118131
align: DataTable.LEFT,
119132
};
120133

@@ -270,6 +283,7 @@ export const getStorageGroupsColumns: StorageColumnsGetter = (data) => {
270283
erasureColumn,
271284
degradedColumn,
272285
usageColumn,
286+
diskSpaceUsageColumn,
273287
usedColumn,
274288
limitColumn,
275289
usedSpaceFlagColumn,

src/containers/Storage/StorageGroups/columns/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export const STORAGE_GROUPS_COLUMNS_TITLES = {
7676
return i18n('usage');
7777
},
7878
get DiskSpaceUsage() {
79-
return i18n('disk-space-usage');
79+
return i18n('disk-usage');
8080
},
8181
get DiskSpace() {
8282
return i18n('space');

src/containers/Storage/StorageGroups/columns/i18n/en.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"missing-disks": "Missing Disks",
88
"state": "State",
99
"usage": "Usage",
10-
"disk-space-usage": "Disk space usage",
10+
"disk-usage": "Disk usage",
1111
"group-id": "Group ID",
1212
"used": "Used",
1313
"limit": "Limit",

src/containers/Storage/StorageNodes/columns/columns.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import DataTable from '@gravity-ui/react-data-table';
33
import {
44
getCpuColumn,
55
getDataCenterColumn,
6+
getDiskSpaceUsageColumn,
67
getHostColumn,
78
getMemoryColumn,
89
getMissingDisksColumn,
@@ -69,6 +70,7 @@ export const getStorageNodesColumns = ({
6970
getVersionColumn<PreparedStorageNode>(),
7071
getMemoryColumn<PreparedStorageNode>(),
7172
getCpuColumn<PreparedStorageNode>(),
73+
getDiskSpaceUsageColumn<PreparedStorageNode>(),
7274
getUptimeColumn<PreparedStorageNode>(),
7375
getMissingDisksColumn<PreparedStorageNode>(),
7476
getPDisksColumn({viewContext}),

src/containers/Storage/StorageNodes/columns/constants.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ export const STORAGE_NODES_SELECTED_COLUMNS_LS_KEY = 'storageNodesSelectedColumn
1616
export const STORAGE_NODES_COLUMNS_IDS = {
1717
...BASE_NODES_COLUMNS_IDS,
1818
PDisks: 'PDisks',
19-
DiskSpaceUsage: 'DiskSpaceUsage',
2019
} as const;
2120

2221
type StorageNodesColumnId = ValueOf<typeof STORAGE_NODES_COLUMNS_IDS>;
@@ -39,9 +38,6 @@ export const STORAGE_NODES_COLUMNS_TITLES = {
3938
get PDisks() {
4039
return i18n('pdisks');
4140
},
42-
get DiskSpaceUsage() {
43-
return i18n('disk-space-usage');
44-
},
4541
} as const satisfies Record<StorageNodesColumnId, string>;
4642

4743
const STORAGE_NODES_GROUP_BY_PARAMS = [
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
{
2-
"disk-space-usage": "Disk space usage",
32
"pdisks": "PDisks"
43
}

0 commit comments

Comments
 (0)