@oneuptime/common 11.0.2 → 11.0.3

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 (344) 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/Incident.ts +166 -0
  11. package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
  12. package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
  13. package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
  14. package/Models/DatabaseModels/Index.ts +24 -0
  15. package/Models/DatabaseModels/PodmanHost.ts +859 -0
  16. package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
  17. package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
  18. package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
  19. package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
  20. package/Models/DatabaseModels/PodmanResource.ts +498 -0
  21. package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
  22. package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
  23. package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
  24. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
  25. package/Models/DatabaseModels/TelemetryException.ts +2 -0
  26. package/Server/API/DashboardAPI.ts +89 -0
  27. package/Server/API/DockerSwarmResourceAPI.ts +137 -0
  28. package/Server/API/TelemetryAPI.ts +8 -1
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  31. package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
  32. package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
  33. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
  34. package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
  35. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
  36. package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
  37. package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
  38. package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
  39. package/Server/Services/DockerSwarmClusterService.ts +404 -0
  40. package/Server/Services/DockerSwarmResourceService.ts +381 -0
  41. package/Server/Services/ExceptionAggregationService.ts +1 -0
  42. package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
  43. package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
  44. package/Server/Services/IncidentService.ts +11 -0
  45. package/Server/Services/Index.ts +14 -0
  46. package/Server/Services/LogAggregationService.ts +1 -0
  47. package/Server/Services/MetricAggregationService.ts +1 -0
  48. package/Server/Services/OpenTelemetryIngestService.ts +37 -0
  49. package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
  50. package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
  51. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
  52. package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
  53. package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
  54. package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
  55. package/Server/Services/PodmanHostService.ts +368 -0
  56. package/Server/Services/PodmanResourceService.ts +310 -0
  57. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
  58. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
  59. package/Server/Services/TelemetryUsageBillingService.ts +18 -0
  60. package/Server/Services/TraceAggregationService.ts +1 -0
  61. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
  62. package/Server/Utils/Monitor/MonitorAlert.ts +10 -0
  63. package/Server/Utils/Monitor/MonitorClusterContext.ts +35 -6
  64. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +306 -0
  65. package/Server/Utils/Monitor/MonitorIncident.ts +45 -0
  66. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +17 -0
  67. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -0
  68. package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
  69. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
  70. package/Server/Utils/Telemetry/Telemetry.ts +10 -0
  71. package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -0
  72. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +1 -0
  73. package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
  74. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
  75. package/Types/Dashboard/DashboardComponentType.ts +7 -0
  76. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  77. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
  78. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
  79. package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
  80. package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
  81. package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
  82. package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
  83. package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
  84. package/Types/Dashboard/DashboardTemplates.ts +194 -0
  85. package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
  86. package/Types/Icon/IconProp.ts +1 -0
  87. package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
  88. package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
  89. package/Types/Monitor/HostAlertTemplates.ts +455 -0
  90. package/Types/Monitor/HostMetricCatalog.ts +177 -0
  91. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +21 -0
  92. package/Types/Monitor/MonitorStep.ts +99 -0
  93. package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
  94. package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
  95. package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
  96. package/Types/Monitor/MonitorType.ts +42 -0
  97. package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
  98. package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
  99. package/Types/Permission.ts +465 -4
  100. package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
  101. package/Types/Telemetry/EntityType.ts +12 -0
  102. package/Types/Telemetry/ServiceType.ts +2 -0
  103. package/UI/Components/Icon/Icon.tsx +57 -0
  104. package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
  105. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
  106. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +6 -0
  107. package/UI/Utils/TelemetryService.ts +1 -0
  108. package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
  109. package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
  110. package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
  111. package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
  112. package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
  113. package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
  114. package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
  115. package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
  116. package/Utils/Dashboard/Components/Index.ts +51 -0
  117. package/Utils/Telemetry/EntityKey.ts +18 -0
  118. package/build/dist/Models/DatabaseModels/Alert.js +162 -0
  119. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  120. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
  121. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
  122. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
  123. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
  124. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
  125. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
  126. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
  127. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
  128. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
  129. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
  130. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
  131. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
  132. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
  133. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
  134. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
  135. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
  136. package/build/dist/Models/DatabaseModels/Incident.js +162 -0
  137. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  138. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
  139. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
  140. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
  141. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
  142. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
  143. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  144. package/build/dist/Models/DatabaseModels/Index.js +24 -0
  145. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  146. package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
  147. package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
  148. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
  149. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
  150. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
  151. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
  152. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
  153. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
  154. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
  155. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
  156. package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
  157. package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
  158. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
  159. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  160. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
  161. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
  162. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
  163. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
  164. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
  165. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  166. package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
  167. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  168. package/build/dist/Server/API/DashboardAPI.js +89 -0
  169. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  170. package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
  171. package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
  172. package/build/dist/Server/API/TelemetryAPI.js +8 -1
  173. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  174. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js +1100 -0
  175. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js.map +1 -0
  176. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  177. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  178. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
  179. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  180. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
  181. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  182. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
  183. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
  184. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
  185. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
  186. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
  187. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
  188. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
  189. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
  190. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
  191. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
  192. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
  193. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
  194. package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
  195. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
  196. package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
  197. package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
  198. package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
  199. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  200. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
  201. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  202. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
  203. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  204. package/build/dist/Server/Services/IncidentService.js +8 -0
  205. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  206. package/build/dist/Server/Services/Index.js +14 -0
  207. package/build/dist/Server/Services/Index.js.map +1 -1
  208. package/build/dist/Server/Services/LogAggregationService.js +1 -0
  209. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  210. package/build/dist/Server/Services/MetricAggregationService.js +1 -0
  211. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  212. package/build/dist/Server/Services/OpenTelemetryIngestService.js +43 -13
  213. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  214. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
  215. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
  216. package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
  217. package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
  218. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
  219. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
  220. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
  221. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
  222. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
  223. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
  224. package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
  225. package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
  226. package/build/dist/Server/Services/PodmanHostService.js +319 -0
  227. package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
  228. package/build/dist/Server/Services/PodmanResourceService.js +196 -0
  229. package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
  230. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
  231. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  232. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
  233. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  234. package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
  235. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  236. package/build/dist/Server/Services/TraceAggregationService.js +1 -0
  237. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  238. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
  239. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  240. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +8 -0
  241. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  242. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +35 -7
  243. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
  244. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +194 -0
  245. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  246. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +35 -1
  247. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  248. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +9 -0
  249. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  250. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -0
  251. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  252. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +16 -0
  253. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  254. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
  255. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  256. package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
  257. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  258. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +18 -0
  259. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  260. package/build/dist/Types/Dashboard/DashboardComponentType.js +7 -0
  261. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  262. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  263. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  264. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
  265. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  266. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
  267. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  268. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
  269. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
  270. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
  271. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
  272. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
  273. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
  274. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
  275. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
  276. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
  277. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
  278. package/build/dist/Types/Dashboard/DashboardTemplates.js +168 -0
  279. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  280. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
  281. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
  282. package/build/dist/Types/Icon/IconProp.js +1 -0
  283. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  284. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
  285. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
  286. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
  287. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
  288. package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
  289. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
  290. package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
  291. package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
  292. package/build/dist/Types/Monitor/MonitorStep.js +69 -0
  293. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  294. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
  295. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
  296. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
  297. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
  298. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
  299. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
  300. package/build/dist/Types/Monitor/MonitorType.js +39 -0
  301. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  302. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
  303. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
  304. package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
  305. package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
  306. package/build/dist/Types/Permission.js +420 -4
  307. package/build/dist/Types/Permission.js.map +1 -1
  308. package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
  309. package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
  310. package/build/dist/Types/Telemetry/EntityType.js +12 -0
  311. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  312. package/build/dist/Types/Telemetry/ServiceType.js +2 -0
  313. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  314. package/build/dist/UI/Components/Icon/Icon.js +16 -0
  315. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  316. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
  317. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  318. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
  319. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  320. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +6 -0
  321. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  322. package/build/dist/UI/Utils/TelemetryService.js +1 -0
  323. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  324. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
  325. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  326. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
  327. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
  328. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
  329. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  330. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
  331. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
  332. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
  333. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
  334. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
  335. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
  336. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
  337. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
  338. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
  339. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
  340. package/build/dist/Utils/Dashboard/Components/Index.js +28 -0
  341. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  342. package/build/dist/Utils/Telemetry/EntityKey.js +14 -0
  343. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  344. package/package.json +1 -1
@@ -58,6 +58,8 @@ import MetricMonitorResponse, {
58
58
  ProxmoxResourceBreakdown,
59
59
  CephAffectedResource,
60
60
  CephResourceBreakdown,
61
+ DockerSwarmAffectedResource,
62
+ DockerSwarmResourceBreakdown,
61
63
  } from "../../../Types/Monitor/MetricMonitor/MetricMonitorResponse";
62
64
  import MetricSeriesResult from "../../../Types/Monitor/MetricMonitor/MetricSeriesResult";
63
65
  import MetricCriteriaContext, {
@@ -66,8 +68,11 @@ import MetricCriteriaContext, {
66
68
  MetricComponentValue,
67
69
  } from "../../../Types/Monitor/MetricMonitor/MetricCriteriaContext";
68
70
  import MonitorStepDockerMonitor from "../../../Types/Monitor/MonitorStepDockerMonitor";
71
+ import MonitorStepHostMonitor from "../../../Types/Monitor/MonitorStepHostMonitor";
72
+ import MonitorStepPodmanMonitor from "../../../Types/Monitor/MonitorStepPodmanMonitor";
69
73
  import MonitorStepProxmoxMonitor from "../../../Types/Monitor/MonitorStepProxmoxMonitor";
70
74
  import MonitorStepCephMonitor from "../../../Types/Monitor/MonitorStepCephMonitor";
75
+ import MonitorStepDockerSwarmMonitor from "../../../Types/Monitor/MonitorStepDockerSwarmMonitor";
71
76
 
72
77
  export default class MonitorCriteriaEvaluator {
73
78
  public static async processMonitorStep(input: {
@@ -237,6 +242,9 @@ ${contextBlock}
237
242
  input.monitor.monitorType !== MonitorType.Metrics &&
238
243
  input.monitor.monitorType !== MonitorType.Kubernetes &&
239
244
  input.monitor.monitorType !== MonitorType.Docker &&
245
+ input.monitor.monitorType !== MonitorType.Host &&
246
+ input.monitor.monitorType !== MonitorType.Podman &&
247
+ input.monitor.monitorType !== MonitorType.DockerSwarm &&
240
248
  input.monitor.monitorType !== MonitorType.Proxmox &&
241
249
  input.monitor.monitorType !== MonitorType.Ceph
242
250
  ) {
@@ -685,6 +693,9 @@ ${contextBlock}
685
693
  input.monitor.monitorType === MonitorType.Metrics ||
686
694
  input.monitor.monitorType === MonitorType.Kubernetes ||
687
695
  input.monitor.monitorType === MonitorType.Docker ||
696
+ input.monitor.monitorType === MonitorType.Host ||
697
+ input.monitor.monitorType === MonitorType.Podman ||
698
+ input.monitor.monitorType === MonitorType.DockerSwarm ||
688
699
  input.monitor.monitorType === MonitorType.Proxmox ||
689
700
  input.monitor.monitorType === MonitorType.Ceph
690
701
  ) {
@@ -819,11 +830,26 @@ ${contextBlock}
819
830
  return MonitorCriteriaEvaluator.buildDockerRootCauseContext(input);
820
831
  }
821
832
 
833
+ // Handle Host monitors with resource context
834
+ if (input.monitor.monitorType === MonitorType.Host) {
835
+ return MonitorCriteriaEvaluator.buildHostRootCauseContext(input);
836
+ }
837
+
838
+ // Handle Podman monitors with resource context
839
+ if (input.monitor.monitorType === MonitorType.Podman) {
840
+ return MonitorCriteriaEvaluator.buildPodmanRootCauseContext(input);
841
+ }
842
+
822
843
  // Handle Proxmox monitors with resource context
823
844
  if (input.monitor.monitorType === MonitorType.Proxmox) {
824
845
  return MonitorCriteriaEvaluator.buildProxmoxRootCauseContext(input);
825
846
  }
826
847
 
848
+ // Handle Docker Swarm monitors with resource context
849
+ if (input.monitor.monitorType === MonitorType.DockerSwarm) {
850
+ return MonitorCriteriaEvaluator.buildDockerSwarmRootCauseContext(input);
851
+ }
852
+
827
853
  // Handle Ceph monitors with resource context
828
854
  if (input.monitor.monitorType === MonitorType.Ceph) {
829
855
  return MonitorCriteriaEvaluator.buildCephRootCauseContext(input);
@@ -1593,6 +1619,124 @@ ${contextBlock}
1593
1619
  return sections.length > 0 ? sections.join("\n") : null;
1594
1620
  }
1595
1621
 
1622
+ private static buildHostRootCauseContext(input: {
1623
+ dataToProcess: DataToProcess;
1624
+ monitorStep: MonitorStep;
1625
+ monitor: Monitor;
1626
+ }): string | null {
1627
+ const metricResponse: MetricMonitorResponse =
1628
+ input.dataToProcess as MetricMonitorResponse;
1629
+
1630
+ const sections: Array<string> = [];
1631
+
1632
+ // Host context
1633
+ const hostMonitor: MonitorStepHostMonitor | undefined =
1634
+ input.monitorStep.data?.hostMonitor;
1635
+
1636
+ if (hostMonitor) {
1637
+ const hostDetails: Array<string> = [];
1638
+ hostDetails.push(`- Host: ${hostMonitor.hostIdentifier || "Unknown"}`);
1639
+
1640
+ // Add metric name from the query config
1641
+ if (
1642
+ hostMonitor.metricViewConfig?.queryConfigs?.length > 0 &&
1643
+ hostMonitor.metricViewConfig.queryConfigs[0]
1644
+ ) {
1645
+ const metricName: string = hostMonitor.metricViewConfig.queryConfigs[0]
1646
+ .metricQueryData?.filterData?.metricName as string;
1647
+ if (metricName) {
1648
+ hostDetails.push(`- Metric: \`${metricName}\``);
1649
+ }
1650
+ }
1651
+
1652
+ sections.push(`**Host Details**\n${hostDetails.join("\n")}`);
1653
+ }
1654
+
1655
+ // Metric results summary
1656
+ if (metricResponse.metricResult && metricResponse.metricResult.length > 0) {
1657
+ const resultDetails: Array<string> = [];
1658
+
1659
+ for (const result of metricResponse.metricResult) {
1660
+ if (result.data && result.data.length > 0) {
1661
+ resultDetails.push(
1662
+ `- ${result.data.length} metric data point(s) returned`,
1663
+ );
1664
+ }
1665
+ }
1666
+
1667
+ if (resultDetails.length > 0) {
1668
+ sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
1669
+ }
1670
+ }
1671
+
1672
+ return sections.length > 0 ? sections.join("\n") : null;
1673
+ }
1674
+
1675
+ private static buildPodmanRootCauseContext(input: {
1676
+ dataToProcess: DataToProcess;
1677
+ monitorStep: MonitorStep;
1678
+ monitor: Monitor;
1679
+ }): string | null {
1680
+ const metricResponse: MetricMonitorResponse =
1681
+ input.dataToProcess as MetricMonitorResponse;
1682
+
1683
+ const sections: Array<string> = [];
1684
+
1685
+ // Podman host context
1686
+ const podmanMonitor: MonitorStepPodmanMonitor | undefined =
1687
+ input.monitorStep.data?.podmanMonitor;
1688
+
1689
+ if (podmanMonitor) {
1690
+ const hostDetails: Array<string> = [];
1691
+ hostDetails.push(`- Host: ${podmanMonitor.hostIdentifier || "Unknown"}`);
1692
+
1693
+ if (podmanMonitor.containerFilters?.containerName) {
1694
+ hostDetails.push(
1695
+ `- Container Name Filter: ${podmanMonitor.containerFilters.containerName}`,
1696
+ );
1697
+ }
1698
+
1699
+ if (podmanMonitor.containerFilters?.containerImage) {
1700
+ hostDetails.push(
1701
+ `- Container Image Filter: ${podmanMonitor.containerFilters.containerImage}`,
1702
+ );
1703
+ }
1704
+
1705
+ // Add metric name from the query config
1706
+ if (
1707
+ podmanMonitor.metricViewConfig?.queryConfigs?.length > 0 &&
1708
+ podmanMonitor.metricViewConfig.queryConfigs[0]
1709
+ ) {
1710
+ const metricName: string = podmanMonitor.metricViewConfig
1711
+ .queryConfigs[0].metricQueryData?.filterData?.metricName as string;
1712
+ if (metricName) {
1713
+ hostDetails.push(`- Metric: \`${metricName}\``);
1714
+ }
1715
+ }
1716
+
1717
+ sections.push(`**Podman Host Details**\n${hostDetails.join("\n")}`);
1718
+ }
1719
+
1720
+ // Metric results summary
1721
+ if (metricResponse.metricResult && metricResponse.metricResult.length > 0) {
1722
+ const resultDetails: Array<string> = [];
1723
+
1724
+ for (const result of metricResponse.metricResult) {
1725
+ if (result.data && result.data.length > 0) {
1726
+ resultDetails.push(
1727
+ `- ${result.data.length} metric data point(s) returned`,
1728
+ );
1729
+ }
1730
+ }
1731
+
1732
+ if (resultDetails.length > 0) {
1733
+ sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
1734
+ }
1735
+ }
1736
+
1737
+ return sections.length > 0 ? sections.join("\n") : null;
1738
+ }
1739
+
1596
1740
  private static buildProxmoxRootCauseContext(input: {
1597
1741
  dataToProcess: DataToProcess;
1598
1742
  monitorStep: MonitorStep;
@@ -1758,6 +1902,168 @@ ${contextBlock}
1758
1902
  return sections.length > 0 ? sections.join("\n") : null;
1759
1903
  }
1760
1904
 
1905
+ private static buildDockerSwarmRootCauseContext(input: {
1906
+ dataToProcess: DataToProcess;
1907
+ monitorStep: MonitorStep;
1908
+ monitor: Monitor;
1909
+ }): string | null {
1910
+ const metricResponse: MetricMonitorResponse =
1911
+ input.dataToProcess as MetricMonitorResponse;
1912
+
1913
+ const breakdown: DockerSwarmResourceBreakdown | undefined =
1914
+ metricResponse.dockerSwarmResourceBreakdown;
1915
+
1916
+ const sections: Array<string> = [];
1917
+
1918
+ // Docker Swarm cluster context
1919
+ const dockerSwarmMonitor: MonitorStepDockerSwarmMonitor | undefined =
1920
+ input.monitorStep.data?.dockerSwarmMonitor;
1921
+
1922
+ if (dockerSwarmMonitor || breakdown) {
1923
+ const clusterDetails: Array<string> = [];
1924
+ clusterDetails.push(
1925
+ `- Cluster: ${breakdown?.clusterName || dockerSwarmMonitor?.clusterIdentifier || "Unknown"}`,
1926
+ );
1927
+
1928
+ if (breakdown) {
1929
+ clusterDetails.push(
1930
+ `- Metric: ${breakdown.metricFriendlyName} (\`${breakdown.metricName}\`)`,
1931
+ );
1932
+ } else if (
1933
+ dockerSwarmMonitor &&
1934
+ dockerSwarmMonitor.metricViewConfig?.queryConfigs?.length > 0 &&
1935
+ dockerSwarmMonitor.metricViewConfig.queryConfigs[0]
1936
+ ) {
1937
+ const metricName: string = dockerSwarmMonitor.metricViewConfig
1938
+ .queryConfigs[0].metricQueryData?.filterData?.metricName as string;
1939
+ if (metricName) {
1940
+ clusterDetails.push(`- Metric: \`${metricName}\``);
1941
+ }
1942
+ }
1943
+
1944
+ if (dockerSwarmMonitor?.resourceFilters?.serviceName) {
1945
+ clusterDetails.push(
1946
+ `- Service Filter: ${dockerSwarmMonitor.resourceFilters.serviceName}`,
1947
+ );
1948
+ }
1949
+
1950
+ if (dockerSwarmMonitor?.resourceFilters?.nodeName) {
1951
+ clusterDetails.push(
1952
+ `- Node Filter: ${dockerSwarmMonitor.resourceFilters.nodeName}`,
1953
+ );
1954
+ }
1955
+
1956
+ if (dockerSwarmMonitor?.resourceFilters?.containerName) {
1957
+ clusterDetails.push(
1958
+ `- Container Name Filter: ${dockerSwarmMonitor.resourceFilters.containerName}`,
1959
+ );
1960
+ }
1961
+
1962
+ if (dockerSwarmMonitor?.resourceFilters?.containerImage) {
1963
+ clusterDetails.push(
1964
+ `- Container Image Filter: ${dockerSwarmMonitor.resourceFilters.containerImage}`,
1965
+ );
1966
+ }
1967
+
1968
+ sections.push(
1969
+ `**Docker Swarm Cluster Details**\n${clusterDetails.join("\n")}`,
1970
+ );
1971
+ }
1972
+
1973
+ // Affected resources (Task / Service / Node / Value)
1974
+ let renderedBreakdownTable: boolean = false;
1975
+
1976
+ if (breakdown && breakdown.affectedResources.length > 0) {
1977
+ /*
1978
+ * K8s/Proxmox-parity render: drop zero-value rows, worst (highest)
1979
+ * first, top 10. For the task-down template the breaching rows ARE
1980
+ * the zero-uptime ones — those still drive alerting through the
1981
+ * per-series criteria evaluation; this table is supplementary
1982
+ * context only.
1983
+ */
1984
+ const sortedResources: Array<DockerSwarmAffectedResource> = [
1985
+ ...breakdown.affectedResources,
1986
+ ]
1987
+ .filter((r: DockerSwarmAffectedResource) => {
1988
+ return r.metricValue > 0;
1989
+ })
1990
+ .sort(
1991
+ (a: DockerSwarmAffectedResource, b: DockerSwarmAffectedResource) => {
1992
+ return b.metricValue - a.metricValue;
1993
+ },
1994
+ );
1995
+
1996
+ /*
1997
+ * Skip the table when no row carries any identity label
1998
+ * (cluster-wide series) — it would add nothing.
1999
+ */
2000
+ const hasIdentity: boolean = sortedResources.some(
2001
+ (r: DockerSwarmAffectedResource) => {
2002
+ return r.containerName || r.serviceName || r.nodeName;
2003
+ },
2004
+ );
2005
+
2006
+ if (sortedResources.length > 0 && hasIdentity) {
2007
+ const resourcesToShow: Array<DockerSwarmAffectedResource> =
2008
+ sortedResources.slice(0, 10);
2009
+
2010
+ const resourceLines: Array<string> = [];
2011
+ resourceLines.push(`| Task / Container | Service | Node | Value |`);
2012
+ resourceLines.push(`| --- | --- | --- | --- |`);
2013
+
2014
+ for (const resource of resourcesToShow) {
2015
+ const taskCell: string = resource.containerName
2016
+ ? `\`${resource.containerName}\``
2017
+ : "-";
2018
+ const serviceCell: string = resource.serviceName
2019
+ ? `\`${resource.serviceName}\``
2020
+ : "-";
2021
+ const nodeCell: string = resource.nodeName
2022
+ ? `\`${resource.nodeName}\``
2023
+ : "-";
2024
+
2025
+ resourceLines.push(
2026
+ `| ${taskCell} | ${serviceCell} | ${nodeCell} | **${resource.metricValue}** |`,
2027
+ );
2028
+ }
2029
+
2030
+ if (sortedResources.length > 10) {
2031
+ resourceLines.push(
2032
+ `\n*... and ${sortedResources.length - 10} more affected tasks*`,
2033
+ );
2034
+ }
2035
+
2036
+ sections.push(
2037
+ `\n\n**Affected Tasks** (${sortedResources.length} total)\n\n${resourceLines.join("\n")}`,
2038
+ );
2039
+ renderedBreakdownTable = true;
2040
+ }
2041
+ }
2042
+
2043
+ // Metric results summary (fallback context when no table rendered)
2044
+ if (
2045
+ !renderedBreakdownTable &&
2046
+ metricResponse.metricResult &&
2047
+ metricResponse.metricResult.length > 0
2048
+ ) {
2049
+ const resultDetails: Array<string> = [];
2050
+
2051
+ for (const result of metricResponse.metricResult) {
2052
+ if (result.data && result.data.length > 0) {
2053
+ resultDetails.push(
2054
+ `- ${result.data.length} metric data point(s) returned`,
2055
+ );
2056
+ }
2057
+ }
2058
+
2059
+ if (resultDetails.length > 0) {
2060
+ sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
2061
+ }
2062
+ }
2063
+
2064
+ return sections.length > 0 ? sections.join("\n") : null;
2065
+ }
2066
+
1761
2067
  private static buildCephRootCauseContext(input: {
1762
2068
  dataToProcess: DataToProcess;
1763
2069
  monitorStep: MonitorStep;
@@ -1,4 +1,5 @@
1
1
  import CephCluster from "../../../Models/DatabaseModels/CephCluster";
2
+ import DockerSwarmCluster from "../../../Models/DatabaseModels/DockerSwarmCluster";
2
3
  import DockerHost from "../../../Models/DatabaseModels/DockerHost";
3
4
  import Host from "../../../Models/DatabaseModels/Host";
4
5
  import Incident from "../../../Models/DatabaseModels/Incident";
@@ -9,6 +10,7 @@ import KubernetesCluster from "../../../Models/DatabaseModels/KubernetesCluster"
9
10
  import Label from "../../../Models/DatabaseModels/Label";
10
11
  import Monitor from "../../../Models/DatabaseModels/Monitor";
11
12
  import OnCallDutyPolicy from "../../../Models/DatabaseModels/OnCallDutyPolicy";
13
+ import PodmanHost from "../../../Models/DatabaseModels/PodmanHost";
12
14
  import ProxmoxCluster from "../../../Models/DatabaseModels/ProxmoxCluster";
13
15
  import Service from "../../../Models/DatabaseModels/Service";
14
16
  import Includes from "../../../Types/BaseDatabase/Includes";
@@ -27,6 +29,7 @@ import DockerHostService from "../../Services/DockerHostService";
27
29
  import HostService from "../../Services/HostService";
28
30
  import IncidentService from "../../Services/IncidentService";
29
31
  import KubernetesClusterService from "../../Services/KubernetesClusterService";
32
+ import PodmanHostService from "../../Services/PodmanHostService";
30
33
  import ProxmoxClusterService from "../../Services/ProxmoxClusterService";
31
34
  import ServiceService from "../../Services/ServiceService";
32
35
  import IncidentSeverityService from "../../Services/IncidentSeverityService";
@@ -577,6 +580,7 @@ export default class MonitorIncident {
577
580
  const [
578
581
  resolvedHosts,
579
582
  resolvedDockerHosts,
583
+ resolvedPodmanHosts,
580
584
  resolvedClusters,
581
585
  resolvedServices,
582
586
  resolvedProxmoxClusters,
@@ -596,6 +600,13 @@ export default class MonitorIncident {
596
600
  projectId: input.projectId,
597
601
  findBy: DockerHostService.findBy.bind(DockerHostService),
598
602
  }),
603
+ this.resolveResourceIds({
604
+ ids: refs.podmanHostIds,
605
+ names: refs.podmanHostNames,
606
+ nameColumn: "hostIdentifier",
607
+ projectId: input.projectId,
608
+ findBy: PodmanHostService.findBy.bind(PodmanHostService),
609
+ }),
599
610
  this.resolveResourceIds({
600
611
  ids: refs.kubernetesClusterIds,
601
612
  names: refs.kubernetesClusterNames,
@@ -642,6 +653,15 @@ export default class MonitorIncident {
642
653
  },
643
654
  );
644
655
  }
656
+ if (resolvedPodmanHosts.length > 0) {
657
+ input.incident.podmanHosts = resolvedPodmanHosts.map(
658
+ (id: string): PodmanHost => {
659
+ const podmanHost: PodmanHost = new PodmanHost();
660
+ podmanHost._id = id;
661
+ return podmanHost;
662
+ },
663
+ );
664
+ }
645
665
  if (resolvedClusters.length > 0) {
646
666
  input.incident.kubernetesClusters = resolvedClusters.map(
647
667
  (id: string): KubernetesCluster => {
@@ -735,6 +755,31 @@ export default class MonitorIncident {
735
755
 
736
756
  input.incident.cephClusters = merged;
737
757
  }
758
+
759
+ if (input.clusterContext.dockerSwarmClusterIds.length > 0) {
760
+ const existingIds: Set<string> = new Set<string>(
761
+ (input.incident.dockerSwarmClusters || []).map(
762
+ (cluster: DockerSwarmCluster) => {
763
+ return String(cluster._id);
764
+ },
765
+ ),
766
+ );
767
+
768
+ const merged: Array<DockerSwarmCluster> = [
769
+ ...(input.incident.dockerSwarmClusters || []),
770
+ ];
771
+
772
+ for (const id of input.clusterContext.dockerSwarmClusterIds) {
773
+ if (existingIds.has(id)) {
774
+ continue;
775
+ }
776
+ const cluster: DockerSwarmCluster = new DockerSwarmCluster();
777
+ cluster._id = id;
778
+ merged.push(cluster);
779
+ }
780
+
781
+ input.incident.dockerSwarmClusters = merged;
782
+ }
738
783
  }
739
784
 
740
785
  /*
@@ -23,6 +23,7 @@ export interface ResourceKeySet {
23
23
  export interface MaintainedResourceKeys {
24
24
  hosts: ResourceKeySet;
25
25
  dockerHosts: ResourceKeySet;
26
+ podmanHosts: ResourceKeySet;
26
27
  kubernetesClusters: ResourceKeySet;
27
28
  /*
28
29
  * Proxmox/Ceph clusters have no `oneuptime.*.id` label stamp, so only
@@ -112,6 +113,11 @@ export default class MonitorMaintenanceSuppression {
112
113
  refs.dockerHostNames,
113
114
  input.maintained.dockerHosts.names,
114
115
  ) ||
116
+ this.intersects(refs.podmanHostIds, input.maintained.podmanHosts.ids) ||
117
+ this.intersects(
118
+ refs.podmanHostNames,
119
+ input.maintained.podmanHosts.names,
120
+ ) ||
115
121
  this.intersects(
116
122
  refs.kubernetesClusterIds,
117
123
  input.maintained.kubernetesClusters.ids,
@@ -156,6 +162,8 @@ export default class MonitorMaintenanceSuppression {
156
162
  maintained.hosts.names.size > 0 ||
157
163
  maintained.dockerHosts.ids.size > 0 ||
158
164
  maintained.dockerHosts.names.size > 0 ||
165
+ maintained.podmanHosts.ids.size > 0 ||
166
+ maintained.podmanHosts.names.size > 0 ||
159
167
  maintained.kubernetesClusters.ids.size > 0 ||
160
168
  maintained.kubernetesClusters.names.size > 0 ||
161
169
  maintained.proxmoxClusters.ids.size > 0 ||
@@ -181,6 +189,7 @@ export default class MonitorMaintenanceSuppression {
181
189
  const maintained: MaintainedResourceKeys = {
182
190
  hosts: { ids: new Set<string>(), names: new Set<string>() },
183
191
  dockerHosts: { ids: new Set<string>(), names: new Set<string>() },
192
+ podmanHosts: { ids: new Set<string>(), names: new Set<string>() },
184
193
  kubernetesClusters: { ids: new Set<string>(), names: new Set<string>() },
185
194
  proxmoxClusters: { ids: new Set<string>(), names: new Set<string>() },
186
195
  cephClusters: { ids: new Set<string>(), names: new Set<string>() },
@@ -199,6 +208,7 @@ export default class MonitorMaintenanceSuppression {
199
208
  _id: true,
200
209
  hosts: { _id: true, hostIdentifier: true },
201
210
  dockerHosts: { _id: true, hostIdentifier: true },
211
+ podmanHosts: { _id: true, hostIdentifier: true },
202
212
  kubernetesClusters: { _id: true, clusterIdentifier: true },
203
213
  proxmoxClusters: { _id: true, name: true },
204
214
  cephClusters: { _id: true, name: true },
@@ -222,6 +232,13 @@ export default class MonitorMaintenanceSuppression {
222
232
  dockerHost.hostIdentifier,
223
233
  );
224
234
  }
235
+ for (const podmanHost of event.podmanHosts || []) {
236
+ this.addKey(
237
+ maintained.podmanHosts,
238
+ podmanHost._id,
239
+ podmanHost.hostIdentifier,
240
+ );
241
+ }
225
242
  for (const cluster of event.kubernetesClusters || []) {
226
243
  this.addKey(
227
244
  maintained.kubernetesClusters,
@@ -361,6 +361,9 @@ export default class MonitorTemplateUtil {
361
361
  data.monitorType === MonitorType.Metrics ||
362
362
  data.monitorType === MonitorType.Kubernetes ||
363
363
  data.monitorType === MonitorType.Docker ||
364
+ data.monitorType === MonitorType.Host ||
365
+ data.monitorType === MonitorType.Podman ||
366
+ data.monitorType === MonitorType.DockerSwarm ||
364
367
  data.monitorType === MonitorType.Proxmox ||
365
368
  data.monitorType === MonitorType.Ceph
366
369
  ) {
@@ -48,6 +48,22 @@ export const DockerHostNameLabelKeys: ReadonlyArray<string> = [
48
48
  "oneuptime.docker.host.name",
49
49
  ];
50
50
 
51
+ /*
52
+ * For Podman hosts we deliberately ignore raw `host.name` /
53
+ * `oneuptime.host.name`: those are the Host's territory. The ingest
54
+ * pipeline stamps `oneuptime.podman.host.*` independently when the
55
+ * source is a podman host, so only those keys identify a PodmanHost.
56
+ */
57
+ export const PodmanHostIdLabelKeys: ReadonlyArray<string> = [
58
+ "resource.oneuptime.podman.host.id",
59
+ "oneuptime.podman.host.id",
60
+ ];
61
+
62
+ export const PodmanHostNameLabelKeys: ReadonlyArray<string> = [
63
+ "resource.oneuptime.podman.host.name",
64
+ "oneuptime.podman.host.name",
65
+ ];
66
+
51
67
  export const KubernetesClusterIdLabelKeys: ReadonlyArray<string> = [
52
68
  "resource.oneuptime.kubernetes.cluster.id",
53
69
  "oneuptime.kubernetes.cluster.id",
@@ -112,6 +128,8 @@ export interface SeriesResourceRefs {
112
128
  hostNames: Array<string>;
113
129
  dockerHostIds: Array<string>;
114
130
  dockerHostNames: Array<string>;
131
+ podmanHostIds: Array<string>;
132
+ podmanHostNames: Array<string>;
115
133
  kubernetesClusterIds: Array<string>;
116
134
  kubernetesClusterNames: Array<string>;
117
135
  proxmoxClusterNames: Array<string>;
@@ -166,6 +184,14 @@ export default class SeriesResourceLabels {
166
184
  seriesLabels,
167
185
  DockerHostNameLabelKeys,
168
186
  ),
187
+ podmanHostIds: this.collectLabelValues(
188
+ seriesLabels,
189
+ PodmanHostIdLabelKeys,
190
+ ),
191
+ podmanHostNames: this.collectLabelValues(
192
+ seriesLabels,
193
+ PodmanHostNameLabelKeys,
194
+ ),
169
195
  kubernetesClusterIds: this.collectLabelValues(
170
196
  seriesLabels,
171
197
  KubernetesClusterIdLabelKeys,
@@ -5,6 +5,7 @@ import MultiSearch from "../../../Types/BaseDatabase/MultiSearch";
5
5
  import ServiceModel from "../../../Models/DatabaseModels/Service";
6
6
  import HostModel from "../../../Models/DatabaseModels/Host";
7
7
  import DockerHostModel from "../../../Models/DatabaseModels/DockerHost";
8
+ import PodmanHostModel from "../../../Models/DatabaseModels/PodmanHost";
8
9
  import KubernetesClusterModel from "../../../Models/DatabaseModels/KubernetesCluster";
9
10
  import ServerlessFunctionModel from "../../../Models/DatabaseModels/ServerlessFunction";
10
11
  import CloudResourceModel from "../../../Models/DatabaseModels/CloudResource";
@@ -12,6 +13,7 @@ import RumApplicationModel from "../../../Models/DatabaseModels/RumApplication";
12
13
  import ServiceService from "../../Services/ServiceService";
13
14
  import HostService from "../../Services/HostService";
14
15
  import DockerHostService from "../../Services/DockerHostService";
16
+ import PodmanHostService from "../../Services/PodmanHostService";
15
17
  import KubernetesClusterService from "../../Services/KubernetesClusterService";
16
18
  import ServerlessFunctionService from "../../Services/ServerlessFunctionService";
17
19
  import CloudResourceService from "../../Services/CloudResourceService";
@@ -34,6 +36,7 @@ export const RESOURCE_FACET_KEYS: ReadonlySet<string> = new Set([
34
36
  "serviceId",
35
37
  "hostId",
36
38
  "dockerHostId",
39
+ "podmanHostId",
37
40
  "kubernetesClusterId",
38
41
  "serverlessFunctionId",
39
42
  "cloudResourceId",
@@ -118,6 +121,13 @@ export default class ResourceFacetResolver {
118
121
  searchText,
119
122
  limit,
120
123
  );
124
+ case "podmanHostId":
125
+ return ResourceFacetResolver.queryPodmanHosts(
126
+ projectId,
127
+ spec.counts,
128
+ searchText,
129
+ limit,
130
+ );
121
131
  case "kubernetesClusterId":
122
132
  return ResourceFacetResolver.queryKubernetesClusters(
123
133
  projectId,
@@ -260,6 +270,45 @@ export default class ResourceFacetResolver {
260
270
  );
261
271
  }
262
272
 
273
+ private static async queryPodmanHosts(
274
+ projectId: ObjectID,
275
+ counts: Map<string, number>,
276
+ searchText: string | undefined,
277
+ limit: number,
278
+ ): Promise<Array<ResolvedFacetValue>> {
279
+ const query: Record<string, unknown> = { projectId };
280
+ if (searchText) {
281
+ query["name"] = new MultiSearch({
282
+ fields: ["name", "hostIdentifier"],
283
+ value: searchText,
284
+ });
285
+ }
286
+
287
+ const podmanHosts: Array<PodmanHostModel> = await PodmanHostService.findBy({
288
+ query: query as any,
289
+ select: {
290
+ _id: true,
291
+ name: true,
292
+ hostIdentifier: true,
293
+ },
294
+ limit: new PositiveNumber(limit),
295
+ skip: new PositiveNumber(0),
296
+ props: { isRoot: true },
297
+ });
298
+
299
+ return ResourceFacetResolver.mergeCounts(
300
+ podmanHosts.map(
301
+ (p: PodmanHostModel): { id: string; displayName: string } => {
302
+ return {
303
+ id: p._id ? p._id.toString() : "",
304
+ displayName: p.name || p.hostIdentifier || "Unknown",
305
+ };
306
+ },
307
+ ),
308
+ counts,
309
+ );
310
+ }
311
+
263
312
  private static async queryKubernetesClusters(
264
313
  projectId: ObjectID,
265
314
  counts: Map<string, number>,
@@ -163,6 +163,16 @@ export default class TelemetryUtil {
163
163
  };
164
164
  }
165
165
 
166
+ public static getAttributesForPodmanHostIdAndHostName(data: {
167
+ podmanHostId: ObjectID;
168
+ hostName: string;
169
+ }): Dictionary<AttributeType> {
170
+ return {
171
+ "oneuptime.podman.host.id": data.podmanHostId.toString(),
172
+ "oneuptime.podman.host.name": data.hostName,
173
+ };
174
+ }
175
+
166
176
  public static getAttributesForKubernetesClusterIdAndName(data: {
167
177
  kubernetesClusterId: ObjectID;
168
178
  clusterName: string;