ydb-embedded-ui 3.0.1 → 3.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +2 -0
  3. package/dist/components/DateRange/DateRange.scss +11 -0
  4. package/dist/components/DateRange/DateRange.tsx +75 -0
  5. package/dist/components/DateRange/index.ts +1 -0
  6. package/dist/components/Illustration/Illustration.tsx +4 -11
  7. package/dist/components/InfoViewer/InfoViewer.scss +2 -0
  8. package/dist/containers/Storage/DiskStateProgressBar/DiskStateProgressBar.tsx +1 -1
  9. package/dist/containers/Storage/StorageNodes/StorageNodes.tsx +16 -0
  10. package/dist/containers/Tenant/Diagnostics/Diagnostics.tsx +4 -5
  11. package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.ts +7 -7
  12. package/dist/containers/Tenant/Diagnostics/OverloadedShards/OverloadedShards.scss +27 -0
  13. package/dist/containers/Tenant/Diagnostics/{TopShards/TopShards.tsx → OverloadedShards/OverloadedShards.tsx} +75 -20
  14. package/dist/containers/Tenant/Diagnostics/OverloadedShards/i18n/en.json +4 -0
  15. package/dist/containers/Tenant/Diagnostics/OverloadedShards/i18n/index.ts +11 -0
  16. package/dist/containers/Tenant/Diagnostics/OverloadedShards/i18n/ru.json +4 -0
  17. package/dist/containers/Tenant/Diagnostics/OverloadedShards/index.ts +1 -0
  18. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.scss +16 -19
  19. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.tsx +202 -0
  20. package/dist/containers/Tenant/Diagnostics/TopQueries/i18n/en.json +4 -0
  21. package/dist/containers/Tenant/Diagnostics/TopQueries/i18n/index.ts +11 -0
  22. package/dist/containers/Tenant/Diagnostics/TopQueries/i18n/ru.json +4 -0
  23. package/dist/containers/Tenant/Diagnostics/TopQueries/index.ts +1 -0
  24. package/dist/containers/UserSettings/UserSettings.tsx +1 -1
  25. package/dist/services/api.d.ts +7 -0
  26. package/dist/store/reducers/describe.ts +4 -1
  27. package/dist/store/reducers/executeTopQueries.ts +170 -0
  28. package/dist/store/reducers/settings.js +1 -1
  29. package/dist/store/reducers/shardsWorkload.ts +91 -25
  30. package/dist/store/reducers/storage.js +2 -0
  31. package/dist/store/reducers/{tablets.js → tablets.ts} +30 -17
  32. package/dist/store/state-url-mapping.js +16 -0
  33. package/dist/types/api/compute.ts +52 -0
  34. package/dist/types/api/consumer.ts +257 -0
  35. package/dist/types/api/enums.ts +2 -2
  36. package/dist/types/api/nodes.ts +5 -2
  37. package/dist/types/api/pdisk.ts +3 -0
  38. package/dist/types/api/schema.ts +1 -0
  39. package/dist/types/api/storage.ts +31 -28
  40. package/dist/types/api/tablet.ts +18 -2
  41. package/dist/types/api/tenant.ts +4 -1
  42. package/dist/types/api/topic.ts +157 -0
  43. package/dist/types/api/vdisk.ts +3 -0
  44. package/dist/types/store/executeTopQueries.ts +29 -0
  45. package/dist/types/store/schema.ts +3 -3
  46. package/dist/types/store/shardsWorkload.ts +11 -2
  47. package/dist/types/store/tablets.ts +42 -0
  48. package/dist/utils/getNodesColumns.js +8 -1
  49. package/dist/utils/query.ts +1 -1
  50. package/package.json +3 -3
  51. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +0 -188
  52. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.scss +0 -7
  53. package/dist/containers/Tenant/Diagnostics/TopShards/index.ts +0 -1
  54. package/dist/store/reducers/executeTopQueries.js +0 -66
  55. package/dist/types/api/consumers.ts +0 -3
@@ -1,7 +1,20 @@
1
- import {createRequestActionTypes, createApiRequest} from '../utils';
1
+ import type {Reducer} from 'redux';
2
2
  import '../../services/api';
3
3
 
4
- const FETCH_TABLETS = createRequestActionTypes('tablets', 'FETCH_TABLETS');
4
+ import type {ETabletState, EType} from '../../types/api/tablet';
5
+ import type {
6
+ ITabletsAction,
7
+ ITabletsApiRequestParams,
8
+ ITabletsState,
9
+ } from '../../types/store/tablets';
10
+
11
+ import {createRequestActionTypes, createApiRequest} from '../utils';
12
+
13
+ export const FETCH_TABLETS = createRequestActionTypes('tablets', 'FETCH_TABLETS');
14
+
15
+ const CLEAR_WAS_LOADING_TABLETS = 'tablets/CLEAR_WAS_LOADING_TABLETS';
16
+ const SET_STATE_FILTER = 'tablets/SET_STATE_FILTER';
17
+ const SET_TYPE_FILTER = 'tablets/SET_TYPE_FILTER';
5
18
 
6
19
  const initialState = {
7
20
  loading: true,
@@ -10,13 +23,12 @@ const initialState = {
10
23
  typeFilter: [],
11
24
  };
12
25
 
13
- const tablets = function z(state = initialState, action) {
26
+ const tablets: Reducer<ITabletsState, ITabletsAction> = (state = initialState, action) => {
14
27
  switch (action.type) {
15
28
  case FETCH_TABLETS.REQUEST: {
16
29
  return {
17
30
  ...state,
18
31
  loading: true,
19
- requestTime: new Date().getTime(),
20
32
  };
21
33
  }
22
34
  case FETCH_TABLETS.SUCCESS: {
@@ -35,20 +47,20 @@ const tablets = function z(state = initialState, action) {
35
47
  loading: false,
36
48
  };
37
49
  }
38
- case 'CLEAR_WAS_LOADING_TABLETS': {
50
+ case CLEAR_WAS_LOADING_TABLETS: {
39
51
  return {
40
52
  ...state,
41
53
  wasLoaded: false,
42
54
  loading: true,
43
55
  };
44
56
  }
45
- case 'SET_STATE_FILTER': {
57
+ case SET_STATE_FILTER: {
46
58
  return {
47
59
  ...state,
48
60
  stateFilter: action.data,
49
61
  };
50
62
  }
51
- case 'SET_TYPE_FILTER': {
63
+ case SET_TYPE_FILTER: {
52
64
  return {
53
65
  ...state,
54
66
  typeFilter: action.data,
@@ -59,25 +71,26 @@ const tablets = function z(state = initialState, action) {
59
71
  }
60
72
  };
61
73
 
62
- export const setStateFilter = (stateFilter) => {
74
+ export const setStateFilter = (stateFilter: ETabletState[]) => {
63
75
  return {
64
- type: 'SET_STATE_FILTER',
76
+ type: SET_STATE_FILTER,
65
77
  data: stateFilter,
66
- };
78
+ } as const;
67
79
  };
68
80
 
69
- export const setTypeFilter = (typeFilter) => {
81
+ export const setTypeFilter = (typeFilter: EType[]) => {
70
82
  return {
71
- type: 'SET_TYPE_FILTER',
83
+ type: SET_TYPE_FILTER,
72
84
  data: typeFilter,
73
- };
85
+ } as const;
74
86
  };
75
87
 
76
- export const clearWasLoadingFlag = () => ({
77
- type: 'CLEAR_WAS_LOADING_TABLETS',
78
- });
88
+ export const clearWasLoadingFlag = () =>
89
+ ({
90
+ type: CLEAR_WAS_LOADING_TABLETS,
91
+ } as const);
79
92
 
80
- export function getTabletsInfo(data) {
93
+ export function getTabletsInfo(data: ITabletsApiRequestParams) {
81
94
  return createApiRequest({
82
95
  request: window.api.getTabletsInfo(data),
83
96
  actions: FETCH_TABLETS,
@@ -48,6 +48,22 @@ const paramSetup = {
48
48
  generalTab: {
49
49
  stateKey: 'tenant.diagnosticsTab',
50
50
  },
51
+ shardsDateFrom: {
52
+ stateKey: 'shardsWorkload.filters.from',
53
+ type: 'number',
54
+ },
55
+ shardsDateTo: {
56
+ stateKey: 'shardsWorkload.filters.to',
57
+ type: 'number',
58
+ },
59
+ topQueriesDateFrom: {
60
+ stateKey: 'executeTopQueries.filters.from',
61
+ type: 'number',
62
+ },
63
+ topQueriesDateTo: {
64
+ stateKey: 'executeTopQueries.filters.to',
65
+ type: 'number',
66
+ },
51
67
  },
52
68
  };
53
69
 
@@ -0,0 +1,52 @@
1
+ import {EFlag} from './enums';
2
+ import {TEndpoint, TLegacyNodeLocation, TPoolStats} from './nodes';
3
+ import {TMetrics} from './tenant';
4
+
5
+ // endpoint: viewer/json/compute
6
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/viewer/protos/viewer.proto
7
+
8
+ export interface TComputeInfo {
9
+ Overall: EFlag;
10
+ Tenants?: TComputeTenantInfo[];
11
+ Errors?: string[];
12
+ }
13
+
14
+ interface TComputeTenantInfo {
15
+ Overall: EFlag;
16
+ Name: string;
17
+ Nodes?: TComputeNodeInfo[];
18
+ }
19
+
20
+ interface TComputeNodeInfo {
21
+ /** uint64 */
22
+ StartTime: string;
23
+ /** uint64 */
24
+ ChangeTime: string;
25
+ SystemLocation: TLegacyNodeLocation;
26
+ /** double */
27
+ LoadAverage: number[];
28
+ NumberOfCpus: number;
29
+ Overall: EFlag;
30
+ NodeId: number;
31
+ DataCenter: string;
32
+ Rack: string;
33
+ Host: string;
34
+ Version: string;
35
+ PoolStats?: TPoolStats[];
36
+ Endpoints?: TEndpoint[];
37
+ Roles?: string[];
38
+ /** uint64 */
39
+ MemoryUsed?: string;
40
+ /** uint64 */
41
+ MemoryLimit?: string;
42
+ Metrics: TMetrics;
43
+ Tablets?: TTabletStateInfo[];
44
+ }
45
+
46
+ // Tablets in compute nodes
47
+ // Types for tabletInfo and tablets inside nodes and storage endpoints are in tablet.ts
48
+ interface TTabletStateInfo {
49
+ Type: string;
50
+ State: EFlag;
51
+ Count: number;
52
+ }
@@ -0,0 +1,257 @@
1
+ /* eslint-disable camelcase */
2
+
3
+ /**
4
+ * endpoint: /json/describe_consumer
5
+ *
6
+ * source: https://github.com/ydb-platform/ydb/blob/main/ydb/public/api/protos/ydb_topic.proto
7
+ *
8
+ * Original proto file doesn't specify optional fields, so every field is considered optional
9
+ */
10
+ export interface DescribeConsumerResult {
11
+ self?: Entry;
12
+ consumer?: Consumer;
13
+ partitions?: PartitionInfo[];
14
+ }
15
+
16
+ /** Partition info types differs for consumer and topic, although they are very similar */
17
+ export interface PartitionInfo {
18
+ /** int64 */
19
+ partition_id?: string;
20
+
21
+ /** Is partition open for write. */
22
+ active?: boolean;
23
+
24
+ /**
25
+ * int64
26
+ *
27
+ * Ids of partitions which was formed when this partition was split or merged.
28
+ */
29
+ child_partition_ids?: string[];
30
+
31
+ /**
32
+ * int64
33
+ *
34
+ * Ids of partitions from which this partition was formed by split or merge.
35
+ */
36
+ parent_partition_ids?: string[];
37
+
38
+ /** Stats for partition, filled only when include_stats in request is true. */
39
+ partition_stats?: PartitionStats;
40
+
41
+ /** Stats for consumer of this partition, filled only when include_stats in request is true. */
42
+ partition_consumer_stats?: PartitionConsumerStats;
43
+ }
44
+
45
+ interface PartitionConsumerStats {
46
+ /**
47
+ * int64
48
+ *
49
+ * Last read offset from this partition.
50
+ */
51
+ last_read_offset?: string;
52
+
53
+ /**
54
+ * int64
55
+ *
56
+ * Committed offset for this partition.
57
+ */
58
+ committed_offset?: string;
59
+
60
+ /** Reading this partition read session identifier. */
61
+ read_session_id?: string;
62
+
63
+ /**
64
+ * google.protobuf.Timestamp
65
+ *
66
+ * Timestamp of providing this partition to this session by server.
67
+ */
68
+ partition_read_session_create_time?: string;
69
+
70
+ /**
71
+ * google.protobuf.Timestamp
72
+ *
73
+ * Timestamp of last read from this partition. */
74
+ last_read_time?: string;
75
+
76
+ /**
77
+ * google.protobuf.Duration
78
+ *
79
+ * Maximum of differences between timestamp of read and write timestamp for all messages, read during last minute.
80
+ */
81
+ max_read_time_lag?: string;
82
+
83
+ /**
84
+ * google.protobuf.Duration
85
+ *
86
+ * Maximum of differences between write timestamp and create timestamp for all messages, read during last minute.
87
+ */
88
+ max_write_time_lag?: string;
89
+
90
+ /** How much bytes were read during several windows statistics from this partiton. */
91
+ bytes_read?: MultipleWindowsStat;
92
+
93
+ /** Read session name, provided by client. */
94
+ reader_name?: string;
95
+
96
+ /** Host where read session connected. */
97
+ connection_node_id?: number;
98
+ }
99
+
100
+ export interface PartitionStats {
101
+ /** Partition contains messages with offsets in range [start, end). */
102
+ partition_offsets?: OffsetsRange;
103
+
104
+ /**
105
+ * int64
106
+ *
107
+ * Approximate size of partition.
108
+ */
109
+ store_size_bytes?: string;
110
+
111
+ /**
112
+ * google.protobuf.Timestamp
113
+ *
114
+ * Timestamp of last write.
115
+ */
116
+ last_write_time?: string;
117
+
118
+ /**
119
+ * google.protobuf.Duration
120
+ *
121
+ * Maximum of differences between write timestamp and create timestamp for all messages, written during last minute.
122
+ */
123
+ max_write_time_lag?: string;
124
+
125
+ /** How much bytes were written during several windows in this partition. */
126
+ bytes_written?: MultipleWindowsStat;
127
+
128
+ /** Host where tablet for this partition works. Useful for debugging purposes. */
129
+ partition_node_id?: number;
130
+ }
131
+
132
+ interface OffsetsRange {
133
+ /** int64 */
134
+ start?: string;
135
+ /** int64 */
136
+ end?: string;
137
+ }
138
+
139
+ export interface Consumer {
140
+ /** Must have valid not empty name as a key. */
141
+ name?: string;
142
+
143
+ /** Consumer may be marked as 'important'. It means messages for this consumer will never expire due to retention. */
144
+ important?: boolean;
145
+
146
+ /**
147
+ * google.protobuf.Timestamp
148
+ *
149
+ * All messages with smaller server written_at timestamp will be skipped.
150
+ */
151
+ read_from?: string;
152
+
153
+ /**
154
+ * List of supported codecs by this consumer.
155
+ *
156
+ * supported_codecs on topic must be contained inside this list.
157
+ */
158
+ supported_codecs?: SupportedCodecs;
159
+
160
+ /** Attributes of consumer */
161
+ attributes?: Record<string, string>;
162
+
163
+ /** Filled only when requested statistics in Describe*Request. */
164
+ consumer_stats?: ConsumerStats;
165
+ }
166
+
167
+ interface ConsumerStats {
168
+ /**
169
+ * google.protobuf.Timestamp
170
+ *
171
+ * Minimal timestamp of last read from partitions.
172
+ */
173
+ min_partitions_last_read_time?: string;
174
+
175
+ /**
176
+ * google.protobuf.Duration
177
+ *
178
+ * Maximum of differences between timestamp of read and write timestamp for all messages, read during last minute.
179
+ */
180
+ max_read_time_lag?: string;
181
+
182
+ /**
183
+ * google.protobuf.Duration
184
+ *
185
+ * Maximum of differences between write timestamp and create timestamp for all messages, read during last minute.
186
+ */
187
+ max_write_time_lag?: string;
188
+
189
+ /** Bytes read stastics. */
190
+ bytes_read?: MultipleWindowsStat;
191
+ }
192
+
193
+ export interface MultipleWindowsStat {
194
+ /** int64 */
195
+ per_minute?: string;
196
+ /** int64 */
197
+ per_hour?: string;
198
+ /** int64 */
199
+ per_day?: string;
200
+ }
201
+
202
+ export interface SupportedCodecs {
203
+ /** List of supported codecs. */
204
+ codecs?: number[];
205
+ }
206
+
207
+ export interface Entry {
208
+ /** For consumer will be topic-name/consumer-name */
209
+ name?: string;
210
+
211
+ owner?: string;
212
+ type?: Type;
213
+ effective_permissions?: Permissions[];
214
+ permissions?: Permissions[];
215
+
216
+ /**
217
+ * uint64
218
+ *
219
+ * Size of entry in bytes. Currently filled for:
220
+ * - TABLE;
221
+ * - DATABASE.
222
+ *
223
+ * Empty (zero) in other cases.
224
+ */
225
+ size_bytes?: string;
226
+
227
+ /** Virtual timestamp when the object was created */
228
+ created_at?: VirtualTimestamp;
229
+ }
230
+
231
+ interface Permissions {
232
+ subject?: string;
233
+ permission_names?: string[];
234
+ }
235
+
236
+ interface VirtualTimestamp {
237
+ /** uint64 */
238
+ plan_step?: string;
239
+ /** uint64 */
240
+ tx_id?: string;
241
+ }
242
+
243
+ enum Type {
244
+ TYPE_UNSPECIFIED = 'TYPE_UNSPECIFIED',
245
+ DIRECTORY = 'DIRECTORY',
246
+ TABLE = 'TABLE',
247
+ PERS_QUEUE_GROUP = 'PERS_QUEUE_GROUP',
248
+ DATABASE = 'DATABASE',
249
+ RTMR_VOLUME = 'RTMR_VOLUME',
250
+ BLOCK_STORE_VOLUME = 'BLOCK_STORE_VOLUME',
251
+ COORDINATION_NODE = 'COORDINATION_NODE',
252
+ COLUMN_STORE = 'COLUMN_STORE ',
253
+ COLUMN_TABLE = 'COLUMN_TABLE ',
254
+ SEQUENCE = 'SEQUENCE ',
255
+ REPLICATION = 'REPLICATION ',
256
+ TOPIC = 'TOPIC ',
257
+ }
@@ -1,6 +1,6 @@
1
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
2
+ // Currently is used in response types viewer/json/ storage, nodes, compute
3
+ // pdiskinfo, vdiskinfo, tabletinfo, tenantinfo
4
4
  export enum EFlag {
5
5
  Grey = 'Grey',
6
6
  Green = 'Green',
@@ -2,6 +2,9 @@ import {EFlag} from './enums';
2
2
  import {TPDiskStateInfo} from './pdisk';
3
3
  import {TTabletStateInfo} from './tablet';
4
4
 
5
+ // endpoint: /viewer/json/nodes
6
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/viewer/protos/viewer.proto
7
+
5
8
  export interface TNodesInfo {
6
9
  Overall: EFlag;
7
10
  Nodes?: TNodeInfo[];
@@ -64,12 +67,12 @@ export interface TPoolStats {
64
67
  Threads?: number;
65
68
  }
66
69
 
67
- interface TEndpoint {
70
+ export interface TEndpoint {
68
71
  Name?: string;
69
72
  Address?: string;
70
73
  }
71
74
 
72
- interface TLegacyNodeLocation {
75
+ export interface TLegacyNodeLocation {
73
76
  DataCenter?: number;
74
77
  Room?: number;
75
78
  Rack?: number;
@@ -1,5 +1,8 @@
1
1
  import {EFlag} from './enums';
2
2
 
3
+ // endpoint: /viewer/json/pdiskinfo
4
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/protos/node_whiteboard.proto
5
+
3
6
  export interface TPDiskStateInfo {
4
7
  PDiskId?: number;
5
8
  /** uint64 */
@@ -37,6 +37,7 @@ enum EStatus {
37
37
  StatusResourceExhausted = 'StatusResourceExhausted',
38
38
  }
39
39
 
40
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/protos/flat_scheme_op.proto
40
41
  // incomplete interface, only currently used fields are covered
41
42
  export interface TPathDescription {
42
43
  /** info about the path itself */
@@ -1,6 +1,37 @@
1
1
  import {EFlag} from './enums';
2
2
  import {TVDiskStateInfo} from './vdisk';
3
3
 
4
+ // endpoint: /viewer/json/storage
5
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/viewer/protos/viewer.proto
6
+
7
+ export interface TStorageInfo {
8
+ Overall?: EFlag;
9
+ StoragePools?: TStoragePoolInfo[];
10
+ /** uint64 */
11
+ TotalGroups?: string;
12
+ /** uint64 */
13
+ FoundGroups?: string;
14
+ }
15
+
16
+ interface TStoragePoolInfo {
17
+ Overall?: EFlag;
18
+ Name?: string;
19
+ Kind?: string;
20
+ Groups?: (TBSGroupStateInfo & THiveStorageGroupStats)[];
21
+ /** uint64 */
22
+ AcquiredUnits?: string;
23
+ AcquiredIOPS?: number;
24
+ /** uint64 */
25
+ AcquiredThroughput?: string;
26
+ /** uint64 */
27
+ AcquiredSize?: string;
28
+ MaximumIOPS?: number;
29
+ /** uint64 */
30
+ MaximumThroughput?: string;
31
+ /** uint64 */
32
+ MaximumSize?: string;
33
+ }
34
+
4
35
  export interface TBSGroupStateInfo {
5
36
  GroupID?: number;
6
37
  ErasureSpecies?: string;
@@ -43,31 +74,3 @@ interface THiveStorageGroupStats {
43
74
  /** uint64 */
44
75
  AvailableSize?: string;
45
76
  }
46
-
47
- interface TStoragePoolInfo {
48
- Overall?: EFlag;
49
- Name?: string;
50
- Kind?: string;
51
- Groups?: (TBSGroupStateInfo & THiveStorageGroupStats)[];
52
- /** uint64 */
53
- AcquiredUnits?: string;
54
- AcquiredIOPS?: number;
55
- /** uint64 */
56
- AcquiredThroughput?: string;
57
- /** uint64 */
58
- AcquiredSize?: string;
59
- MaximumIOPS?: number;
60
- /** uint64 */
61
- MaximumThroughput?: string;
62
- /** uint64 */
63
- MaximumSize?: string;
64
- }
65
-
66
- export interface TStorageInfo {
67
- Overall?: EFlag;
68
- StoragePools?: TStoragePoolInfo[];
69
- /** uint64 */
70
- TotalGroups?: string;
71
- /** uint64 */
72
- FoundGroups?: string;
73
- }
@@ -1,5 +1,21 @@
1
1
  import {EFlag} from './enums';
2
2
 
3
+ // endpoint: /viewer/json/tabletinfo
4
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/protos/sys_view.proto
5
+
6
+ export interface TEvTabletStateResponse {
7
+ TabletStateInfo?: TTabletStateInfo[];
8
+
9
+ /** uint64 */
10
+ ResponseTime?: string;
11
+ /** uint64 */
12
+ ResponseDuration?: string;
13
+ /** uint64 */
14
+ ProcessDuration?: string;
15
+
16
+ Packed5?: unknown;
17
+ }
18
+
3
19
  export interface TTabletStateInfo {
4
20
  /** uint64 */
5
21
  TabletId?: string;
@@ -37,7 +53,7 @@ interface TDomainKey {
37
53
  PathId?: string;
38
54
  }
39
55
 
40
- enum EType {
56
+ export enum EType {
41
57
  'Unknown' = 'Unknown',
42
58
  'OldSchemeShard' = 'OldSchemeShard',
43
59
  'OldDataShard' = 'OldDataShard',
@@ -79,7 +95,7 @@ enum EType {
79
95
  'TypeInvalid' = 'TypeInvalid',
80
96
  }
81
97
 
82
- enum ETabletState {
98
+ export enum ETabletState {
83
99
  'Created' = 'Created',
84
100
  'ResolveStateStorage' = 'ResolveStateStorage',
85
101
  'Candidate' = 'Candidate',
@@ -2,6 +2,9 @@ import {EFlag} from './enums';
2
2
  import {TPoolStats, TSystemStateInfo} from './nodes';
3
3
  import {TTabletStateInfo} from './tablet';
4
4
 
5
+ // endpoint: /viewer/json/tenantinfo
6
+ // source: https://github.com/ydb-platform/ydb/blob/main/ydb/core/viewer/protos/viewer.proto
7
+
5
8
  export interface TTenants {
6
9
  Tenants?: TTenant[];
7
10
  }
@@ -51,7 +54,7 @@ interface THiveDomainStatsStateCount {
51
54
  Count?: number;
52
55
  }
53
56
 
54
- interface TMetrics {
57
+ export interface TMetrics {
55
58
  /** uint64 */
56
59
  CPU?: string;
57
60
  /** uint64 */