Skip to content

Commit 54384dd

Browse files
fix: display rack for din nodes (#742)
1 parent c61de56 commit 54384dd

File tree

6 files changed

+33
-27
lines changed

6 files changed

+33
-27
lines changed

src/components/FullNodeViewer/FullNodeViewer.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import cn from 'bem-cn-lite';
22

33
import type {PreparedNode} from '../../store/reducers/node/types';
44
import {LOAD_AVERAGE_TIME_INTERVALS} from '../../utils/constants';
5-
import {calcUptime} from '../../utils/dataFormatters/dataFormatters';
65

76
import InfoViewer, {type InfoViewerItem} from '../InfoViewer/InfoViewer';
87
import {ProgressViewer} from '../ProgressViewer/ProgressViewer';
@@ -32,7 +31,7 @@ export const FullNodeViewer = ({node, className}: FullNodeViewerProps) => {
3231

3332
commonInfo.push(
3433
{label: 'Version', value: node?.Version},
35-
{label: 'Uptime', value: calcUptime(node?.StartTime)},
34+
{label: 'Uptime', value: node?.Uptime},
3635
{label: 'DC', value: node?.DataCenterDescription || node?.DC},
3736
{label: 'Rack', value: node?.Rack},
3837
);

src/store/reducers/node/types.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type {IResponseError} from '../../../types/api/error';
2-
import type {TSystemStateInfo} from '../../../types/api/nodes';
32
import type {TPDiskStateInfo} from '../../../types/api/pdisk';
43
import type {TStorageInfo} from '../../../types/api/storage';
54
import type {TVDiskStateInfo} from '../../../types/api/vdisk';
5+
import type {PreparedNodeSystemState} from '../../../utils/nodes';
66
import type {ApiRequestAction} from '../../utils';
77

88
import {FETCH_NODE, FETCH_NODE_STRUCTURE, resetNode} from './node';
@@ -24,10 +24,7 @@ export interface PreparedStructurePDisk extends TPDiskStateInfo {
2424

2525
export type PreparedNodeStructure = Record<string, PreparedStructurePDisk>;
2626

27-
export interface PreparedNode extends TSystemStateInfo {
28-
DC?: string;
29-
Rack?: string;
30-
}
27+
export interface PreparedNode extends Partial<PreparedNodeSystemState> {}
3128

3229
export interface NodeState {
3330
data: PreparedNode;

src/store/reducers/node/utils.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type {TEvSystemStateResponse} from '../../../types/api/systemState';
2+
import {prepareNodeSystemState} from '../../../utils/nodes';
23
import type {PreparedNode} from './types';
34

45
export const prepareNodeData = (data: TEvSystemStateResponse): PreparedNode => {
@@ -8,9 +9,5 @@ export const prepareNodeData = (data: TEvSystemStateResponse): PreparedNode => {
89

910
const nodeData = data.SystemStateInfo[0];
1011

11-
return {
12-
...nodeData,
13-
DC: nodeData.Location?.DataCenter,
14-
Rack: nodeData.Location?.Rack,
15-
};
12+
return prepareNodeSystemState(nodeData);
1613
};

src/store/reducers/nodes/utils.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type {TComputeInfo, TComputeNodeInfo, TComputeTenantInfo} from '../../../
22
import type {TNodesInfo} from '../../../types/api/nodes';
33
import {calcUptime} from '../../../utils/dataFormatters/dataFormatters';
44
import {generateEvaluator} from '../../../utils/generateEvaluator';
5+
import {prepareNodeSystemState} from '../../../utils/nodes';
56

67
import type {NodesHandledResponse, NodesPreparedEntity} from './types';
78

@@ -56,15 +57,10 @@ export const prepareNodesData = (data: TNodesInfo): NodesHandledResponse => {
5657
const sharedCacheLimit = Number(node.SystemState.SharedCacheStats?.LimitBytes) || undefined;
5758

5859
return {
59-
...node.SystemState,
60+
...prepareNodeSystemState(node.SystemState),
6061
Tablets: node.Tablets,
6162
NodeId: node.NodeId,
62-
Uptime: calcUptime(node.SystemState?.StartTime),
6363
TenantName: node.SystemState?.Tenants?.[0],
64-
65-
DC: node.SystemState.Location?.DataCenter,
66-
Rack: node.SystemState.Location?.Rack,
67-
6864
SharedCacheUsed: node.SystemState.SharedCacheStats?.UsedBytes,
6965
SharedCacheLimit: sharedCacheLimit,
7066
};

src/store/reducers/storage/utils.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {TPDiskState} from '../../../types/api/pdisk';
1010
import {EFlag} from '../../../types/api/enums';
1111
import {getPDiskType} from '../../../utils/pdisk';
1212
import {getUsage} from '../../../utils/storage';
13-
import {calcUptime} from '../../../utils/dataFormatters/dataFormatters';
13+
import {prepareNodeSystemState} from '../../../utils/nodes';
1414

1515
import type {PreparedStorageGroup, PreparedStorageNode, PreparedStorageResponse} from './types';
1616

@@ -168,21 +168,14 @@ export const prepareStorageGroups = (
168168
// ==== Prepare nodes ====
169169

170170
const prepareStorageNodeData = (node: TNodeInfo): PreparedStorageNode => {
171-
const systemState = node.SystemState ?? {};
172171
const missing =
173172
node.PDisks?.filter((pDisk) => {
174173
return pDisk.State !== TPDiskState.Normal;
175174
}).length || 0;
176175

177176
return {
177+
...prepareNodeSystemState(node.SystemState),
178178
NodeId: node.NodeId,
179-
SystemState: systemState.SystemState,
180-
DC: systemState.Location?.DataCenter,
181-
Rack: systemState.Location?.Rack,
182-
Host: systemState.Host,
183-
Endpoints: systemState.Endpoints,
184-
Uptime: calcUptime(systemState.StartTime),
185-
StartTime: systemState.StartTime,
186179
PDisks: node.PDisks,
187180
VDisks: node.VDisks,
188181
Missing: missing,

src/utils/nodes.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type {ProblemFilterValue} from '../store/reducers/settings/types';
77
import {ProblemFilterValues} from '../store/reducers/settings/settings';
88
import {EFlag} from '../types/api/enums';
99

10+
import {calcUptime} from './dataFormatters/dataFormatters';
1011
import {HOUR_IN_SECONDS} from './constants';
1112

1213
export enum NodesUptimeFilterValues {
@@ -31,6 +32,29 @@ export const prepareNodesMap = (nodesList?: TNodeInfo[]) => {
3132
}, new Map());
3233
};
3334

35+
export interface PreparedNodeSystemState extends TSystemStateInfo {
36+
Rack?: string;
37+
DC?: string;
38+
Uptime: string;
39+
}
40+
41+
export const prepareNodeSystemState = (
42+
systemState: TSystemStateInfo = {},
43+
): PreparedNodeSystemState => {
44+
// There is no Rack in Location field for din nodes
45+
const Rack = systemState.Location?.Rack || systemState.Rack;
46+
const DC = systemState.Location?.DataCenter || systemState.DataCenter;
47+
48+
const Uptime = calcUptime(systemState.StartTime);
49+
50+
return {
51+
...systemState,
52+
Rack,
53+
DC,
54+
Uptime,
55+
};
56+
};
57+
3458
export const getProblemParamValue = (problemFilter: ProblemFilterValue | undefined) => {
3559
return problemFilter === ProblemFilterValues.PROBLEMS;
3660
};

0 commit comments

Comments
 (0)