@@ -3,6 +3,7 @@ import {z} from 'zod';
33import type { NodesPreparedEntity } from '../store/reducers/nodes/types' ;
44import { ProblemFilterValues } from '../store/reducers/settings/settings' ;
55import type { ProblemFilterValue } from '../store/reducers/settings/types' ;
6+ import type { TComputeNodeInfo } from '../types/api/compute' ;
67import { EFlag } from '../types/api/enums' ;
78import type { TSystemStateInfo } from '../types/api/nodes' ;
89import type { TNodeInfo } from '../types/api/nodesList' ;
@@ -12,6 +13,8 @@ import type {NodesMap} from '../types/store/nodesList';
1213import { HOUR_IN_SECONDS } from './constants' ;
1314import { calcUptime } from './dataFormatters/dataFormatters' ;
1415
16+ import { valueIsDefined } from '.' ;
17+
1518export enum NodesUptimeFilterValues {
1619 'All' = 'All' ,
1720 'SmallUptime' = 'SmallUptime' ,
@@ -38,9 +41,22 @@ export const prepareNodesMap = (nodesList?: TNodeInfo[]) => {
3841 } , new Map ( ) ) ;
3942} ;
4043
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+
4156export interface PreparedNodeSystemState extends TSystemStateInfo {
4257 Rack ?: string ;
4358 DC ?: string ;
59+ LoadAveragePercents ?: number [ ] ;
4460 Uptime : string ;
4561}
4662
@@ -53,11 +69,14 @@ export const prepareNodeSystemState = (
5369
5470 const Uptime = calcUptime ( systemState . StartTime ) ;
5571
72+ const LoadAveragePercents = calculateLoadAveragePercents ( systemState ) ;
73+
5674 return {
5775 ...systemState ,
5876 Rack,
5977 DC ,
6078 Uptime,
79+ LoadAveragePercents,
6180 } ;
6281} ;
6382
0 commit comments