@@ -3,6 +3,7 @@ import {z} from 'zod';
3
3
import type { NodesPreparedEntity } from '../store/reducers/nodes/types' ;
4
4
import { ProblemFilterValues } from '../store/reducers/settings/settings' ;
5
5
import type { ProblemFilterValue } from '../store/reducers/settings/types' ;
6
+ import type { TComputeNodeInfo } from '../types/api/compute' ;
6
7
import { EFlag } from '../types/api/enums' ;
7
8
import type { TSystemStateInfo } from '../types/api/nodes' ;
8
9
import type { TNodeInfo } from '../types/api/nodesList' ;
@@ -12,6 +13,8 @@ import type {NodesMap} from '../types/store/nodesList';
12
13
import { HOUR_IN_SECONDS } from './constants' ;
13
14
import { calcUptime } from './dataFormatters/dataFormatters' ;
14
15
16
+ import { valueIsDefined } from '.' ;
17
+
15
18
export enum NodesUptimeFilterValues {
16
19
'All' = 'All' ,
17
20
'SmallUptime' = 'SmallUptime' ,
@@ -38,9 +41,22 @@ export const prepareNodesMap = (nodesList?: TNodeInfo[]) => {
38
41
} , new Map ( ) ) ;
39
42
} ;
40
43
44
+ export function calculateLoadAveragePercents ( node : TSystemStateInfo | TComputeNodeInfo = { } ) {
45
+ const { LoadAverage, NumberOfCpus} = node ;
46
+
47
+ if ( ! valueIsDefined ( LoadAverage ) || ! valueIsDefined ( NumberOfCpus ) ) {
48
+ return undefined ;
49
+ }
50
+
51
+ return LoadAverage . map ( ( value ) => {
52
+ return ( value * 100 ) / NumberOfCpus ;
53
+ } ) ;
54
+ }
55
+
41
56
export interface PreparedNodeSystemState extends TSystemStateInfo {
42
57
Rack ?: string ;
43
58
DC ?: string ;
59
+ LoadAveragePercents ?: number [ ] ;
44
60
Uptime : string ;
45
61
}
46
62
@@ -53,11 +69,14 @@ export const prepareNodeSystemState = (
53
69
54
70
const Uptime = calcUptime ( systemState . StartTime ) ;
55
71
72
+ const LoadAveragePercents = calculateLoadAveragePercents ( systemState ) ;
73
+
56
74
return {
57
75
...systemState ,
58
76
Rack,
59
77
DC ,
60
78
Uptime,
79
+ LoadAveragePercents,
61
80
} ;
62
81
} ;
63
82
0 commit comments