Skip to content

Commit ad64c8c

Browse files
fix(Node): fix developer ui link in dev mode (#1979)
1 parent cf9b3d1 commit ad64c8c

File tree

12 files changed

+45
-50
lines changed

12 files changed

+45
-50
lines changed

src/components/NodeHostWrapper/NodeHostWrapper.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {PopoverBehavior} from '@gravity-ui/uikit';
22

33
import {getDefaultNodePath} from '../../containers/Node/NodePages';
4-
import type {NodeAddress} from '../../types/additionalProps';
4+
import type {GetNodeRefFunc, NodeAddress} from '../../types/additionalProps';
55
import type {TNodeInfo, TSystemStateInfo} from '../../types/api/nodes';
66
import {
77
createDeveloperUIInternalPageHref,
@@ -23,7 +23,7 @@ export type StatusForIcon = 'SystemState' | 'ConnectStatus';
2323

2424
interface NodeHostWrapperProps {
2525
node: NodeHostData;
26-
getNodeRef?: (node?: NodeAddress) => string | null;
26+
getNodeRef?: GetNodeRefFunc;
2727
database?: string;
2828
statusForIcon?: StatusForIcon;
2929
}

src/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.tsx

+8-3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ import type {MetaClusterVersion} from '../../../types/api/meta';
1111
import type {ETenantType} from '../../../types/api/tenant';
1212
import {getVersionColors, getVersionMap} from '../../../utils/clusterVersionColors';
1313
import {cn} from '../../../utils/cn';
14+
import {USE_CLUSTER_BALANCER_AS_BACKEND_KEY} from '../../../utils/constants';
15+
import {useSetting} from '../../../utils/hooks';
16+
import {useAdditionalNodesProps} from '../../../utils/hooks/useAdditionalNodesProps';
1417
import type {GetMonitoringClusterLink, GetMonitoringLink} from '../../../utils/monitoring';
1518
import {getCleanBalancerValue, removeViewerPathname} from '../../../utils/parseBalancer';
1619
import {getBackendFromNodeHost, getBackendFromRawNodeData} from '../../../utils/prepareBackend';
1720
import type {Cluster} from '../../Cluster/Cluster';
18-
import {useClusterData} from '../useClusterData';
21+
import {useClusterVersions} from '../useClusterData';
1922

2023
import './ExtendedCluster.scss';
2124

@@ -123,10 +126,12 @@ export function ExtendedCluster({
123126
getMonitoringLink,
124127
getMonitoringClusterLink,
125128
}: ExtendedClusterProps) {
126-
const {versions, useClusterBalancerAsBackend, additionalNodesProps} = useClusterData();
127-
129+
const versions = useClusterVersions();
130+
const additionalNodesProps = useAdditionalNodesProps();
128131
const {name, balancer, monitoring} = useClusterBaseInfo();
129132

133+
const [useClusterBalancerAsBackend] = useSetting<boolean>(USE_CLUSTER_BALANCER_AS_BACKEND_KEY);
134+
130135
return (
131136
<div className={b()}>
132137
<ClusterComponent

src/containers/AppWithClusters/ExtendedTenant/ExtendedTenant.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {useClusterBaseInfo} from '../../../store/reducers/cluster/cluster';
22
import type {ETenantType} from '../../../types/api/tenant';
3+
import {useAdditionalNodesProps} from '../../../utils/hooks/useAdditionalNodesProps';
34
import type {GetMonitoringLink} from '../../../utils/monitoring';
45
import type {Tenant} from '../../Tenant/Tenant';
5-
import {useAdditionalNodeProps} from '../useClusterData';
66

77
export interface ExtendedTenantProps {
88
component: typeof Tenant;
@@ -13,8 +13,8 @@ export function ExtendedTenant({
1313
component: TenantComponent,
1414
getMonitoringLink,
1515
}: ExtendedTenantProps) {
16-
const {balancer, monitoring} = useClusterBaseInfo();
17-
const {additionalNodesProps} = useAdditionalNodeProps({balancer});
16+
const {monitoring} = useClusterBaseInfo();
17+
const additionalNodesProps = useAdditionalNodesProps();
1818

1919
const additionalTenantProps = {
2020
getMonitoringLink: (dbName?: string, dbType?: ETenantType) => {

src/containers/AppWithClusters/useClusterData.ts

+4-23
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,15 @@ import React from 'react';
33
import {StringParam, useQueryParam} from 'use-query-params';
44

55
import {clustersApi} from '../../store/reducers/clusters/clusters';
6-
import {getAdditionalNodesProps} from '../../utils/additionalProps';
7-
import {USE_CLUSTER_BALANCER_AS_BACKEND_KEY} from '../../utils/constants';
8-
import {useSetting} from '../../utils/hooks';
96

10-
export function useClusterData() {
7+
export function useClusterVersions() {
118
const [clusterName] = useQueryParam('clusterName', StringParam);
129

1310
const {data} = clustersApi.useGetClustersListQuery(undefined);
1411

15-
const info = React.useMemo(() => {
12+
return React.useMemo(() => {
1613
const clusters = data || [];
17-
return clusters.find((cluster) => cluster.name === clusterName);
14+
const info = clusters.find((cluster) => cluster.name === clusterName);
15+
return info?.versions;
1816
}, [data, clusterName]);
19-
20-
const {solomon: monitoring, balancer, versions} = info || {};
21-
22-
return {
23-
monitoring,
24-
balancer,
25-
versions,
26-
...useAdditionalNodeProps({balancer}),
27-
};
28-
}
29-
30-
export function useAdditionalNodeProps({balancer}: {balancer?: string}) {
31-
const [useClusterBalancerAsBackend] = useSetting<boolean>(USE_CLUSTER_BALANCER_AS_BACKEND_KEY);
32-
33-
const additionalNodesProps = getAdditionalNodesProps(balancer, useClusterBalancerAsBackend);
34-
35-
return {additionalNodesProps, useClusterBalancerAsBackend};
3617
}

src/containers/Cluster/Cluster.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ export function Cluster({
168168
>
169169
<ClusterInfo
170170
cluster={cluster}
171-
versionToColor={versionToColor}
172171
loading={infoLoading}
173172
error={clusterError}
174173
additionalClusterProps={additionalClusterProps}

src/containers/Cluster/ClusterInfo/ClusterInfo.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {LinkWithIcon} from '../../../components/LinkWithIcon/LinkWithIcon';
66
import type {AdditionalClusterProps} from '../../../types/additionalProps';
77
import type {TClusterInfo} from '../../../types/api/cluster';
88
import type {IResponseError} from '../../../types/api/error';
9-
import type {VersionToColorMap} from '../../../types/versions';
109
import i18n from '../i18n';
1110

1211
import {b} from './shared';
@@ -17,7 +16,6 @@ import './ClusterInfo.scss';
1716

1817
interface ClusterInfoProps {
1918
cluster?: TClusterInfo;
20-
versionToColor?: VersionToColorMap;
2119
loading?: boolean;
2220
error?: IResponseError;
2321
additionalClusterProps?: AdditionalClusterProps;

src/containers/Storage/PaginatedStorageNodes.tsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ import {
88
useCapabilitiesLoaded,
99
useViewerNodesHandlerHasGrouping,
1010
} from '../../store/reducers/capabilities/hooks';
11-
import {useClusterBaseInfo} from '../../store/reducers/cluster/cluster';
1211
import {storageApi} from '../../store/reducers/storage/storage';
1312
import {useAutoRefreshInterval} from '../../utils/hooks';
13+
import {useAdditionalNodesProps} from '../../utils/hooks/useAdditionalNodesProps';
1414
import {NodesUptimeFilterValues} from '../../utils/nodes';
15-
import {useAdditionalNodeProps} from '../AppWithClusters/useClusterData';
1615

1716
import type {PaginatedStorageProps} from './PaginatedStorage';
1817
import {StorageNodesControls} from './StorageControls/StorageControls';
@@ -210,8 +209,7 @@ function useStorageNodesColumnsToSelect({
210209
database?: string;
211210
viewContext?: StorageViewContext;
212211
}) {
213-
const {balancer} = useClusterBaseInfo();
214-
const {additionalNodesProps} = useAdditionalNodeProps({balancer});
212+
const additionalNodesProps = useAdditionalNodesProps();
215213
const {visibleEntities} = useStorageQueryParams();
216214

217215
return useStorageNodesSelectedColumns({

src/containers/Versions/NodesTable/NodesTable.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ import {
1010
getUptimeColumn,
1111
} from '../../../components/nodesColumns/columns';
1212
import type {GetNodesColumnsParams} from '../../../components/nodesColumns/types';
13-
import {useClusterBaseInfo} from '../../../store/reducers/cluster/cluster';
1413
import type {NodesPreparedEntity} from '../../../store/reducers/nodes/types';
1514
import {DEFAULT_TABLE_SETTINGS} from '../../../utils/constants';
16-
import {useAdditionalNodeProps} from '../../AppWithClusters/useClusterData';
15+
import {useAdditionalNodesProps} from '../../../utils/hooks/useAdditionalNodesProps';
1716

1817
const VERSIONS_COLUMNS_WIDTH_LS_KEY = 'versionsTableColumnsWidth';
1918

@@ -33,10 +32,9 @@ interface NodesTableProps {
3332
}
3433

3534
export const NodesTable = ({nodes}: NodesTableProps) => {
36-
const {balancer} = useClusterBaseInfo();
37-
const {additionalNodesProps} = useAdditionalNodeProps({balancer});
35+
const additionalNodesProps = useAdditionalNodesProps();
3836

39-
const columns = getColumns({getNodeRef: additionalNodesProps.getNodeRef});
37+
const columns = getColumns({getNodeRef: additionalNodesProps?.getNodeRef});
4038

4139
return (
4240
<ResizeableDataTable

src/types/additionalProps.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export interface AdditionalTenantsProps {
2424

2525
export type NodeAddress = Pick<TSystemStateInfo, 'Host' | 'Endpoints' | 'NodeId'>;
2626

27-
export type GetNodeRefFunc = (node?: NodeAddress) => string | null;
27+
export type GetNodeRefFunc = (node?: NodeAddress) => string | undefined;
2828

2929
export interface AdditionalNodesProps extends Record<string, unknown> {
3030
getNodeRef?: GetNodeRefFunc;
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {useClusterBaseInfo} from '../../store/reducers/cluster/cluster';
2+
import {getAdditionalNodesProps} from '../additionalProps';
3+
import {USE_CLUSTER_BALANCER_AS_BACKEND_KEY} from '../constants';
4+
5+
import {useSetting} from './useSetting';
6+
import {useTypedSelector} from './useTypedSelector';
7+
8+
/** For multi-cluster version */
9+
export function useAdditionalNodesProps() {
10+
const {balancer} = useClusterBaseInfo();
11+
const [useClusterBalancerAsBackend] = useSetting<boolean>(USE_CLUSTER_BALANCER_AS_BACKEND_KEY);
12+
const singleClusterMode = useTypedSelector((state) => state.singleClusterMode);
13+
14+
const additionalNodesProps = getAdditionalNodesProps(balancer, useClusterBalancerAsBackend);
15+
16+
return singleClusterMode ? undefined : additionalNodesProps;
17+
}

src/utils/hooks/useNodeDeveloperUIHref.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
import {useAdditionalNodeProps} from '../../containers/AppWithClusters/useClusterData';
2-
import {useClusterBaseInfo} from '../../store/reducers/cluster/cluster';
31
import type {PreparedNode} from '../../store/reducers/node/types';
42
import {
53
createDeveloperUIInternalPageHref,
64
createDeveloperUILinkWithNodeId,
75
} from '../developerUI/developerUI';
86

7+
import {useAdditionalNodesProps} from './useAdditionalNodesProps';
98
import {useIsUserAllowedToMakeChanges} from './useIsUserAllowedToMakeChanges';
109

1110
export function useNodeDeveloperUIHref(node?: PreparedNode) {
12-
const {balancer} = useClusterBaseInfo();
13-
const {additionalNodesProps} = useAdditionalNodeProps({balancer});
11+
const additionalNodesProps = useAdditionalNodesProps();
1412
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
1513

1614
if (!isUserAllowedToMakeChanges) {

src/utils/prepareBackend.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const getBackendFromNodeHost = (nodeHost: string, balancer: string) => {
2020
return https + preparedHost;
2121
};
2222

23+
/** For multi-cluster version */
2324
export const getBackendFromRawNodeData = (
2425
node: NodeAddress,
2526
balancer: string,
@@ -36,7 +37,7 @@ export const getBackendFromRawNodeData = (
3637
const nodePort = Endpoints.find((endpoint) => endpoint.Name === 'http-mon')?.Address;
3738

3839
if (!nodePort || !Host) {
39-
return null;
40+
return undefined;
4041
}
4142

4243
const hostWithPort = Host + nodePort;
@@ -46,5 +47,5 @@ export const getBackendFromRawNodeData = (
4647
return getBackendFromNodeHost(hostWithPort, balancer);
4748
}
4849

49-
return null;
50+
return undefined;
5051
};

0 commit comments

Comments
 (0)