@oneuptime/common 10.0.65 → 10.0.67

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 (276) hide show
  1. package/Models/DatabaseModels/DockerHostOwnerTeam.ts +464 -0
  2. package/Models/DatabaseModels/DockerHostOwnerUser.ts +463 -0
  3. package/Models/DatabaseModels/GlobalConfig.ts +56 -0
  4. package/Models/DatabaseModels/Index.ts +28 -0
  5. package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +464 -0
  6. package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +463 -0
  7. package/Models/DatabaseModels/KubernetesResource.ts +548 -0
  8. package/Models/DatabaseModels/MetricPipelineRule.ts +804 -0
  9. package/Models/DatabaseModels/MetricRecordingRule.ts +470 -0
  10. package/Models/DatabaseModels/Monitor.ts +2 -0
  11. package/Models/DatabaseModels/Project.ts +83 -0
  12. package/Models/DatabaseModels/Service.ts +79 -0
  13. package/Models/DatabaseModels/TelegramLog.ts +1025 -0
  14. package/Models/DatabaseModels/TraceDropFilter.ts +508 -0
  15. package/Models/DatabaseModels/TracePipeline.ts +436 -0
  16. package/Models/DatabaseModels/TracePipelineProcessor.ts +454 -0
  17. package/Models/DatabaseModels/TraceRecordingRule.ts +470 -0
  18. package/Models/DatabaseModels/TraceScrubRule.ts +546 -0
  19. package/Models/DatabaseModels/UserNotificationRule.ts +49 -0
  20. package/Models/DatabaseModels/UserNotificationSetting.ts +17 -0
  21. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +48 -0
  22. package/Models/DatabaseModels/UserTelegram.ts +312 -0
  23. package/Server/API/KubernetesResourceAPI.ts +129 -0
  24. package/Server/API/UserTelegramAPI.ts +167 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.ts +399 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.ts +205 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.ts +335 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.ts +29 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.ts +53 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.ts +325 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -1
  32. package/Server/Services/DockerHostOwnerTeamService.ts +10 -0
  33. package/Server/Services/DockerHostOwnerUserService.ts +10 -0
  34. package/Server/Services/Index.ts +6 -0
  35. package/Server/Services/KubernetesClusterOwnerTeamService.ts +10 -0
  36. package/Server/Services/KubernetesClusterOwnerUserService.ts +10 -0
  37. package/Server/Services/KubernetesResourceService.ts +351 -0
  38. package/Server/Services/MetricPipelineRuleService.ts +10 -0
  39. package/Server/Services/MetricRecordingRuleService.ts +10 -0
  40. package/Server/Services/TelegramLogService.ts +15 -0
  41. package/Server/Services/TelegramService.ts +139 -0
  42. package/Server/Services/TraceDropFilterService.ts +10 -0
  43. package/Server/Services/TracePipelineProcessorService.ts +10 -0
  44. package/Server/Services/TracePipelineService.ts +10 -0
  45. package/Server/Services/TraceRecordingRuleService.ts +10 -0
  46. package/Server/Services/TraceScrubRuleService.ts +10 -0
  47. package/Server/Services/UserNotificationRuleService.ts +350 -1
  48. package/Server/Services/UserNotificationSettingService.ts +114 -0
  49. package/Server/Services/UserTelegramService.ts +140 -0
  50. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +71 -9
  51. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +483 -75
  52. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +379 -6
  53. package/Server/Utils/Monitor/MonitorResource.ts +29 -15
  54. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -16
  55. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +502 -0
  56. package/Tests/Types/Date.test.ts +158 -0
  57. package/Tests/Utils/MetricUnitUtil.test.ts +216 -0
  58. package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +269 -0
  59. package/Tests/Utils/Metrics/MetricResultUnitConverter.test.ts +231 -0
  60. package/Tests/Utils/RecordingRuleExpression.test.ts +177 -0
  61. package/Types/Date.ts +12 -3
  62. package/Types/Icon/IconProp.ts +1 -0
  63. package/Types/Kubernetes/KubernetesInventoryExtractor.ts +327 -0
  64. package/Types/Kubernetes/KubernetesObjectParser.ts +1949 -0
  65. package/Types/Metrics/MetricDownsamplingRetentionDays.ts +49 -0
  66. package/Types/Metrics/MetricFormulaConfigData.ts +4 -0
  67. package/Types/Metrics/MetricPipelineRuleFilterCondition.ts +136 -0
  68. package/Types/Metrics/MetricPipelineRuleType.ts +27 -0
  69. package/Types/Metrics/RecordingRuleDefinition.ts +180 -0
  70. package/Types/Monitor/CriteriaFilter.ts +43 -0
  71. package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +70 -0
  72. package/Types/Permission.ts +531 -0
  73. package/Types/Telegram/TelegramMessage.ts +9 -0
  74. package/Types/TelegramStatus.ts +14 -0
  75. package/Types/Trace/TraceAggregationType.ts +17 -0
  76. package/Types/Trace/TraceDropFilterAction.ts +6 -0
  77. package/Types/Trace/TracePipelineProcessorType.ts +56 -0
  78. package/Types/Trace/TraceRecordingRuleDefinition.ts +218 -0
  79. package/Types/Trace/TraceScrubAction.ts +7 -0
  80. package/Types/Trace/TraceScrubField.ts +8 -0
  81. package/Types/Trace/TraceScrubPatternType.ts +10 -0
  82. package/UI/Components/CardSelect/CardSelect.tsx +9 -1
  83. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +6 -10
  84. package/UI/Components/Forms/Fields/FormField.tsx +1 -0
  85. package/UI/Components/Forms/Types/Field.ts +1 -0
  86. package/UI/Components/Icon/Icon.tsx +15 -0
  87. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +57 -0
  88. package/UI/Components/Page/Page.tsx +6 -0
  89. package/Utils/MetricUnitUtil.ts +289 -0
  90. package/Utils/Metrics/MetricFormulaEvaluator.ts +610 -0
  91. package/Utils/Metrics/MetricResultUnitConverter.ts +91 -0
  92. package/Utils/Metrics/RecordingRuleExpression.ts +359 -0
  93. package/Utils/ValueFormatter.ts +137 -13
  94. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +480 -0
  95. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +479 -0
  97. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/GlobalConfig.js +59 -0
  99. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  100. package/build/dist/Models/DatabaseModels/Index.js +28 -0
  101. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +480 -0
  103. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +479 -0
  105. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/KubernetesResource.js +590 -0
  107. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +836 -0
  109. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -0
  110. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js +497 -0
  111. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js.map +1 -0
  112. package/build/dist/Models/DatabaseModels/Monitor.js +2 -0
  113. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/Project.js +85 -0
  115. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/Service.js +79 -0
  117. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/TelegramLog.js +1056 -0
  119. package/build/dist/Models/DatabaseModels/TelegramLog.js.map +1 -0
  120. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +536 -0
  121. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -0
  122. package/build/dist/Models/DatabaseModels/TracePipeline.js +462 -0
  123. package/build/dist/Models/DatabaseModels/TracePipeline.js.map +1 -0
  124. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js +476 -0
  125. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js.map +1 -0
  126. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js +497 -0
  127. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js.map +1 -0
  128. package/build/dist/Models/DatabaseModels/TraceScrubRule.js +575 -0
  129. package/build/dist/Models/DatabaseModels/TraceScrubRule.js.map +1 -0
  130. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +49 -0
  131. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  132. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js +19 -0
  133. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js.map +1 -1
  134. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  135. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  136. package/build/dist/Models/DatabaseModels/UserTelegram.js +331 -0
  137. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -0
  138. package/build/dist/Server/API/KubernetesResourceAPI.js +98 -0
  139. package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -0
  140. package/build/dist/Server/API/UserTelegramAPI.js +99 -0
  141. package/build/dist/Server/API/UserTelegramAPI.js.map +1 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js +144 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js +82 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js +118 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js +16 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js +24 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js.map +1 -0
  152. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.js +116 -0
  153. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776761171349-MigrationName.js.map +1 -0
  154. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  155. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  156. package/build/dist/Server/Services/DockerHostOwnerTeamService.js +9 -0
  157. package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -0
  158. package/build/dist/Server/Services/DockerHostOwnerUserService.js +9 -0
  159. package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -0
  160. package/build/dist/Server/Services/Index.js +6 -0
  161. package/build/dist/Server/Services/Index.js.map +1 -1
  162. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +9 -0
  163. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -0
  164. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +9 -0
  165. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -0
  166. package/build/dist/Server/Services/KubernetesResourceService.js +237 -0
  167. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -0
  168. package/build/dist/Server/Services/MetricPipelineRuleService.js +9 -0
  169. package/build/dist/Server/Services/MetricPipelineRuleService.js.map +1 -0
  170. package/build/dist/Server/Services/MetricRecordingRuleService.js +9 -0
  171. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -0
  172. package/build/dist/Server/Services/TelegramLogService.js +13 -0
  173. package/build/dist/Server/Services/TelegramLogService.js.map +1 -0
  174. package/build/dist/Server/Services/TelegramService.js +100 -0
  175. package/build/dist/Server/Services/TelegramService.js.map +1 -0
  176. package/build/dist/Server/Services/TraceDropFilterService.js +9 -0
  177. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -0
  178. package/build/dist/Server/Services/TracePipelineProcessorService.js +9 -0
  179. package/build/dist/Server/Services/TracePipelineProcessorService.js.map +1 -0
  180. package/build/dist/Server/Services/TracePipelineService.js +9 -0
  181. package/build/dist/Server/Services/TracePipelineService.js.map +1 -0
  182. package/build/dist/Server/Services/TraceRecordingRuleService.js +9 -0
  183. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -0
  184. package/build/dist/Server/Services/TraceScrubRuleService.js +9 -0
  185. package/build/dist/Server/Services/TraceScrubRuleService.js.map +1 -0
  186. package/build/dist/Server/Services/UserNotificationRuleService.js +272 -21
  187. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  188. package/build/dist/Server/Services/UserNotificationSettingService.js +94 -0
  189. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  190. package/build/dist/Server/Services/UserTelegramService.js +133 -0
  191. package/build/dist/Server/Services/UserTelegramService.js.map +1 -0
  192. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +56 -9
  193. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  194. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +335 -53
  195. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  196. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +277 -5
  197. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  198. package/build/dist/Server/Utils/Monitor/MonitorResource.js +25 -12
  199. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  200. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +24 -12
  201. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  202. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +407 -0
  203. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +1 -0
  204. package/build/dist/Tests/Types/Date.test.js +96 -0
  205. package/build/dist/Tests/Types/Date.test.js.map +1 -1
  206. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +159 -0
  207. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +1 -0
  208. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +224 -0
  209. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +1 -0
  210. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +180 -0
  211. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +1 -0
  212. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +142 -0
  213. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +1 -0
  214. package/build/dist/Types/Date.js +9 -3
  215. package/build/dist/Types/Date.js.map +1 -1
  216. package/build/dist/Types/Icon/IconProp.js +1 -0
  217. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  218. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js +200 -0
  219. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js.map +1 -0
  220. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js +1205 -0
  221. package/build/dist/Types/Kubernetes/KubernetesObjectParser.js.map +1 -0
  222. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js +32 -0
  223. package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js.map +1 -0
  224. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js +103 -0
  225. package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js.map +1 -0
  226. package/build/dist/Types/Metrics/MetricPipelineRuleType.js +27 -0
  227. package/build/dist/Types/Metrics/MetricPipelineRuleType.js.map +1 -0
  228. package/build/dist/Types/Metrics/RecordingRuleDefinition.js +110 -0
  229. package/build/dist/Types/Metrics/RecordingRuleDefinition.js.map +1 -0
  230. package/build/dist/Types/Monitor/CriteriaFilter.js +22 -0
  231. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  232. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js +2 -0
  233. package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js.map +1 -0
  234. package/build/dist/Types/Permission.js +464 -0
  235. package/build/dist/Types/Permission.js.map +1 -1
  236. package/build/dist/Types/Telegram/TelegramMessage.js +2 -0
  237. package/build/dist/Types/Telegram/TelegramMessage.js.map +1 -0
  238. package/build/dist/Types/TelegramStatus.js +15 -0
  239. package/build/dist/Types/TelegramStatus.js.map +1 -0
  240. package/build/dist/Types/Trace/TraceAggregationType.js +18 -0
  241. package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -0
  242. package/build/dist/Types/Trace/TraceDropFilterAction.js +7 -0
  243. package/build/dist/Types/Trace/TraceDropFilterAction.js.map +1 -0
  244. package/build/dist/Types/Trace/TracePipelineProcessorType.js +10 -0
  245. package/build/dist/Types/Trace/TracePipelineProcessorType.js.map +1 -0
  246. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +145 -0
  247. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -0
  248. package/build/dist/Types/Trace/TraceScrubAction.js +8 -0
  249. package/build/dist/Types/Trace/TraceScrubAction.js.map +1 -0
  250. package/build/dist/Types/Trace/TraceScrubField.js +9 -0
  251. package/build/dist/Types/Trace/TraceScrubField.js.map +1 -0
  252. package/build/dist/Types/Trace/TraceScrubPatternType.js +11 -0
  253. package/build/dist/Types/Trace/TraceScrubPatternType.js.map +1 -0
  254. package/build/dist/UI/Components/CardSelect/CardSelect.js +3 -1
  255. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  256. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -9
  257. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  258. package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
  259. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  260. package/build/dist/UI/Components/Icon/Icon.js +5 -0
  261. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  262. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +30 -0
  263. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  264. package/build/dist/UI/Components/Page/Page.js +1 -0
  265. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  266. package/build/dist/Utils/MetricUnitUtil.js +232 -0
  267. package/build/dist/Utils/MetricUnitUtil.js.map +1 -0
  268. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +453 -0
  269. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -0
  270. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js +61 -0
  271. package/build/dist/Utils/Metrics/MetricResultUnitConverter.js.map +1 -0
  272. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +298 -0
  273. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -0
  274. package/build/dist/Utils/ValueFormatter.js +123 -13
  275. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  276. package/package.json +2 -2
@@ -0,0 +1,548 @@
1
+ import KubernetesCluster from "./KubernetesCluster";
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 ColumnLength from "../../Types/Database/ColumnLength";
9
+ import ColumnType from "../../Types/Database/ColumnType";
10
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
11
+ import TableColumn from "../../Types/Database/TableColumn";
12
+ import TableColumnType from "../../Types/Database/TableColumnType";
13
+ import TableMetadata from "../../Types/Database/TableMetadata";
14
+ import TenantColumn from "../../Types/Database/TenantColumn";
15
+ import IconProp from "../../Types/Icon/IconProp";
16
+ import { JSONObject } from "../../Types/JSON";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import Permission from "../../Types/Permission";
19
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
20
+
21
+ /*
22
+ * ------------------------------------------------------------------
23
+ * KubernetesResource
24
+ * ------------------------------------------------------------------
25
+ *
26
+ * Inventory snapshot of a single Kubernetes object (Pod, Node,
27
+ * Deployment, ...) in a single cluster. Populated by the OTel logs
28
+ * ingest path from the k8sobjects receiver snapshot stream
29
+ * (kubernetes-agent pulls every 5 min by default).
30
+ *
31
+ * The overview page reads aggregates from this table instead of
32
+ * groupBy-ing over 24h of ClickHouse metric/log data.
33
+ *
34
+ * Rows are upserted per snapshot and hard-deleted once lastSeenAt
35
+ * falls behind "now - 15min" for clusters that remain connected.
36
+ *
37
+ * Writes go through KubernetesResourceService under isRoot; users
38
+ * never create/update/delete rows directly.
39
+ *
40
+ * ------------------------------------------------------------------
41
+ */
42
+
43
+ const READ_PERMISSIONS: Array<Permission> = [
44
+ Permission.ProjectOwner,
45
+ Permission.ProjectAdmin,
46
+ Permission.ProjectMember,
47
+ Permission.Viewer,
48
+ Permission.SettingsManager,
49
+ Permission.ReadKubernetesCluster,
50
+ Permission.ReadAllProjectResources,
51
+ ];
52
+
53
+ @TenantColumn("projectId")
54
+ @TableAccessControl({
55
+ create: [],
56
+ read: READ_PERMISSIONS,
57
+ update: [],
58
+ delete: [],
59
+ })
60
+ @CrudApiEndpoint(new Route("/kubernetes-resource"))
61
+ @TableMetadata({
62
+ tableName: "KubernetesResource",
63
+ singularName: "Kubernetes Resource",
64
+ pluralName: "Kubernetes Resources",
65
+ icon: IconProp.Cube,
66
+ tableDescription:
67
+ "Snapshot of a Kubernetes object (pod, node, deployment, etc.) as last reported by the kubernetes-agent. Populated by the telemetry ingest pipeline; not user-editable.",
68
+ })
69
+ @Index(["projectId", "kubernetesClusterId", "kind", "namespaceKey", "name"], {
70
+ unique: true,
71
+ })
72
+ @Entity({
73
+ name: "KubernetesResource",
74
+ })
75
+ export default class KubernetesResource extends BaseModel {
76
+ @ColumnAccessControl({
77
+ create: [],
78
+ read: READ_PERMISSIONS,
79
+ update: [],
80
+ })
81
+ @TableColumn({
82
+ manyToOneRelationColumn: "projectId",
83
+ type: TableColumnType.Entity,
84
+ modelType: Project,
85
+ title: "Project",
86
+ description: "Relation to Project this resource belongs to.",
87
+ })
88
+ @ManyToOne(
89
+ () => {
90
+ return Project;
91
+ },
92
+ {
93
+ eager: false,
94
+ nullable: true,
95
+ onDelete: "CASCADE",
96
+ orphanedRowAction: "nullify",
97
+ },
98
+ )
99
+ @JoinColumn({ name: "projectId" })
100
+ public project?: Project = undefined;
101
+
102
+ @ColumnAccessControl({
103
+ create: [],
104
+ read: READ_PERMISSIONS,
105
+ update: [],
106
+ })
107
+ @Index()
108
+ @TableColumn({
109
+ type: TableColumnType.ObjectID,
110
+ required: true,
111
+ canReadOnRelationQuery: true,
112
+ title: "Project ID",
113
+ description: "ID of the Project this resource belongs to.",
114
+ })
115
+ @Column({
116
+ type: ColumnType.ObjectID,
117
+ nullable: false,
118
+ transformer: ObjectID.getDatabaseTransformer(),
119
+ })
120
+ public projectId?: ObjectID = undefined;
121
+
122
+ @ColumnAccessControl({
123
+ create: [],
124
+ read: READ_PERMISSIONS,
125
+ update: [],
126
+ })
127
+ @TableColumn({
128
+ manyToOneRelationColumn: "kubernetesClusterId",
129
+ type: TableColumnType.Entity,
130
+ modelType: KubernetesCluster,
131
+ title: "Kubernetes Cluster",
132
+ description: "Cluster this resource lives in.",
133
+ })
134
+ @ManyToOne(
135
+ () => {
136
+ return KubernetesCluster;
137
+ },
138
+ {
139
+ eager: false,
140
+ nullable: true,
141
+ onDelete: "CASCADE",
142
+ orphanedRowAction: "nullify",
143
+ },
144
+ )
145
+ @JoinColumn({ name: "kubernetesClusterId" })
146
+ public kubernetesCluster?: KubernetesCluster = undefined;
147
+
148
+ @ColumnAccessControl({
149
+ create: [],
150
+ read: READ_PERMISSIONS,
151
+ update: [],
152
+ })
153
+ @Index()
154
+ @TableColumn({
155
+ type: TableColumnType.ObjectID,
156
+ required: true,
157
+ canReadOnRelationQuery: true,
158
+ title: "Kubernetes Cluster ID",
159
+ description: "ID of the Kubernetes Cluster this resource lives in.",
160
+ })
161
+ @Column({
162
+ type: ColumnType.ObjectID,
163
+ nullable: false,
164
+ transformer: ObjectID.getDatabaseTransformer(),
165
+ })
166
+ public kubernetesClusterId?: ObjectID = undefined;
167
+
168
+ @ColumnAccessControl({
169
+ create: [],
170
+ read: READ_PERMISSIONS,
171
+ update: [],
172
+ })
173
+ @TableColumn({
174
+ required: true,
175
+ type: TableColumnType.ShortText,
176
+ canReadOnRelationQuery: true,
177
+ title: "Kind",
178
+ description:
179
+ "Kubernetes resource kind in singular PascalCase (e.g. Pod, Node, Deployment).",
180
+ })
181
+ @Column({
182
+ nullable: false,
183
+ type: ColumnType.ShortText,
184
+ length: ColumnLength.ShortText,
185
+ })
186
+ public kind?: string = undefined;
187
+
188
+ @ColumnAccessControl({
189
+ create: [],
190
+ read: READ_PERMISSIONS,
191
+ update: [],
192
+ })
193
+ @TableColumn({
194
+ required: true,
195
+ type: TableColumnType.ShortText,
196
+ canReadOnRelationQuery: true,
197
+ title: "Namespace Key",
198
+ description:
199
+ "Kubernetes namespace, or empty string for cluster-scoped resources. Kept non-null so the upsert unique index works.",
200
+ })
201
+ @Column({
202
+ nullable: false,
203
+ type: ColumnType.ShortText,
204
+ length: ColumnLength.ShortText,
205
+ default: "",
206
+ })
207
+ public namespaceKey?: string = undefined;
208
+
209
+ @ColumnAccessControl({
210
+ create: [],
211
+ read: READ_PERMISSIONS,
212
+ update: [],
213
+ })
214
+ @TableColumn({
215
+ required: true,
216
+ type: TableColumnType.ShortText,
217
+ canReadOnRelationQuery: true,
218
+ title: "Name",
219
+ description: "Kubernetes resource name (metadata.name).",
220
+ })
221
+ @Column({
222
+ nullable: false,
223
+ type: ColumnType.ShortText,
224
+ length: ColumnLength.ShortText,
225
+ })
226
+ public name?: string = undefined;
227
+
228
+ @ColumnAccessControl({
229
+ create: [],
230
+ read: READ_PERMISSIONS,
231
+ update: [],
232
+ })
233
+ @TableColumn({
234
+ required: false,
235
+ type: TableColumnType.ShortText,
236
+ canReadOnRelationQuery: true,
237
+ title: "UID",
238
+ description: "Kubernetes metadata.uid — stable identity across restarts.",
239
+ })
240
+ @Column({
241
+ nullable: true,
242
+ type: ColumnType.ShortText,
243
+ length: ColumnLength.ShortText,
244
+ })
245
+ public uid?: string = undefined;
246
+
247
+ @ColumnAccessControl({
248
+ create: [],
249
+ read: READ_PERMISSIONS,
250
+ update: [],
251
+ })
252
+ @TableColumn({
253
+ required: false,
254
+ type: TableColumnType.ShortText,
255
+ canReadOnRelationQuery: true,
256
+ title: "Phase",
257
+ description:
258
+ "Pod.status.phase (Running / Pending / Failed / Succeeded / Unknown). Null for non-Pod kinds.",
259
+ })
260
+ @Column({
261
+ nullable: true,
262
+ type: ColumnType.ShortText,
263
+ length: ColumnLength.ShortText,
264
+ })
265
+ public phase?: string = undefined;
266
+
267
+ @ColumnAccessControl({
268
+ create: [],
269
+ read: READ_PERMISSIONS,
270
+ update: [],
271
+ })
272
+ @TableColumn({
273
+ required: false,
274
+ type: TableColumnType.Boolean,
275
+ canReadOnRelationQuery: true,
276
+ title: "Is Ready",
277
+ description:
278
+ "True if Node.status.conditions[type=Ready].status == True. Null for non-Node kinds.",
279
+ })
280
+ @Column({
281
+ nullable: true,
282
+ type: ColumnType.Boolean,
283
+ })
284
+ public isReady?: boolean = undefined;
285
+
286
+ @ColumnAccessControl({
287
+ create: [],
288
+ read: READ_PERMISSIONS,
289
+ update: [],
290
+ })
291
+ @TableColumn({
292
+ required: false,
293
+ type: TableColumnType.Boolean,
294
+ canReadOnRelationQuery: true,
295
+ title: "Has Memory Pressure",
296
+ description: "Node MemoryPressure condition. Null for non-Node kinds.",
297
+ })
298
+ @Column({
299
+ nullable: true,
300
+ type: ColumnType.Boolean,
301
+ })
302
+ public hasMemoryPressure?: boolean = undefined;
303
+
304
+ @ColumnAccessControl({
305
+ create: [],
306
+ read: READ_PERMISSIONS,
307
+ update: [],
308
+ })
309
+ @TableColumn({
310
+ required: false,
311
+ type: TableColumnType.Boolean,
312
+ canReadOnRelationQuery: true,
313
+ title: "Has Disk Pressure",
314
+ description: "Node DiskPressure condition. Null for non-Node kinds.",
315
+ })
316
+ @Column({
317
+ nullable: true,
318
+ type: ColumnType.Boolean,
319
+ })
320
+ public hasDiskPressure?: boolean = undefined;
321
+
322
+ @ColumnAccessControl({
323
+ create: [],
324
+ read: READ_PERMISSIONS,
325
+ update: [],
326
+ })
327
+ @TableColumn({
328
+ required: false,
329
+ type: TableColumnType.Boolean,
330
+ canReadOnRelationQuery: true,
331
+ title: "Has PID Pressure",
332
+ description: "Node PIDPressure condition. Null for non-Node kinds.",
333
+ })
334
+ @Column({
335
+ nullable: true,
336
+ type: ColumnType.Boolean,
337
+ })
338
+ public hasPidPressure?: boolean = undefined;
339
+
340
+ @ColumnAccessControl({
341
+ create: [],
342
+ read: READ_PERMISSIONS,
343
+ update: [],
344
+ })
345
+ @TableColumn({
346
+ required: false,
347
+ type: TableColumnType.JSON,
348
+ title: "Labels",
349
+ description: "Kubernetes metadata.labels.",
350
+ })
351
+ @Column({
352
+ nullable: true,
353
+ type: ColumnType.JSON,
354
+ })
355
+ public labels?: JSONObject = undefined;
356
+
357
+ @ColumnAccessControl({
358
+ create: [],
359
+ read: READ_PERMISSIONS,
360
+ update: [],
361
+ })
362
+ @TableColumn({
363
+ required: false,
364
+ type: TableColumnType.JSON,
365
+ title: "Annotations",
366
+ description: "Kubernetes metadata.annotations.",
367
+ })
368
+ @Column({
369
+ nullable: true,
370
+ type: ColumnType.JSON,
371
+ })
372
+ public annotations?: JSONObject = undefined;
373
+
374
+ @ColumnAccessControl({
375
+ create: [],
376
+ read: READ_PERMISSIONS,
377
+ update: [],
378
+ })
379
+ @TableColumn({
380
+ required: false,
381
+ type: TableColumnType.JSON,
382
+ title: "Owner References",
383
+ description: "Kubernetes metadata.ownerReferences array.",
384
+ })
385
+ @Column({
386
+ nullable: true,
387
+ type: ColumnType.JSON,
388
+ })
389
+ public ownerReferences?: JSONObject = undefined;
390
+
391
+ @ColumnAccessControl({
392
+ create: [],
393
+ read: READ_PERMISSIONS,
394
+ update: [],
395
+ })
396
+ @TableColumn({
397
+ required: false,
398
+ type: TableColumnType.JSON,
399
+ title: "Spec",
400
+ description: "Kubernetes spec block, verbatim from the last snapshot.",
401
+ })
402
+ @Column({
403
+ nullable: true,
404
+ type: ColumnType.JSON,
405
+ })
406
+ public spec?: JSONObject = undefined;
407
+
408
+ @ColumnAccessControl({
409
+ create: [],
410
+ read: READ_PERMISSIONS,
411
+ update: [],
412
+ })
413
+ @TableColumn({
414
+ required: false,
415
+ type: TableColumnType.JSON,
416
+ title: "Status",
417
+ description: "Kubernetes status block, verbatim from the last snapshot.",
418
+ })
419
+ @Column({
420
+ nullable: true,
421
+ type: ColumnType.JSON,
422
+ })
423
+ public status?: JSONObject = undefined;
424
+
425
+ @ColumnAccessControl({
426
+ create: [],
427
+ read: READ_PERMISSIONS,
428
+ update: [],
429
+ })
430
+ @TableColumn({
431
+ required: true,
432
+ type: TableColumnType.Date,
433
+ canReadOnRelationQuery: true,
434
+ title: "Last Seen At",
435
+ description:
436
+ "Agent-observed timestamp of the most recent snapshot for this resource. Also acts as the monotonic guard for upserts.",
437
+ })
438
+ @Column({
439
+ nullable: false,
440
+ type: ColumnType.Date,
441
+ })
442
+ public lastSeenAt?: Date = undefined;
443
+
444
+ @ColumnAccessControl({
445
+ create: [],
446
+ read: READ_PERMISSIONS,
447
+ update: [],
448
+ })
449
+ @TableColumn({
450
+ required: false,
451
+ type: TableColumnType.Date,
452
+ canReadOnRelationQuery: true,
453
+ title: "Resource Creation Timestamp",
454
+ description: "Kubernetes metadata.creationTimestamp of this object.",
455
+ })
456
+ @Column({
457
+ nullable: true,
458
+ type: ColumnType.Date,
459
+ })
460
+ public resourceCreationTimestamp?: Date = undefined;
461
+
462
+ @ColumnAccessControl({
463
+ create: [],
464
+ read: READ_PERMISSIONS,
465
+ update: [],
466
+ })
467
+ @TableColumn({
468
+ manyToOneRelationColumn: "createdByUserId",
469
+ type: TableColumnType.Entity,
470
+ modelType: User,
471
+ title: "Created By User",
472
+ description:
473
+ "Not user-facing; ingest writes as isRoot so this stays null in practice.",
474
+ })
475
+ @ManyToOne(
476
+ () => {
477
+ return User;
478
+ },
479
+ {
480
+ eager: false,
481
+ nullable: true,
482
+ onDelete: "SET NULL",
483
+ orphanedRowAction: "nullify",
484
+ },
485
+ )
486
+ @JoinColumn({ name: "createdByUserId" })
487
+ public createdByUser?: User = undefined;
488
+
489
+ @ColumnAccessControl({
490
+ create: [],
491
+ read: READ_PERMISSIONS,
492
+ update: [],
493
+ })
494
+ @TableColumn({
495
+ type: TableColumnType.ObjectID,
496
+ title: "Created By User ID",
497
+ description: "ID of the user who created this row.",
498
+ })
499
+ @Column({
500
+ type: ColumnType.ObjectID,
501
+ nullable: true,
502
+ transformer: ObjectID.getDatabaseTransformer(),
503
+ })
504
+ public createdByUserId?: ObjectID = undefined;
505
+
506
+ @ColumnAccessControl({
507
+ create: [],
508
+ read: READ_PERMISSIONS,
509
+ update: [],
510
+ })
511
+ @TableColumn({
512
+ manyToOneRelationColumn: "deletedByUserId",
513
+ type: TableColumnType.Entity,
514
+ modelType: User,
515
+ title: "Deleted By User",
516
+ description: "Relation to the user who deleted this row.",
517
+ })
518
+ @ManyToOne(
519
+ () => {
520
+ return User;
521
+ },
522
+ {
523
+ eager: false,
524
+ nullable: true,
525
+ onDelete: "SET NULL",
526
+ orphanedRowAction: "nullify",
527
+ },
528
+ )
529
+ @JoinColumn({ name: "deletedByUserId" })
530
+ public deletedByUser?: User = undefined;
531
+
532
+ @ColumnAccessControl({
533
+ create: [],
534
+ read: READ_PERMISSIONS,
535
+ update: [],
536
+ })
537
+ @TableColumn({
538
+ type: TableColumnType.ObjectID,
539
+ title: "Deleted By User ID",
540
+ description: "ID of the user who deleted this row.",
541
+ })
542
+ @Column({
543
+ type: ColumnType.ObjectID,
544
+ nullable: true,
545
+ transformer: ObjectID.getDatabaseTransformer(),
546
+ })
547
+ public deletedByUserId?: ObjectID = undefined;
548
+ }