Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import {EFlag} from '../../../../types/api/enums';
import type {TPDiskInfoResponse} from '../../../../types/api/pdisk';
import {EVDiskState} from '../../../../types/api/vdisk';
import {preparePDiskDataResponse} from '../utils';

describe('preparePDiskDataResponse', () => {
Expand Down Expand Up @@ -164,6 +166,7 @@ describe('preparePDiskDataResponse', () => {
};
const preparedDataWarning = preparePDiskDataResponse([dataWarning, {}]);

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

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

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

// Red severity
expect(
preparedDataDanger.SlotItems?.find((slot) => slot.SlotType === 'vDisk')?.Severity,
).toEqual(5);
});

test('Should not use VDisk statuses for severity calculation', () => {
const data: TPDiskInfoResponse = {
...rawData,
Whiteboard: {
...rawData.Whiteboard,
VDisks: [
{
...rawData.Whiteboard?.VDisks?.[0],
DiskSpace: EFlag.Yellow,
FrontQueues: EFlag.Orange,
VDiskState: EVDiskState.SyncGuidRecoveryError,
AllocatedSize: '10',
AvailableSize: '90',
},
],
},
};
const preparedData = preparePDiskDataResponse([data, {}]);

// Green severity
expect(preparedData.SlotItems?.find((slot) => slot.SlotType === 'vDisk')?.Severity).toEqual(
1,
);
});
});
13 changes: 6 additions & 7 deletions src/store/reducers/pdisk/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,12 @@ export function preparePDiskDataResponse([pdiskResponse = {}, nodeResponse]: [
preparedVDisks.sort((disk1, disk2) => Number(disk2.VDiskSlotId) - Number(disk1.VDiskSlotId));

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

return {
SlotType: 'vDisk',
Expand Down
Loading