Skip to content

Commit bcc3e93

Browse files
fix: fix developer ui links in cloud and em (#2949)
1 parent 3b77a60 commit bcc3e93

File tree

5 files changed

+42
-16
lines changed

5 files changed

+42
-16
lines changed

src/services/api/pdisk.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ export class PDiskAPI extends BaseYdbAPI {
7474
const pDiskPath = createPDiskDeveloperUILink({
7575
nodeId,
7676
pDiskId,
77-
host: this.getPath(''),
7877
});
7978

8079
return this.post<ModifyDiskResponse>(

src/utils/developerUI/__test__/developerUI.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type {YdbEmbeddedAPI} from '../../../services/api';
12
import {
23
createDeveloperUIInternalPageHref,
34
createDeveloperUILinkWithNodeId,
@@ -6,6 +7,15 @@ import {
67
} from '../developerUI';
78

89
describe('Developer UI links generators', () => {
10+
beforeAll(() => {
11+
const api = {
12+
viewer: {
13+
getPath: () => '',
14+
},
15+
};
16+
window.api = api as unknown as YdbEmbeddedAPI;
17+
});
18+
919
describe('createDeveloperUIInternalPageHref', () => {
1020
test('should create correct link for embedded UI', () => {
1121
expect(createDeveloperUIInternalPageHref('')).toBe('/internal');

src/utils/developerUI/developerUI.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
import {backend} from '../../store';
21
import {pad9} from '../utils';
32

4-
export function createDeveloperUIInternalPageHref(host = backend) {
3+
function getCurrentHost() {
4+
// It always has correct backend
5+
return window.api.viewer.getPath('');
6+
}
7+
8+
export function createDeveloperUIInternalPageHref(host = getCurrentHost()) {
59
return host + '/internal';
610
}
711

8-
export function createDeveloperUIMonitoringPageHref(host = backend) {
12+
export function createDeveloperUIMonitoringPageHref(host = getCurrentHost()) {
913
return host + '/monitoring';
1014
}
1115

1216
// Current node connects with target node by itself using nodeId
13-
export const createDeveloperUILinkWithNodeId = (nodeId: number | string, host = backend) => {
17+
export const createDeveloperUILinkWithNodeId = (
18+
nodeId: number | string,
19+
host = getCurrentHost(),
20+
) => {
1421
const nodePathRegexp = /\/node\/\d+\/?$/g;
1522

1623
// In case current backend is already relative node path ({host}/node/{nodeId})
@@ -25,13 +32,12 @@ export const createDeveloperUILinkWithNodeId = (nodeId: number | string, host =
2532
interface PDiskDeveloperUILinkParams {
2633
nodeId: number | string;
2734
pDiskId: number | string;
28-
host?: string;
2935
}
3036

31-
export const createPDiskDeveloperUILink = ({nodeId, pDiskId, host}: PDiskDeveloperUILinkParams) => {
37+
export const createPDiskDeveloperUILink = ({nodeId, pDiskId}: PDiskDeveloperUILinkParams) => {
3238
const pdiskPath = '/actors/pdisks/pdisk' + pad9(pDiskId);
3339

34-
return createDeveloperUILinkWithNodeId(nodeId, host) + pdiskPath;
40+
return createDeveloperUILinkWithNodeId(nodeId) + pdiskPath;
3541
};
3642

3743
interface VDiskDeveloperUILinkParams extends PDiskDeveloperUILinkParams {
@@ -42,18 +48,17 @@ export const createVDiskDeveloperUILink = ({
4248
nodeId,
4349
pDiskId,
4450
vDiskSlotId,
45-
host,
4651
}: VDiskDeveloperUILinkParams) => {
4752
const vdiskPath = '/actors/vdisks/vdisk' + pad9(pDiskId) + '_' + pad9(vDiskSlotId);
4853

49-
return createDeveloperUILinkWithNodeId(nodeId, host) + vdiskPath;
54+
return createDeveloperUILinkWithNodeId(nodeId) + vdiskPath;
5055
};
5156

5257
export function createTabletDeveloperUIHref(
5358
tabletId: number | string,
5459
tabletPage?: string,
5560
searchParam = 'TabletID',
56-
host = backend,
61+
host = getCurrentHost(),
5762
) {
5863
const subPage = tabletPage ? `/${tabletPage}` : '';
5964
return `${host}/tablets${subPage}?${searchParam}=${tabletId}`;

src/utils/hooks/useNodeDeveloperUIHref.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,22 @@ import {useTypedSelector} from './useTypedSelector';
1313
export function useNodeDeveloperUIHref(node?: NodeAddress) {
1414
const singleClusterMode = useTypedSelector((state) => state.singleClusterMode);
1515

16-
const {balancer = backend} = useClusterBaseInfo();
16+
const {balancer = backend, settings} = useClusterBaseInfo();
1717
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
1818

19+
const useMetaProxy = settings?.use_meta_proxy;
20+
1921
if (!isUserAllowedToMakeChanges) {
2022
return undefined;
2123
}
2224

2325
// Only for multi-cluster version since there is no balancer in single-cluster mode
2426
if (!singleClusterMode) {
25-
const developerUIHref = getBackendFromBalancerAndNodeId(node?.NodeId, balancer ?? '');
27+
const developerUIHref = getBackendFromBalancerAndNodeId(
28+
node?.NodeId,
29+
balancer,
30+
useMetaProxy,
31+
);
2632
return developerUIHref ? createDeveloperUIInternalPageHref(developerUIHref) : undefined;
2733
}
2834

src/utils/prepareBackend.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {createDeveloperUILinkWithNodeId} from './developerUI/developerUI';
12
import {prepareBackendFromBalancer} from './parseBalancer';
23

34
import {valueIsDefined} from '.';
@@ -8,10 +9,15 @@ export const prepareHost = (host?: string) => {
89
};
910

1011
/** For multi-cluster version */
11-
export const getBackendFromBalancerAndNodeId = (nodeId?: string | number, balancer?: string) => {
12+
export const getBackendFromBalancerAndNodeId = (
13+
nodeId?: string | number,
14+
balancer?: string,
15+
useMetaProxy?: boolean,
16+
) => {
1217
if (valueIsDefined(nodeId) && valueIsDefined(balancer)) {
13-
const preparedBalancer = prepareBackendFromBalancer(balancer);
14-
return `${preparedBalancer}/node/${nodeId}`;
18+
// Use default value instead of balancer if meta proxy is enabled
19+
const preparedBalancer = useMetaProxy ? undefined : prepareBackendFromBalancer(balancer);
20+
return createDeveloperUILinkWithNodeId(nodeId, preparedBalancer);
1521
}
1622

1723
return undefined;

0 commit comments

Comments
 (0)