Skip to content

Commit 4ea21a1

Browse files
fix(PDiskSpaceDistribution): use only space severity for slots (#2070)
1 parent 6ea6cd5 commit 4ea21a1

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

src/store/reducers/pdisk/__tests__/preparePDiskDataResponse.test.ts

+31
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import {EFlag} from '../../../../types/api/enums';
12
import type {TPDiskInfoResponse} from '../../../../types/api/pdisk';
3+
import {EVDiskState} from '../../../../types/api/vdisk';
24
import {preparePDiskDataResponse} from '../utils';
35

46
describe('preparePDiskDataResponse', () => {
@@ -164,6 +166,7 @@ describe('preparePDiskDataResponse', () => {
164166
};
165167
const preparedDataWarning = preparePDiskDataResponse([dataWarning, {}]);
166168

169+
// Yellow severity
167170
expect(
168171
preparedDataWarning.SlotItems?.find((slot) => slot.SlotType === 'log')?.Severity,
169172
).toEqual(3);
@@ -181,6 +184,7 @@ describe('preparePDiskDataResponse', () => {
181184
};
182185
const preparedDataDanger = preparePDiskDataResponse([dataDanger, {}]);
183186

187+
// Red severity
184188
expect(
185189
preparedDataDanger.SlotItems?.find((slot) => slot.SlotType === 'log')?.Severity,
186190
).toEqual(5);
@@ -201,6 +205,7 @@ describe('preparePDiskDataResponse', () => {
201205
};
202206
const preparedDataWarning = preparePDiskDataResponse([dataWarning, {}]);
203207

208+
// Yellow severity
204209
expect(
205210
preparedDataWarning.SlotItems?.find((slot) => slot.SlotType === 'vDisk')?.Severity,
206211
).toEqual(3);
@@ -220,8 +225,34 @@ describe('preparePDiskDataResponse', () => {
220225
};
221226
const preparedDataDanger = preparePDiskDataResponse([dataDanger, {}]);
222227

228+
// Red severity
223229
expect(
224230
preparedDataDanger.SlotItems?.find((slot) => slot.SlotType === 'vDisk')?.Severity,
225231
).toEqual(5);
226232
});
233+
234+
test('Should not use VDisk statuses for severity calculation', () => {
235+
const data: TPDiskInfoResponse = {
236+
...rawData,
237+
Whiteboard: {
238+
...rawData.Whiteboard,
239+
VDisks: [
240+
{
241+
...rawData.Whiteboard?.VDisks?.[0],
242+
DiskSpace: EFlag.Yellow,
243+
FrontQueues: EFlag.Orange,
244+
VDiskState: EVDiskState.SyncGuidRecoveryError,
245+
AllocatedSize: '10',
246+
AvailableSize: '90',
247+
},
248+
],
249+
},
250+
};
251+
const preparedData = preparePDiskDataResponse([data, {}]);
252+
253+
// Green severity
254+
expect(preparedData.SlotItems?.find((slot) => slot.SlotType === 'vDisk')?.Severity).toEqual(
255+
1,
256+
);
257+
});
227258
});

src/store/reducers/pdisk/utils.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,12 @@ export function preparePDiskDataResponse([pdiskResponse = {}, nodeResponse]: [
6363
preparedVDisks.sort((disk1, disk2) => Number(disk2.VDiskSlotId) - Number(disk1.VDiskSlotId));
6464

6565
const vdisksSlots: SlotItem<'vDisk'>[] = preparedVDisks.map((preparedVDisk) => {
66-
// VDisks do not have strict limits and can be bigger than they should
67-
// In most storage views we don't colorize them depending on space usage
68-
// Colorize them inside PDiskSpaceDistribution so overused slots will be visible
69-
const slotSeverity = Math.max(
70-
getSpaceSeverity(preparedVDisk.AllocatedPercent),
71-
preparedVDisk.Severity || 0,
72-
);
66+
// Use only space severity for VDisks inside PDiskSpaceDistribution
67+
// Motivation - PDiskSpaceDistribution is needed to see how PDisk space is distributed among slots
68+
// Other vdisks statuses make distribution harder to read
69+
// Moreover, slots are named with Group ID and pool name, so we don't know actual vdisk before hovering or clicking
70+
// VDisks with their full statuses can be seen in popup on hover, in Storage table and on vdisks pages
71+
const slotSeverity = getSpaceSeverity(preparedVDisk.AllocatedPercent);
7372

7473
return {
7574
SlotType: 'vDisk',

0 commit comments

Comments
 (0)