@oneuptime/common 10.0.55 → 10.0.57

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 (129) hide show
  1. package/Models/DatabaseModels/DockerHost.ts +662 -0
  2. package/Models/DatabaseModels/GlobalConfig.ts +112 -0
  3. package/Models/DatabaseModels/Index.ts +2 -0
  4. package/Server/API/TelemetryAPI.ts +360 -16
  5. package/Server/Infrastructure/ClickhouseConfig.ts +9 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1774000000002-MigrationName.ts +76 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1775766676723-MigrationName.ts +133 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1775900000000-AddGlobalSmtpOAuth.ts +51 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  10. package/Server/Services/DockerHostService.ts +173 -0
  11. package/Server/Services/ExceptionAggregationService.ts +335 -0
  12. package/Server/Services/Index.ts +2 -0
  13. package/Server/Services/LogAggregationService.ts +17 -0
  14. package/Server/Services/MonitorService.ts +21 -21
  15. package/Server/Services/TraceAggregationService.ts +514 -0
  16. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +73 -1
  17. package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
  18. package/Tests/__mocks__/mermaid.js +18 -0
  19. package/Tests/__mocks__/react-markdown.js +17 -0
  20. package/Tests/__mocks__/react-syntax-highlighter.js +19 -0
  21. package/Tests/__mocks__/remark-gfm.js +8 -0
  22. package/Types/Icon/IconProp.ts +1 -0
  23. package/Types/Monitor/DockerAlertTemplates.ts +507 -0
  24. package/Types/Monitor/DockerMetricCatalog.ts +226 -0
  25. package/Types/Monitor/MonitorStep.ts +33 -0
  26. package/Types/Monitor/MonitorStepDockerMonitor.ts +38 -0
  27. package/Types/Monitor/MonitorType.ts +15 -1
  28. package/Types/Permission.ts +38 -0
  29. package/UI/Components/Icon/Icon.tsx +87 -0
  30. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +7 -132
  31. package/UI/Components/ModelDetail/CardModelDetail.tsx +11 -1
  32. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +285 -0
  33. package/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.tsx +85 -0
  34. package/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.tsx +156 -0
  35. package/UI/Components/TelemetryViewer/components/TelemetryFacetSection.tsx +160 -0
  36. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +85 -0
  37. package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +102 -0
  38. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +280 -0
  39. package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +125 -0
  40. package/UI/Components/TelemetryViewer/components/TelemetryPagination.tsx +114 -0
  41. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +378 -0
  42. package/UI/Components/TelemetryViewer/components/TelemetrySearchHelp.tsx +78 -0
  43. package/UI/Components/TelemetryViewer/components/TelemetrySearchSuggestions.tsx +64 -0
  44. package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +193 -0
  45. package/UI/Components/TelemetryViewer/types.ts +67 -0
  46. package/build/dist/Models/DatabaseModels/DockerHost.js +686 -0
  47. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -0
  48. package/build/dist/Models/DatabaseModels/GlobalConfig.js +117 -0
  49. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  50. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  51. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  52. package/build/dist/Server/API/TelemetryAPI.js +240 -16
  53. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  54. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +9 -0
  55. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774000000002-MigrationName.js +35 -0
  57. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774000000002-MigrationName.js.map +1 -0
  58. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775766676723-MigrationName.js +52 -0
  59. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775766676723-MigrationName.js.map +1 -0
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775900000000-AddGlobalSmtpOAuth.js +26 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775900000000-AddGlobalSmtpOAuth.js.map +1 -0
  62. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  64. package/build/dist/Server/Services/DockerHostService.js +162 -0
  65. package/build/dist/Server/Services/DockerHostService.js.map +1 -0
  66. package/build/dist/Server/Services/ExceptionAggregationService.js +224 -0
  67. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -0
  68. package/build/dist/Server/Services/Index.js +2 -0
  69. package/build/dist/Server/Services/Index.js.map +1 -1
  70. package/build/dist/Server/Services/LogAggregationService.js +11 -0
  71. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  72. package/build/dist/Server/Services/MonitorService.js +19 -17
  73. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  74. package/build/dist/Server/Services/TraceAggregationService.js +364 -0
  75. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -0
  76. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +46 -1
  77. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  78. package/build/dist/Tests/Server/Services/LogAggregationService.test.js +2 -2
  79. package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +1 -1
  80. package/build/dist/Types/Icon/IconProp.js +1 -0
  81. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  82. package/build/dist/Types/Monitor/DockerAlertTemplates.js +410 -0
  83. package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -0
  84. package/build/dist/Types/Monitor/DockerMetricCatalog.js +192 -0
  85. package/build/dist/Types/Monitor/DockerMetricCatalog.js.map +1 -0
  86. package/build/dist/Types/Monitor/MonitorStep.js +23 -0
  87. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  88. package/build/dist/Types/Monitor/MonitorStepDockerMonitor.js +21 -0
  89. package/build/dist/Types/Monitor/MonitorStepDockerMonitor.js.map +1 -0
  90. package/build/dist/Types/Monitor/MonitorType.js +14 -1
  91. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  92. package/build/dist/Types/Permission.js +36 -0
  93. package/build/dist/Types/Permission.js.map +1 -1
  94. package/build/dist/UI/Components/Icon/Icon.js +13 -0
  95. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  96. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +7 -75
  97. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  98. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +8 -1
  99. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  100. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +71 -0
  101. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -0
  102. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.js +39 -0
  103. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.js.map +1 -0
  104. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.js +61 -0
  105. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.js.map +1 -0
  106. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSection.js +66 -0
  107. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSection.js.map +1 -0
  108. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +41 -0
  109. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -0
  110. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +35 -0
  111. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -0
  112. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +132 -0
  113. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -0
  114. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +65 -0
  115. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -0
  116. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryPagination.js +52 -0
  117. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryPagination.js.map +1 -0
  118. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +224 -0
  119. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -0
  120. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchHelp.js +35 -0
  121. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchHelp.js.map +1 -0
  122. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchSuggestions.js +27 -0
  123. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchSuggestions.js.map +1 -0
  124. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +97 -0
  125. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -0
  126. package/build/dist/UI/Components/TelemetryViewer/types.js +6 -0
  127. package/build/dist/UI/Components/TelemetryViewer/types.js.map +1 -0
  128. package/jest.config.json +6 -1
  129. package/package.json +1 -1
@@ -0,0 +1,662 @@
1
+ import Label from "./Label";
2
+ import Project from "./Project";
3
+ import User from "./User";
4
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
5
+ import Route from "../../Types/API/Route";
6
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
7
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
8
+ import AccessControlColumn from "../../Types/Database/AccessControlColumn";
9
+ import ColumnLength from "../../Types/Database/ColumnLength";
10
+ import ColumnType from "../../Types/Database/ColumnType";
11
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
14
+ import SlugifyColumn from "../../Types/Database/SlugifyColumn";
15
+ import TableColumn from "../../Types/Database/TableColumn";
16
+ import TableColumnType from "../../Types/Database/TableColumnType";
17
+ import TableMetadata from "../../Types/Database/TableMetadata";
18
+ import TenantColumn from "../../Types/Database/TenantColumn";
19
+ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
20
+ import IconProp from "../../Types/Icon/IconProp";
21
+ import ObjectID from "../../Types/ObjectID";
22
+ import Permission from "../../Types/Permission";
23
+ import {
24
+ Column,
25
+ Entity,
26
+ Index,
27
+ JoinColumn,
28
+ JoinTable,
29
+ ManyToMany,
30
+ ManyToOne,
31
+ } from "typeorm";
32
+
33
+ @AccessControlColumn("labels")
34
+ @EnableDocumentation()
35
+ @TenantColumn("projectId")
36
+ @TableAccessControl({
37
+ create: [
38
+ Permission.ProjectOwner,
39
+ Permission.ProjectAdmin,
40
+ Permission.ProjectMember,
41
+ Permission.CreateDockerHost,
42
+ ],
43
+ read: [
44
+ Permission.ProjectOwner,
45
+ Permission.ProjectAdmin,
46
+ Permission.ProjectMember,
47
+ Permission.ReadDockerHost,
48
+ Permission.ReadAllProjectResources,
49
+ ],
50
+ delete: [
51
+ Permission.ProjectOwner,
52
+ Permission.ProjectAdmin,
53
+ Permission.ProjectMember,
54
+ Permission.DeleteDockerHost,
55
+ ],
56
+ update: [
57
+ Permission.ProjectOwner,
58
+ Permission.ProjectAdmin,
59
+ Permission.ProjectMember,
60
+ Permission.EditDockerHost,
61
+ ],
62
+ })
63
+ @EnableWorkflow({
64
+ create: true,
65
+ delete: true,
66
+ update: true,
67
+ read: true,
68
+ })
69
+ @CrudApiEndpoint(new Route("/docker-host"))
70
+ @SlugifyColumn("name", "slug")
71
+ @TableMetadata({
72
+ tableName: "DockerHost",
73
+ singularName: "Docker Host",
74
+ pluralName: "Docker Hosts",
75
+ icon: IconProp.Cube,
76
+ tableDescription:
77
+ "Docker Hosts that are being monitored in this project. Each host is auto-discovered when the OneUptime Docker Agent sends metrics, or can be manually registered.",
78
+ })
79
+ @Entity({
80
+ name: "DockerHost",
81
+ })
82
+ export default class DockerHost extends BaseModel {
83
+ @ColumnAccessControl({
84
+ create: [
85
+ Permission.ProjectOwner,
86
+ Permission.ProjectAdmin,
87
+ Permission.ProjectMember,
88
+ Permission.CreateDockerHost,
89
+ ],
90
+ read: [
91
+ Permission.ProjectOwner,
92
+ Permission.ProjectAdmin,
93
+ Permission.ProjectMember,
94
+ Permission.ReadDockerHost,
95
+ Permission.ReadAllProjectResources,
96
+ ],
97
+ update: [],
98
+ })
99
+ @TableColumn({
100
+ manyToOneRelationColumn: "projectId",
101
+ type: TableColumnType.Entity,
102
+ modelType: Project,
103
+ title: "Project",
104
+ description: "Relation to Project Resource in which this object belongs",
105
+ })
106
+ @ManyToOne(
107
+ () => {
108
+ return Project;
109
+ },
110
+ {
111
+ eager: false,
112
+ nullable: true,
113
+ onDelete: "CASCADE",
114
+ orphanedRowAction: "nullify",
115
+ },
116
+ )
117
+ @JoinColumn({ name: "projectId" })
118
+ public project?: Project = undefined;
119
+
120
+ @ColumnAccessControl({
121
+ create: [
122
+ Permission.ProjectOwner,
123
+ Permission.ProjectAdmin,
124
+ Permission.ProjectMember,
125
+ Permission.CreateDockerHost,
126
+ ],
127
+ read: [
128
+ Permission.ProjectOwner,
129
+ Permission.ProjectAdmin,
130
+ Permission.ProjectMember,
131
+ Permission.ReadDockerHost,
132
+ Permission.ReadAllProjectResources,
133
+ ],
134
+ update: [],
135
+ })
136
+ @Index()
137
+ @TableColumn({
138
+ type: TableColumnType.ObjectID,
139
+ required: true,
140
+ canReadOnRelationQuery: true,
141
+ title: "Project ID",
142
+ description: "ID of your OneUptime Project in which this object belongs",
143
+ })
144
+ @Column({
145
+ type: ColumnType.ObjectID,
146
+ nullable: false,
147
+ transformer: ObjectID.getDatabaseTransformer(),
148
+ })
149
+ public projectId?: ObjectID = undefined;
150
+
151
+ @ColumnAccessControl({
152
+ create: [
153
+ Permission.ProjectOwner,
154
+ Permission.ProjectAdmin,
155
+ Permission.ProjectMember,
156
+ Permission.CreateDockerHost,
157
+ ],
158
+ read: [
159
+ Permission.ProjectOwner,
160
+ Permission.ProjectAdmin,
161
+ Permission.ProjectMember,
162
+ Permission.ReadDockerHost,
163
+ Permission.ReadAllProjectResources,
164
+ ],
165
+ update: [
166
+ Permission.ProjectOwner,
167
+ Permission.ProjectAdmin,
168
+ Permission.ProjectMember,
169
+ Permission.EditDockerHost,
170
+ ],
171
+ })
172
+ @TableColumn({
173
+ required: true,
174
+ type: TableColumnType.ShortText,
175
+ canReadOnRelationQuery: true,
176
+ title: "Name",
177
+ description: "Friendly name for this Docker host",
178
+ example: "production-docker-host-1",
179
+ })
180
+ @Column({
181
+ nullable: false,
182
+ type: ColumnType.ShortText,
183
+ length: ColumnLength.ShortText,
184
+ })
185
+ @UniqueColumnBy("projectId")
186
+ public name?: string = undefined;
187
+
188
+ @ColumnAccessControl({
189
+ create: [],
190
+ read: [
191
+ Permission.ProjectOwner,
192
+ Permission.ProjectAdmin,
193
+ Permission.ProjectMember,
194
+ Permission.ReadDockerHost,
195
+ Permission.ReadAllProjectResources,
196
+ ],
197
+ update: [],
198
+ })
199
+ @TableColumn({
200
+ required: true,
201
+ unique: true,
202
+ type: TableColumnType.Slug,
203
+ computed: true,
204
+ title: "Slug",
205
+ description: "Friendly globally unique name for your object",
206
+ })
207
+ @Column({
208
+ nullable: false,
209
+ type: ColumnType.Slug,
210
+ length: ColumnLength.Slug,
211
+ })
212
+ public slug?: string = undefined;
213
+
214
+ @ColumnAccessControl({
215
+ create: [
216
+ Permission.ProjectOwner,
217
+ Permission.ProjectAdmin,
218
+ Permission.ProjectMember,
219
+ Permission.CreateDockerHost,
220
+ ],
221
+ read: [
222
+ Permission.ProjectOwner,
223
+ Permission.ProjectAdmin,
224
+ Permission.ProjectMember,
225
+ Permission.ReadDockerHost,
226
+ Permission.ReadAllProjectResources,
227
+ ],
228
+ update: [
229
+ Permission.ProjectOwner,
230
+ Permission.ProjectAdmin,
231
+ Permission.ProjectMember,
232
+ Permission.EditDockerHost,
233
+ ],
234
+ })
235
+ @TableColumn({
236
+ required: false,
237
+ type: TableColumnType.LongText,
238
+ canReadOnRelationQuery: true,
239
+ title: "Description",
240
+ description: "Friendly description for this Docker host",
241
+ example: "Production Docker host running in US East region",
242
+ })
243
+ @Column({
244
+ nullable: true,
245
+ type: ColumnType.LongText,
246
+ length: ColumnLength.LongText,
247
+ })
248
+ public description?: string = undefined;
249
+
250
+ @ColumnAccessControl({
251
+ create: [
252
+ Permission.ProjectOwner,
253
+ Permission.ProjectAdmin,
254
+ Permission.ProjectMember,
255
+ Permission.CreateDockerHost,
256
+ ],
257
+ read: [
258
+ Permission.ProjectOwner,
259
+ Permission.ProjectAdmin,
260
+ Permission.ProjectMember,
261
+ Permission.ReadDockerHost,
262
+ Permission.ReadAllProjectResources,
263
+ ],
264
+ update: [
265
+ Permission.ProjectOwner,
266
+ Permission.ProjectAdmin,
267
+ Permission.ProjectMember,
268
+ Permission.EditDockerHost,
269
+ ],
270
+ })
271
+ @Index()
272
+ @TableColumn({
273
+ required: true,
274
+ type: TableColumnType.ShortText,
275
+ canReadOnRelationQuery: true,
276
+ title: "Host Identifier",
277
+ description:
278
+ "Unique identifier for this Docker host, sourced from the host.name OTel resource attribute",
279
+ example: "docker-host-prod-1",
280
+ })
281
+ @Column({
282
+ nullable: false,
283
+ type: ColumnType.ShortText,
284
+ length: ColumnLength.ShortText,
285
+ })
286
+ @UniqueColumnBy("projectId")
287
+ public hostIdentifier?: string = undefined;
288
+
289
+ @ColumnAccessControl({
290
+ create: [],
291
+ read: [
292
+ Permission.ProjectOwner,
293
+ Permission.ProjectAdmin,
294
+ Permission.ProjectMember,
295
+ Permission.ReadDockerHost,
296
+ Permission.ReadAllProjectResources,
297
+ ],
298
+ update: [
299
+ Permission.ProjectOwner,
300
+ Permission.ProjectAdmin,
301
+ Permission.EditDockerHost,
302
+ ],
303
+ })
304
+ @TableColumn({
305
+ required: false,
306
+ type: TableColumnType.ShortText,
307
+ canReadOnRelationQuery: true,
308
+ title: "OTel Collector Status",
309
+ description:
310
+ "Connection status of the OTel Collector agent (connected or disconnected)",
311
+ example: "connected",
312
+ })
313
+ @Column({
314
+ nullable: true,
315
+ type: ColumnType.ShortText,
316
+ length: ColumnLength.ShortText,
317
+ default: "disconnected",
318
+ })
319
+ public otelCollectorStatus?: string = undefined;
320
+
321
+ @ColumnAccessControl({
322
+ create: [],
323
+ read: [
324
+ Permission.ProjectOwner,
325
+ Permission.ProjectAdmin,
326
+ Permission.ProjectMember,
327
+ Permission.ReadDockerHost,
328
+ Permission.ReadAllProjectResources,
329
+ ],
330
+ update: [
331
+ Permission.ProjectOwner,
332
+ Permission.ProjectAdmin,
333
+ Permission.EditDockerHost,
334
+ ],
335
+ })
336
+ @TableColumn({
337
+ required: false,
338
+ type: TableColumnType.Date,
339
+ canReadOnRelationQuery: true,
340
+ title: "Last Seen At",
341
+ description: "When metrics were last received from this host",
342
+ })
343
+ @Column({
344
+ nullable: true,
345
+ type: ColumnType.Date,
346
+ })
347
+ public lastSeenAt?: Date = undefined;
348
+
349
+ @ColumnAccessControl({
350
+ create: [],
351
+ read: [
352
+ Permission.ProjectOwner,
353
+ Permission.ProjectAdmin,
354
+ Permission.ProjectMember,
355
+ Permission.ReadDockerHost,
356
+ Permission.ReadAllProjectResources,
357
+ ],
358
+ update: [
359
+ Permission.ProjectOwner,
360
+ Permission.ProjectAdmin,
361
+ Permission.EditDockerHost,
362
+ ],
363
+ })
364
+ @TableColumn({
365
+ type: TableColumnType.Number,
366
+ title: "Containers Running",
367
+ description: "Cached count of running containers on this host",
368
+ })
369
+ @Column({
370
+ type: ColumnType.Number,
371
+ nullable: true,
372
+ default: 0,
373
+ })
374
+ public containersRunning?: number = undefined;
375
+
376
+ @ColumnAccessControl({
377
+ create: [],
378
+ read: [
379
+ Permission.ProjectOwner,
380
+ Permission.ProjectAdmin,
381
+ Permission.ProjectMember,
382
+ Permission.ReadDockerHost,
383
+ Permission.ReadAllProjectResources,
384
+ ],
385
+ update: [
386
+ Permission.ProjectOwner,
387
+ Permission.ProjectAdmin,
388
+ Permission.EditDockerHost,
389
+ ],
390
+ })
391
+ @TableColumn({
392
+ type: TableColumnType.Number,
393
+ title: "Containers Stopped",
394
+ description: "Cached count of stopped containers on this host",
395
+ })
396
+ @Column({
397
+ type: ColumnType.Number,
398
+ nullable: true,
399
+ default: 0,
400
+ })
401
+ public containersStopped?: number = undefined;
402
+
403
+ @ColumnAccessControl({
404
+ create: [],
405
+ read: [
406
+ Permission.ProjectOwner,
407
+ Permission.ProjectAdmin,
408
+ Permission.ProjectMember,
409
+ Permission.ReadDockerHost,
410
+ Permission.ReadAllProjectResources,
411
+ ],
412
+ update: [
413
+ Permission.ProjectOwner,
414
+ Permission.ProjectAdmin,
415
+ Permission.EditDockerHost,
416
+ ],
417
+ })
418
+ @TableColumn({
419
+ type: TableColumnType.Number,
420
+ title: "Containers Paused",
421
+ description: "Cached count of paused containers on this host",
422
+ })
423
+ @Column({
424
+ type: ColumnType.Number,
425
+ nullable: true,
426
+ default: 0,
427
+ })
428
+ public containersPaused?: number = undefined;
429
+
430
+ @ColumnAccessControl({
431
+ create: [],
432
+ read: [
433
+ Permission.ProjectOwner,
434
+ Permission.ProjectAdmin,
435
+ Permission.ProjectMember,
436
+ Permission.ReadDockerHost,
437
+ Permission.ReadAllProjectResources,
438
+ ],
439
+ update: [
440
+ Permission.ProjectOwner,
441
+ Permission.ProjectAdmin,
442
+ Permission.EditDockerHost,
443
+ ],
444
+ })
445
+ @TableColumn({
446
+ required: false,
447
+ type: TableColumnType.ShortText,
448
+ canReadOnRelationQuery: true,
449
+ title: "OS Type",
450
+ description: "Operating system type of the Docker host",
451
+ example: "linux",
452
+ })
453
+ @Column({
454
+ nullable: true,
455
+ type: ColumnType.ShortText,
456
+ length: ColumnLength.ShortText,
457
+ })
458
+ public osType?: string = undefined;
459
+
460
+ @ColumnAccessControl({
461
+ create: [],
462
+ read: [
463
+ Permission.ProjectOwner,
464
+ Permission.ProjectAdmin,
465
+ Permission.ProjectMember,
466
+ Permission.ReadDockerHost,
467
+ Permission.ReadAllProjectResources,
468
+ ],
469
+ update: [
470
+ Permission.ProjectOwner,
471
+ Permission.ProjectAdmin,
472
+ Permission.EditDockerHost,
473
+ ],
474
+ })
475
+ @TableColumn({
476
+ required: false,
477
+ type: TableColumnType.ShortText,
478
+ canReadOnRelationQuery: true,
479
+ title: "OS Version",
480
+ description: "Operating system version of the Docker host",
481
+ example: "Ubuntu 22.04",
482
+ })
483
+ @Column({
484
+ nullable: true,
485
+ type: ColumnType.ShortText,
486
+ length: ColumnLength.ShortText,
487
+ })
488
+ public osVersion?: string = undefined;
489
+
490
+ @ColumnAccessControl({
491
+ create: [
492
+ Permission.ProjectOwner,
493
+ Permission.ProjectAdmin,
494
+ Permission.ProjectMember,
495
+ Permission.CreateDockerHost,
496
+ ],
497
+ read: [
498
+ Permission.ProjectOwner,
499
+ Permission.ProjectAdmin,
500
+ Permission.ProjectMember,
501
+ Permission.ReadDockerHost,
502
+ Permission.ReadAllProjectResources,
503
+ ],
504
+ update: [],
505
+ })
506
+ @TableColumn({
507
+ manyToOneRelationColumn: "createdByUserId",
508
+ type: TableColumnType.Entity,
509
+ modelType: User,
510
+ title: "Created by User",
511
+ description:
512
+ "Relation to User who created this object (if this object was created by a User)",
513
+ })
514
+ @ManyToOne(
515
+ () => {
516
+ return User;
517
+ },
518
+ {
519
+ eager: false,
520
+ nullable: true,
521
+ onDelete: "SET NULL",
522
+ orphanedRowAction: "nullify",
523
+ },
524
+ )
525
+ @JoinColumn({ name: "createdByUserId" })
526
+ public createdByUser?: User = undefined;
527
+
528
+ @ColumnAccessControl({
529
+ create: [
530
+ Permission.ProjectOwner,
531
+ Permission.ProjectAdmin,
532
+ Permission.ProjectMember,
533
+ Permission.CreateDockerHost,
534
+ ],
535
+ read: [
536
+ Permission.ProjectOwner,
537
+ Permission.ProjectAdmin,
538
+ Permission.ProjectMember,
539
+ Permission.ReadDockerHost,
540
+ Permission.ReadAllProjectResources,
541
+ ],
542
+ update: [],
543
+ })
544
+ @TableColumn({
545
+ type: TableColumnType.ObjectID,
546
+ title: "Created by User ID",
547
+ description:
548
+ "User ID who created this object (if this object was created by a User)",
549
+ })
550
+ @Column({
551
+ type: ColumnType.ObjectID,
552
+ nullable: true,
553
+ transformer: ObjectID.getDatabaseTransformer(),
554
+ })
555
+ public createdByUserId?: ObjectID = undefined;
556
+
557
+ @ColumnAccessControl({
558
+ create: [],
559
+ read: [
560
+ Permission.ProjectOwner,
561
+ Permission.ProjectAdmin,
562
+ Permission.ProjectMember,
563
+ Permission.ReadDockerHost,
564
+ Permission.ReadAllProjectResources,
565
+ ],
566
+ update: [],
567
+ })
568
+ @TableColumn({
569
+ manyToOneRelationColumn: "deletedByUserId",
570
+ type: TableColumnType.Entity,
571
+ title: "Deleted by User",
572
+ modelType: User,
573
+ description:
574
+ "Relation to User who deleted this object (if this object was deleted by a User)",
575
+ })
576
+ @ManyToOne(
577
+ () => {
578
+ return User;
579
+ },
580
+ {
581
+ cascade: false,
582
+ eager: false,
583
+ nullable: true,
584
+ onDelete: "SET NULL",
585
+ orphanedRowAction: "nullify",
586
+ },
587
+ )
588
+ @JoinColumn({ name: "deletedByUserId" })
589
+ public deletedByUser?: User = undefined;
590
+
591
+ @ColumnAccessControl({
592
+ create: [],
593
+ read: [
594
+ Permission.ProjectOwner,
595
+ Permission.ProjectAdmin,
596
+ Permission.ProjectMember,
597
+ Permission.ReadDockerHost,
598
+ Permission.ReadAllProjectResources,
599
+ ],
600
+ update: [],
601
+ })
602
+ @TableColumn({
603
+ type: TableColumnType.ObjectID,
604
+ title: "Deleted by User ID",
605
+ description:
606
+ "User ID who deleted this object (if this object was deleted by a User)",
607
+ })
608
+ @Column({
609
+ type: ColumnType.ObjectID,
610
+ nullable: true,
611
+ transformer: ObjectID.getDatabaseTransformer(),
612
+ })
613
+ public deletedByUserId?: ObjectID = undefined;
614
+
615
+ @ColumnAccessControl({
616
+ create: [
617
+ Permission.ProjectOwner,
618
+ Permission.ProjectAdmin,
619
+ Permission.ProjectMember,
620
+ Permission.CreateDockerHost,
621
+ ],
622
+ read: [
623
+ Permission.ProjectOwner,
624
+ Permission.ProjectAdmin,
625
+ Permission.ProjectMember,
626
+ Permission.ReadDockerHost,
627
+ Permission.ReadAllProjectResources,
628
+ ],
629
+ update: [
630
+ Permission.ProjectOwner,
631
+ Permission.ProjectAdmin,
632
+ Permission.ProjectMember,
633
+ Permission.EditDockerHost,
634
+ ],
635
+ })
636
+ @TableColumn({
637
+ required: false,
638
+ type: TableColumnType.EntityArray,
639
+ modelType: Label,
640
+ title: "Labels",
641
+ description:
642
+ "Relation to Labels Array where this object is categorized in.",
643
+ })
644
+ @ManyToMany(
645
+ () => {
646
+ return Label;
647
+ },
648
+ { eager: false },
649
+ )
650
+ @JoinTable({
651
+ name: "DockerHostLabel",
652
+ inverseJoinColumn: {
653
+ name: "labelId",
654
+ referencedColumnName: "_id",
655
+ },
656
+ joinColumn: {
657
+ name: "dockerHostId",
658
+ referencedColumnName: "_id",
659
+ },
660
+ })
661
+ public labels?: Array<Label> = undefined;
662
+ }