Skip to content

Commit f5adb59

Browse files
committed
fix: if database pass name to query params and to backend handlers
1 parent 249011d commit f5adb59

File tree

49 files changed

+335
-117
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+335
-117
lines changed

src/components/PDiskInfo/PDiskInfo.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ interface GetPDiskInfoOptions<T extends PreparedPDisk> {
2525
nodeId?: number | string | null;
2626
withPDiskPageLink?: boolean;
2727
isUserAllowedToMakeChanges?: boolean;
28+
database?: string;
2829
}
2930

3031
// eslint-disable-next-line complexity
@@ -33,6 +34,7 @@ function getPDiskInfo<T extends PreparedPDisk>({
3334
nodeId,
3435
withPDiskPageLink,
3536
isUserAllowedToMakeChanges,
37+
database,
3638
}: GetPDiskInfoOptions<T>) {
3739
const {
3840
PDiskId,
@@ -147,10 +149,11 @@ function getPDiskInfo<T extends PreparedPDisk>({
147149
valueIsDefined(nodeId);
148150

149151
if (shouldDisplayLinks) {
150-
const pDiskPagePath = getPDiskPagePath(PDiskId, nodeId);
152+
const pDiskPagePath = getPDiskPagePath(PDiskId, nodeId, {database});
151153
const pDiskInternalViewerPath = createPDiskDeveloperUILink({
152154
nodeId,
153155
pDiskId: PDiskId,
156+
database,
154157
});
155158

156159
additionalInfo.push({
@@ -187,6 +190,7 @@ export function PDiskInfo<T extends PreparedPDisk>({
187190
nodeId,
188191
withPDiskPageLink,
189192
className,
193+
database,
190194
}: PDiskInfoProps<T>) {
191195
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
192196

@@ -195,6 +199,7 @@ export function PDiskInfo<T extends PreparedPDisk>({
195199
nodeId,
196200
withPDiskPageLink,
197201
isUserAllowedToMakeChanges,
202+
database,
198203
});
199204

200205
return (

src/components/PDiskPopup/PDiskPopup.tsx

+6-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const preparePDiskData = (
1919
data: PreparedPDisk,
2020
nodeData?: {Host?: string; DC?: string},
2121
withDeveloperUILink?: boolean,
22+
database?: string,
2223
) => {
2324
const {
2425
AvailableSize,
@@ -76,6 +77,7 @@ export const preparePDiskData = (
7677
const pDiskInternalViewerPath = createPDiskDeveloperUILink({
7778
nodeId: NodeId,
7879
pDiskId: PDiskId,
80+
database,
7981
});
8082

8183
pdiskData.push({
@@ -89,15 +91,16 @@ export const preparePDiskData = (
8991

9092
interface PDiskPopupProps {
9193
data: PreparedPDisk;
94+
database?: string;
9295
}
9396

94-
export const PDiskPopup = ({data}: PDiskPopupProps) => {
97+
export const PDiskPopup = ({data, database}: PDiskPopupProps) => {
9598
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
9699
const nodesMap = useTypedSelector(selectNodesMap);
97100
const nodeData = valueIsDefined(data.NodeId) ? nodesMap?.get(data.NodeId) : undefined;
98101
const info = React.useMemo(
99-
() => preparePDiskData(data, nodeData, isUserAllowedToMakeChanges),
100-
[data, nodeData, isUserAllowedToMakeChanges],
102+
() => preparePDiskData(data, nodeData, isUserAllowedToMakeChanges, database),
103+
[data, nodeData, isUserAllowedToMakeChanges, database],
101104
);
102105

103106
return <InfoViewer title="PDisk" info={info} size="s" />;

src/components/TabletNameWrapper/TabletNameWrapper.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function TabletNameWrapper({tabletId, database}: TabletNameWrapperProps)
2828
<DefinitionList.Item name={i18n('field_links')}>
2929
<LinkWithIcon
3030
title={i18n('context_developer-ui')}
31-
url={createTabletDeveloperUIHref(tabletId)}
31+
url={createTabletDeveloperUIHref(tabletId, database)}
3232
/>
3333
</DefinitionList.Item>
3434
</DefinitionList>

src/components/VDisk/VDisk.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import './VDisk.scss';
1212
const b = cn('ydb-vdisk-component');
1313

1414
export interface VDiskProps {
15+
database?: string;
1516
data?: PreparedVDisk;
1617
compact?: boolean;
1718
inactive?: boolean;
@@ -25,6 +26,7 @@ export interface VDiskProps {
2526

2627
export const VDisk = ({
2728
data = {},
29+
database,
2830
compact,
2931
inactive,
3032
showPopup,
@@ -34,14 +36,14 @@ export const VDisk = ({
3436
delayClose,
3537
delayOpen,
3638
}: VDiskProps) => {
37-
const vDiskPath = getVDiskLink(data);
39+
const vDiskPath = getVDiskLink(data, database);
3840

3941
return (
4042
<HoverPopup
4143
showPopup={showPopup}
4244
onShowPopup={onShowPopup}
4345
onHidePopup={onHidePopup}
44-
popupContent={<VDiskPopup data={data} />}
46+
popupContent={<VDiskPopup data={data} database={database} />}
4547
offset={[0, 5]}
4648
delayClose={delayClose}
4749
delayOpen={delayOpen}

src/components/VDisk/utils.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {valueIsDefined} from '../../utils';
55
import {stringifyVdiskId} from '../../utils/dataFormatters/dataFormatters';
66
import {isFullVDiskData} from '../../utils/disks/helpers';
77

8-
export function getVDiskLink(data: TVDiskStateInfo | TVSlotId) {
8+
export function getVDiskLink(data: TVDiskStateInfo | TVSlotId, database?: string) {
99
let vDiskPath: string | undefined;
1010

1111
const isFullData = isFullVDiskData(data);
@@ -16,13 +16,14 @@ export function getVDiskLink(data: TVDiskStateInfo | TVSlotId) {
1616
valueIsDefined(data.PDiskId) &&
1717
valueIsDefined(data.NodeId)
1818
) {
19-
vDiskPath = getVDiskPagePath(VDiskSlotId, data.PDiskId, data.NodeId);
19+
vDiskPath = getVDiskPagePath(VDiskSlotId, data.PDiskId, data.NodeId, {database});
2020
} else if (valueIsDefined(data.NodeId) && isFullVDiskData(data)) {
2121
vDiskPath = getDefaultNodePath(
2222
data.NodeId,
2323
{
2424
pdiskId: data.PDiskId?.toString(),
2525
vdiskId: stringifyVdiskId(data.VDiskId),
26+
database,
2627
},
2728
'structure',
2829
);

src/components/VDiskInfo/VDiskInfo.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ interface VDiskInfoProps<T extends PreparedVDisk> extends Omit<InfoViewerProps,
2525
data?: T;
2626
withVDiskPageLink?: boolean;
2727
withTitle?: boolean;
28+
database?: string;
2829
}
2930

3031
// eslint-disable-next-line complexity
3132
export function VDiskInfo<T extends PreparedVDisk>({
3233
data,
3334
withVDiskPageLink,
3435
withTitle,
36+
database,
3537
...infoViewerProps
3638
}: VDiskInfoProps<T>) {
3739
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
@@ -152,7 +154,7 @@ export function VDiskInfo<T extends PreparedVDisk>({
152154
const links: React.ReactNode[] = [];
153155

154156
if (withVDiskPageLink) {
155-
const vDiskPagePath = getVDiskPagePath(VDiskSlotId, PDiskId, NodeId);
157+
const vDiskPagePath = getVDiskPagePath(VDiskSlotId, PDiskId, NodeId, {database});
156158
links.push(
157159
<LinkWithIcon
158160
key={vDiskPagePath}
@@ -168,6 +170,7 @@ export function VDiskInfo<T extends PreparedVDisk>({
168170
nodeId: NodeId,
169171
pDiskId: PDiskId,
170172
vDiskSlotId: VDiskSlotId,
173+
database,
171174
});
172175

173176
links.push(

src/components/VDiskPopup/VDiskPopup.tsx

+24-9
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ import './VDiskPopup.scss';
2424

2525
const b = cn('vdisk-storage-popup');
2626

27-
const prepareUnavailableVDiskData = (data: UnavailableDonor, withDeveloperUILink?: boolean) => {
27+
const prepareUnavailableVDiskData = (
28+
data: UnavailableDonor,
29+
withDeveloperUILink?: boolean,
30+
database?: string,
31+
) => {
2832
const {NodeId, PDiskId, VSlotId, StoragePoolName} = data;
2933

3034
const vdiskData: InfoViewerItem[] = [{label: 'State', value: 'not available'}];
@@ -49,6 +53,7 @@ const prepareUnavailableVDiskData = (data: UnavailableDonor, withDeveloperUILink
4953
nodeId: NodeId,
5054
pDiskId: PDiskId,
5155
vDiskSlotId: VSlotId,
56+
database,
5257
});
5358

5459
vdiskData.push({
@@ -61,7 +66,11 @@ const prepareUnavailableVDiskData = (data: UnavailableDonor, withDeveloperUILink
6166
};
6267

6368
// eslint-disable-next-line complexity
64-
const prepareVDiskData = (data: PreparedVDisk, withDeveloperUILink?: boolean) => {
69+
const prepareVDiskData = (
70+
data: PreparedVDisk,
71+
withDeveloperUILink?: boolean,
72+
database?: string,
73+
) => {
6574
const {
6675
NodeId,
6776
PDiskId,
@@ -160,6 +169,7 @@ const prepareVDiskData = (data: PreparedVDisk, withDeveloperUILink?: boolean) =>
160169
nodeId: NodeId,
161170
pDiskId: PDiskId,
162171
vDiskSlotId: VDiskSlotId,
172+
database,
163173
});
164174

165175
vdiskData.push({
@@ -173,19 +183,20 @@ const prepareVDiskData = (data: PreparedVDisk, withDeveloperUILink?: boolean) =>
173183

174184
interface VDiskPopupProps {
175185
data: PreparedVDisk | UnavailableDonor;
186+
database?: string;
176187
}
177188

178-
export const VDiskPopup = ({data}: VDiskPopupProps) => {
189+
export const VDiskPopup = ({data, database}: VDiskPopupProps) => {
179190
const isFullData = isFullVDiskData(data);
180191

181192
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
182193

183194
const vdiskInfo = React.useMemo(
184195
() =>
185196
isFullData
186-
? prepareVDiskData(data, isUserAllowedToMakeChanges)
187-
: prepareUnavailableVDiskData(data, isUserAllowedToMakeChanges),
188-
[data, isFullData, isUserAllowedToMakeChanges],
197+
? prepareVDiskData(data, isUserAllowedToMakeChanges, database)
198+
: prepareUnavailableVDiskData(data, isUserAllowedToMakeChanges, database),
199+
[data, isFullData, isUserAllowedToMakeChanges, database],
189200
);
190201

191202
const nodesMap = useTypedSelector(selectNodesMap);
@@ -194,8 +205,8 @@ export const VDiskPopup = ({data}: VDiskPopupProps) => {
194205
() =>
195206
isFullData &&
196207
data.PDisk &&
197-
preparePDiskData(data.PDisk, nodeData, isUserAllowedToMakeChanges),
198-
[data, nodeData, isFullData, isUserAllowedToMakeChanges],
208+
preparePDiskData(data.PDisk, nodeData, isUserAllowedToMakeChanges, database),
209+
[data, nodeData, isFullData, isUserAllowedToMakeChanges, database],
199210
);
200211

201212
const donorsInfo: InfoViewerItem[] = [];
@@ -204,7 +215,11 @@ export const VDiskPopup = ({data}: VDiskPopupProps) => {
204215
for (const donor of donors) {
205216
donorsInfo.push({
206217
label: 'VDisk',
207-
value: <InternalLink to={getVDiskLink(donor)}>{donor.StringifiedId}</InternalLink>,
218+
value: (
219+
<InternalLink to={getVDiskLink(donor, database)}>
220+
{donor.StringifiedId}
221+
</InternalLink>
222+
),
208223
});
209224
}
210225
}

src/containers/Node/Node.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function Node() {
5353

5454
const [autoRefreshInterval] = useAutoRefreshInterval();
5555

56-
const params = nodeId ? {nodeId} : skipToken;
56+
const params = nodeId ? {nodeId, database: tenantNameFromQuery?.toString()} : skipToken;
5757
const {
5858
currentData: node,
5959
isLoading,
@@ -226,6 +226,7 @@ function NodePageContent({
226226
return (
227227
<PaginatedStorage
228228
nodeId={nodeId}
229+
database={tenantName}
229230
parentRef={parentContainer}
230231
viewContext={{
231232
nodeId: nodeId,
@@ -238,7 +239,7 @@ function NodePageContent({
238239
}
239240

240241
case 'structure': {
241-
return <NodeStructure nodeId={nodeId} />;
242+
return <NodeStructure nodeId={nodeId} database={tenantName} />;
242243
}
243244

244245
default:

src/containers/Node/NodeStructure/NodeStructure.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ function generateId({type, id}: {type: 'pdisk' | 'vdisk'; id: string}) {
2323
interface NodeStructureProps {
2424
nodeId: string;
2525
className?: string;
26+
database?: string;
2627
}
2728

28-
function NodeStructure({nodeId, className}: NodeStructureProps) {
29+
function NodeStructure({nodeId, className, database}: NodeStructureProps) {
2930
const nodeStructure = useTypedSelector((state) => selectNodeStructure(state, nodeId));
3031

3132
const [autoRefreshInterval] = useAutoRefreshInterval();
@@ -95,6 +96,7 @@ function NodeStructure({nodeId, className}: NodeStructureProps) {
9596
unfolded={pdiskIdFromUrl === pDiskId}
9697
selectedVdiskId={vdiskIdFromUrl as string}
9798
nodeId={nodeId}
99+
database={database}
98100
/>
99101
))
100102
: renderStub();

src/containers/Node/NodeStructure/Pdisk.tsx

+9-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ interface PDiskProps {
3535
id: string;
3636
selectedVdiskId?: string;
3737
nodeId: string | number;
38+
database?: string;
3839
}
3940

4041
enum VDiskTableColumnsIds {
@@ -58,11 +59,13 @@ function getColumns({
5859
selectedVdiskId,
5960
nodeId,
6061
withDeveloperUILink,
62+
database,
6163
}: {
6264
pDiskId: number | undefined;
6365
selectedVdiskId?: string;
6466
nodeId?: string | number;
6567
withDeveloperUILink?: boolean;
68+
database?: string;
6669
}) {
6770
const columns: Column<PreparedStructureVDisk>[] = [
6871
{
@@ -143,7 +146,9 @@ function getColumns({
143146
return (
144147
<Popover
145148
placement={['right']}
146-
content={<VDiskInfo data={row} withTitle withVDiskPageLink />}
149+
content={
150+
<VDiskInfo data={row} withTitle withVDiskPageLink database={database} />
151+
}
147152
tooltipContentClassName={b('vdisk-details')}
148153
>
149154
<Button
@@ -169,6 +174,7 @@ export function PDisk({
169174
selectedVdiskId,
170175
nodeId,
171176
unfolded: unfoldedFromProps,
177+
database,
172178
}: PDiskProps) {
173179
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
174180

@@ -196,6 +202,7 @@ export function PDisk({
196202
pDiskId: PDiskId,
197203
selectedVdiskId,
198204
withDeveloperUILink: isUserAllowedToMakeChanges,
205+
database,
199206
})}
200207
settings={{...DEFAULT_TABLE_SETTINGS, dynamicRender: false}}
201208
rowClassName={(row) => {
@@ -217,6 +224,7 @@ export function PDisk({
217224
nodeId={nodeId}
218225
className={b('pdisk-details')}
219226
withPDiskPageLink
227+
database={database}
220228
/>
221229
<div className={b('vdisks-container')}>
222230
<div className={b('vdisks-header')}>VDisks</div>

0 commit comments

Comments
 (0)