@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.
- package/Models/DatabaseModels/Alert.ts +166 -0
- package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
- package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
- package/Models/DatabaseModels/DockerSwarmCluster.ts +989 -0
- package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +514 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +486 -0
- package/Models/DatabaseModels/DockerSwarmResource.ts +750 -0
- package/Models/DatabaseModels/Incident.ts +166 -0
- package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
- package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
- package/Models/DatabaseModels/Index.ts +24 -0
- package/Models/DatabaseModels/PodmanHost.ts +859 -0
- package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
- package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
- package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
- package/Models/DatabaseModels/PodmanResource.ts +498 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
- package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Server/API/DashboardAPI.ts +89 -0
- package/Server/API/DockerSwarmResourceAPI.ts +137 -0
- package/Server/API/TelemetryAPI.ts +8 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
- package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
- package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
- package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
- package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
- package/Server/Services/DockerSwarmClusterService.ts +404 -0
- package/Server/Services/DockerSwarmResourceService.ts +381 -0
- package/Server/Services/ExceptionAggregationService.ts +1 -0
- package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
- package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +14 -0
- package/Server/Services/LogAggregationService.ts +1 -0
- package/Server/Services/MetricAggregationService.ts +1 -0
- package/Server/Services/OpenTelemetryIngestService.ts +37 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
- package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
- package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
- package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
- package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
- package/Server/Services/PodmanHostService.ts +368 -0
- package/Server/Services/PodmanResourceService.ts +310 -0
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
- package/Server/Services/TelemetryUsageBillingService.ts +18 -0
- package/Server/Services/TraceAggregationService.ts +1 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +10 -0
- package/Server/Utils/Monitor/MonitorClusterContext.ts +35 -6
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +306 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +45 -0
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +17 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
- package/Server/Utils/Telemetry/Telemetry.ts +10 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +1 -0
- package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
- package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
- package/Types/Dashboard/DashboardComponentType.ts +7 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
- package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
- package/Types/Dashboard/DashboardTemplates.ts +194 -0
- package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
- package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
- package/Types/Monitor/HostAlertTemplates.ts +455 -0
- package/Types/Monitor/HostMetricCatalog.ts +177 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +21 -0
- package/Types/Monitor/MonitorStep.ts +99 -0
- package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
- package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
- package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
- package/Types/Monitor/MonitorType.ts +42 -0
- package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
- package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
- package/Types/Permission.ts +465 -4
- package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
- package/Types/Telemetry/EntityType.ts +12 -0
- package/Types/Telemetry/ServiceType.ts +2 -0
- package/UI/Components/Icon/Icon.tsx +57 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +6 -0
- package/UI/Utils/TelemetryService.ts +1 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
- package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
- package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
- package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
- package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
- package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
- package/Utils/Dashboard/Components/Index.ts +51 -0
- package/Utils/Telemetry/EntityKey.ts +18 -0
- package/build/dist/Models/DatabaseModels/Alert.js +162 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +162 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +24 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
- package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
- package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +89 -0
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
- package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
- package/build/dist/Server/API/TelemetryAPI.js +8 -1
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js +1100 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
- package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +8 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +14 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +1 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +1 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +43 -13
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostService.js +319 -0
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
- package/build/dist/Server/Services/PodmanResourceService.js +196 -0
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +1 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +8 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +35 -7
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +194 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +35 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +9 -0
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +16 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +18 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +7 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +168 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
- package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
- package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
- package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStep.js +69 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
- package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
- package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
- package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +39 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
- package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
- package/build/dist/Types/Permission.js +420 -4
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
- package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +12 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +2 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +16 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +6 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +1 -0
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +28 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +14 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/package.json +1 -1
|
@@ -386,6 +386,7 @@ import { MigrationName1781250074195 } from "./1781250074195-MigrationName";
|
|
|
386
386
|
import { AddTelemetryEntityLabels1781300000000 } from "./1781300000000-AddTelemetryEntityLabels";
|
|
387
387
|
import { AddServiceTelemetrySdkLanguage1781400000000 } from "./1781400000000-AddServiceTelemetrySdkLanguage";
|
|
388
388
|
import { AddProxmoxAndCephClusterTables1781500000000 } from "./1781500000000-AddProxmoxAndCephClusterTables";
|
|
389
|
+
import { MigrationName1781587937032 } from "./1781587937032-MigrationName";
|
|
389
390
|
import { AddProxmoxCephV2Columns1781600000000 } from "./1781600000000-AddProxmoxCephV2Columns";
|
|
390
391
|
import { AddProxmoxCephActivityAndRules1781600000001 } from "./1781600000001-AddProxmoxCephActivityAndRules";
|
|
391
392
|
import { AddProxmoxCephV3Columns1781700000000 } from "./1781700000000-AddProxmoxCephV3Columns";
|
|
@@ -782,4 +783,5 @@ export default [
|
|
|
782
783
|
AddProxmoxCephV2Columns1781600000000,
|
|
783
784
|
AddProxmoxCephActivityAndRules1781600000001,
|
|
784
785
|
AddProxmoxCephV3Columns1781700000000,
|
|
786
|
+
MigrationName1781587937032,
|
|
785
787
|
];
|
|
@@ -6,11 +6,13 @@ import Host from "../../Models/DatabaseModels/Host";
|
|
|
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 AlertFeedService from "./AlertFeedService";
|
|
11
12
|
import AlertLabelRuleService from "./AlertLabelRuleService";
|
|
12
13
|
import AlertService from "./AlertService";
|
|
13
14
|
import DockerHostService from "./DockerHostService";
|
|
15
|
+
import PodmanHostService from "./PodmanHostService";
|
|
14
16
|
import HostService from "./HostService";
|
|
15
17
|
import KubernetesClusterService from "./KubernetesClusterService";
|
|
16
18
|
import LabelService from "./LabelService";
|
|
@@ -33,6 +35,7 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
33
35
|
* - all labels of the alert's hosts when `inheritLabelsFromHosts`
|
|
34
36
|
* - all labels of the alert's Kubernetes clusters when `inheritLabelsFromKubernetesClusters`
|
|
35
37
|
* - all labels of the alert's Docker hosts when `inheritLabelsFromDockerHosts`
|
|
38
|
+
* - all labels of the alert's Podman hosts when `inheritLabelsFromPodmanHosts`
|
|
36
39
|
* - all labels of the alert's services when `inheritLabelsFromServices`
|
|
37
40
|
* The union is deduped against labels already on the alert before insert
|
|
38
41
|
* to avoid PK conflicts on the AlertLabel join table.
|
|
@@ -66,6 +69,7 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
66
69
|
inheritLabelsFromHosts: true,
|
|
67
70
|
inheritLabelsFromKubernetesClusters: true,
|
|
68
71
|
inheritLabelsFromDockerHosts: true,
|
|
72
|
+
inheritLabelsFromPodmanHosts: true,
|
|
69
73
|
inheritLabelsFromServices: true,
|
|
70
74
|
},
|
|
71
75
|
limit: 100,
|
|
@@ -81,6 +85,7 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
81
85
|
let inheritFromHosts: boolean = false;
|
|
82
86
|
let inheritFromKubernetesClusters: boolean = false;
|
|
83
87
|
let inheritFromDockerHosts: boolean = false;
|
|
88
|
+
let inheritFromPodmanHosts: boolean = false;
|
|
84
89
|
let inheritFromServices: boolean = false;
|
|
85
90
|
const matchedRules: Array<AlertLabelRule> = [];
|
|
86
91
|
|
|
@@ -107,6 +112,9 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
107
112
|
if (rule.inheritLabelsFromDockerHosts) {
|
|
108
113
|
inheritFromDockerHosts = true;
|
|
109
114
|
}
|
|
115
|
+
if (rule.inheritLabelsFromPodmanHosts) {
|
|
116
|
+
inheritFromPodmanHosts = true;
|
|
117
|
+
}
|
|
110
118
|
if (rule.inheritLabelsFromServices) {
|
|
111
119
|
inheritFromServices = true;
|
|
112
120
|
}
|
|
@@ -116,6 +124,7 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
116
124
|
inheritFromHosts ||
|
|
117
125
|
inheritFromKubernetesClusters ||
|
|
118
126
|
inheritFromDockerHosts ||
|
|
127
|
+
inheritFromPodmanHosts ||
|
|
119
128
|
inheritFromServices;
|
|
120
129
|
|
|
121
130
|
let alertWithResources: Alert | null = null;
|
|
@@ -126,6 +135,7 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
126
135
|
hosts: { _id: true },
|
|
127
136
|
kubernetesClusters: { _id: true },
|
|
128
137
|
dockerHosts: { _id: true },
|
|
138
|
+
podmanHosts: { _id: true },
|
|
129
139
|
services: { _id: true },
|
|
130
140
|
},
|
|
131
141
|
props: { isRoot: true },
|
|
@@ -204,6 +214,25 @@ class AlertLabelRuleEngineServiceClass {
|
|
|
204
214
|
}
|
|
205
215
|
}
|
|
206
216
|
|
|
217
|
+
if (inheritFromPodmanHosts && alertWithResources?.podmanHosts?.length) {
|
|
218
|
+
for (const alertPodmanHost of alertWithResources.podmanHosts) {
|
|
219
|
+
if (!alertPodmanHost.id) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
const podmanHost: PodmanHost | null =
|
|
223
|
+
await PodmanHostService.findOneById({
|
|
224
|
+
id: alertPodmanHost.id,
|
|
225
|
+
select: { labels: { _id: true } },
|
|
226
|
+
props: { isRoot: true },
|
|
227
|
+
});
|
|
228
|
+
for (const label of podmanHost?.labels || []) {
|
|
229
|
+
if (label.id) {
|
|
230
|
+
labelIdsToAdd.add(label.id.toString());
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
207
236
|
if (inheritFromServices && alertWithResources?.services?.length) {
|
|
208
237
|
for (const alertService of alertWithResources.services) {
|
|
209
238
|
if (!alertService.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";
|
|
@@ -79,6 +84,7 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
79
84
|
inheritOwnersFromHosts: true,
|
|
80
85
|
inheritOwnersFromKubernetesClusters: true,
|
|
81
86
|
inheritOwnersFromDockerHosts: true,
|
|
87
|
+
inheritOwnersFromPodmanHosts: true,
|
|
82
88
|
inheritOwnersFromServices: true,
|
|
83
89
|
},
|
|
84
90
|
limit: 100,
|
|
@@ -105,6 +111,7 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
105
111
|
let inheritFromHosts: boolean = false;
|
|
106
112
|
let inheritFromKubernetesClusters: boolean = false;
|
|
107
113
|
let inheritFromDockerHosts: boolean = false;
|
|
114
|
+
let inheritFromPodmanHosts: boolean = false;
|
|
108
115
|
let inheritFromServices: boolean = false;
|
|
109
116
|
const inheritNotifyMode: { value: boolean | null } = { value: null };
|
|
110
117
|
|
|
@@ -153,6 +160,12 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
153
160
|
inheritNotifyMode.value =
|
|
154
161
|
inheritNotifyMode.value === true ? true : notify;
|
|
155
162
|
}
|
|
163
|
+
if (rule.inheritOwnersFromPodmanHosts) {
|
|
164
|
+
inheritFromPodmanHosts = true;
|
|
165
|
+
ruleAddedAny = true;
|
|
166
|
+
inheritNotifyMode.value =
|
|
167
|
+
inheritNotifyMode.value === true ? true : notify;
|
|
168
|
+
}
|
|
156
169
|
if (rule.inheritOwnersFromServices) {
|
|
157
170
|
inheritFromServices = true;
|
|
158
171
|
ruleAddedAny = true;
|
|
@@ -172,6 +185,8 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
172
185
|
const inheritedFromKubernetesClusterTeamIds: Set<string> = new Set();
|
|
173
186
|
const inheritedFromDockerHostUserIds: Set<string> = new Set();
|
|
174
187
|
const inheritedFromDockerHostTeamIds: Set<string> = new Set();
|
|
188
|
+
const inheritedFromPodmanHostUserIds: Set<string> = new Set();
|
|
189
|
+
const inheritedFromPodmanHostTeamIds: Set<string> = new Set();
|
|
175
190
|
const inheritedFromServiceUserIds: Set<string> = new Set();
|
|
176
191
|
const inheritedFromServiceTeamIds: Set<string> = new Set();
|
|
177
192
|
|
|
@@ -334,6 +349,47 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
334
349
|
}
|
|
335
350
|
}
|
|
336
351
|
|
|
352
|
+
if (inheritFromPodmanHosts && alert.podmanHosts?.length) {
|
|
353
|
+
const podmanHostIds: Array<ObjectID> = alert.podmanHosts
|
|
354
|
+
.map((p: PodmanHost) => {
|
|
355
|
+
return p.id;
|
|
356
|
+
})
|
|
357
|
+
.filter((id: ObjectID | null | undefined): id is ObjectID => {
|
|
358
|
+
return Boolean(id);
|
|
359
|
+
});
|
|
360
|
+
if (podmanHostIds.length > 0) {
|
|
361
|
+
const [podmanHostOwnerUsers, podmanHostOwnerTeams]: [
|
|
362
|
+
Array<PodmanHostOwnerUser>,
|
|
363
|
+
Array<PodmanHostOwnerTeam>,
|
|
364
|
+
] = await Promise.all([
|
|
365
|
+
PodmanHostOwnerUserService.findBy({
|
|
366
|
+
query: { podmanHostId: QueryHelper.any(podmanHostIds) },
|
|
367
|
+
select: { userId: true },
|
|
368
|
+
props: { isRoot: true },
|
|
369
|
+
limit: LIMIT_MAX,
|
|
370
|
+
skip: 0,
|
|
371
|
+
}),
|
|
372
|
+
PodmanHostOwnerTeamService.findBy({
|
|
373
|
+
query: { podmanHostId: QueryHelper.any(podmanHostIds) },
|
|
374
|
+
select: { teamId: true },
|
|
375
|
+
props: { isRoot: true },
|
|
376
|
+
limit: LIMIT_MAX,
|
|
377
|
+
skip: 0,
|
|
378
|
+
}),
|
|
379
|
+
]);
|
|
380
|
+
for (const ownerUser of podmanHostOwnerUsers) {
|
|
381
|
+
if (ownerUser.userId) {
|
|
382
|
+
inheritedFromPodmanHostUserIds.add(ownerUser.userId.toString());
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
for (const ownerTeam of podmanHostOwnerTeams) {
|
|
386
|
+
if (ownerTeam.teamId) {
|
|
387
|
+
inheritedFromPodmanHostTeamIds.add(ownerTeam.teamId.toString());
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
337
393
|
if (inheritFromServices && alert.services?.length) {
|
|
338
394
|
const serviceIds: Array<ObjectID> = alert.services
|
|
339
395
|
.map((s: Service) => {
|
|
@@ -380,6 +436,7 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
380
436
|
...inheritedFromHostUserIds,
|
|
381
437
|
...inheritedFromKubernetesClusterUserIds,
|
|
382
438
|
...inheritedFromDockerHostUserIds,
|
|
439
|
+
...inheritedFromPodmanHostUserIds,
|
|
383
440
|
...inheritedFromServiceUserIds,
|
|
384
441
|
]);
|
|
385
442
|
const inheritedTeamIds: Set<string> = new Set([
|
|
@@ -387,6 +444,7 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
387
444
|
...inheritedFromHostTeamIds,
|
|
388
445
|
...inheritedFromKubernetesClusterTeamIds,
|
|
389
446
|
...inheritedFromDockerHostTeamIds,
|
|
447
|
+
...inheritedFromPodmanHostTeamIds,
|
|
390
448
|
...inheritedFromServiceTeamIds,
|
|
391
449
|
]);
|
|
392
450
|
|
|
@@ -458,6 +516,10 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
458
516
|
inheritedFromDockerHostUserIds.size +
|
|
459
517
|
inheritedFromDockerHostTeamIds.size >
|
|
460
518
|
0,
|
|
519
|
+
inheritedFromPodmanHosts:
|
|
520
|
+
inheritedFromPodmanHostUserIds.size +
|
|
521
|
+
inheritedFromPodmanHostTeamIds.size >
|
|
522
|
+
0,
|
|
461
523
|
inheritedFromServices:
|
|
462
524
|
inheritedFromServiceUserIds.size + inheritedFromServiceTeamIds.size >
|
|
463
525
|
0,
|
|
@@ -480,6 +542,7 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
480
542
|
inheritedFromHosts: boolean;
|
|
481
543
|
inheritedFromKubernetesClusters: boolean;
|
|
482
544
|
inheritedFromDockerHosts: boolean;
|
|
545
|
+
inheritedFromPodmanHosts: boolean;
|
|
483
546
|
inheritedFromServices: boolean;
|
|
484
547
|
}): Promise<void> {
|
|
485
548
|
const {
|
|
@@ -491,6 +554,7 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
491
554
|
inheritedFromHosts,
|
|
492
555
|
inheritedFromKubernetesClusters,
|
|
493
556
|
inheritedFromDockerHosts,
|
|
557
|
+
inheritedFromPodmanHosts,
|
|
494
558
|
inheritedFromServices,
|
|
495
559
|
} = data;
|
|
496
560
|
if (
|
|
@@ -575,6 +639,9 @@ class AlertOwnerRuleEngineServiceClass {
|
|
|
575
639
|
if (inheritedFromDockerHosts) {
|
|
576
640
|
inheritedSources.push("Docker hosts");
|
|
577
641
|
}
|
|
642
|
+
if (inheritedFromPodmanHosts) {
|
|
643
|
+
inheritedSources.push("Podman hosts");
|
|
644
|
+
}
|
|
578
645
|
if (inheritedFromServices) {
|
|
579
646
|
inheritedSources.push("services");
|
|
580
647
|
}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import Label from "../../Models/DatabaseModels/Label";
|
|
2
|
+
import DockerSwarmCluster from "../../Models/DatabaseModels/DockerSwarmCluster";
|
|
3
|
+
import DockerSwarmClusterLabelRule from "../../Models/DatabaseModels/DockerSwarmClusterLabelRule";
|
|
4
|
+
import DockerSwarmClusterLabelRuleService from "./DockerSwarmClusterLabelRuleService";
|
|
5
|
+
import DockerSwarmClusterService from "./DockerSwarmClusterService";
|
|
6
|
+
import ObjectID from "../../Types/ObjectID";
|
|
7
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
8
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
9
|
+
|
|
10
|
+
class DockerSwarmClusterLabelRuleEngineServiceClass {
|
|
11
|
+
/**
|
|
12
|
+
* Evaluates DockerSwarmClusterLabelRule rows for the given DockerSwarm cluster and attaches matched
|
|
13
|
+
* labels to it. The union is deduped against labels already on the DockerSwarm cluster
|
|
14
|
+
* before insert to avoid PK conflicts on the join table.
|
|
15
|
+
*/
|
|
16
|
+
@CaptureSpan()
|
|
17
|
+
public async applyRulesToDockerSwarmCluster(
|
|
18
|
+
dockerSwarmCluster: DockerSwarmCluster,
|
|
19
|
+
): Promise<void> {
|
|
20
|
+
if (!dockerSwarmCluster.id || !dockerSwarmCluster.projectId) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
const rules: Array<DockerSwarmClusterLabelRule> =
|
|
26
|
+
await DockerSwarmClusterLabelRuleService.findBy({
|
|
27
|
+
query: {
|
|
28
|
+
projectId: dockerSwarmCluster.projectId,
|
|
29
|
+
isEnabled: true,
|
|
30
|
+
},
|
|
31
|
+
props: { isRoot: true },
|
|
32
|
+
select: {
|
|
33
|
+
_id: true,
|
|
34
|
+
name: true,
|
|
35
|
+
dockerSwarmClusterLabels: { _id: true },
|
|
36
|
+
dockerSwarmClusterNamePattern: true,
|
|
37
|
+
dockerSwarmClusterDescriptionPattern: true,
|
|
38
|
+
labelsToAdd: { _id: true },
|
|
39
|
+
},
|
|
40
|
+
limit: 100,
|
|
41
|
+
skip: 0,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (rules.length === 0) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const dockerSwarmClusterWithDetails: DockerSwarmCluster | null =
|
|
49
|
+
await DockerSwarmClusterService.findOneById({
|
|
50
|
+
id: dockerSwarmCluster.id,
|
|
51
|
+
select: {
|
|
52
|
+
name: true,
|
|
53
|
+
description: true,
|
|
54
|
+
labels: { _id: true },
|
|
55
|
+
},
|
|
56
|
+
props: { isRoot: true },
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (!dockerSwarmClusterWithDetails) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const labelIdsToAdd: Set<string> = new Set();
|
|
64
|
+
|
|
65
|
+
for (const rule of rules) {
|
|
66
|
+
const matches: boolean = this.doesDockerSwarmClusterMatchRule(
|
|
67
|
+
dockerSwarmClusterWithDetails,
|
|
68
|
+
rule,
|
|
69
|
+
);
|
|
70
|
+
if (!matches) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
for (const label of rule.labelsToAdd || []) {
|
|
74
|
+
if (label.id) {
|
|
75
|
+
labelIdsToAdd.add(label.id.toString());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (labelIdsToAdd.size === 0) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const existingLabelIds: Set<string> = new Set(
|
|
85
|
+
(dockerSwarmClusterWithDetails.labels || [])
|
|
86
|
+
.map((l: Label) => {
|
|
87
|
+
return l.id?.toString() || "";
|
|
88
|
+
})
|
|
89
|
+
.filter((id: string) => {
|
|
90
|
+
return id !== "";
|
|
91
|
+
}),
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
const newLabelIds: Array<string> = Array.from(labelIdsToAdd).filter(
|
|
95
|
+
(id: string) => {
|
|
96
|
+
return !existingLabelIds.has(id);
|
|
97
|
+
},
|
|
98
|
+
);
|
|
99
|
+
if (newLabelIds.length === 0) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
await DockerSwarmClusterService.getRepository()
|
|
104
|
+
.createQueryBuilder()
|
|
105
|
+
.relation(DockerSwarmCluster, "labels")
|
|
106
|
+
.of(dockerSwarmCluster.id.toString())
|
|
107
|
+
.add(newLabelIds);
|
|
108
|
+
|
|
109
|
+
/*
|
|
110
|
+
* Sync in-memory dockerSwarmCluster.labels so a downstream owner-rule engine in
|
|
111
|
+
* the same onCreateSuccess chain can match on rule-added labels.
|
|
112
|
+
*/
|
|
113
|
+
const mergedLabelIds: Set<string> = new Set([
|
|
114
|
+
...existingLabelIds,
|
|
115
|
+
...newLabelIds,
|
|
116
|
+
]);
|
|
117
|
+
dockerSwarmCluster.labels = Array.from(mergedLabelIds).map(
|
|
118
|
+
(id: string) => {
|
|
119
|
+
const label: Label = new Label();
|
|
120
|
+
label.id = new ObjectID(id);
|
|
121
|
+
return label;
|
|
122
|
+
},
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
logger.debug(
|
|
126
|
+
`DockerSwarmClusterLabelRuleEngine attached ${newLabelIds.length} labels to DockerSwarm cluster ${dockerSwarmCluster.id}`,
|
|
127
|
+
{ projectId: dockerSwarmCluster.projectId.toString() } as LogAttributes,
|
|
128
|
+
);
|
|
129
|
+
} catch (error) {
|
|
130
|
+
logger.error(`Error applying DockerSwarm cluster label rules: ${error}`, {
|
|
131
|
+
projectId: dockerSwarmCluster.projectId?.toString(),
|
|
132
|
+
dockerSwarmClusterId: dockerSwarmCluster.id?.toString(),
|
|
133
|
+
} as LogAttributes);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private doesDockerSwarmClusterMatchRule(
|
|
138
|
+
dockerSwarmCluster: DockerSwarmCluster,
|
|
139
|
+
rule: DockerSwarmClusterLabelRule,
|
|
140
|
+
): boolean {
|
|
141
|
+
if (
|
|
142
|
+
rule.dockerSwarmClusterLabels &&
|
|
143
|
+
rule.dockerSwarmClusterLabels.length > 0
|
|
144
|
+
) {
|
|
145
|
+
if (
|
|
146
|
+
!dockerSwarmCluster.labels ||
|
|
147
|
+
dockerSwarmCluster.labels.length === 0
|
|
148
|
+
) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
const ruleLabelIds: Array<string> = rule.dockerSwarmClusterLabels.map(
|
|
152
|
+
(l: Label) => {
|
|
153
|
+
return l.id?.toString() || "";
|
|
154
|
+
},
|
|
155
|
+
);
|
|
156
|
+
const labelIds: Array<string> = dockerSwarmCluster.labels.map(
|
|
157
|
+
(l: Label) => {
|
|
158
|
+
return l.id?.toString() || "";
|
|
159
|
+
},
|
|
160
|
+
);
|
|
161
|
+
if (
|
|
162
|
+
!ruleLabelIds.some((id: string) => {
|
|
163
|
+
return labelIds.includes(id);
|
|
164
|
+
})
|
|
165
|
+
) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (
|
|
171
|
+
rule.dockerSwarmClusterNamePattern &&
|
|
172
|
+
(!dockerSwarmCluster.name ||
|
|
173
|
+
!this.testRegex(
|
|
174
|
+
rule.dockerSwarmClusterNamePattern,
|
|
175
|
+
dockerSwarmCluster.name,
|
|
176
|
+
rule,
|
|
177
|
+
))
|
|
178
|
+
) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (
|
|
183
|
+
rule.dockerSwarmClusterDescriptionPattern &&
|
|
184
|
+
(!dockerSwarmCluster.description ||
|
|
185
|
+
!this.testRegex(
|
|
186
|
+
rule.dockerSwarmClusterDescriptionPattern,
|
|
187
|
+
dockerSwarmCluster.description,
|
|
188
|
+
rule,
|
|
189
|
+
))
|
|
190
|
+
) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
private testRegex(
|
|
198
|
+
pattern: string,
|
|
199
|
+
value: string,
|
|
200
|
+
rule: DockerSwarmClusterLabelRule,
|
|
201
|
+
): boolean {
|
|
202
|
+
try {
|
|
203
|
+
const regex: RegExp = new RegExp(pattern, "i");
|
|
204
|
+
return regex.test(value);
|
|
205
|
+
} catch {
|
|
206
|
+
logger.warn(
|
|
207
|
+
`Invalid regex in DockerSwarm cluster label rule ${rule.id}: ${pattern}`,
|
|
208
|
+
);
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export default new DockerSwarmClusterLabelRuleEngineServiceClass();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/DockerSwarmClusterLabelRule";
|
|
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();
|