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