@@ -6,28 +6,32 @@ export * from './constants';
66export 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
2832const 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
3337const 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
4650export const getUsage = ( data : IStoragePoolGroup , step = 1 ) => {
4751 // if limit is 0, display 0
0 commit comments