ydb-embedded-ui 2.5.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +40 -0
- package/dist/components/InfoViewer/InfoViewer.scss +3 -3
- package/dist/components/InfoViewer/schemaInfo/CDCStreamInfo.tsx +23 -9
- package/dist/containers/Storage/Pdisk/Pdisk.tsx +3 -9
- package/dist/containers/Storage/Pdisk/__tests__/colors.tsx +1 -1
- package/dist/containers/Storage/Storage.js +11 -1
- package/dist/containers/Storage/StorageGroups/StorageGroups.tsx +39 -32
- package/dist/containers/Tenant/Diagnostics/Compute/Compute.js +21 -13
- package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.tsx +22 -6
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.tsx +40 -9
- package/dist/containers/Tenant/Diagnostics/Diagnostics.tsx +15 -9
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Healthcheck/Healthcheck.tsx +13 -5
- package/dist/containers/Tenant/Diagnostics/Network/Network.js +17 -4
- package/dist/containers/Tenant/Diagnostics/Overview/Overview.tsx +50 -16
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +16 -2
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +1 -0
- package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.tsx +2 -2
- package/dist/containers/Tenant/utils/schema.ts +84 -0
- package/dist/services/api.d.ts +17 -11
- package/dist/store/reducers/describe.ts +56 -14
- package/dist/store/reducers/healthcheckInfo.ts +23 -8
- package/dist/store/reducers/network.js +22 -1
- package/dist/store/reducers/nodes.js +13 -0
- package/dist/store/reducers/schema.ts +84 -11
- package/dist/store/reducers/storage.js +13 -0
- package/dist/types/api/enums.ts +10 -0
- package/dist/types/api/nodes.ts +96 -0
- package/dist/types/api/pdisk.ts +48 -0
- package/dist/types/api/schema.ts +148 -9
- package/dist/types/api/storage.ts +3 -173
- package/dist/types/api/tablet.ts +97 -0
- package/dist/types/api/vdisk.ts +120 -0
- package/dist/types/store/describe.ts +8 -2
- package/dist/types/store/healthcheck.ts +12 -0
- package/dist/types/store/schema.ts +7 -1
- package/dist/utils/pdisk.ts +1 -1
- package/dist/utils/storage.ts +1 -1
- package/package.json +3 -2
@@ -1,7 +1,16 @@
|
|
1
1
|
import {Reducer} from 'redux';
|
2
|
+
import {createSelector, Selector} from 'reselect';
|
2
3
|
|
3
|
-
import {
|
4
|
+
import {
|
5
|
+
ISchemaAction,
|
6
|
+
ISchemaData,
|
7
|
+
ISchemaHandledResponse,
|
8
|
+
ISchemaRootStateSlice,
|
9
|
+
ISchemaState,
|
10
|
+
} from '../../types/store/schema';
|
11
|
+
import {EPathType} from '../../types/api/schema';
|
4
12
|
import '../../services/api';
|
13
|
+
import {isEntityWithMergedImplementation} from '../../containers/Tenant/utils/schema';
|
5
14
|
|
6
15
|
import {createRequestActionTypes, createApiRequest} from '../utils';
|
7
16
|
|
@@ -31,22 +40,24 @@ const schema: Reducer<ISchemaState, ISchemaAction> = (state = initialState, acti
|
|
31
40
|
};
|
32
41
|
}
|
33
42
|
case FETCH_SCHEMA.SUCCESS: {
|
34
|
-
const
|
43
|
+
const isCurrentSchema =
|
44
|
+
!state.currentSchemaPath || state.currentSchemaPath === action.data.path;
|
35
45
|
|
36
|
-
|
37
|
-
|
46
|
+
const newData = {...state.data, ...action.data.data};
|
47
|
+
|
48
|
+
if (!isCurrentSchema) {
|
49
|
+
return {
|
50
|
+
...state,
|
51
|
+
data: newData,
|
52
|
+
};
|
38
53
|
}
|
39
54
|
|
40
|
-
const currentSchema = state.currentSchemaPath
|
41
|
-
? newData[state.currentSchemaPath]
|
42
|
-
: action.data;
|
43
|
-
const currentSchemaPath = state.currentSchemaPath || action.data.Path;
|
44
55
|
return {
|
45
56
|
...state,
|
46
57
|
error: undefined,
|
47
58
|
data: newData,
|
48
|
-
currentSchema,
|
49
|
-
currentSchemaPath,
|
59
|
+
currentSchema: action.data.currentSchema,
|
60
|
+
currentSchemaPath: action.data.path,
|
50
61
|
loading: false,
|
51
62
|
wasLoaded: true,
|
52
63
|
};
|
@@ -109,9 +120,48 @@ const schema: Reducer<ISchemaState, ISchemaAction> = (state = initialState, acti
|
|
109
120
|
};
|
110
121
|
|
111
122
|
export function getSchema({path}: {path: string}) {
|
123
|
+
const request = window.api.getSchema({path});
|
112
124
|
return createApiRequest({
|
113
|
-
request
|
125
|
+
request,
|
114
126
|
actions: FETCH_SCHEMA,
|
127
|
+
dataHandler: (data): ISchemaHandledResponse => {
|
128
|
+
const newData: ISchemaData = {};
|
129
|
+
if (data.Path) {
|
130
|
+
newData[data.Path] = data;
|
131
|
+
}
|
132
|
+
return {
|
133
|
+
path: data.Path,
|
134
|
+
currentSchema: data,
|
135
|
+
data: newData,
|
136
|
+
};
|
137
|
+
},
|
138
|
+
});
|
139
|
+
}
|
140
|
+
|
141
|
+
export function getSchemaBatched(paths: string[]) {
|
142
|
+
const requestArray = paths.map((p) =>
|
143
|
+
window.api.getSchema({path: p}, {concurrentId: `getSchemaBatched|${p}`}),
|
144
|
+
);
|
145
|
+
const request = Promise.all(requestArray);
|
146
|
+
|
147
|
+
return createApiRequest({
|
148
|
+
request,
|
149
|
+
actions: FETCH_SCHEMA,
|
150
|
+
dataHandler: (data): ISchemaHandledResponse => {
|
151
|
+
const newData: ISchemaData = {};
|
152
|
+
|
153
|
+
data.forEach((dataItem) => {
|
154
|
+
if (dataItem.Path) {
|
155
|
+
newData[dataItem.Path] = dataItem;
|
156
|
+
}
|
157
|
+
});
|
158
|
+
|
159
|
+
return {
|
160
|
+
path: data[0].Path,
|
161
|
+
currentSchema: data[0],
|
162
|
+
data: newData,
|
163
|
+
};
|
164
|
+
},
|
115
165
|
});
|
116
166
|
}
|
117
167
|
|
@@ -153,4 +203,27 @@ export function resetLoadingState() {
|
|
153
203
|
} as const;
|
154
204
|
}
|
155
205
|
|
206
|
+
export const selectSchemaChildren = (state: ISchemaRootStateSlice, path?: string) =>
|
207
|
+
path ? state.schema.data[path]?.PathDescription?.Children : undefined;
|
208
|
+
|
209
|
+
export const selectSchemaData = (state: ISchemaRootStateSlice, path?: string) =>
|
210
|
+
path ? state.schema.data[path] : undefined;
|
211
|
+
|
212
|
+
export const selectSchemaMergedChildrenPaths: Selector<
|
213
|
+
ISchemaRootStateSlice,
|
214
|
+
string[] | undefined,
|
215
|
+
[string | undefined, EPathType | undefined]
|
216
|
+
> = createSelector(
|
217
|
+
[
|
218
|
+
(_, path?: string) => path,
|
219
|
+
(_, _path, type: EPathType | undefined) => type,
|
220
|
+
selectSchemaChildren,
|
221
|
+
],
|
222
|
+
(path, type, children) => {
|
223
|
+
return isEntityWithMergedImplementation(type)
|
224
|
+
? children?.map(({Name}) => path + '/' + Name)
|
225
|
+
: undefined;
|
226
|
+
},
|
227
|
+
);
|
228
|
+
|
156
229
|
export default schema;
|
@@ -34,6 +34,7 @@ const SET_USAGE_FILTER = 'storage/SET_USAGE_FILTER';
|
|
34
34
|
const SET_VISIBLE_GROUPS = 'storage/SET_VISIBLE_GROUPS';
|
35
35
|
const SET_STORAGE_TYPE = 'storage/SET_STORAGE_TYPE';
|
36
36
|
const SET_NODES_UPTIME_FILTER = 'storage/SET_NODES_UPTIME_FILTER';
|
37
|
+
const SET_DATA_WAS_NOT_LOADED = 'storage/SET_DATA_WAS_NOT_LOADED';
|
37
38
|
|
38
39
|
const initialState = {
|
39
40
|
loading: true,
|
@@ -116,6 +117,12 @@ const storage = (state = initialState, action) => {
|
|
116
117
|
error: undefined,
|
117
118
|
};
|
118
119
|
}
|
120
|
+
case SET_DATA_WAS_NOT_LOADED: {
|
121
|
+
return {
|
122
|
+
...state,
|
123
|
+
wasLoaded: false,
|
124
|
+
};
|
125
|
+
}
|
119
126
|
default:
|
120
127
|
return state;
|
121
128
|
}
|
@@ -169,6 +176,12 @@ export function setNodesUptimeFilter(value) {
|
|
169
176
|
};
|
170
177
|
}
|
171
178
|
|
179
|
+
export const setDataWasNotLoaded = () => {
|
180
|
+
return {
|
181
|
+
type: SET_DATA_WAS_NOT_LOADED,
|
182
|
+
};
|
183
|
+
};
|
184
|
+
|
172
185
|
export const getStoragePools = (state) => state.storage.data?.StoragePools;
|
173
186
|
export const getStoragePoolsGroupsCount = (state) => ({
|
174
187
|
total: state.storage.data?.TotalGroups || 0,
|
@@ -0,0 +1,10 @@
|
|
1
|
+
// Shows system status
|
2
|
+
// Currently is used in response types of viewer/json/nodes and viewer/json/storage
|
3
|
+
// Probably will appear in /viewer/json/tenantinfo /viewer/json/cluster /viewer/json/tabletinfo /viewer/json/compute
|
4
|
+
export enum EFlag {
|
5
|
+
Grey = 'Grey',
|
6
|
+
Green = 'Green',
|
7
|
+
Yellow = 'Yellow',
|
8
|
+
Orange = 'Orange',
|
9
|
+
Red = 'Red',
|
10
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
import {EFlag} from './enums';
|
2
|
+
import {TPDiskStateInfo} from './pdisk';
|
3
|
+
import {TTabletStateInfo} from './tablet';
|
4
|
+
|
5
|
+
export interface TNodesInfo {
|
6
|
+
Overall: EFlag;
|
7
|
+
Nodes?: TNodeInfo[];
|
8
|
+
|
9
|
+
/** uint64 */
|
10
|
+
TotalNodes: string;
|
11
|
+
/** uint64 */
|
12
|
+
FoundNodes: string;
|
13
|
+
}
|
14
|
+
|
15
|
+
interface TNodeInfo {
|
16
|
+
NodeId: number;
|
17
|
+
SystemState: TSystemStateInfo;
|
18
|
+
PDisks?: TPDiskStateInfo[];
|
19
|
+
Tablets?: TTabletStateInfo[];
|
20
|
+
}
|
21
|
+
|
22
|
+
interface TSystemStateInfo {
|
23
|
+
/** uint64 */
|
24
|
+
StartTime?: string;
|
25
|
+
/** uint64 */
|
26
|
+
ChangeTime?: string;
|
27
|
+
SystemLocation?: TLegacyNodeLocation;
|
28
|
+
/** double */
|
29
|
+
LoadAverage?: number[];
|
30
|
+
NumberOfCpus?: number;
|
31
|
+
SystemState?: EFlag;
|
32
|
+
MessageBusState?: EFlag;
|
33
|
+
GRpcState?: EFlag;
|
34
|
+
NodeId?: number;
|
35
|
+
Count?: number;
|
36
|
+
DataCenterId?: number;
|
37
|
+
DataCenterDescription?: string;
|
38
|
+
DataCenter?: string;
|
39
|
+
RackId?: number;
|
40
|
+
Rack?: string;
|
41
|
+
Host?: string;
|
42
|
+
Version?: string;
|
43
|
+
PoolStats?: TPoolStats[];
|
44
|
+
Endpoints?: TEndpoint[];
|
45
|
+
Roles?: string[];
|
46
|
+
Tenants?: string[];
|
47
|
+
ClusterName?: string;
|
48
|
+
/** uint64 */
|
49
|
+
MemoryUsed?: string;
|
50
|
+
/** uint64 */
|
51
|
+
MemoryLimit?: string;
|
52
|
+
ConfigState?: EConfigState; //default = Consistent
|
53
|
+
/** uint64 */
|
54
|
+
MemoryUsedInAlloc?: string;
|
55
|
+
/** double */
|
56
|
+
MaxDiskUsage?: number;
|
57
|
+
Location?: TNodeLocation;
|
58
|
+
}
|
59
|
+
|
60
|
+
interface TPoolStats {
|
61
|
+
Name?: string;
|
62
|
+
/** double */
|
63
|
+
Usage?: number;
|
64
|
+
Threads?: number;
|
65
|
+
}
|
66
|
+
|
67
|
+
interface TEndpoint {
|
68
|
+
Name?: string;
|
69
|
+
Address?: string;
|
70
|
+
}
|
71
|
+
|
72
|
+
interface TLegacyNodeLocation {
|
73
|
+
DataCenter?: number;
|
74
|
+
Room?: number;
|
75
|
+
Rack?: number;
|
76
|
+
Body?: number;
|
77
|
+
}
|
78
|
+
|
79
|
+
interface TNodeLocation {
|
80
|
+
// compatibility section -- will be removed in future versions
|
81
|
+
DataCenterNum?: number; // deprecated
|
82
|
+
RoomNum?: number; // deprecated
|
83
|
+
RackNum?: number; // deprecated
|
84
|
+
BodyNum?: number; // deprecated
|
85
|
+
Body?: number; // deprecated
|
86
|
+
|
87
|
+
DataCenter?: string;
|
88
|
+
Module?: string;
|
89
|
+
Rack?: string;
|
90
|
+
Unit?: string;
|
91
|
+
}
|
92
|
+
|
93
|
+
enum EConfigState {
|
94
|
+
'Consistent' = 'Consistent',
|
95
|
+
'Outdated' = 'Outdated',
|
96
|
+
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import {EFlag} from './enums';
|
2
|
+
|
3
|
+
export interface TPDiskStateInfo {
|
4
|
+
PDiskId?: number;
|
5
|
+
/** uint64 */
|
6
|
+
CreateTime?: string;
|
7
|
+
/** uint64 */
|
8
|
+
ChangeTime?: string;
|
9
|
+
Path?: string;
|
10
|
+
/** uint64 */
|
11
|
+
Guid?: string;
|
12
|
+
/** uint64 */
|
13
|
+
Category?: string;
|
14
|
+
/** uint64 */
|
15
|
+
AvailableSize?: string;
|
16
|
+
/** uint64 */
|
17
|
+
TotalSize?: string;
|
18
|
+
State?: TPDiskState;
|
19
|
+
NodeId?: number;
|
20
|
+
Count?: number;
|
21
|
+
Device?: EFlag;
|
22
|
+
Realtime?: EFlag;
|
23
|
+
StateFlag?: EFlag;
|
24
|
+
Overall?: EFlag;
|
25
|
+
SerialNumber?: string;
|
26
|
+
}
|
27
|
+
|
28
|
+
export enum TPDiskState {
|
29
|
+
Initial = 'Initial',
|
30
|
+
InitialFormatRead = 'InitialFormatRead',
|
31
|
+
InitialFormatReadError = 'InitialFormatReadError',
|
32
|
+
InitialSysLogRead = 'InitialSysLogRead',
|
33
|
+
InitialSysLogReadError = 'InitialSysLogReadError',
|
34
|
+
InitialSysLogParseError = 'InitialSysLogParseError',
|
35
|
+
InitialCommonLogRead = 'InitialCommonLogRead',
|
36
|
+
InitialCommonLogReadError = 'InitialCommonLogReadError',
|
37
|
+
InitialCommonLogParseError = 'InitialCommonLogParseError',
|
38
|
+
CommonLoggerInitError = 'CommonLoggerInitError',
|
39
|
+
Normal = 'Normal',
|
40
|
+
OpenFileError = 'OpenFileError',
|
41
|
+
ChunkQuotaError = 'ChunkQuotaError',
|
42
|
+
DeviceIoError = 'DeviceIoError',
|
43
|
+
|
44
|
+
Missing = 'Missing',
|
45
|
+
Timeout = 'Timeout',
|
46
|
+
NodeDisconnected = 'NodeDisconnected',
|
47
|
+
Unknown = 'Unknown',
|
48
|
+
}
|
package/dist/types/api/schema.ts
CHANGED
@@ -41,7 +41,7 @@ enum EStatus {
|
|
41
41
|
interface TPathDescription {
|
42
42
|
/** info about the path itself */
|
43
43
|
Self?: TDirEntry;
|
44
|
-
DomainDescription?:
|
44
|
+
DomainDescription?: TDomainDescription;
|
45
45
|
|
46
46
|
// for directory
|
47
47
|
Children?: TDirEntry[];
|
@@ -85,6 +85,145 @@ export interface TDirEntry {
|
|
85
85
|
Version?: TPathVersion;
|
86
86
|
}
|
87
87
|
|
88
|
+
interface TDomainDescription {
|
89
|
+
ProcessingParams?: TProcessingParams;
|
90
|
+
|
91
|
+
DomainKey?: TDomainKey;
|
92
|
+
|
93
|
+
StoragePools?: TStoragePool[];
|
94
|
+
|
95
|
+
/** uint64 */
|
96
|
+
PathsInside?: string;
|
97
|
+
/** uint64 */
|
98
|
+
PathsLimit?: string;
|
99
|
+
/** uint64 */
|
100
|
+
ShardsInside?: string;
|
101
|
+
/** uint64 */
|
102
|
+
ShardsLimit?: string;
|
103
|
+
|
104
|
+
ResourcesDomainKey?: TDomainKey;
|
105
|
+
|
106
|
+
DiskSpaceUsage?: TDiskSpaceUsage;
|
107
|
+
|
108
|
+
/** uint64 */
|
109
|
+
PQPartitionsInside?: string;
|
110
|
+
/** uint64 */
|
111
|
+
PQPartitionsLimit?: string;
|
112
|
+
|
113
|
+
DomainState?: TDomainState;
|
114
|
+
|
115
|
+
DeclaredSchemeQuotas?: TSchemeQuotas;
|
116
|
+
DatabaseQuotas?: DatabaseQuotas;
|
117
|
+
SecurityState?: TSecurityState;
|
118
|
+
}
|
119
|
+
|
120
|
+
interface TDomainKey {
|
121
|
+
/** fixed64 */
|
122
|
+
SchemeShard?: string;
|
123
|
+
/** fixed64 */
|
124
|
+
PathId?: string;
|
125
|
+
}
|
126
|
+
|
127
|
+
interface TProcessingParams {
|
128
|
+
Version?: number;
|
129
|
+
/** uint64 */
|
130
|
+
PlanResolution?: string;
|
131
|
+
/** fixed64 */
|
132
|
+
Coordinators?: string[];
|
133
|
+
/** uint64 */
|
134
|
+
TimeCastBucketsPerMediator?: string;
|
135
|
+
/** fixed64 */
|
136
|
+
Mediators?: string[];
|
137
|
+
/** fixed64 */
|
138
|
+
SchemeShard?: string;
|
139
|
+
/** fixed64 */
|
140
|
+
Hive?: string;
|
141
|
+
/** fixed64 */
|
142
|
+
SysViewProcessor?: string;
|
143
|
+
}
|
144
|
+
|
145
|
+
interface TDomainState {
|
146
|
+
DiskQuotaExceeded?: boolean;
|
147
|
+
}
|
148
|
+
|
149
|
+
interface TDiskSpaceUsage {
|
150
|
+
Tables?: TTables;
|
151
|
+
}
|
152
|
+
|
153
|
+
interface TTables {
|
154
|
+
/** uint64 */
|
155
|
+
TotalSize?: string;
|
156
|
+
/** uint64 */
|
157
|
+
DataSize?: string;
|
158
|
+
/** uint64 */
|
159
|
+
IndexSize?: string;
|
160
|
+
}
|
161
|
+
|
162
|
+
interface TStoragePool {
|
163
|
+
Name?: string;
|
164
|
+
Kind?: string;
|
165
|
+
}
|
166
|
+
|
167
|
+
interface TSchemeQuotas {
|
168
|
+
SchemeQuotas?: TSchemeQuota[];
|
169
|
+
}
|
170
|
+
|
171
|
+
interface TSchemeQuota {
|
172
|
+
/** double */
|
173
|
+
BucketSize?: number;
|
174
|
+
/** uint64 */
|
175
|
+
BucketSeconds?: string;
|
176
|
+
}
|
177
|
+
|
178
|
+
interface TSecurityState {
|
179
|
+
PublicKeys?: TPublicKey[];
|
180
|
+
Sids?: TSid[];
|
181
|
+
Audience: string;
|
182
|
+
}
|
183
|
+
|
184
|
+
interface TPublicKey {
|
185
|
+
/** uint64 */
|
186
|
+
KeyId: string;
|
187
|
+
KeyDataPEM: string;
|
188
|
+
/** uint64 */
|
189
|
+
ExpiresAt: string;
|
190
|
+
}
|
191
|
+
|
192
|
+
interface TSid {
|
193
|
+
Name: string;
|
194
|
+
Type: SidType;
|
195
|
+
|
196
|
+
Hash: string;
|
197
|
+
Members?: string[];
|
198
|
+
}
|
199
|
+
|
200
|
+
enum SidType {
|
201
|
+
'UNKNOWN' = 'UNKNOWN',
|
202
|
+
'USER' = 'USER',
|
203
|
+
'GROUP' = 'GROUP',
|
204
|
+
}
|
205
|
+
|
206
|
+
interface DatabaseQuotas {
|
207
|
+
/** uint64 */
|
208
|
+
// eslint-disable-next-line camelcase
|
209
|
+
data_size_hard_quota: string;
|
210
|
+
|
211
|
+
/** uint64 */
|
212
|
+
// eslint-disable-next-line camelcase
|
213
|
+
data_size_soft_quota: string;
|
214
|
+
|
215
|
+
/** uint64 */
|
216
|
+
// eslint-disable-next-line camelcase
|
217
|
+
data_stream_shards_quota: string;
|
218
|
+
|
219
|
+
/** uint64 */
|
220
|
+
// eslint-disable-next-line camelcase
|
221
|
+
data_stream_reserved_storage_quota: string;
|
222
|
+
|
223
|
+
// eslint-disable-next-line camelcase
|
224
|
+
ttl_min_run_internal_seconds: number;
|
225
|
+
}
|
226
|
+
|
88
227
|
// FIXME: incomplete
|
89
228
|
export interface TTableDescription {
|
90
229
|
PartitionConfig?: TPartitionConfig;
|
@@ -520,8 +659,8 @@ export interface TColumnTableDescription {
|
|
520
659
|
}
|
521
660
|
|
522
661
|
interface TColumnTableSchema {
|
523
|
-
Columns
|
524
|
-
KeyColumnNames
|
662
|
+
Columns?: TOlapColumnDescription[];
|
663
|
+
KeyColumnNames?: string[];
|
525
664
|
Engine?: EColumnTableEngine;
|
526
665
|
NextColumnId?: number;
|
527
666
|
|
@@ -585,7 +724,7 @@ interface TStorageTier {
|
|
585
724
|
Eviction?: TTtl;
|
586
725
|
}
|
587
726
|
interface TStorageTiering {
|
588
|
-
Tiers
|
727
|
+
Tiers?: TStorageTier[];
|
589
728
|
}
|
590
729
|
|
591
730
|
enum EUnit {
|
@@ -601,10 +740,10 @@ interface TColumnTableSharding {
|
|
601
740
|
Version?: string;
|
602
741
|
|
603
742
|
/** uint64 */
|
604
|
-
ColumnShards
|
743
|
+
ColumnShards?: string[];
|
605
744
|
|
606
745
|
/** uint64 */
|
607
|
-
AdditionalColumnShards
|
746
|
+
AdditionalColumnShards?: string[];
|
608
747
|
|
609
748
|
UniquePrimaryKey?: boolean;
|
610
749
|
|
@@ -614,7 +753,7 @@ interface TColumnTableSharding {
|
|
614
753
|
|
615
754
|
interface THashSharding {
|
616
755
|
Function?: EHashFunction;
|
617
|
-
Columns
|
756
|
+
Columns?: string[];
|
618
757
|
UniqueShardKey?: boolean;
|
619
758
|
ActiveShardsCount?: number;
|
620
759
|
}
|
@@ -637,9 +776,9 @@ export interface TColumnStoreDescription {
|
|
637
776
|
ColumnShardCount?: number;
|
638
777
|
|
639
778
|
/** uint64 */
|
640
|
-
ColumnShards
|
779
|
+
ColumnShards?: string[];
|
641
780
|
|
642
|
-
SchemaPresets
|
781
|
+
SchemaPresets?: TColumnTableSchemaPreset[];
|
643
782
|
StorageConfig?: TColumnStorageConfig;
|
644
783
|
|
645
784
|
NextSchemaPresetId?: number;
|
@@ -1,175 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Green = 'Green',
|
4
|
-
Yellow = 'Yellow',
|
5
|
-
Orange = 'Orange',
|
6
|
-
Red = 'Red',
|
7
|
-
}
|
8
|
-
|
9
|
-
export enum TPDiskState {
|
10
|
-
Initial = 'Initial',
|
11
|
-
InitialFormatRead = 'InitialFormatRead',
|
12
|
-
InitialFormatReadError = 'InitialFormatReadError',
|
13
|
-
InitialSysLogRead = 'InitialSysLogRead',
|
14
|
-
InitialSysLogReadError = 'InitialSysLogReadError',
|
15
|
-
InitialSysLogParseError = 'InitialSysLogParseError',
|
16
|
-
InitialCommonLogRead = 'InitialCommonLogRead',
|
17
|
-
InitialCommonLogReadError = 'InitialCommonLogReadError',
|
18
|
-
InitialCommonLogParseError = 'InitialCommonLogParseError',
|
19
|
-
CommonLoggerInitError = 'CommonLoggerInitError',
|
20
|
-
Normal = 'Normal',
|
21
|
-
OpenFileError = 'OpenFileError',
|
22
|
-
ChunkQuotaError = 'ChunkQuotaError',
|
23
|
-
DeviceIoError = 'DeviceIoError',
|
24
|
-
|
25
|
-
Missing = 'Missing',
|
26
|
-
Timeout = 'Timeout',
|
27
|
-
NodeDisconnected = 'NodeDisconnected',
|
28
|
-
Unknown = 'Unknown',
|
29
|
-
}
|
30
|
-
|
31
|
-
export interface TPDiskStateInfo {
|
32
|
-
PDiskId?: number;
|
33
|
-
/** uint64 */
|
34
|
-
CreateTime?: string;
|
35
|
-
/** uint64 */
|
36
|
-
ChangeTime?: string;
|
37
|
-
Path?: string;
|
38
|
-
/** uint64 */
|
39
|
-
Guid?: string;
|
40
|
-
/** uint64 */
|
41
|
-
Category?: string;
|
42
|
-
/** uint64 */
|
43
|
-
AvailableSize?: string;
|
44
|
-
/** uint64 */
|
45
|
-
TotalSize?: string;
|
46
|
-
State?: TPDiskState;
|
47
|
-
NodeId?: number;
|
48
|
-
Count?: number;
|
49
|
-
Device?: EFlag;
|
50
|
-
Realtime?: EFlag;
|
51
|
-
StateFlag?: EFlag;
|
52
|
-
Overall?: EFlag;
|
53
|
-
SerialNumber?: string;
|
54
|
-
}
|
55
|
-
|
56
|
-
export enum EVDiskState {
|
57
|
-
Initial = 'Initial',
|
58
|
-
LocalRecoveryError = 'LocalRecoveryError',
|
59
|
-
SyncGuidRecovery = 'SyncGuidRecovery',
|
60
|
-
SyncGuidRecoveryError = 'SyncGuidRecoveryError',
|
61
|
-
OK = 'OK',
|
62
|
-
PDiskError = 'PDiskError',
|
63
|
-
}
|
64
|
-
|
65
|
-
interface TRank {
|
66
|
-
/**
|
67
|
-
* Rank in percents; 0-100% is good; >100% is bad.
|
68
|
-
* Formula for rank calculation is the following:
|
69
|
-
* Rank = actual_value / max_allowed_value * 100
|
70
|
-
*/
|
71
|
-
RankPercent?: number;
|
72
|
-
|
73
|
-
/**
|
74
|
-
* Flag is the Rank transformed to something simple
|
75
|
-
* to understand: Green, Yellow or Red
|
76
|
-
*/
|
77
|
-
Flag?: EFlag;
|
78
|
-
}
|
79
|
-
|
80
|
-
interface TVDiskSatisfactionRank {
|
81
|
-
FreshRank?: TRank;
|
82
|
-
LevelRank?: TRank;
|
83
|
-
}
|
84
|
-
|
85
|
-
interface TVDiskID {
|
86
|
-
GroupID?: number;
|
87
|
-
GroupGeneration?: number;
|
88
|
-
Ring?: number;
|
89
|
-
Domain?: number;
|
90
|
-
VDisk?: number;
|
91
|
-
}
|
92
|
-
|
93
|
-
export interface TVSlotId {
|
94
|
-
NodeId?: number;
|
95
|
-
PDiskId?: number;
|
96
|
-
VSlotId?: number;
|
97
|
-
}
|
98
|
-
|
99
|
-
export interface TVDiskStateInfo {
|
100
|
-
VDiskId?: TVDiskID;
|
101
|
-
/** uint64 */
|
102
|
-
CreateTime?: string;
|
103
|
-
/** uint64 */
|
104
|
-
ChangeTime?: string;
|
105
|
-
PDisk?: TPDiskStateInfo;
|
106
|
-
VDiskSlotId?: number;
|
107
|
-
/** uint64 */
|
108
|
-
Guid?: string;
|
109
|
-
/** uint64 */
|
110
|
-
Kind?: string;
|
111
|
-
NodeId?: number;
|
112
|
-
Count?: number;
|
113
|
-
|
114
|
-
Overall?: EFlag;
|
115
|
-
|
116
|
-
/** Current state of VDisk */
|
117
|
-
VDiskState?: EVDiskState;
|
118
|
-
/** Disk space flags */
|
119
|
-
DiskSpace?: EFlag;
|
120
|
-
/** Compaction satisfaction rank */
|
121
|
-
SatisfactionRank?: TVDiskSatisfactionRank;
|
122
|
-
/** Is VDisk replicated? (i.e. contains all blobs it must have) */
|
123
|
-
Replicated?: boolean;
|
124
|
-
/** Does this VDisk has any yet unreplicated phantom-like blobs? */
|
125
|
-
UnreplicatedPhantoms?: boolean;
|
126
|
-
/** The same for the non-phantom-like blobs. */
|
127
|
-
UnreplicatedNonPhantoms?: boolean;
|
128
|
-
/**
|
129
|
-
* uint64
|
130
|
-
* How many unsynced VDisks from current BlobStorage group we see
|
131
|
-
*/
|
132
|
-
UnsyncedVDisks?: string;
|
133
|
-
/**
|
134
|
-
* uint64
|
135
|
-
* How much this VDisk have allocated on corresponding PDisk
|
136
|
-
*/
|
137
|
-
AllocatedSize?: string;
|
138
|
-
/**
|
139
|
-
* uint64
|
140
|
-
* How much space is available for VDisk corresponding to PDisk's hard space limits
|
141
|
-
*/
|
142
|
-
AvailableSize?: string;
|
143
|
-
/** Does this disk has some unreadable but not yet restored blobs? */
|
144
|
-
HasUnreadableBlobs?: boolean;
|
145
|
-
/** fixed64 */
|
146
|
-
IncarnationGuid?: string;
|
147
|
-
DonorMode?: boolean;
|
148
|
-
/**
|
149
|
-
* fixed64
|
150
|
-
* VDisk actor instance guid
|
151
|
-
*/
|
152
|
-
InstanceGuid?: string;
|
153
|
-
// in reality it is `Donors: TVDiskStateInfo[] | TVSlotId[]`, but this way it is more error-proof
|
154
|
-
Donors?: Array<TVDiskStateInfo | TVSlotId>;
|
155
|
-
|
156
|
-
/** VDisk (Skeleton) Front Queue Status */
|
157
|
-
FrontQueues?: EFlag;
|
158
|
-
|
159
|
-
/** VDisk storage pool label */
|
160
|
-
StoragePoolName?: string;
|
161
|
-
|
162
|
-
/**
|
163
|
-
* uint64
|
164
|
-
* Read bytes per second from PDisk for TEvVGet blobs only
|
165
|
-
*/
|
166
|
-
ReadThroughput?: string;
|
167
|
-
/**
|
168
|
-
* uint64
|
169
|
-
* Write bytes per second to PDisk for TEvVPut blobs and replication bytes only
|
170
|
-
*/
|
171
|
-
WriteThroughput?: string;
|
172
|
-
}
|
1
|
+
import {EFlag} from './enums';
|
2
|
+
import {TVDiskStateInfo} from './vdisk';
|
173
3
|
|
174
4
|
export interface TBSGroupStateInfo {
|
175
5
|
GroupID?: number;
|
@@ -214,7 +44,7 @@ interface THiveStorageGroupStats {
|
|
214
44
|
AvailableSize?: string;
|
215
45
|
}
|
216
46
|
|
217
|
-
|
47
|
+
interface TStoragePoolInfo {
|
218
48
|
Overall?: EFlag;
|
219
49
|
Name?: string;
|
220
50
|
Kind?: string;
|