ydb-embedded-ui 15.0.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ShardsTable/columns.js +3 -1
- package/dist/components/ShardsTable/columns.js.map +1 -1
- package/dist/components/ShardsTable/i18n/en.json +1 -0
- package/dist/components/ShardsTable/i18n/index.d.ts +1 -1
- package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
- package/dist/components/VDiskPopup/VDiskPopup.js +2 -2
- package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
- package/dist/components/capacityMetricsColumns/columns.js +4 -1
- package/dist/components/capacityMetricsColumns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js +0 -5
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/StorageUsage/storageUsageFormatters.d.ts +3 -3
- package/dist/containers/Tenant/Diagnostics/StorageUsage/storageUsageFormatters.js +4 -42
- package/dist/containers/Tenant/Diagnostics/StorageUsage/storageUsageFormatters.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/i18n/en.json +0 -1
- package/dist/containers/Tenant/Diagnostics/i18n/index.d.ts +1 -1
- package/dist/containers/VDiskPage/VDiskPage.js +21 -12
- package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskPage.scss +4 -0
- package/dist/containers/VDiskPage/VDiskStorageDetails.d.ts +8 -0
- package/dist/containers/VDiskPage/VDiskStorageDetails.js +40 -0
- package/dist/containers/VDiskPage/VDiskStorageDetails.js.map +1 -0
- package/dist/containers/VDiskPage/VDiskStorageDetails.scss +129 -0
- package/dist/containers/VDiskPage/i18n/en.json +10 -0
- package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/routes.js +2 -2
- package/dist/routes.js.map +1 -1
- package/dist/routes.test.d.ts +1 -0
- package/dist/routes.test.js +25 -0
- package/dist/routes.test.js.map +1 -0
- package/dist/services/api/__test__/base.test.d.ts +1 -0
- package/dist/services/api/__test__/base.test.js +136 -0
- package/dist/services/api/__test__/base.test.js.map +1 -0
- package/dist/services/api/base.d.ts +21 -0
- package/dist/services/api/base.js +100 -13
- package/dist/services/api/base.js.map +1 -1
- package/dist/store/reducers/storage/types.d.ts +2 -2
- package/dist/store/reducers/vdisk/types.d.ts +1 -0
- package/dist/store/reducers/vdisk/utils.js +2 -0
- package/dist/store/reducers/vdisk/utils.js.map +1 -1
- package/dist/types/api/enums.d.ts +1 -0
- package/dist/types/api/enums.js +7 -0
- package/dist/types/api/enums.js.map +1 -1
- package/dist/types/api/nodes.d.ts +1 -1
- package/dist/types/api/storage.d.ts +1 -1
- package/dist/types/api/vdisk.d.ts +2 -1
- package/dist/types/api/vdisk.js.map +1 -1
- package/dist/uiFactory/types.d.ts +6 -0
- package/dist/utils/__test__/capacityAlerts.test.d.ts +1 -0
- package/dist/utils/__test__/capacityAlerts.test.js +56 -0
- package/dist/utils/__test__/capacityAlerts.test.js.map +1 -0
- package/dist/utils/__test__/storageMetrics.test.d.ts +1 -0
- package/dist/utils/__test__/storageMetrics.test.js +20 -0
- package/dist/utils/__test__/storageMetrics.test.js.map +1 -0
- package/dist/utils/capacityAlerts.d.ts +6 -1
- package/dist/utils/capacityAlerts.js +18 -5
- package/dist/utils/capacityAlerts.js.map +1 -1
- package/dist/utils/developerUI/__test__/developerUI.test.js +132 -2
- package/dist/utils/developerUI/__test__/developerUI.test.js.map +1 -1
- package/dist/utils/developerUI/developerUI.js +30 -8
- package/dist/utils/developerUI/developerUI.js.map +1 -1
- package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js +79 -12
- package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js.map +1 -1
- package/dist/utils/disks/__test__/prepareDisks.test.js +46 -0
- package/dist/utils/disks/__test__/prepareDisks.test.js.map +1 -1
- package/dist/utils/disks/calculateVDiskSeverity.d.ts +2 -0
- package/dist/utils/disks/calculateVDiskSeverity.js +15 -4
- package/dist/utils/disks/calculateVDiskSeverity.js.map +1 -1
- package/dist/utils/disks/constants.js +2 -2
- package/dist/utils/disks/constants.js.map +1 -1
- package/dist/utils/disks/prepareDisks.d.ts +1 -0
- package/dist/utils/disks/prepareDisks.js +32 -2
- package/dist/utils/disks/prepareDisks.js.map +1 -1
- package/dist/utils/disks/types.d.ts +1 -0
- package/dist/utils/errors/__test__/extractErrorDetails.test.js +26 -0
- package/dist/utils/errors/__test__/extractErrorDetails.test.js.map +1 -1
- package/dist/utils/storageMetrics.d.ts +4 -0
- package/dist/utils/storageMetrics.js +51 -0
- package/dist/utils/storageMetrics.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
.ydb-vdisk-storage-details {
|
|
2
|
+
&__title {
|
|
3
|
+
margin-bottom: var(--g-spacing-4);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
&__cards {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
align-items: flex-start;
|
|
10
|
+
gap: var(--g-spacing-1);
|
|
11
|
+
|
|
12
|
+
width: fit-content;
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&__card {
|
|
17
|
+
min-width: 0;
|
|
18
|
+
padding: var(--g-spacing-4) var(--g-spacing-5);
|
|
19
|
+
|
|
20
|
+
border-radius: var(--g-border-radius-m) var(--g-border-radius-xs) var(--g-border-radius-xs)
|
|
21
|
+
var(--g-border-radius-m);
|
|
22
|
+
background-color: var(--g-color-base-generic);
|
|
23
|
+
|
|
24
|
+
&_metrics {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex: 0 0 auto;
|
|
27
|
+
align-items: stretch;
|
|
28
|
+
gap: var(--g-spacing-5);
|
|
29
|
+
|
|
30
|
+
width: max-content;
|
|
31
|
+
max-width: 100%;
|
|
32
|
+
min-height: 74px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&_details {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex: 0 1 auto;
|
|
38
|
+
flex-wrap: wrap;
|
|
39
|
+
justify-content: flex-start;
|
|
40
|
+
align-items: center;
|
|
41
|
+
gap: var(--g-spacing-4);
|
|
42
|
+
|
|
43
|
+
width: fit-content;
|
|
44
|
+
max-width: 100%;
|
|
45
|
+
min-height: 74px;
|
|
46
|
+
|
|
47
|
+
border-radius: var(--g-border-radius-xs) var(--g-border-radius-m)
|
|
48
|
+
var(--g-border-radius-m) var(--g-border-radius-xs);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&__details {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex: 0 1 auto;
|
|
55
|
+
flex-wrap: wrap;
|
|
56
|
+
align-items: stretch;
|
|
57
|
+
gap: var(--g-spacing-4);
|
|
58
|
+
|
|
59
|
+
min-width: 0;
|
|
60
|
+
max-width: 100%;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&__metric,
|
|
64
|
+
&__detail {
|
|
65
|
+
display: flex;
|
|
66
|
+
flex-direction: column;
|
|
67
|
+
justify-content: center;
|
|
68
|
+
align-items: flex-start;
|
|
69
|
+
gap: var(--g-spacing-1);
|
|
70
|
+
|
|
71
|
+
min-width: 0;
|
|
72
|
+
padding-right: var(--g-spacing-4);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&__detail {
|
|
76
|
+
flex: 0 1 auto;
|
|
77
|
+
|
|
78
|
+
min-width: 100px;
|
|
79
|
+
max-width: 200px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&__value,
|
|
83
|
+
&__label {
|
|
84
|
+
display: block;
|
|
85
|
+
|
|
86
|
+
white-space: nowrap;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&__value-row &__value {
|
|
90
|
+
overflow: hidden;
|
|
91
|
+
|
|
92
|
+
text-overflow: ellipsis;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&__value-row {
|
|
96
|
+
flex-wrap: nowrap;
|
|
97
|
+
|
|
98
|
+
width: 100%;
|
|
99
|
+
min-width: 0;
|
|
100
|
+
height: 20px;
|
|
101
|
+
|
|
102
|
+
&_copyable {
|
|
103
|
+
width: auto;
|
|
104
|
+
max-width: 100%;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
&__value-popover {
|
|
109
|
+
flex: 1 1 auto;
|
|
110
|
+
|
|
111
|
+
min-width: 0;
|
|
112
|
+
|
|
113
|
+
&_copyable {
|
|
114
|
+
flex: 0 1 auto;
|
|
115
|
+
|
|
116
|
+
max-width: 100%;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
&__value-popover-content {
|
|
121
|
+
width: 100%;
|
|
122
|
+
min-width: 0;
|
|
123
|
+
|
|
124
|
+
&_copyable {
|
|
125
|
+
width: auto;
|
|
126
|
+
max-width: 100%;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
"vdisk": "VDisk",
|
|
6
6
|
"storage": "Storage",
|
|
7
7
|
"tablets": "Tablets",
|
|
8
|
+
"title_storage-details": "Storage details",
|
|
9
|
+
"field_storage-details-used": "Used",
|
|
10
|
+
"field_storage-details-total": "Total",
|
|
11
|
+
"field_storage-details-free": "Free",
|
|
12
|
+
"field_storage-details-usage": "Usage",
|
|
13
|
+
"field_datacenter": "Datacenter",
|
|
14
|
+
"field_rack": "Rack",
|
|
15
|
+
"field_node": "Node",
|
|
16
|
+
"field_pdisk-id": "PDisk ID",
|
|
17
|
+
"action_go-to-pdisk": "Go to PDisk",
|
|
8
18
|
"tablet-id": "Tablet ID",
|
|
9
19
|
"channel-id": "Channel ID",
|
|
10
20
|
"count": "Count",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const vDiskPageKeyset: (key: "storage" | "size" | "tablets" | "node" | "fqdn" | "count" | "tablet-id" | "label_donor" | "pdisk" | "vdisk" | "channel-id", params?: import("@gravity-ui/i18n").Params) => string;
|
|
1
|
+
export declare const vDiskPageKeyset: (key: "storage" | "size" | "tablets" | "node" | "fqdn" | "count" | "tablet-id" | "field_rack" | "label_donor" | "pdisk" | "vdisk" | "field_node" | "title_storage-details" | "field_storage-details-used" | "field_storage-details-total" | "field_storage-details-free" | "field_storage-details-usage" | "field_datacenter" | "field_pdisk-id" | "action_go-to-pdisk" | "channel-id", params?: import("@gravity-ui/i18n").Params) => string;
|
package/dist/routes.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export type BaseQueryParams = {
|
|
|
43
43
|
export type QueryParamsTypeFromQueryObject<T extends Record<string, QueryParamConfig<any, any>>> = {
|
|
44
44
|
[QueryParamName in keyof T]?: Parameters<T[QueryParamName]['encode']>[0];
|
|
45
45
|
};
|
|
46
|
-
export declare function getPDiskPagePath(pDiskId: string | number, nodeId: string | number, query?: Query): string;
|
|
46
|
+
export declare function getPDiskPagePath(pDiskId: string | number, nodeId: string | number, query?: Query, options?: CreateHrefOptions): string;
|
|
47
47
|
export declare function getStorageGroupPath(groupId: string | number, query?: Query): string;
|
|
48
48
|
export declare function getDefaultNodePath(params: {
|
|
49
49
|
id: string | number;
|
package/dist/routes.js
CHANGED
|
@@ -91,8 +91,8 @@ export function getLocationObjectFromHref(href) {
|
|
|
91
91
|
const { pathname, search, hash } = new URL(href, 'http://localhost');
|
|
92
92
|
return { pathname, search, hash };
|
|
93
93
|
}
|
|
94
|
-
export function getPDiskPagePath(pDiskId, nodeId, query = {}) {
|
|
95
|
-
return createHref(routes.pDisk, undefined, { ...query, nodeId, pDiskId });
|
|
94
|
+
export function getPDiskPagePath(pDiskId, nodeId, query = {}, options) {
|
|
95
|
+
return createHref(routes.pDisk, undefined, { ...query, nodeId, pDiskId }, options);
|
|
96
96
|
}
|
|
97
97
|
export function getStorageGroupPath(groupId, query = {}) {
|
|
98
98
|
return createHref(routes.storageGroup, undefined, { ...query, groupId });
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
jest.mock('./store', () => ({
|
|
2
|
+
backend: undefined,
|
|
3
|
+
basename: '/monitoring',
|
|
4
|
+
clusterName: undefined,
|
|
5
|
+
environment: undefined,
|
|
6
|
+
webVersion: false,
|
|
7
|
+
}));
|
|
8
|
+
jest.mock('./uiFactory/uiFactory', () => ({
|
|
9
|
+
uiFactory: { clustersDomain: undefined },
|
|
10
|
+
}));
|
|
11
|
+
jest.mock('./utils/hooks/useDatabaseFromQuery', () => ({
|
|
12
|
+
useDatabaseFromQuery: jest.fn(),
|
|
13
|
+
}));
|
|
14
|
+
import { getPDiskPagePath } from './routes';
|
|
15
|
+
describe('routes', () => {
|
|
16
|
+
describe('getPDiskPagePath', () => {
|
|
17
|
+
test('should create pDisk path without basename by default', () => {
|
|
18
|
+
expect(getPDiskPagePath(1001, 4)).toBe('/pDisk?nodeId=4&pDiskId=1001');
|
|
19
|
+
});
|
|
20
|
+
test('should prepend basename when requested for href-based links', () => {
|
|
21
|
+
expect(getPDiskPagePath(1001, 4, undefined, { withBasename: true })).toBe('/monitoring/pDisk?nodeId=4&pDiskId=1001');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=routes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.test.js","sourceRoot":"","sources":["../src/routes.test.ts"],"names":[],"mappings":"AAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,KAAK;CACpB,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,EAAC,cAAc,EAAE,SAAS,EAAC;CACzC,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;CAClC,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAE1C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,IAAI,CACnE,yCAAyC,CAC5C,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
jest.mock('../../../store', () => ({
|
|
2
|
+
backend: undefined,
|
|
3
|
+
clusterName: undefined,
|
|
4
|
+
}));
|
|
5
|
+
import { isRedirectToAuth } from '../../../utils/response';
|
|
6
|
+
import { handleBaseApiResponseError, recoverXhrResponseFromNetworkError } from '../base';
|
|
7
|
+
import * as needResetModule from '../utils/needReset';
|
|
8
|
+
function createXhrRequestMock({ readyState = 4, status = 504, statusText = 'Deadline Exceeded', responseText = '', responseURL = 'https://oidc-proxy-preprod.example.net/viewer/json/whoami?database=%2Fdb', rawHeaders = '', } = {}) {
|
|
9
|
+
return {
|
|
10
|
+
readyState,
|
|
11
|
+
status,
|
|
12
|
+
statusText,
|
|
13
|
+
responseText,
|
|
14
|
+
responseURL,
|
|
15
|
+
getAllResponseHeaders: () => rawHeaders,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function createNetworkError(request) {
|
|
19
|
+
return {
|
|
20
|
+
name: 'AxiosError',
|
|
21
|
+
message: 'Network Error',
|
|
22
|
+
code: 'ERR_NETWORK',
|
|
23
|
+
config: {
|
|
24
|
+
url: '/viewer/json/whoami?database=%2Fdb',
|
|
25
|
+
method: 'get',
|
|
26
|
+
},
|
|
27
|
+
request,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
describe('recoverXhrResponseFromNetworkError', () => {
|
|
31
|
+
test('restores HTTP response details from recoverable XHR network error', () => {
|
|
32
|
+
const error = createNetworkError(createXhrRequestMock({
|
|
33
|
+
rawHeaders: [
|
|
34
|
+
'Content-Type: text/plain; charset=utf-8',
|
|
35
|
+
'X-Worker-Name: oidc-proxy-1-vm-preprod.example.net',
|
|
36
|
+
'X-Trace-Id: trace-id-504',
|
|
37
|
+
].join('\r\n'),
|
|
38
|
+
}));
|
|
39
|
+
const response = recoverXhrResponseFromNetworkError(error);
|
|
40
|
+
expect(response).toEqual(expect.objectContaining({
|
|
41
|
+
status: 504,
|
|
42
|
+
statusText: 'Deadline Exceeded',
|
|
43
|
+
data: '',
|
|
44
|
+
headers: {
|
|
45
|
+
'content-type': 'text/plain; charset=utf-8',
|
|
46
|
+
'x-worker-name': 'oidc-proxy-1-vm-preprod.example.net',
|
|
47
|
+
'x-trace-id': 'trace-id-504',
|
|
48
|
+
},
|
|
49
|
+
config: expect.objectContaining({
|
|
50
|
+
url: 'https://oidc-proxy-preprod.example.net/viewer/json/whoami?database=%2Fdb',
|
|
51
|
+
method: 'get',
|
|
52
|
+
}),
|
|
53
|
+
code: 'ERR_NETWORK',
|
|
54
|
+
message: 'Network Error',
|
|
55
|
+
}));
|
|
56
|
+
expect(error.response).toBe(response);
|
|
57
|
+
expect(error.status).toBe(504);
|
|
58
|
+
});
|
|
59
|
+
test('does not treat array-like errors as recoverable records', () => {
|
|
60
|
+
const error = Object.assign([], createNetworkError(createXhrRequestMock()));
|
|
61
|
+
const response = recoverXhrResponseFromNetworkError(error);
|
|
62
|
+
expect(response).toBeUndefined();
|
|
63
|
+
expect(error.response).toBeUndefined();
|
|
64
|
+
});
|
|
65
|
+
test('restores recovered auth response in shape compatible with redirect-to-auth checks', () => {
|
|
66
|
+
const error = createNetworkError(createXhrRequestMock({
|
|
67
|
+
status: 401,
|
|
68
|
+
statusText: 'Unauthorized',
|
|
69
|
+
responseText: JSON.stringify({ authUrl: 'https://auth.example.com/login' }),
|
|
70
|
+
rawHeaders: 'Content-Type: application/json',
|
|
71
|
+
}));
|
|
72
|
+
const response = recoverXhrResponseFromNetworkError(error);
|
|
73
|
+
expect(response).toEqual(expect.objectContaining({
|
|
74
|
+
status: 401,
|
|
75
|
+
data: { authUrl: 'https://auth.example.com/login' },
|
|
76
|
+
}));
|
|
77
|
+
expect(isRedirectToAuth(response)).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
test.each([
|
|
80
|
+
{
|
|
81
|
+
title: 'status is zero',
|
|
82
|
+
request: createXhrRequestMock({ status: 0 }),
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
title: 'readyState is not done',
|
|
86
|
+
request: createXhrRequestMock({ readyState: 3 }),
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
title: 'request does not expose headers reader',
|
|
90
|
+
request: {
|
|
91
|
+
readyState: 4,
|
|
92
|
+
status: 504,
|
|
93
|
+
statusText: 'Deadline Exceeded',
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
title: 'request is missing entirely',
|
|
98
|
+
request: undefined,
|
|
99
|
+
},
|
|
100
|
+
])('does not restore response when $title', ({ request }) => {
|
|
101
|
+
const error = createNetworkError(request);
|
|
102
|
+
const response = recoverXhrResponseFromNetworkError(error);
|
|
103
|
+
expect(response).toBeUndefined();
|
|
104
|
+
expect(error.response).toBeUndefined();
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('handleBaseApiResponseError', () => {
|
|
108
|
+
afterEach(() => {
|
|
109
|
+
jest.restoreAllMocks();
|
|
110
|
+
});
|
|
111
|
+
test('preserves NEED_RESET behavior after recovered response JSON parsing', async () => {
|
|
112
|
+
const visibilityStateDescriptor = Object.getOwnPropertyDescriptor(document, 'visibilityState');
|
|
113
|
+
Object.defineProperty(document, 'visibilityState', {
|
|
114
|
+
configurable: true,
|
|
115
|
+
value: 'visible',
|
|
116
|
+
});
|
|
117
|
+
const processNeedResetSpy = jest
|
|
118
|
+
.spyOn(needResetModule, 'processNeedReset')
|
|
119
|
+
.mockImplementation(jest.fn());
|
|
120
|
+
const error = createNetworkError(createXhrRequestMock({
|
|
121
|
+
status: 401,
|
|
122
|
+
statusText: 'Unauthorized',
|
|
123
|
+
responseText: JSON.stringify({ code: 'NEED_RESET' }),
|
|
124
|
+
rawHeaders: 'Content-Type: application/json',
|
|
125
|
+
}));
|
|
126
|
+
await expect(handleBaseApiResponseError(error)).rejects.toBe(error);
|
|
127
|
+
expect(processNeedResetSpy).toHaveBeenCalledTimes(1);
|
|
128
|
+
if (visibilityStateDescriptor) {
|
|
129
|
+
Object.defineProperty(document, 'visibilityState', visibilityStateDescriptor);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
Reflect.deleteProperty(document, 'visibilityState');
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=base.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../../../src/services/api/__test__/base.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,26 @@ export interface BaseAPIParams {
|
|
|
12
12
|
proxyMeta: undefined | boolean;
|
|
13
13
|
useRelativePath: undefined | boolean;
|
|
14
14
|
}
|
|
15
|
+
interface XhrLikeRequest {
|
|
16
|
+
readyState: number;
|
|
17
|
+
status: number;
|
|
18
|
+
statusText?: string;
|
|
19
|
+
responseText?: string;
|
|
20
|
+
responseURL?: string;
|
|
21
|
+
getAllResponseHeaders: () => string;
|
|
22
|
+
}
|
|
23
|
+
interface RecoveredNetworkResponse {
|
|
24
|
+
status: number;
|
|
25
|
+
statusText: string;
|
|
26
|
+
data?: unknown;
|
|
27
|
+
headers: Record<string, string>;
|
|
28
|
+
config: Record<string, unknown>;
|
|
29
|
+
request: XhrLikeRequest;
|
|
30
|
+
code?: string;
|
|
31
|
+
message?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function recoverXhrResponseFromNetworkError(error: unknown): RecoveredNetworkResponse | undefined;
|
|
34
|
+
export declare function handleBaseApiResponseError(error: unknown): Promise<never>;
|
|
15
35
|
export declare class BaseYdbAPI extends AxiosWrapper {
|
|
16
36
|
DEFAULT_RETRIES_COUNT: number;
|
|
17
37
|
singleClusterMode: BaseAPIParams['singleClusterMode'];
|
|
@@ -21,3 +41,4 @@ export declare class BaseYdbAPI extends AxiosWrapper {
|
|
|
21
41
|
getSchemaPath(params?: SchemaPathParam): string | undefined;
|
|
22
42
|
prepareArrayRequestParam(arr: (string | number)[]): string;
|
|
23
43
|
}
|
|
44
|
+
export {};
|
|
@@ -6,6 +6,105 @@ import { DEV_ENABLE_TRACING_FOR_ALL_REQUESTS } from '../../utils/constants';
|
|
|
6
6
|
import { prepareBackendWithMetaProxy } from '../../utils/parseBalancer';
|
|
7
7
|
import { isRedirectToAuth } from '../../utils/response';
|
|
8
8
|
import { isNeedResetResponse, processNeedReset } from './utils/needReset';
|
|
9
|
+
function isRecord(value) {
|
|
10
|
+
return Boolean(value && typeof value === 'object' && !Array.isArray(value));
|
|
11
|
+
}
|
|
12
|
+
function isXhrLikeRequest(request) {
|
|
13
|
+
return Boolean(isRecord(request) &&
|
|
14
|
+
typeof request.readyState === 'number' &&
|
|
15
|
+
typeof request.status === 'number' &&
|
|
16
|
+
typeof request.getAllResponseHeaders === 'function');
|
|
17
|
+
}
|
|
18
|
+
function parseXhrResponseHeaders(rawHeaders) {
|
|
19
|
+
if (!rawHeaders.trim()) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
const headers = {};
|
|
23
|
+
for (const line of rawHeaders.split(/\r?\n/)) {
|
|
24
|
+
const separatorIndex = line.indexOf(':');
|
|
25
|
+
if (separatorIndex <= 0) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const headerName = line.slice(0, separatorIndex).trim().toLowerCase();
|
|
29
|
+
const headerValue = line.slice(separatorIndex + 1).trim();
|
|
30
|
+
if (!headerName || !headerValue) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
headers[headerName] = headers[headerName]
|
|
34
|
+
? `${headers[headerName]}, ${headerValue}`
|
|
35
|
+
: headerValue;
|
|
36
|
+
}
|
|
37
|
+
return headers;
|
|
38
|
+
}
|
|
39
|
+
function parseRecoveredResponseData(responseText, headers) {
|
|
40
|
+
var _a;
|
|
41
|
+
if (typeof responseText !== 'string') {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const trimmedResponse = responseText.trim();
|
|
45
|
+
if (!trimmedResponse) {
|
|
46
|
+
return responseText;
|
|
47
|
+
}
|
|
48
|
+
const contentType = (_a = headers['content-type']) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
49
|
+
const shouldParseJson = Boolean(contentType === null || contentType === void 0 ? void 0 : contentType.includes('json')) ||
|
|
50
|
+
trimmedResponse.startsWith('{') ||
|
|
51
|
+
trimmedResponse.startsWith('[');
|
|
52
|
+
if (!shouldParseJson) {
|
|
53
|
+
return responseText;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(responseText);
|
|
57
|
+
}
|
|
58
|
+
catch (_b) {
|
|
59
|
+
return responseText;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function recoverXhrResponseFromNetworkError(error) {
|
|
63
|
+
if (!isRecord(error) || error.code !== 'ERR_NETWORK' || error.response) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const request = error.request;
|
|
67
|
+
if (!isXhrLikeRequest(request) || request.readyState !== 4 || request.status <= 0) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const headers = parseXhrResponseHeaders(request.getAllResponseHeaders());
|
|
71
|
+
const config = isRecord(error.config) ? { ...error.config } : {};
|
|
72
|
+
if (request.responseURL) {
|
|
73
|
+
config.url = request.responseURL;
|
|
74
|
+
}
|
|
75
|
+
const recoveredResponse = {
|
|
76
|
+
status: request.status,
|
|
77
|
+
statusText: typeof request.statusText === 'string' ? request.statusText : '',
|
|
78
|
+
data: parseRecoveredResponseData(request.responseText, headers),
|
|
79
|
+
headers,
|
|
80
|
+
config,
|
|
81
|
+
request,
|
|
82
|
+
};
|
|
83
|
+
if (typeof error.code === 'string') {
|
|
84
|
+
recoveredResponse.code = error.code;
|
|
85
|
+
}
|
|
86
|
+
if (typeof error.message === 'string') {
|
|
87
|
+
recoveredResponse.message = error.message;
|
|
88
|
+
}
|
|
89
|
+
Object.assign(error, {
|
|
90
|
+
response: recoveredResponse,
|
|
91
|
+
status: request.status,
|
|
92
|
+
});
|
|
93
|
+
return recoveredResponse;
|
|
94
|
+
}
|
|
95
|
+
export function handleBaseApiResponseError(error) {
|
|
96
|
+
recoverXhrResponseFromNetworkError(error);
|
|
97
|
+
const response = isRecord(error) && 'response' in error && isRecord(error.response)
|
|
98
|
+
? error.response
|
|
99
|
+
: undefined;
|
|
100
|
+
if (isRedirectToAuth(response)) {
|
|
101
|
+
window.location.assign(response.data.authUrl);
|
|
102
|
+
}
|
|
103
|
+
if (isNeedResetResponse(response === null || response === void 0 ? void 0 : response.data) && document.visibilityState === 'visible') {
|
|
104
|
+
processNeedReset();
|
|
105
|
+
}
|
|
106
|
+
return Promise.reject(error);
|
|
107
|
+
}
|
|
9
108
|
export class BaseYdbAPI extends AxiosWrapper {
|
|
10
109
|
constructor(axiosOptions, baseApiParams) {
|
|
11
110
|
super(axiosOptions);
|
|
@@ -40,19 +139,7 @@ export class BaseYdbAPI extends AxiosWrapper {
|
|
|
40
139
|
return response;
|
|
41
140
|
});
|
|
42
141
|
// Interceptor to process OIDC auth and NEED_RESET
|
|
43
|
-
this._axios.interceptors.response.use(null,
|
|
44
|
-
const response = error.response;
|
|
45
|
-
// OIDC proxy returns 401 response with authUrl in it
|
|
46
|
-
// authUrl - external auth service link, after successful auth additional cookies will be appended
|
|
47
|
-
// that will allow access to clusters where OIDC proxy is a balancer
|
|
48
|
-
if (isRedirectToAuth(response)) {
|
|
49
|
-
window.location.assign(response.data.authUrl);
|
|
50
|
-
}
|
|
51
|
-
if (isNeedResetResponse(response === null || response === void 0 ? void 0 : response.data) && document.visibilityState === 'visible') {
|
|
52
|
-
processNeedReset();
|
|
53
|
-
}
|
|
54
|
-
return Promise.reject(error);
|
|
55
|
-
});
|
|
142
|
+
this._axios.interceptors.response.use(null, handleBaseApiResponseError);
|
|
56
143
|
}
|
|
57
144
|
getPath(path) {
|
|
58
145
|
if (clusterName && !this.singleClusterMode && !BACKEND) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/api/base.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,EAAC,OAAO,IAAI,OAAO,EAAE,WAAW,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAC,mCAAmC,EAAC,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAC,2BAA2B,EAAC,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAC,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/api/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export interface PreparedStorageNode extends PreparedNodeSystemState, Omit<TNode
|
|
|
36
36
|
MaximumDisksPerNode: number;
|
|
37
37
|
MaxPDiskUsage?: number;
|
|
38
38
|
MaxVDiskSlotUsage?: number;
|
|
39
|
-
CapacityAlert?: ECapacityAlert;
|
|
39
|
+
CapacityAlert?: ECapacityAlert | string;
|
|
40
40
|
}
|
|
41
41
|
export interface PreparedStorageGroupFilters {
|
|
42
42
|
searchValue: string;
|
|
@@ -87,7 +87,7 @@ export interface PreparedStorageGroup {
|
|
|
87
87
|
MaxVDiskSlotUsage?: number;
|
|
88
88
|
MaxVDiskRawUsage?: number;
|
|
89
89
|
MaxNormalizedOccupancy?: number;
|
|
90
|
-
CapacityAlert?: ECapacityAlert;
|
|
90
|
+
CapacityAlert?: ECapacityAlert | string;
|
|
91
91
|
}
|
|
92
92
|
export type TableGroup = {
|
|
93
93
|
name: string;
|
|
@@ -23,6 +23,7 @@ export function prepareVDiskDataResponse([storageGroupResponse, nodeResponse], v
|
|
|
23
23
|
const NodeHost = preparedNode.Host;
|
|
24
24
|
const NodeType = (_g = preparedNode.Roles) === null || _g === void 0 ? void 0 : _g[0];
|
|
25
25
|
const NodeDC = preparedNode.DC;
|
|
26
|
+
const NodeRack = preparedNode.Rack;
|
|
26
27
|
const PDiskId = (_h = currentVDisk.PDiskId) !== null && _h !== void 0 ? _h : preparedPDisk === null || preparedPDisk === void 0 ? void 0 : preparedPDisk.PDiskId;
|
|
27
28
|
const PDiskType = preparedPDisk === null || preparedPDisk === void 0 ? void 0 : preparedPDisk.Type;
|
|
28
29
|
return {
|
|
@@ -31,6 +32,7 @@ export function prepareVDiskDataResponse([storageGroupResponse, nodeResponse], v
|
|
|
31
32
|
NodeHost,
|
|
32
33
|
NodeType,
|
|
33
34
|
NodeDC,
|
|
35
|
+
NodeRack,
|
|
34
36
|
PDiskId,
|
|
35
37
|
PDiskType,
|
|
36
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/store/reducers/vdisk/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAIjE,MAAM,UAAU,wBAAwB,CACpC,CAAC,oBAAoB,EAAE,YAAY,CAGlC,EACD,OAAe;;IAEf,MAAM,QAAQ,GAAG,MAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,aAAa,0CAAG,CAAC,EAAE,MAAM,0CAAE,IAAI,CAClE,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE,EAAE,CAClB,OAAO,KAAK,OAAO,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA,CACvF,CAAC;IAEF,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,YAAY,GAAkB,EAAE,CAAC;IAErC,IAAI,aAAa,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;QAC1C,YAAY,GAAG,aAAa,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,KAAK,IAAI,MAAA,aAAa,CAAC,MAAM,mCAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBAClC,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,0CAAG,CAAC,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,MAAA,MAAA,YAAY,CAAC,MAAM,mCAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,mCAAI,YAAY,CAAC,MAAM,CAAC;IACnF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAA,YAAY,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/store/reducers/vdisk/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAIjE,MAAM,UAAU,wBAAwB,CACpC,CAAC,oBAAoB,EAAE,YAAY,CAGlC,EACD,OAAe;;IAEf,MAAM,QAAQ,GAAG,MAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,aAAa,0CAAG,CAAC,EAAE,MAAM,0CAAE,IAAI,CAClE,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE,EAAE,CAClB,OAAO,KAAK,OAAO,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA,CACvF,CAAC;IAEF,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,YAAY,GAAkB,EAAE,CAAC;IAErC,IAAI,aAAa,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;QAC1C,YAAY,GAAG,aAAa,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,KAAK,IAAI,MAAA,aAAa,CAAC,MAAM,mCAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBAClC,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,0CAAG,CAAC,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,MAAA,MAAA,YAAY,CAAC,MAAM,mCAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,mCAAI,YAAY,CAAC,MAAM,CAAC;IACnF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAA,YAAY,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;IAEnC,MAAM,OAAO,GAAG,MAAA,YAAY,CAAC,OAAO,mCAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC;IAC/D,MAAM,SAAS,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC;IAEtC,OAAO;QACH,GAAG,YAAY;QAEf,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,QAAQ;QAER,OAAO;QACP,SAAS;KACZ,CAAC;AACN,CAAC"}
|
package/dist/types/api/enums.js
CHANGED
|
@@ -23,4 +23,11 @@ export var ECapacityAlert;
|
|
|
23
23
|
ECapacityAlert["RED"] = "RED";
|
|
24
24
|
ECapacityAlert["BLACK"] = "BLACK";
|
|
25
25
|
})(ECapacityAlert || (ECapacityAlert = {}));
|
|
26
|
+
const capacityAlertValues = new Set(Object.values(ECapacityAlert));
|
|
27
|
+
export function isCapacityAlert(value) {
|
|
28
|
+
if (!value) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return capacityAlertValues.has(value);
|
|
32
|
+
}
|
|
26
33
|
//# sourceMappingURL=enums.js.map
|