@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
@@ -6,8 +6,10 @@ import IncidentSeverity from "../../Models/DatabaseModels/IncidentSeverity";
6
6
  import KubernetesCluster from "../../Models/DatabaseModels/KubernetesCluster";
7
7
  import Label from "../../Models/DatabaseModels/Label";
8
8
  import Monitor from "../../Models/DatabaseModels/Monitor";
9
+ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
9
10
  import Service from "../../Models/DatabaseModels/Service";
10
11
  import DockerHostService from "./DockerHostService";
12
+ import PodmanHostService from "./PodmanHostService";
11
13
  import HostService from "./HostService";
12
14
  import IncidentFeedService from "./IncidentFeedService";
13
15
  import IncidentLabelRuleService from "./IncidentLabelRuleService";
@@ -33,6 +35,7 @@ class IncidentLabelRuleEngineServiceClass {
33
35
  * - all labels of the incident's hosts when `inheritLabelsFromHosts`
34
36
  * - all labels of the incident's Kubernetes clusters when `inheritLabelsFromKubernetesClusters`
35
37
  * - all labels of the incident's Docker hosts when `inheritLabelsFromDockerHosts`
38
+ * - all labels of the incident's Podman hosts when `inheritLabelsFromPodmanHosts`
36
39
  * - all labels of the incident's services when `inheritLabelsFromServices`
37
40
  * The union is deduped against labels already on the incident before insert
38
41
  * to avoid PK conflicts on the IncidentLabel join table.
@@ -67,6 +70,7 @@ class IncidentLabelRuleEngineServiceClass {
67
70
  inheritLabelsFromHosts: true,
68
71
  inheritLabelsFromKubernetesClusters: true,
69
72
  inheritLabelsFromDockerHosts: true,
73
+ inheritLabelsFromPodmanHosts: true,
70
74
  inheritLabelsFromServices: true,
71
75
  },
72
76
  limit: 100,
@@ -82,6 +86,7 @@ class IncidentLabelRuleEngineServiceClass {
82
86
  let inheritFromHosts: boolean = false;
83
87
  let inheritFromKubernetesClusters: boolean = false;
84
88
  let inheritFromDockerHosts: boolean = false;
89
+ let inheritFromPodmanHosts: boolean = false;
85
90
  let inheritFromServices: boolean = false;
86
91
  const matchedRules: Array<IncidentLabelRule> = [];
87
92
 
@@ -111,6 +116,9 @@ class IncidentLabelRuleEngineServiceClass {
111
116
  if (rule.inheritLabelsFromDockerHosts) {
112
117
  inheritFromDockerHosts = true;
113
118
  }
119
+ if (rule.inheritLabelsFromPodmanHosts) {
120
+ inheritFromPodmanHosts = true;
121
+ }
114
122
  if (rule.inheritLabelsFromServices) {
115
123
  inheritFromServices = true;
116
124
  }
@@ -193,6 +201,25 @@ class IncidentLabelRuleEngineServiceClass {
193
201
  }
194
202
  }
195
203
 
204
+ if (inheritFromPodmanHosts && incident.podmanHosts?.length) {
205
+ for (const incidentPodmanHost of incident.podmanHosts) {
206
+ if (!incidentPodmanHost.id) {
207
+ continue;
208
+ }
209
+ const podmanHost: PodmanHost | null =
210
+ await PodmanHostService.findOneById({
211
+ id: incidentPodmanHost.id,
212
+ select: { labels: { _id: true } },
213
+ props: { isRoot: true },
214
+ });
215
+ for (const label of podmanHost?.labels || []) {
216
+ if (label.id) {
217
+ labelIdsToAdd.add(label.id.toString());
218
+ }
219
+ }
220
+ }
221
+ }
222
+
196
223
  if (inheritFromServices && incident.services?.length) {
197
224
  for (const incidentService of incident.services) {
198
225
  if (!incidentService.id) {
@@ -14,6 +14,9 @@ import Label from "../../Models/DatabaseModels/Label";
14
14
  import Monitor from "../../Models/DatabaseModels/Monitor";
15
15
  import MonitorOwnerTeam from "../../Models/DatabaseModels/MonitorOwnerTeam";
16
16
  import MonitorOwnerUser from "../../Models/DatabaseModels/MonitorOwnerUser";
17
+ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
18
+ import PodmanHostOwnerTeam from "../../Models/DatabaseModels/PodmanHostOwnerTeam";
19
+ import PodmanHostOwnerUser from "../../Models/DatabaseModels/PodmanHostOwnerUser";
17
20
  import Service from "../../Models/DatabaseModels/Service";
18
21
  import ServiceOwnerTeam from "../../Models/DatabaseModels/ServiceOwnerTeam";
19
22
  import ServiceOwnerUser from "../../Models/DatabaseModels/ServiceOwnerUser";
@@ -31,6 +34,8 @@ import KubernetesClusterOwnerUserService from "./KubernetesClusterOwnerUserServi
31
34
  import MonitorOwnerTeamService from "./MonitorOwnerTeamService";
32
35
  import MonitorOwnerUserService from "./MonitorOwnerUserService";
33
36
  import MonitorService from "./MonitorService";
37
+ import PodmanHostOwnerTeamService from "./PodmanHostOwnerTeamService";
38
+ import PodmanHostOwnerUserService from "./PodmanHostOwnerUserService";
34
39
  import ServiceOwnerTeamService from "./ServiceOwnerTeamService";
35
40
  import ServiceOwnerUserService from "./ServiceOwnerUserService";
36
41
  import TeamService from "./TeamService";
@@ -81,6 +86,7 @@ class IncidentOwnerRuleEngineServiceClass {
81
86
  inheritOwnersFromHosts: true,
82
87
  inheritOwnersFromKubernetesClusters: true,
83
88
  inheritOwnersFromDockerHosts: true,
89
+ inheritOwnersFromPodmanHosts: true,
84
90
  inheritOwnersFromServices: true,
85
91
  },
86
92
  limit: 100,
@@ -107,6 +113,7 @@ class IncidentOwnerRuleEngineServiceClass {
107
113
  let inheritFromHosts: boolean = false;
108
114
  let inheritFromKubernetesClusters: boolean = false;
109
115
  let inheritFromDockerHosts: boolean = false;
116
+ let inheritFromPodmanHosts: boolean = false;
110
117
  let inheritFromServices: boolean = false;
111
118
  const inheritNotifyMode: { value: boolean | null } = { value: null };
112
119
 
@@ -158,6 +165,12 @@ class IncidentOwnerRuleEngineServiceClass {
158
165
  inheritNotifyMode.value =
159
166
  inheritNotifyMode.value === true ? true : notify;
160
167
  }
168
+ if (rule.inheritOwnersFromPodmanHosts) {
169
+ inheritFromPodmanHosts = true;
170
+ ruleAddedAny = true;
171
+ inheritNotifyMode.value =
172
+ inheritNotifyMode.value === true ? true : notify;
173
+ }
161
174
  if (rule.inheritOwnersFromServices) {
162
175
  inheritFromServices = true;
163
176
  ruleAddedAny = true;
@@ -177,6 +190,8 @@ class IncidentOwnerRuleEngineServiceClass {
177
190
  const inheritedFromKubernetesClusterTeamIds: Set<string> = new Set();
178
191
  const inheritedFromDockerHostUserIds: Set<string> = new Set();
179
192
  const inheritedFromDockerHostTeamIds: Set<string> = new Set();
193
+ const inheritedFromPodmanHostUserIds: Set<string> = new Set();
194
+ const inheritedFromPodmanHostTeamIds: Set<string> = new Set();
180
195
  const inheritedFromServiceUserIds: Set<string> = new Set();
181
196
  const inheritedFromServiceTeamIds: Set<string> = new Set();
182
197
 
@@ -351,6 +366,47 @@ class IncidentOwnerRuleEngineServiceClass {
351
366
  }
352
367
  }
353
368
 
369
+ if (inheritFromPodmanHosts && incident.podmanHosts?.length) {
370
+ const podmanHostIds: Array<ObjectID> = incident.podmanHosts
371
+ .map((p: PodmanHost) => {
372
+ return p.id;
373
+ })
374
+ .filter((id: ObjectID | null | undefined): id is ObjectID => {
375
+ return Boolean(id);
376
+ });
377
+ if (podmanHostIds.length > 0) {
378
+ const [podmanHostOwnerUsers, podmanHostOwnerTeams]: [
379
+ Array<PodmanHostOwnerUser>,
380
+ Array<PodmanHostOwnerTeam>,
381
+ ] = await Promise.all([
382
+ PodmanHostOwnerUserService.findBy({
383
+ query: { podmanHostId: QueryHelper.any(podmanHostIds) },
384
+ select: { userId: true },
385
+ props: { isRoot: true },
386
+ limit: LIMIT_MAX,
387
+ skip: 0,
388
+ }),
389
+ PodmanHostOwnerTeamService.findBy({
390
+ query: { podmanHostId: QueryHelper.any(podmanHostIds) },
391
+ select: { teamId: true },
392
+ props: { isRoot: true },
393
+ limit: LIMIT_MAX,
394
+ skip: 0,
395
+ }),
396
+ ]);
397
+ for (const ownerUser of podmanHostOwnerUsers) {
398
+ if (ownerUser.userId) {
399
+ inheritedFromPodmanHostUserIds.add(ownerUser.userId.toString());
400
+ }
401
+ }
402
+ for (const ownerTeam of podmanHostOwnerTeams) {
403
+ if (ownerTeam.teamId) {
404
+ inheritedFromPodmanHostTeamIds.add(ownerTeam.teamId.toString());
405
+ }
406
+ }
407
+ }
408
+ }
409
+
354
410
  if (inheritFromServices && incident.services?.length) {
355
411
  const serviceIds: Array<ObjectID> = incident.services
356
412
  .map((s: Service) => {
@@ -397,6 +453,7 @@ class IncidentOwnerRuleEngineServiceClass {
397
453
  ...inheritedFromHostUserIds,
398
454
  ...inheritedFromKubernetesClusterUserIds,
399
455
  ...inheritedFromDockerHostUserIds,
456
+ ...inheritedFromPodmanHostUserIds,
400
457
  ...inheritedFromServiceUserIds,
401
458
  ]);
402
459
  const inheritedTeamIds: Set<string> = new Set([
@@ -404,6 +461,7 @@ class IncidentOwnerRuleEngineServiceClass {
404
461
  ...inheritedFromHostTeamIds,
405
462
  ...inheritedFromKubernetesClusterTeamIds,
406
463
  ...inheritedFromDockerHostTeamIds,
464
+ ...inheritedFromPodmanHostTeamIds,
407
465
  ...inheritedFromServiceTeamIds,
408
466
  ]);
409
467
 
@@ -476,6 +534,10 @@ class IncidentOwnerRuleEngineServiceClass {
476
534
  inheritedFromDockerHostUserIds.size +
477
535
  inheritedFromDockerHostTeamIds.size >
478
536
  0,
537
+ inheritedFromPodmanHosts:
538
+ inheritedFromPodmanHostUserIds.size +
539
+ inheritedFromPodmanHostTeamIds.size >
540
+ 0,
479
541
  inheritedFromServices:
480
542
  inheritedFromServiceUserIds.size + inheritedFromServiceTeamIds.size >
481
543
  0,
@@ -498,6 +560,7 @@ class IncidentOwnerRuleEngineServiceClass {
498
560
  inheritedFromHosts: boolean;
499
561
  inheritedFromKubernetesClusters: boolean;
500
562
  inheritedFromDockerHosts: boolean;
563
+ inheritedFromPodmanHosts: boolean;
501
564
  inheritedFromServices: boolean;
502
565
  }): Promise<void> {
503
566
  const {
@@ -509,6 +572,7 @@ class IncidentOwnerRuleEngineServiceClass {
509
572
  inheritedFromHosts,
510
573
  inheritedFromKubernetesClusters,
511
574
  inheritedFromDockerHosts,
575
+ inheritedFromPodmanHosts,
512
576
  inheritedFromServices,
513
577
  } = data;
514
578
  if (
@@ -593,6 +657,9 @@ class IncidentOwnerRuleEngineServiceClass {
593
657
  if (inheritedFromDockerHosts) {
594
658
  inheritedSources.push("Docker hosts");
595
659
  }
660
+ if (inheritedFromPodmanHosts) {
661
+ inheritedSources.push("Podman hosts");
662
+ }
596
663
  if (inheritedFromServices) {
597
664
  inheritedSources.push("services");
598
665
  }
@@ -29,6 +29,7 @@ import { applyIncidentSelfPrivacyFilter } from "../Utils/Incident/IncidentPrivac
29
29
  import UserNotificationEventType from "../../Types/UserNotification/UserNotificationEventType";
30
30
  import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
31
31
  import DockerHost from "../../Models/DatabaseModels/DockerHost";
32
+ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
32
33
  import Host from "../../Models/DatabaseModels/Host";
33
34
  import KubernetesCluster from "../../Models/DatabaseModels/KubernetesCluster";
34
35
  import ServiceModel from "../../Models/DatabaseModels/Service";
@@ -571,6 +572,7 @@ export class Service extends DatabaseService<Model> {
571
572
  hosts: { _id: true },
572
573
  kubernetesClusters: { _id: true },
573
574
  dockerHosts: { _id: true },
575
+ podmanHosts: { _id: true },
574
576
  services: { _id: true },
575
577
  onCallDutyPolicies: { _id: true },
576
578
  labels: { _id: true },
@@ -689,6 +691,15 @@ export class Service extends DatabaseService<Model> {
689
691
  createBy.data.dockerHosts = stubs;
690
692
  }
691
693
  }
694
+ if (createBy.data.podmanHosts === undefined) {
695
+ const stubs: Array<PodmanHost> | undefined = stubBy(
696
+ PodmanHost,
697
+ incidentTemplate.podmanHosts,
698
+ );
699
+ if (stubs && stubs.length > 0) {
700
+ createBy.data.podmanHosts = stubs;
701
+ }
702
+ }
692
703
  if (createBy.data.services === undefined) {
693
704
  const stubs: Array<ServiceModel> | undefined = stubBy(
694
705
  ServiceModel,
@@ -35,14 +35,21 @@ import IncidentStateTimelineService from "./IncidentStateTimelineService";
35
35
  import LabelService from "./LabelService";
36
36
  import KubernetesClusterService from "./KubernetesClusterService";
37
37
  import DockerHostService from "./DockerHostService";
38
+ import PodmanHostService from "./PodmanHostService";
38
39
  import ProxmoxClusterService from "./ProxmoxClusterService";
40
+ import DockerSwarmClusterService from "./DockerSwarmClusterService";
39
41
  import CephClusterService from "./CephClusterService";
40
42
  import ProxmoxResourceService from "./ProxmoxResourceService";
43
+ import DockerSwarmResourceService from "./DockerSwarmResourceService";
41
44
  import CephResourceService from "./CephResourceService";
42
45
  import ProxmoxClusterLabelRuleService from "./ProxmoxClusterLabelRuleService";
46
+ import DockerSwarmClusterLabelRuleService from "./DockerSwarmClusterLabelRuleService";
43
47
  import ProxmoxClusterOwnerRuleService from "./ProxmoxClusterOwnerRuleService";
48
+ import DockerSwarmClusterOwnerRuleService from "./DockerSwarmClusterOwnerRuleService";
44
49
  import ProxmoxClusterOwnerTeamService from "./ProxmoxClusterOwnerTeamService";
50
+ import DockerSwarmClusterOwnerTeamService from "./DockerSwarmClusterOwnerTeamService";
45
51
  import ProxmoxClusterOwnerUserService from "./ProxmoxClusterOwnerUserService";
52
+ import DockerSwarmClusterOwnerUserService from "./DockerSwarmClusterOwnerUserService";
46
53
  import CephClusterLabelRuleService from "./CephClusterLabelRuleService";
47
54
  import CephClusterOwnerRuleService from "./CephClusterOwnerRuleService";
48
55
  import CephClusterOwnerTeamService from "./CephClusterOwnerTeamService";
@@ -99,6 +106,10 @@ import ProfileSampleService from "./ProfileSampleService";
99
106
  import ProjectSmtpConfigService from "./ProjectSmtpConfigService";
100
107
  import ProjectSsoService from "./ProjectSsoService";
101
108
  import ProjectOidcService from "./ProjectOidcService";
109
+ import GlobalSsoService from "./GlobalSsoService";
110
+ import GlobalOidcService from "./GlobalOidcService";
111
+ import GlobalSsoProjectService from "./GlobalSsoProjectService";
112
+ import GlobalOidcProjectService from "./GlobalOidcProjectService";
102
113
  import PromoCodeService from "./PromoCodeService";
103
114
  import EnterpriseLicenseService from "./EnterpriseLicenseService";
104
115
  import OpenSourceDeploymentService from "./OpenSourceDeploymentService";
@@ -282,14 +293,21 @@ const services: Array<BaseService> = [
282
293
  LabelService,
283
294
  KubernetesClusterService,
284
295
  DockerHostService,
296
+ PodmanHostService,
285
297
  ProxmoxClusterService,
298
+ DockerSwarmClusterService,
286
299
  CephClusterService,
287
300
  ProxmoxResourceService,
301
+ DockerSwarmResourceService,
288
302
  CephResourceService,
289
303
  ProxmoxClusterLabelRuleService,
304
+ DockerSwarmClusterLabelRuleService,
290
305
  ProxmoxClusterOwnerRuleService,
306
+ DockerSwarmClusterOwnerRuleService,
291
307
  ProxmoxClusterOwnerTeamService,
308
+ DockerSwarmClusterOwnerTeamService,
292
309
  ProxmoxClusterOwnerUserService,
310
+ DockerSwarmClusterOwnerUserService,
293
311
  CephClusterLabelRuleService,
294
312
  CephClusterOwnerRuleService,
295
313
  CephClusterOwnerTeamService,
@@ -329,6 +347,10 @@ const services: Array<BaseService> = [
329
347
  AIAgentTaskPullRequestService,
330
348
  ProjectSsoService,
331
349
  ProjectOidcService,
350
+ GlobalSsoService,
351
+ GlobalOidcService,
352
+ GlobalSsoProjectService,
353
+ GlobalOidcProjectService,
332
354
 
333
355
  ScheduledMaintenanceCustomFieldService,
334
356
  ScheduledMaintenanceInternalNoteService,
@@ -109,6 +109,7 @@ export class LogAggregationService {
109
109
  new Map([
110
110
  ["hostId", ServiceType.Host],
111
111
  ["dockerHostId", ServiceType.DockerHost],
112
+ ["podmanHostId", ServiceType.PodmanHost],
112
113
  ["kubernetesClusterId", ServiceType.KubernetesCluster],
113
114
  ["proxmoxClusterId", ServiceType.ProxmoxCluster],
114
115
  ["cephClusterId", ServiceType.CephCluster],
@@ -48,6 +48,7 @@ export class MetricAggregationService {
48
48
  new Map([
49
49
  ["hostId", ServiceType.Host],
50
50
  ["dockerHostId", ServiceType.DockerHost],
51
+ ["podmanHostId", ServiceType.PodmanHost],
51
52
  ["kubernetesClusterId", ServiceType.KubernetesCluster],
52
53
  ["proxmoxClusterId", ServiceType.ProxmoxCluster],
53
54
  ["cephClusterId", ServiceType.CephCluster],
@@ -20,17 +20,21 @@ import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionCo
20
20
  import ServiceType from "../../Types/Telemetry/ServiceType";
21
21
  import Host from "../../Models/DatabaseModels/Host";
22
22
  import DockerHost from "../../Models/DatabaseModels/DockerHost";
23
+ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
23
24
  import KubernetesCluster from "../../Models/DatabaseModels/KubernetesCluster";
24
25
  import ProxmoxCluster from "../../Models/DatabaseModels/ProxmoxCluster";
25
26
  import CephCluster from "../../Models/DatabaseModels/CephCluster";
27
+ import DockerSwarmCluster from "../../Models/DatabaseModels/DockerSwarmCluster";
26
28
  import ServerlessFunction from "../../Models/DatabaseModels/ServerlessFunction";
27
29
  import CloudResource from "../../Models/DatabaseModels/CloudResource";
28
30
  import RumApplication from "../../Models/DatabaseModels/RumApplication";
29
31
  import HostService from "./HostService";
30
32
  import DockerHostService from "./DockerHostService";
33
+ import PodmanHostService from "./PodmanHostService";
31
34
  import KubernetesClusterService from "./KubernetesClusterService";
32
35
  import ProxmoxClusterService from "./ProxmoxClusterService";
33
36
  import CephClusterService from "./CephClusterService";
37
+ import DockerSwarmClusterService from "./DockerSwarmClusterService";
34
38
  import ServerlessFunctionService from "./ServerlessFunctionService";
35
39
  import CloudResourceService from "./CloudResourceService";
36
40
  import RumApplicationService from "./RumApplicationService";
@@ -675,6 +679,23 @@ export default class OTelIngestService {
675
679
  dockerHost?.telemetryRetentionConfig ?? null,
676
680
  };
677
681
  }
682
+ if (primaryEntityType === ServiceType.PodmanHost) {
683
+ const podmanHost: PodmanHost | null =
684
+ await PodmanHostService.findOneById({
685
+ id: resourceId,
686
+ select: {
687
+ retainTelemetryDataForDays: true,
688
+ telemetryRetentionConfig: true,
689
+ },
690
+ props: { isRoot: true },
691
+ });
692
+ return {
693
+ retainTelemetryDataForDays:
694
+ podmanHost?.retainTelemetryDataForDays ?? null,
695
+ telemetryRetentionConfig:
696
+ podmanHost?.telemetryRetentionConfig ?? null,
697
+ };
698
+ }
678
699
  if (primaryEntityType === ServiceType.KubernetesCluster) {
679
700
  const cluster: KubernetesCluster | null =
680
701
  await KubernetesClusterService.findOneById({
@@ -723,6 +744,22 @@ export default class OTelIngestService {
723
744
  telemetryRetentionConfig: cluster?.telemetryRetentionConfig ?? null,
724
745
  };
725
746
  }
747
+ if (primaryEntityType === ServiceType.DockerSwarmCluster) {
748
+ const cluster: DockerSwarmCluster | null =
749
+ await DockerSwarmClusterService.findOneById({
750
+ id: resourceId,
751
+ select: {
752
+ retainTelemetryDataForDays: true,
753
+ telemetryRetentionConfig: true,
754
+ },
755
+ props: { isRoot: true },
756
+ });
757
+ return {
758
+ retainTelemetryDataForDays:
759
+ cluster?.retainTelemetryDataForDays ?? null,
760
+ telemetryRetentionConfig: cluster?.telemetryRetentionConfig ?? null,
761
+ };
762
+ }
726
763
  if (primaryEntityType === ServiceType.ServerlessFunction) {
727
764
  const serverlessFunction: ServerlessFunction | null =
728
765
  await ServerlessFunctionService.findOneById({
@@ -0,0 +1,198 @@
1
+ import Label from "../../Models/DatabaseModels/Label";
2
+ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
3
+ import PodmanHostLabelRule from "../../Models/DatabaseModels/PodmanHostLabelRule";
4
+ import PodmanHostLabelRuleService from "./PodmanHostLabelRuleService";
5
+ import PodmanHostService from "./PodmanHostService";
6
+ import ObjectID from "../../Types/ObjectID";
7
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
8
+ import logger, { LogAttributes } from "../Utils/Logger";
9
+
10
+ class PodmanHostLabelRuleEngineServiceClass {
11
+ /**
12
+ * Evaluates PodmanHostLabelRule rows for the given Podman host and attaches matched
13
+ * labels to it. The union is deduped against labels already on the Podman host
14
+ * before insert to avoid PK conflicts on the join table.
15
+ */
16
+ @CaptureSpan()
17
+ public async applyRulesToPodmanHost(podmanHost: PodmanHost): Promise<void> {
18
+ if (!podmanHost.id || !podmanHost.projectId) {
19
+ return;
20
+ }
21
+
22
+ try {
23
+ const rules: Array<PodmanHostLabelRule> =
24
+ await PodmanHostLabelRuleService.findBy({
25
+ query: {
26
+ projectId: podmanHost.projectId,
27
+ isEnabled: true,
28
+ },
29
+ props: { isRoot: true },
30
+ select: {
31
+ _id: true,
32
+ name: true,
33
+ podmanHostLabels: { _id: true },
34
+ podmanHostNamePattern: true,
35
+ podmanHostDescriptionPattern: true,
36
+ labelsToAdd: { _id: true },
37
+ },
38
+ limit: 100,
39
+ skip: 0,
40
+ });
41
+
42
+ if (rules.length === 0) {
43
+ return;
44
+ }
45
+
46
+ const podmanHostWithDetails: PodmanHost | null =
47
+ await PodmanHostService.findOneById({
48
+ id: podmanHost.id,
49
+ select: {
50
+ name: true,
51
+ description: true,
52
+ labels: { _id: true },
53
+ },
54
+ props: { isRoot: true },
55
+ });
56
+
57
+ if (!podmanHostWithDetails) {
58
+ return;
59
+ }
60
+
61
+ const labelIdsToAdd: Set<string> = new Set();
62
+
63
+ for (const rule of rules) {
64
+ const matches: boolean = this.doesPodmanHostMatchRule(
65
+ podmanHostWithDetails,
66
+ rule,
67
+ );
68
+ if (!matches) {
69
+ continue;
70
+ }
71
+ for (const label of rule.labelsToAdd || []) {
72
+ if (label.id) {
73
+ labelIdsToAdd.add(label.id.toString());
74
+ }
75
+ }
76
+ }
77
+
78
+ if (labelIdsToAdd.size === 0) {
79
+ return;
80
+ }
81
+
82
+ const existingLabelIds: Set<string> = new Set(
83
+ (podmanHostWithDetails.labels || [])
84
+ .map((l: Label) => {
85
+ return l.id?.toString() || "";
86
+ })
87
+ .filter((id: string) => {
88
+ return id !== "";
89
+ }),
90
+ );
91
+
92
+ const newLabelIds: Array<string> = Array.from(labelIdsToAdd).filter(
93
+ (id: string) => {
94
+ return !existingLabelIds.has(id);
95
+ },
96
+ );
97
+ if (newLabelIds.length === 0) {
98
+ return;
99
+ }
100
+
101
+ await PodmanHostService.getRepository()
102
+ .createQueryBuilder()
103
+ .relation(PodmanHost, "labels")
104
+ .of(podmanHost.id.toString())
105
+ .add(newLabelIds);
106
+
107
+ /*
108
+ * Sync in-memory podmanHost.labels so a downstream owner-rule engine in
109
+ * the same onCreateSuccess chain can match on rule-added labels.
110
+ */
111
+ const mergedLabelIds: Set<string> = new Set([
112
+ ...existingLabelIds,
113
+ ...newLabelIds,
114
+ ]);
115
+ podmanHost.labels = Array.from(mergedLabelIds).map((id: string) => {
116
+ const label: Label = new Label();
117
+ label.id = new ObjectID(id);
118
+ return label;
119
+ });
120
+
121
+ logger.debug(
122
+ `PodmanHostLabelRuleEngine attached ${newLabelIds.length} labels to Podman host ${podmanHost.id}`,
123
+ { projectId: podmanHost.projectId.toString() } as LogAttributes,
124
+ );
125
+ } catch (error) {
126
+ logger.error(`Error applying Podman host label rules: ${error}`, {
127
+ projectId: podmanHost.projectId?.toString(),
128
+ podmanHostId: podmanHost.id?.toString(),
129
+ } as LogAttributes);
130
+ }
131
+ }
132
+
133
+ private doesPodmanHostMatchRule(
134
+ podmanHost: PodmanHost,
135
+ rule: PodmanHostLabelRule,
136
+ ): boolean {
137
+ if (rule.podmanHostLabels && rule.podmanHostLabels.length > 0) {
138
+ if (!podmanHost.labels || podmanHost.labels.length === 0) {
139
+ return false;
140
+ }
141
+ const ruleLabelIds: Array<string> = rule.podmanHostLabels.map(
142
+ (l: Label) => {
143
+ return l.id?.toString() || "";
144
+ },
145
+ );
146
+ const labelIds: Array<string> = podmanHost.labels.map((l: Label) => {
147
+ return l.id?.toString() || "";
148
+ });
149
+ if (
150
+ !ruleLabelIds.some((id: string) => {
151
+ return labelIds.includes(id);
152
+ })
153
+ ) {
154
+ return false;
155
+ }
156
+ }
157
+
158
+ if (
159
+ rule.podmanHostNamePattern &&
160
+ (!podmanHost.name ||
161
+ !this.testRegex(rule.podmanHostNamePattern, podmanHost.name, rule))
162
+ ) {
163
+ return false;
164
+ }
165
+
166
+ if (
167
+ rule.podmanHostDescriptionPattern &&
168
+ (!podmanHost.description ||
169
+ !this.testRegex(
170
+ rule.podmanHostDescriptionPattern,
171
+ podmanHost.description,
172
+ rule,
173
+ ))
174
+ ) {
175
+ return false;
176
+ }
177
+
178
+ return true;
179
+ }
180
+
181
+ private testRegex(
182
+ pattern: string,
183
+ value: string,
184
+ rule: PodmanHostLabelRule,
185
+ ): boolean {
186
+ try {
187
+ const regex: RegExp = new RegExp(pattern, "i");
188
+ return regex.test(value);
189
+ } catch {
190
+ logger.warn(
191
+ `Invalid regex in Podman host label rule ${rule.id}: ${pattern}`,
192
+ );
193
+ return false;
194
+ }
195
+ }
196
+ }
197
+
198
+ export default new PodmanHostLabelRuleEngineServiceClass();
@@ -0,0 +1,14 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/PodmanHostLabelRule";
3
+ import { IsBillingEnabled } from "../EnvironmentConfig";
4
+
5
+ export class Service extends DatabaseService<Model> {
6
+ public constructor() {
7
+ super(Model);
8
+ if (IsBillingEnabled) {
9
+ this.hardDeleteItemsOlderThanInDays("createdAt", 3 * 365);
10
+ }
11
+ }
12
+ }
13
+
14
+ export default new Service();