Skip to content

Commit 1135736

Browse files
committed
refactor(Storage): redo severity evaluation for more use cases
1 parent bc5e8fd commit 1135736

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/containers/Storage/utils/index.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,32 @@ export * from './constants';
66
export const isFullDonorData = (donor: TVDiskStateInfo | TVSlotId): donor is TVDiskStateInfo =>
77
'VDiskId' in donor;
88

9-
const generateEvaluator = (warn: number, crit: number) =>
9+
const generateEvaluator = <
10+
OkLevel extends string,
11+
WarnLevel extends string,
12+
CritLevel extends string
13+
>(warn: number, crit: number, levels: [OkLevel, WarnLevel, CritLevel]) =>
1014
(value: number) => {
1115
if (0 <= value && value < warn) {
12-
return 'success';
16+
return levels[0];
1317
}
1418

1519
if (warn <= value && value < crit) {
16-
return 'warning';
20+
return levels[1];
1721
}
1822

1923
if (crit <= value) {
20-
return 'danger';
24+
return levels[2];
2125
}
2226

2327
return undefined;
2428
};
2529

26-
const defaultDegradationEvaluator = generateEvaluator(1, 2);
30+
const defaultDegradationEvaluator = generateEvaluator(1, 2, ['success', 'warning', 'danger']);
2731

2832
const degradationEvaluators = {
29-
'block-4-2': generateEvaluator(1, 2),
30-
'mirror-3-dc': generateEvaluator(1, 3),
33+
'block-4-2': generateEvaluator(1, 2, ['success', 'warning', 'danger']),
34+
'mirror-3-dc': generateEvaluator(1, 3, ['success', 'warning', 'danger']),
3135
};
3236

3337
const canEvaluateErasureSpecies = (value?: string): value is keyof typeof degradationEvaluators =>
@@ -41,7 +45,7 @@ export const getDegradedSeverity = (group: IStoragePoolGroup) => {
4145
return evaluate(group.Missing);
4246
};
4347

44-
export const getUsageSeverity = generateEvaluator(80, 85);
48+
export const getUsageSeverity = generateEvaluator(80, 85, ['success', 'warning', 'danger']);
4549

4650
export const getUsage = (data: IStoragePoolGroup, step = 1) => {
4751
// if limit is 0, display 0

0 commit comments

Comments
 (0)