@oneuptime/common 11.0.2 → 11.0.4

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 (498) hide show
  1. package/Models/DatabaseModels/Alert.ts +166 -0
  2. package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
  3. package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
  4. package/Models/DatabaseModels/DockerSwarmCluster.ts +989 -0
  5. package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +514 -0
  6. package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +596 -0
  7. package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +487 -0
  8. package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +486 -0
  9. package/Models/DatabaseModels/DockerSwarmResource.ts +750 -0
  10. package/Models/DatabaseModels/GlobalConfig.ts +19 -0
  11. package/Models/DatabaseModels/GlobalOidc.ts +351 -0
  12. package/Models/DatabaseModels/GlobalOidcProject.ts +265 -0
  13. package/Models/DatabaseModels/GlobalSso.ts +312 -0
  14. package/Models/DatabaseModels/GlobalSsoProject.ts +268 -0
  15. package/Models/DatabaseModels/Incident.ts +166 -0
  16. package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
  17. package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
  18. package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
  19. package/Models/DatabaseModels/Index.ts +32 -0
  20. package/Models/DatabaseModels/PodmanHost.ts +859 -0
  21. package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
  22. package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
  23. package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
  24. package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
  25. package/Models/DatabaseModels/PodmanResource.ts +498 -0
  26. package/Models/DatabaseModels/Project.ts +31 -0
  27. package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
  28. package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
  29. package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
  30. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
  31. package/Models/DatabaseModels/StatusPage.ts +82 -0
  32. package/Models/DatabaseModels/TelemetryException.ts +2 -0
  33. package/Server/API/DashboardAPI.ts +89 -0
  34. package/Server/API/DockerSwarmResourceAPI.ts +137 -0
  35. package/Server/API/StatusPageAPI.ts +2 -0
  36. package/Server/API/TelemetryAPI.ts +8 -1
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1781750000000-MigrationName.ts +3199 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1782000000000-AddGlobalSsoAndOidc.ts +176 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/1782100000000-AddStatusPageImageAltText.ts +25 -0
  40. package/Server/Infrastructure/Postgres/SchemaMigrations/1782200000000-AddRequireSsoForLoginToGlobalProviders.ts +25 -0
  41. package/Server/Infrastructure/Postgres/SchemaMigrations/1782300000000-MoveRequireSsoForLoginToGlobalConfig.ts +38 -0
  42. package/Server/Infrastructure/Postgres/SchemaMigrations/1782310000000-MigrationName.ts +299 -0
  43. package/Server/Infrastructure/Postgres/SchemaMigrations/1782400000000-RemoveIsTestedFromGlobalSsoAndOidc.ts +21 -0
  44. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
  45. package/Server/Middleware/UserAuthorization.ts +113 -42
  46. package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
  47. package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
  48. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
  49. package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
  50. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
  51. package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
  52. package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
  53. package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
  54. package/Server/Services/DockerSwarmClusterService.ts +404 -0
  55. package/Server/Services/DockerSwarmResourceService.ts +381 -0
  56. package/Server/Services/ExceptionAggregationService.ts +1 -0
  57. package/Server/Services/GlobalConfigService.ts +50 -0
  58. package/Server/Services/GlobalOidcProjectService.ts +85 -0
  59. package/Server/Services/GlobalOidcService.ts +10 -0
  60. package/Server/Services/GlobalSsoProjectService.ts +85 -0
  61. package/Server/Services/GlobalSsoService.ts +10 -0
  62. package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
  63. package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
  64. package/Server/Services/IncidentService.ts +11 -0
  65. package/Server/Services/Index.ts +22 -0
  66. package/Server/Services/LogAggregationService.ts +1 -0
  67. package/Server/Services/MetricAggregationService.ts +1 -0
  68. package/Server/Services/OpenTelemetryIngestService.ts +37 -0
  69. package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
  70. package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
  71. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
  72. package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
  73. package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
  74. package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
  75. package/Server/Services/PodmanHostService.ts +368 -0
  76. package/Server/Services/PodmanResourceService.ts +310 -0
  77. package/Server/Services/ProjectService.ts +44 -1
  78. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
  79. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
  80. package/Server/Services/TelemetryUsageBillingService.ts +18 -0
  81. package/Server/Services/TraceAggregationService.ts +1 -0
  82. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
  83. package/Server/Utils/Cookie.ts +39 -5
  84. package/Server/Utils/JsonWebToken.ts +7 -0
  85. package/Server/Utils/Monitor/MonitorAlert.ts +10 -0
  86. package/Server/Utils/Monitor/MonitorClusterContext.ts +35 -6
  87. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +306 -0
  88. package/Server/Utils/Monitor/MonitorIncident.ts +45 -0
  89. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +17 -0
  90. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -0
  91. package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
  92. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
  93. package/Server/Utils/Telemetry/Telemetry.ts +10 -0
  94. package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -0
  95. package/Server/Utils/ValidateGlobalProviderProjectTeams.ts +119 -0
  96. package/Tests/Server/Middleware/UserAuthorization.test.ts +51 -13
  97. package/Tests/Server/Middleware/UserAuthorizationSSOProvider.test.ts +163 -0
  98. package/Tests/Server/Utils/CookieSSOToken.test.ts +130 -0
  99. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +1 -0
  100. package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
  101. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
  102. package/Types/Dashboard/DashboardComponentType.ts +7 -0
  103. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  104. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
  105. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
  106. package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
  107. package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
  108. package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
  109. package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
  110. package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
  111. package/Types/Dashboard/DashboardTemplates.ts +194 -0
  112. package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
  113. package/Types/Icon/IconProp.ts +1 -0
  114. package/Types/JsonWebTokenData.ts +3 -0
  115. package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
  116. package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
  117. package/Types/Monitor/HostAlertTemplates.ts +455 -0
  118. package/Types/Monitor/HostMetricCatalog.ts +177 -0
  119. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +21 -0
  120. package/Types/Monitor/MonitorStep.ts +99 -0
  121. package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
  122. package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
  123. package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
  124. package/Types/Monitor/MonitorType.ts +42 -0
  125. package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
  126. package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
  127. package/Types/Permission.ts +465 -4
  128. package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
  129. package/Types/SSO/SsoProviderType.ts +8 -0
  130. package/Types/Telemetry/EntityType.ts +12 -0
  131. package/Types/Telemetry/ServiceType.ts +2 -0
  132. package/UI/Components/Accordion/Accordion.tsx +5 -1
  133. package/UI/Components/CardSelect/CardSelect.tsx +6 -1
  134. package/UI/Components/CategoryCheckbox/Index.tsx +2 -1
  135. package/UI/Components/CodeEditor/CodeEditor.tsx +2 -0
  136. package/UI/Components/CollapsibleSection/CollapsibleSection.tsx +8 -1
  137. package/UI/Components/Dropdown/Dropdown.tsx +2 -0
  138. package/UI/Components/EntityDropdown/EntityDropdown.tsx +3 -0
  139. package/UI/Components/FilePicker/FilePicker.tsx +2 -0
  140. package/UI/Components/Forms/Fields/ColorPicker.tsx +2 -0
  141. package/UI/Components/Forms/Fields/FieldLabel.tsx +4 -0
  142. package/UI/Components/Forms/Fields/FormField.tsx +72 -15
  143. package/UI/Components/Forms/Fields/IconPicker.tsx +2 -0
  144. package/UI/Components/Forms/Validation.ts +107 -23
  145. package/UI/Components/Icon/Icon.tsx +57 -0
  146. package/UI/Components/Input/Input.tsx +4 -0
  147. package/UI/Components/Link/Link.tsx +23 -0
  148. package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
  149. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
  150. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  151. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +3 -0
  152. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +63 -2
  153. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +6 -0
  154. package/UI/Components/Radio/Radio.tsx +2 -0
  155. package/UI/Components/RadioButtons/GroupRadioButtons.tsx +6 -1
  156. package/UI/Components/Tabs/Tabs.tsx +63 -0
  157. package/UI/Components/TextArea/TextArea.tsx +2 -0
  158. package/UI/Components/TimePicker/TimePicker.tsx +2 -0
  159. package/UI/Components/Toggle/Toggle.tsx +2 -1
  160. package/UI/Components/Tooltip/Tooltip.tsx +6 -1
  161. package/UI/Utils/TelemetryService.ts +1 -0
  162. package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
  163. package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
  164. package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
  165. package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
  166. package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
  167. package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
  168. package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
  169. package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
  170. package/Utils/Dashboard/Components/Index.ts +51 -0
  171. package/Utils/Telemetry/EntityKey.ts +18 -0
  172. package/build/dist/Models/DatabaseModels/Alert.js +162 -0
  173. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  174. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
  175. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
  176. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
  177. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
  178. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
  179. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
  180. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
  181. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
  182. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
  183. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
  184. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
  185. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
  186. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
  187. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
  188. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
  189. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
  190. package/build/dist/Models/DatabaseModels/GlobalConfig.js +20 -0
  191. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/GlobalOidc.js +379 -0
  193. package/build/dist/Models/DatabaseModels/GlobalOidc.js.map +1 -0
  194. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +276 -0
  195. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -0
  196. package/build/dist/Models/DatabaseModels/GlobalSso.js +341 -0
  197. package/build/dist/Models/DatabaseModels/GlobalSso.js.map +1 -0
  198. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +279 -0
  199. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -0
  200. package/build/dist/Models/DatabaseModels/Incident.js +162 -0
  201. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  202. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
  203. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
  205. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
  206. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
  207. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/Index.js +32 -0
  209. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
  211. package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
  212. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
  213. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
  214. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
  215. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
  216. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
  217. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
  218. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
  219. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
  220. package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
  221. package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
  222. package/build/dist/Models/DatabaseModels/Project.js +32 -0
  223. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  224. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
  225. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  226. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
  227. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
  228. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
  229. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
  230. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
  231. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  232. package/build/dist/Models/DatabaseModels/StatusPage.js +84 -0
  233. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  234. package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
  235. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  236. package/build/dist/Server/API/DashboardAPI.js +89 -0
  237. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  238. package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
  239. package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
  240. package/build/dist/Server/API/StatusPageAPI.js +2 -0
  241. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  242. package/build/dist/Server/API/TelemetryAPI.js +8 -1
  243. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781750000000-MigrationName.js +1100 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781750000000-MigrationName.js.map +1 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782000000000-AddGlobalSsoAndOidc.js +73 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782000000000-AddGlobalSsoAndOidc.js.map +1 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782100000000-AddStatusPageImageAltText.js +14 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782100000000-AddStatusPageImageAltText.js.map +1 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782200000000-AddRequireSsoForLoginToGlobalProviders.js +14 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782200000000-AddRequireSsoForLoginToGlobalProviders.js.map +1 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782300000000-MoveRequireSsoForLoginToGlobalConfig.js +23 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782300000000-MoveRequireSsoForLoginToGlobalConfig.js.map +1 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782310000000-MigrationName.js +106 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782310000000-MigrationName.js.map +1 -0
  256. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782400000000-RemoveIsTestedFromGlobalSsoAndOidc.js +14 -0
  257. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782400000000-RemoveIsTestedFromGlobalSsoAndOidc.js.map +1 -0
  258. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
  259. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  260. package/build/dist/Server/Middleware/UserAuthorization.js +77 -34
  261. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  262. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
  263. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  264. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
  265. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  266. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
  267. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
  268. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
  269. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
  270. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
  271. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
  272. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
  273. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
  274. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
  275. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
  276. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
  277. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
  278. package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
  279. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
  280. package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
  281. package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
  282. package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
  283. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  284. package/build/dist/Server/Services/GlobalConfigService.js +55 -0
  285. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  286. package/build/dist/Server/Services/GlobalOidcProjectService.js +80 -0
  287. package/build/dist/Server/Services/GlobalOidcProjectService.js.map +1 -0
  288. package/build/dist/Server/Services/GlobalOidcService.js +9 -0
  289. package/build/dist/Server/Services/GlobalOidcService.js.map +1 -0
  290. package/build/dist/Server/Services/GlobalSsoProjectService.js +80 -0
  291. package/build/dist/Server/Services/GlobalSsoProjectService.js.map +1 -0
  292. package/build/dist/Server/Services/GlobalSsoService.js +9 -0
  293. package/build/dist/Server/Services/GlobalSsoService.js.map +1 -0
  294. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
  295. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  296. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
  297. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  298. package/build/dist/Server/Services/IncidentService.js +8 -0
  299. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  300. package/build/dist/Server/Services/Index.js +22 -0
  301. package/build/dist/Server/Services/Index.js.map +1 -1
  302. package/build/dist/Server/Services/LogAggregationService.js +1 -0
  303. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  304. package/build/dist/Server/Services/MetricAggregationService.js +1 -0
  305. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  306. package/build/dist/Server/Services/OpenTelemetryIngestService.js +43 -13
  307. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  308. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
  309. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
  310. package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
  311. package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
  312. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
  313. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
  314. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
  315. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
  316. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
  317. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
  318. package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
  319. package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
  320. package/build/dist/Server/Services/PodmanHostService.js +319 -0
  321. package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
  322. package/build/dist/Server/Services/PodmanResourceService.js +196 -0
  323. package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
  324. package/build/dist/Server/Services/ProjectService.js +36 -1
  325. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  326. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
  327. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  328. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
  329. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  330. package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
  331. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  332. package/build/dist/Server/Services/TraceAggregationService.js +1 -0
  333. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  334. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
  335. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  336. package/build/dist/Server/Utils/Cookie.js +32 -3
  337. package/build/dist/Server/Utils/Cookie.js.map +1 -1
  338. package/build/dist/Server/Utils/JsonWebToken.js +6 -0
  339. package/build/dist/Server/Utils/JsonWebToken.js.map +1 -1
  340. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +8 -0
  341. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  342. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +35 -7
  343. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
  344. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +194 -0
  345. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  346. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +35 -1
  347. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  348. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +9 -0
  349. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  350. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -0
  351. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  352. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +16 -0
  353. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  354. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
  355. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  356. package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
  357. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  358. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +18 -0
  359. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  360. package/build/dist/Server/Utils/ValidateGlobalProviderProjectTeams.js +66 -0
  361. package/build/dist/Server/Utils/ValidateGlobalProviderProjectTeams.js.map +1 -0
  362. package/build/dist/Types/Dashboard/DashboardComponentType.js +7 -0
  363. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  364. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  365. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  366. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
  367. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  368. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
  369. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  370. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
  371. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
  372. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
  373. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
  374. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
  375. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
  376. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
  377. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
  378. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
  379. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
  380. package/build/dist/Types/Dashboard/DashboardTemplates.js +168 -0
  381. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  382. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
  383. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
  384. package/build/dist/Types/Icon/IconProp.js +1 -0
  385. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  386. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
  387. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
  388. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
  389. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
  390. package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
  391. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
  392. package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
  393. package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
  394. package/build/dist/Types/Monitor/MonitorStep.js +69 -0
  395. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  396. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
  397. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
  398. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
  399. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
  400. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
  401. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
  402. package/build/dist/Types/Monitor/MonitorType.js +39 -0
  403. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  404. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
  405. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
  406. package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
  407. package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
  408. package/build/dist/Types/Permission.js +420 -4
  409. package/build/dist/Types/Permission.js.map +1 -1
  410. package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
  411. package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
  412. package/build/dist/Types/SSO/SsoProviderType.js +9 -0
  413. package/build/dist/Types/SSO/SsoProviderType.js.map +1 -0
  414. package/build/dist/Types/Telemetry/EntityType.js +12 -0
  415. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  416. package/build/dist/Types/Telemetry/ServiceType.js +2 -0
  417. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  418. package/build/dist/UI/Components/Accordion/Accordion.js +5 -3
  419. package/build/dist/UI/Components/Accordion/Accordion.js.map +1 -1
  420. package/build/dist/UI/Components/CardSelect/CardSelect.js +1 -1
  421. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  422. package/build/dist/UI/Components/CategoryCheckbox/Index.js +1 -1
  423. package/build/dist/UI/Components/CategoryCheckbox/Index.js.map +1 -1
  424. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +1 -1
  425. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  426. package/build/dist/UI/Components/CollapsibleSection/CollapsibleSection.js +4 -2
  427. package/build/dist/UI/Components/CollapsibleSection/CollapsibleSection.js.map +1 -1
  428. package/build/dist/UI/Components/Dropdown/Dropdown.js +1 -1
  429. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  430. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +2 -2
  431. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  432. package/build/dist/UI/Components/FilePicker/FilePicker.js +1 -1
  433. package/build/dist/UI/Components/FilePicker/FilePicker.js.map +1 -1
  434. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +1 -1
  435. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  436. package/build/dist/UI/Components/Forms/Fields/FieldLabel.js +1 -1
  437. package/build/dist/UI/Components/Forms/Fields/FieldLabel.js.map +1 -1
  438. package/build/dist/UI/Components/Forms/Fields/FormField.js +58 -22
  439. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  440. package/build/dist/UI/Components/Forms/Fields/IconPicker.js +1 -1
  441. package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
  442. package/build/dist/UI/Components/Forms/Validation.js +64 -15
  443. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  444. package/build/dist/UI/Components/Icon/Icon.js +16 -0
  445. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  446. package/build/dist/UI/Components/Input/Input.js +1 -1
  447. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  448. package/build/dist/UI/Components/Link/Link.js +22 -1
  449. package/build/dist/UI/Components/Link/Link.js.map +1 -1
  450. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
  451. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  452. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
  453. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  454. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  455. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  456. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +2 -2
  457. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  458. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +46 -2
  459. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  460. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +6 -0
  461. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  462. package/build/dist/UI/Components/Radio/Radio.js +1 -1
  463. package/build/dist/UI/Components/Radio/Radio.js.map +1 -1
  464. package/build/dist/UI/Components/RadioButtons/GroupRadioButtons.js +1 -1
  465. package/build/dist/UI/Components/RadioButtons/GroupRadioButtons.js.map +1 -1
  466. package/build/dist/UI/Components/Tabs/Tabs.js +50 -1
  467. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  468. package/build/dist/UI/Components/TextArea/TextArea.js +1 -1
  469. package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
  470. package/build/dist/UI/Components/TimePicker/TimePicker.js +1 -1
  471. package/build/dist/UI/Components/TimePicker/TimePicker.js.map +1 -1
  472. package/build/dist/UI/Components/Toggle/Toggle.js +1 -1
  473. package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
  474. package/build/dist/UI/Components/Tooltip/Tooltip.js +6 -1
  475. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  476. package/build/dist/UI/Utils/TelemetryService.js +1 -0
  477. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  478. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
  479. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  480. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
  481. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
  482. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
  483. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  484. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
  485. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
  486. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
  487. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
  488. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
  489. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
  490. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
  491. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
  492. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
  493. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
  494. package/build/dist/Utils/Dashboard/Components/Index.js +28 -0
  495. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  496. package/build/dist/Utils/Telemetry/EntityKey.js +14 -0
  497. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  498. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
11
+ import PodmanHostOwnerUser from "../../Models/DatabaseModels/PodmanHostOwnerUser";
12
+ import PodmanHostOwnerTeam from "../../Models/DatabaseModels/PodmanHostOwnerTeam";
13
+ import PodmanHostOwnerRuleService from "./PodmanHostOwnerRuleService";
14
+ import PodmanHostOwnerUserService from "./PodmanHostOwnerUserService";
15
+ import PodmanHostOwnerTeamService from "./PodmanHostOwnerTeamService";
16
+ import PodmanHostService from "./PodmanHostService";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
19
+ import logger from "../Utils/Logger";
20
+ class PodmanHostOwnerRuleEngineServiceClass {
21
+ /**
22
+ * Evaluates PodmanHostOwnerRule rows for the given Podman host and adds matched
23
+ * owner users / teams via PodmanHostOwnerUserService / PodmanHostOwnerTeamService. Rules
24
+ * with notifyOwners set notify the added owners; rules with notifyOwners off
25
+ * add silently.
26
+ */
27
+ async applyRulesToPodmanHost(podmanHost) {
28
+ var _a, _b;
29
+ if (!podmanHost.id || !podmanHost.projectId) {
30
+ return;
31
+ }
32
+ try {
33
+ const rules = await PodmanHostOwnerRuleService.findBy({
34
+ query: {
35
+ projectId: podmanHost.projectId,
36
+ isEnabled: true,
37
+ },
38
+ props: { isRoot: true },
39
+ select: {
40
+ _id: true,
41
+ name: true,
42
+ notifyOwners: true,
43
+ podmanHostLabels: { _id: true },
44
+ podmanHostNamePattern: true,
45
+ podmanHostDescriptionPattern: true,
46
+ ownerUsers: { _id: true },
47
+ ownerTeams: { _id: true },
48
+ },
49
+ limit: 100,
50
+ skip: 0,
51
+ });
52
+ if (rules.length === 0) {
53
+ return;
54
+ }
55
+ const podmanHostWithDetails = await PodmanHostService.findOneById({
56
+ id: podmanHost.id,
57
+ select: {
58
+ name: true,
59
+ description: true,
60
+ labels: { _id: true },
61
+ },
62
+ props: { isRoot: true },
63
+ });
64
+ if (!podmanHostWithDetails) {
65
+ return;
66
+ }
67
+ const usersByNotify = new Map([
68
+ [true, new Set()],
69
+ [false, new Set()],
70
+ ]);
71
+ const teamsByNotify = new Map([
72
+ [true, new Set()],
73
+ [false, new Set()],
74
+ ]);
75
+ const matchedRules = [];
76
+ for (const rule of rules) {
77
+ const matches = this.doesPodmanHostMatchRule(podmanHostWithDetails, rule);
78
+ if (!matches) {
79
+ continue;
80
+ }
81
+ let ruleAddedAny = false;
82
+ const notify = rule.notifyOwners !== false;
83
+ for (const user of rule.ownerUsers || []) {
84
+ if (user.id) {
85
+ usersByNotify.get(notify).add(user.id.toString());
86
+ ruleAddedAny = true;
87
+ }
88
+ }
89
+ for (const team of rule.ownerTeams || []) {
90
+ if (team.id) {
91
+ teamsByNotify.get(notify).add(team.id.toString());
92
+ ruleAddedAny = true;
93
+ }
94
+ }
95
+ if (ruleAddedAny) {
96
+ matchedRules.push(rule);
97
+ }
98
+ }
99
+ if (matchedRules.length === 0) {
100
+ return;
101
+ }
102
+ for (const notify of [true, false]) {
103
+ const userIds = usersByNotify.get(notify);
104
+ const teamIds = teamsByNotify.get(notify);
105
+ for (const userId of userIds) {
106
+ const owner = new PodmanHostOwnerUser();
107
+ owner.podmanHostId = podmanHost.id;
108
+ owner.projectId = podmanHost.projectId;
109
+ owner.userId = new ObjectID(userId);
110
+ owner.isOwnerNotified = !notify;
111
+ await PodmanHostOwnerUserService.create({
112
+ data: owner,
113
+ props: { isRoot: true },
114
+ });
115
+ }
116
+ for (const teamId of teamIds) {
117
+ const owner = new PodmanHostOwnerTeam();
118
+ owner.podmanHostId = podmanHost.id;
119
+ owner.projectId = podmanHost.projectId;
120
+ owner.teamId = new ObjectID(teamId);
121
+ owner.isOwnerNotified = !notify;
122
+ await PodmanHostOwnerTeamService.create({
123
+ data: owner,
124
+ props: { isRoot: true },
125
+ });
126
+ }
127
+ }
128
+ logger.debug(`PodmanHostOwnerRuleEngine added owners to Podman host ${podmanHost.id}`, { projectId: podmanHost.projectId.toString() });
129
+ }
130
+ catch (error) {
131
+ logger.error(`Error applying Podman host owner rules: ${error}`, {
132
+ projectId: (_a = podmanHost.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
133
+ podmanHostId: (_b = podmanHost.id) === null || _b === void 0 ? void 0 : _b.toString(),
134
+ });
135
+ }
136
+ }
137
+ doesPodmanHostMatchRule(podmanHost, rule) {
138
+ if (rule.podmanHostLabels && rule.podmanHostLabels.length > 0) {
139
+ if (!podmanHost.labels || podmanHost.labels.length === 0) {
140
+ return false;
141
+ }
142
+ const ruleLabelIds = rule.podmanHostLabels.map((l) => {
143
+ var _a;
144
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
145
+ });
146
+ const labelIds = podmanHost.labels.map((l) => {
147
+ var _a;
148
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
149
+ });
150
+ if (!ruleLabelIds.some((id) => {
151
+ return labelIds.includes(id);
152
+ })) {
153
+ return false;
154
+ }
155
+ }
156
+ if (rule.podmanHostNamePattern &&
157
+ (!podmanHost.name ||
158
+ !this.testRegex(rule.podmanHostNamePattern, podmanHost.name, rule))) {
159
+ return false;
160
+ }
161
+ if (rule.podmanHostDescriptionPattern &&
162
+ (!podmanHost.description ||
163
+ !this.testRegex(rule.podmanHostDescriptionPattern, podmanHost.description, rule))) {
164
+ return false;
165
+ }
166
+ return true;
167
+ }
168
+ testRegex(pattern, value, rule) {
169
+ try {
170
+ const regex = new RegExp(pattern, "i");
171
+ return regex.test(value);
172
+ }
173
+ catch (_a) {
174
+ logger.warn(`Invalid regex in Podman host owner rule ${rule.id}: ${pattern}`);
175
+ return false;
176
+ }
177
+ }
178
+ }
179
+ __decorate([
180
+ CaptureSpan(),
181
+ __metadata("design:type", Function),
182
+ __metadata("design:paramtypes", [PodmanHost]),
183
+ __metadata("design:returntype", Promise)
184
+ ], PodmanHostOwnerRuleEngineServiceClass.prototype, "applyRulesToPodmanHost", null);
185
+ export default new PodmanHostOwnerRuleEngineServiceClass();
186
+ //# sourceMappingURL=PodmanHostOwnerRuleEngineService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PodmanHostOwnerRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/PodmanHostOwnerRuleEngineService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/PodmanHostOwnerRule";
3
+ import { IsBillingEnabled } from "../EnvironmentConfig";
4
+ export class Service extends DatabaseService {
5
+ constructor() {
6
+ super(Model);
7
+ if (IsBillingEnabled) {
8
+ this.hardDeleteItemsOlderThanInDays("createdAt", 3 * 365);
9
+ }
10
+ }
11
+ }
12
+ export default new Service();
13
+ //# sourceMappingURL=PodmanHostOwnerRuleService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PodmanHostOwnerRuleService.js","sourceRoot":"","sources":["../../../../Server/Services/PodmanHostOwnerRuleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,iDAAiD,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/PodmanHostOwnerTeam";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=PodmanHostOwnerTeamService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PodmanHostOwnerTeamService.js","sourceRoot":"","sources":["../../../../Server/Services/PodmanHostOwnerTeamService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,iDAAiD,CAAC;AAEpE,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/PodmanHostOwnerUser";
3
+ export class Service extends DatabaseService {
4
+ constructor() {
5
+ super(Model);
6
+ }
7
+ }
8
+ export default new Service();
9
+ //# sourceMappingURL=PodmanHostOwnerUserService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PodmanHostOwnerUserService.js","sourceRoot":"","sources":["../../../../Server/Services/PodmanHostOwnerUserService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,iDAAiD,CAAC;AAEpE,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,319 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import DatabaseService from "./DatabaseService";
11
+ import PodmanHostLabelRuleEngineService from "./PodmanHostLabelRuleEngineService";
12
+ import PodmanHostOwnerRuleEngineService from "./PodmanHostOwnerRuleEngineService";
13
+ import Model from "../../Models/DatabaseModels/PodmanHost";
14
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
15
+ import ObjectID from "../../Types/ObjectID";
16
+ import QueryHelper from "../Types/Database/QueryHelper";
17
+ import OneUptimeDate from "../../Types/Date";
18
+ import LIMIT_MAX from "../../Types/Database/LimitMax";
19
+ import GlobalCache from "../Infrastructure/GlobalCache";
20
+ import logger from "../Utils/Logger";
21
+ import crypto from "crypto";
22
+ const LAST_SEEN_CACHE_NAMESPACE = "podman-host-last-seen";
23
+ const LAST_SEEN_THROTTLE_SECONDS = 60;
24
+ const LABELS_APPLIED_CACHE_NAMESPACE = "podman-host-labels-applied";
25
+ const LABELS_APPLIED_CACHE_TTL_SECONDS = 60;
26
+ export class Service extends DatabaseService {
27
+ constructor() {
28
+ super(Model);
29
+ }
30
+ async onCreateSuccess(_onCreate, createdItem) {
31
+ if (createdItem.projectId && createdItem.id) {
32
+ Promise.resolve()
33
+ .then(async () => {
34
+ await PodmanHostLabelRuleEngineService.applyRulesToPodmanHost(createdItem);
35
+ })
36
+ .then(async () => {
37
+ await PodmanHostOwnerRuleEngineService.applyRulesToPodmanHost(createdItem);
38
+ })
39
+ .catch((error) => {
40
+ var _a, _b;
41
+ logger.error(`Error applying podman host rules in PodmanHostService.onCreateSuccess: ${error}`, {
42
+ projectId: (_a = createdItem.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
43
+ podmanHostId: (_b = createdItem.id) === null || _b === void 0 ? void 0 : _b.toString(),
44
+ });
45
+ });
46
+ }
47
+ return createdItem;
48
+ }
49
+ async findOrCreateByHostIdentifier(data) {
50
+ /*
51
+ * Canonicalize + look up case-insensitively. A Podman host is keyed by
52
+ * the OTel `host.name` resource attribute (see autoDiscoverPodmanHost),
53
+ * whose casing is not stable — Windows surfaces PRIMARY01 vs primary01
54
+ * across resource detectors. Ingest already canonicalizes host.name
55
+ * (OtelIngestBaseService.normalizeHostNameAttributesInPlace); we repeat
56
+ * it here so the method is correct for any caller. A case-sensitive
57
+ * lookup would miss an existing row, then fail to create it because the
58
+ * unique guard (checkUniqueColumnBy -> findWithSameText) compares
59
+ * case-insensitively, wedging ingest for that host. Mirrors HostService.
60
+ */
61
+ const hostIdentifier = data.hostIdentifier.trim().toLowerCase();
62
+ const existingHost = await this.findOneBy({
63
+ query: {
64
+ projectId: data.projectId,
65
+ hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
66
+ },
67
+ select: {
68
+ _id: true,
69
+ projectId: true,
70
+ hostIdentifier: true,
71
+ },
72
+ props: {
73
+ isRoot: true,
74
+ },
75
+ });
76
+ if (existingHost) {
77
+ /*
78
+ * Converge a legacy mixed-case identifier onto the canonical form so
79
+ * the stored resource.host.name (canonicalized at ingest) keeps
80
+ * matching the Podman-host detail page filter. Best-effort — never
81
+ * block ingest on it. Updates don't re-run the unique guard.
82
+ */
83
+ if (existingHost._id &&
84
+ existingHost.hostIdentifier &&
85
+ existingHost.hostIdentifier !== hostIdentifier) {
86
+ try {
87
+ await this.updateOneById({
88
+ id: new ObjectID(existingHost._id.toString()),
89
+ data: {
90
+ hostIdentifier: hostIdentifier,
91
+ },
92
+ props: {
93
+ isRoot: true,
94
+ },
95
+ });
96
+ existingHost.hostIdentifier = hostIdentifier;
97
+ }
98
+ catch (err) {
99
+ logger.warn(`PodmanHostService: failed to canonicalize hostIdentifier for host ${existingHost._id.toString()}: ${err instanceof Error ? err.message : String(err)}`);
100
+ }
101
+ }
102
+ return existingHost;
103
+ }
104
+ try {
105
+ // Create new host
106
+ const newHost = new Model();
107
+ newHost.projectId = data.projectId;
108
+ newHost.name = hostIdentifier;
109
+ newHost.hostIdentifier = hostIdentifier;
110
+ newHost.otelCollectorStatus = "connected";
111
+ newHost.lastSeenAt = OneUptimeDate.getCurrentDate();
112
+ const createdHost = await this.create({
113
+ data: newHost,
114
+ props: {
115
+ isRoot: true,
116
+ },
117
+ });
118
+ return createdHost;
119
+ }
120
+ catch (_a) {
121
+ /*
122
+ * Either two ingest workers raced to create the same host, or a host
123
+ * with this identifier in a different case already existed and the
124
+ * unique guard rejected the insert. Re-resolve case-insensitively so
125
+ * the caller still gets the existing row instead of throwing.
126
+ */
127
+ const reFetchedHost = await this.findOneBy({
128
+ query: {
129
+ projectId: data.projectId,
130
+ hostIdentifier: QueryHelper.findWithSameText(hostIdentifier),
131
+ },
132
+ select: {
133
+ _id: true,
134
+ projectId: true,
135
+ hostIdentifier: true,
136
+ },
137
+ props: {
138
+ isRoot: true,
139
+ },
140
+ });
141
+ if (reFetchedHost) {
142
+ return reFetchedHost;
143
+ }
144
+ throw new Error("Failed to create or find Podman host: " + hostIdentifier);
145
+ }
146
+ }
147
+ async updateLastSeen(hostId, extra) {
148
+ var _a, _b, _c;
149
+ const cacheKey = hostId.toString();
150
+ const extrasFingerprint = crypto
151
+ .createHash("sha1")
152
+ .update(JSON.stringify({
153
+ osType: (_a = extra === null || extra === void 0 ? void 0 : extra.osType) !== null && _a !== void 0 ? _a : null,
154
+ osVersion: (_b = extra === null || extra === void 0 ? void 0 : extra.osVersion) !== null && _b !== void 0 ? _b : null,
155
+ agentVersion: (_c = extra === null || extra === void 0 ? void 0 : extra.agentVersion) !== null && _c !== void 0 ? _c : null,
156
+ }))
157
+ .digest("hex");
158
+ const cached = await GlobalCache.getString(LAST_SEEN_CACHE_NAMESPACE, cacheKey);
159
+ if (cached === extrasFingerprint) {
160
+ return; // same data was written recently
161
+ }
162
+ await GlobalCache.setString(LAST_SEEN_CACHE_NAMESPACE, cacheKey, extrasFingerprint, { expiresInSeconds: LAST_SEEN_THROTTLE_SECONDS });
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ const data = {
165
+ lastSeenAt: OneUptimeDate.getCurrentDate(),
166
+ otelCollectorStatus: "connected",
167
+ };
168
+ if (extra === null || extra === void 0 ? void 0 : extra.osType) {
169
+ data.osType = extra.osType;
170
+ }
171
+ if (extra === null || extra === void 0 ? void 0 : extra.osVersion) {
172
+ data.osVersion = extra.osVersion;
173
+ }
174
+ if (extra === null || extra === void 0 ? void 0 : extra.agentVersion) {
175
+ data.agentVersion = extra.agentVersion;
176
+ }
177
+ await this.updateOneById({
178
+ id: hostId,
179
+ data: data,
180
+ props: {
181
+ isRoot: true,
182
+ },
183
+ });
184
+ }
185
+ /**
186
+ * Additively attach labels to a Podman host. Existing labels are
187
+ * never removed — manual labels set via the UI survive ingest. The
188
+ * set of labelIds passed in is fingerprinted and cached for 60s so
189
+ * the common case (steady-state collector pushing the same label
190
+ * set every batch) costs one in-memory lookup, not a join-table
191
+ * scan.
192
+ */
193
+ async attachLabels(data) {
194
+ var _a;
195
+ if (!data.labelIds || data.labelIds.length === 0) {
196
+ return;
197
+ }
198
+ const cacheKey = data.podmanHostId.toString();
199
+ const fingerprint = fingerprintLabelIds(data.labelIds);
200
+ const cached = await GlobalCache.getString(LABELS_APPLIED_CACHE_NAMESPACE, cacheKey);
201
+ if (cached === fingerprint) {
202
+ return;
203
+ }
204
+ try {
205
+ const podmanHostIdStr = data.podmanHostId.toString();
206
+ const existingLabels = await this.getRepository()
207
+ .createQueryBuilder()
208
+ .relation(Model, "labels")
209
+ .of(podmanHostIdStr)
210
+ .loadMany();
211
+ const existingIds = new Set();
212
+ for (const lbl of existingLabels) {
213
+ const idStr = (_a = lbl._id) === null || _a === void 0 ? void 0 : _a.toString();
214
+ if (idStr) {
215
+ existingIds.add(idStr);
216
+ }
217
+ }
218
+ const toAddIds = [];
219
+ const seen = new Set();
220
+ for (const id of data.labelIds) {
221
+ const idStr = id.toString();
222
+ if (existingIds.has(idStr) || seen.has(idStr)) {
223
+ continue;
224
+ }
225
+ seen.add(idStr);
226
+ toAddIds.push(idStr);
227
+ }
228
+ if (toAddIds.length > 0) {
229
+ await this.getRepository()
230
+ .createQueryBuilder()
231
+ .relation(Model, "labels")
232
+ .of(podmanHostIdStr)
233
+ .add(toAddIds);
234
+ }
235
+ await GlobalCache.setString(LABELS_APPLIED_CACHE_NAMESPACE, cacheKey, fingerprint, { expiresInSeconds: LABELS_APPLIED_CACHE_TTL_SECONDS });
236
+ }
237
+ catch (err) {
238
+ logger.warn(`PodmanHostService.attachLabels failed for podman host ${data.podmanHostId.toString()}: ${err instanceof Error ? err.message : String(err)}`);
239
+ }
240
+ }
241
+ async markDisconnectedHosts() {
242
+ /*
243
+ * Threshold must stay well above the 5-minute OTel ingest
244
+ * maintenance fence (MAINTENANCE_FENCE_TTL_SECONDS in
245
+ * OtelIngestBaseService) — lastSeenAt is legitimately up to
246
+ * ~5 minutes stale during continuous telemetry, so a threshold
247
+ * equal to the fence TTL flaps healthy resources. 15 minutes
248
+ * gives 3x headroom.
249
+ */
250
+ const fifteenMinutesAgo = OneUptimeDate.addRemoveMinutes(OneUptimeDate.getCurrentDate(), -15);
251
+ const connectedHosts = await this.findBy({
252
+ query: {
253
+ otelCollectorStatus: "connected",
254
+ lastSeenAt: QueryHelper.lessThan(fifteenMinutesAgo),
255
+ },
256
+ select: {
257
+ _id: true,
258
+ },
259
+ limit: LIMIT_MAX,
260
+ skip: 0,
261
+ props: {
262
+ isRoot: true,
263
+ },
264
+ });
265
+ for (const host of connectedHosts) {
266
+ if (host._id) {
267
+ await this.updateOneById({
268
+ id: new ObjectID(host._id.toString()),
269
+ data: {
270
+ otelCollectorStatus: "disconnected",
271
+ },
272
+ props: {
273
+ isRoot: true,
274
+ },
275
+ });
276
+ }
277
+ }
278
+ }
279
+ }
280
+ __decorate([
281
+ CaptureSpan(),
282
+ __metadata("design:type", Function),
283
+ __metadata("design:paramtypes", [Object, Model]),
284
+ __metadata("design:returntype", Promise)
285
+ ], Service.prototype, "onCreateSuccess", null);
286
+ __decorate([
287
+ CaptureSpan(),
288
+ __metadata("design:type", Function),
289
+ __metadata("design:paramtypes", [Object]),
290
+ __metadata("design:returntype", Promise)
291
+ ], Service.prototype, "findOrCreateByHostIdentifier", null);
292
+ __decorate([
293
+ CaptureSpan(),
294
+ __metadata("design:type", Function),
295
+ __metadata("design:paramtypes", [ObjectID, Object]),
296
+ __metadata("design:returntype", Promise)
297
+ ], Service.prototype, "updateLastSeen", null);
298
+ __decorate([
299
+ CaptureSpan(),
300
+ __metadata("design:type", Function),
301
+ __metadata("design:paramtypes", [Object]),
302
+ __metadata("design:returntype", Promise)
303
+ ], Service.prototype, "attachLabels", null);
304
+ __decorate([
305
+ CaptureSpan(),
306
+ __metadata("design:type", Function),
307
+ __metadata("design:paramtypes", []),
308
+ __metadata("design:returntype", Promise)
309
+ ], Service.prototype, "markDisconnectedHosts", null);
310
+ function fingerprintLabelIds(labelIds) {
311
+ const sorted = labelIds
312
+ .map((id) => {
313
+ return id.toString();
314
+ })
315
+ .sort();
316
+ return crypto.createHash("sha1").update(sorted.join(",")).digest("hex");
317
+ }
318
+ export default new Service();
319
+ //# sourceMappingURL=PodmanHostService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PodmanHostService.js","sourceRoot":"","sources":["../../../../Server/Services/PodmanHostService.ts"],"names":[],"mappings":"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"}