@oneuptime/common 11.0.1 → 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 +276 -0
- package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
- package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
- package/Models/DatabaseModels/CephCluster.ts +964 -0
- package/Models/DatabaseModels/CephClusterLabelRule.ts +514 -0
- package/Models/DatabaseModels/CephClusterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/CephClusterOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/CephClusterOwnerUser.ts +486 -0
- package/Models/DatabaseModels/CephResource.ts +809 -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/Host.ts +64 -0
- package/Models/DatabaseModels/Incident.ts +276 -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 +48 -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/ProxmoxCluster.ts +943 -0
- package/Models/DatabaseModels/ProxmoxClusterLabelRule.ts +514 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerUser.ts +486 -0
- package/Models/DatabaseModels/ProxmoxResource.ts +726 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +220 -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/BillingInvoiceAPI.ts +47 -7
- package/Server/API/CephResourceAPI.ts +134 -0
- package/Server/API/DashboardAPI.ts +135 -0
- package/Server/API/DockerSwarmResourceAPI.ts +137 -0
- package/Server/API/ProjectAPI.ts +15 -0
- package/Server/API/ProxmoxResourceAPI.ts +132 -0
- package/Server/API/ResellerPlanAPI.ts +17 -0
- package/Server/API/TelemetryAPI.ts +8 -1
- package/Server/Infrastructure/GlobalCache.ts +8 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.ts +163 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.ts +211 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.ts +590 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Infrastructure/Redis.ts +40 -12
- package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
- package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
- package/Server/Services/AnalyticsDatabaseService.ts +1 -1
- package/Server/Services/BillingService.ts +109 -21
- package/Server/Services/CephClusterLabelRuleEngineService.ts +200 -0
- package/Server/Services/CephClusterLabelRuleService.ts +14 -0
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +218 -0
- package/Server/Services/CephClusterOwnerRuleService.ts +14 -0
- package/Server/Services/CephClusterOwnerTeamService.ts +10 -0
- package/Server/Services/CephClusterOwnerUserService.ts +10 -0
- package/Server/Services/CephClusterService.ts +401 -0
- package/Server/Services/CephResourceService.ts +383 -0
- package/Server/Services/CloudResourceService.ts +11 -3
- package/Server/Services/DockerHostService.ts +11 -3
- 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 +3 -0
- package/Server/Services/HostService.ts +11 -3
- 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 +38 -0
- package/Server/Services/KubernetesClusterService.ts +11 -3
- package/Server/Services/LogAggregationService.ts +3 -0
- package/Server/Services/MetricAggregationService.ts +3 -0
- package/Server/Services/OpenTelemetryIngestService.ts +73 -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/ProxmoxClusterLabelRuleEngineService.ts +204 -0
- package/Server/Services/ProxmoxClusterLabelRuleService.ts +14 -0
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +222 -0
- package/Server/Services/ProxmoxClusterOwnerRuleService.ts +14 -0
- package/Server/Services/ProxmoxClusterOwnerTeamService.ts +10 -0
- package/Server/Services/ProxmoxClusterOwnerUserService.ts +10 -0
- package/Server/Services/ProxmoxClusterService.ts +382 -0
- package/Server/Services/ProxmoxResourceService.ts +404 -0
- package/Server/Services/RumApplicationService.ts +11 -3
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
- package/Server/Services/ServerlessFunctionService.ts +11 -3
- package/Server/Services/TelemetryUsageBillingService.ts +59 -3
- package/Server/Services/TraceAggregationService.ts +3 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +8 -23
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +55 -0
- package/Server/Utils/Monitor/MonitorClusterContext.ts +158 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +650 -4
- package/Server/Utils/Monitor/MonitorIncident.ts +175 -7
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +56 -6
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +6 -1
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +59 -0
- package/Server/Utils/Profiling.ts +37 -2
- package/Server/Utils/Telemetry/EntityRegistry.ts +4 -0
- package/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.ts +1096 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
- package/Server/Utils/Telemetry/Telemetry.ts +10 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +107 -0
- package/Server/Utils/Telemetry.ts +8 -19
- package/Tests/Server/API/BillingInvoiceAPI.test.ts +194 -0
- package/Tests/Server/API/ProjectAPI.test.ts +91 -0
- package/Tests/Server/API/ResellerPlanAPI.test.ts +207 -0
- package/Tests/Server/Infrastructure/GlobalCache.test.ts +100 -0
- package/Tests/Server/Services/BillingService.test.ts +323 -0
- package/Tests/Server/Services/CephResourceService.test.ts +264 -0
- package/Tests/Server/Services/ProxmoxResourceService.test.ts +326 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +322 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +14 -0
- package/Tests/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.test.ts +879 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +196 -0
- package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
- package/Tests/Types/Monitor/CephAlertTemplates.test.ts +1231 -0
- package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
- package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +732 -0
- package/Tests/Utils/Telemetry/EntityRelationship.test.ts +49 -0
- package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +423 -0
- package/Types/BaseDatabase/AggregationIntervalUtil.ts +74 -0
- package/Types/Dashboard/DashboardComponentType.ts +11 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +4 -0
- package/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.ts +14 -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/DashboardComponents/DashboardProxmoxGuestListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.ts +16 -0
- package/Types/Dashboard/DashboardTemplates.ts +640 -0
- package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
- package/Types/Icon/IconProp.ts +3 -0
- package/Types/Monitor/CephAlertTemplates.ts +1647 -0
- package/Types/Monitor/CephMetricCatalog.ts +409 -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 +65 -0
- package/Types/Monitor/MonitorStep.ts +163 -0
- package/Types/Monitor/MonitorStepCephMonitor.ts +57 -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/MonitorStepProxmoxMonitor.ts +81 -0
- package/Types/Monitor/MonitorType.ts +71 -1
- package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
- package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
- package/Types/Monitor/ProxmoxAlertTemplates.ts +899 -0
- package/Types/Monitor/ProxmoxMetricCatalog.ts +382 -0
- package/Types/Permission.ts +1029 -104
- package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
- package/Types/Telemetry/EntityType.ts +23 -0
- package/Types/Telemetry/ServiceType.ts +4 -0
- package/UI/Components/Icon/Icon.tsx +141 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +15 -5
- package/UI/Utils/Telemetry/Telemetry.ts +16 -21
- package/UI/Utils/TelemetryService.ts +8 -3
- package/Utils/Dashboard/Components/DashboardCephOsdListComponent.ts +63 -0
- package/Utils/Dashboard/Components/DashboardCephPoolListComponent.ts +32 -0
- package/Utils/Dashboard/Components/DashboardCephResourceListShared.ts +61 -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/DashboardProxmoxGuestListComponent.ts +69 -0
- package/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.ts +55 -0
- package/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.ts +61 -0
- package/Utils/Dashboard/Components/Index.ts +79 -0
- package/Utils/Telemetry/EntityKey.ts +53 -0
- package/Utils/Telemetry/EntityRelationship.ts +6 -0
- package/Utils/Telemetry/HeartbeatAvailability.ts +262 -0
- package/build/dist/Models/DatabaseModels/Alert.js +270 -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/CephCluster.js +992 -0
- package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CephResource.js +846 -0
- package/build/dist/Models/DatabaseModels/CephResource.js.map +1 -0
- 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/Host.js +63 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +270 -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 +48 -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/ProxmoxCluster.js +967 -0
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxResource.js +761 -0
- package/build/dist/Models/DatabaseModels/ProxmoxResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +216 -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/BillingInvoiceAPI.js +35 -5
- package/build/dist/Server/API/BillingInvoiceAPI.js.map +1 -1
- package/build/dist/Server/API/CephResourceAPI.js +98 -0
- package/build/dist/Server/API/CephResourceAPI.js.map +1 -0
- package/build/dist/Server/API/DashboardAPI.js +135 -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/ProjectAPI.js +11 -0
- package/build/dist/Server/API/ProjectAPI.js.map +1 -1
- package/build/dist/Server/API/ProxmoxResourceAPI.js +95 -0
- package/build/dist/Server/API/ProxmoxResourceAPI.js.map +1 -0
- package/build/dist/Server/API/ResellerPlanAPI.js +17 -3
- package/build/dist/Server/API/ResellerPlanAPI.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/GlobalCache.js +7 -2
- package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.js +76 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.js.map +1 -0
- 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/1781600000000-AddProxmoxCephV2Columns.js +108 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.js +253 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.js +43 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Redis.js +31 -8
- package/build/dist/Server/Infrastructure/Redis.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/AnalyticsDatabaseService.js +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/BillingService.js +85 -23
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +166 -0
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/CephClusterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +186 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterOwnerUserService.js +9 -0
- package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterService.js +353 -0
- package/build/dist/Server/Services/CephClusterService.js.map +1 -0
- package/build/dist/Server/Services/CephResourceService.js +257 -0
- package/build/dist/Server/Services/CephResourceService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceService.js +10 -2
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +10 -2
- package/build/dist/Server/Services/DockerHostService.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 +3 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +10 -2
- package/build/dist/Server/Services/HostService.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 +38 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +10 -2
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +3 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +3 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +69 -9
- 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/ProxmoxClusterLabelRuleEngineService.js +166 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +186 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterService.js +337 -0
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxResourceService.js +285 -0
- package/build/dist/Server/Services/ProxmoxResourceService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationService.js +10 -2
- package/build/dist/Server/Services/RumApplicationService.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/ServerlessFunctionService.js +10 -2
- package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +43 -3
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +3 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +8 -25
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.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 +44 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +118 -0
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +422 -4
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +137 -8
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +32 -6
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +6 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +39 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Profiling.js +24 -3
- package/build/dist/Server/Utils/Profiling.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +4 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js +854 -0
- package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js.map +1 -0
- 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 +80 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +8 -10
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +69 -0
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js +11 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +4 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.js.map +1 -0
- 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/DashboardComponents/DashboardProxmoxGuestListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +562 -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 +3 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Monitor/CephAlertTemplates.js +1379 -0
- package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/CephMetricCatalog.js +353 -0
- package/build/dist/Types/Monitor/CephMetricCatalog.js.map +1 -0
- 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 +115 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepCephMonitor.js +34 -0
- package/build/dist/Types/Monitor/MonitorStepCephMonitor.js.map +1 -0
- 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/MonitorStepProxmoxMonitor.js +36 -0
- package/build/dist/Types/Monitor/MonitorStepProxmoxMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +66 -1
- 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/Monitor/ProxmoxAlertTemplates.js +743 -0
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/ProxmoxMetricCatalog.js +320 -0
- package/build/dist/Types/Monitor/ProxmoxMetricCatalog.js.map +1 -0
- package/build/dist/Types/Permission.js +824 -0
- 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 +23 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +4 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +49 -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 +11 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Utils/Telemetry/Telemetry.js +11 -10
- package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +6 -2
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardCephOsdListComponent.js +50 -0
- package/build/dist/Utils/Dashboard/Components/DashboardCephOsdListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardCephPoolListComponent.js +27 -0
- package/build/dist/Utils/Dashboard/Components/DashboardCephPoolListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardCephResourceListShared.js +46 -0
- package/build/dist/Utils/Dashboard/Components/DashboardCephResourceListShared.js.map +1 -0
- 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/DashboardProxmoxGuestListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.js +42 -0
- package/build/dist/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.js +46 -0
- package/build/dist/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +44 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +41 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityRelationship.js +3 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
- package/build/dist/Utils/Telemetry/HeartbeatAvailability.js +174 -0
- package/build/dist/Utils/Telemetry/HeartbeatAvailability.js.map +1 -0
- package/package.json +29 -21
package/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Proxmox + Ceph V3 (Internal/Roadmap/ProxmoxCephProductsV3.md):
|
|
5
|
+
*
|
|
6
|
+
* 1. WI-24 backup coverage — ProxmoxCluster.guestsWithoutBackupCount
|
|
7
|
+
* (written from pve_not_backed_up_total on the WI-3 extras path) and
|
|
8
|
+
* ProxmoxResource.isBackedUp (per-guest flag derived from
|
|
9
|
+
* pve_not_backed_up_info presence: an info series carrying the
|
|
10
|
+
* guest's id means NOT covered by any backup job). Both nullable —
|
|
11
|
+
* NULL means the exporter's cluster-level backup-info collector has
|
|
12
|
+
* not reported, which is distinct from "0 uncovered guests".
|
|
13
|
+
*
|
|
14
|
+
* 2. WI-28 hyperconverged cross-link — nullable
|
|
15
|
+
* ProxmoxCluster.cephClusterId FK (SET NULL on delete), manually
|
|
16
|
+
* linked via the cluster's Settings page. No auto-link heuristic:
|
|
17
|
+
* pve-exporter exposes no fsid, so there is no honest join signal
|
|
18
|
+
* (contrast WI-17's Host link, which had name equality). Mirrors
|
|
19
|
+
* Host.proxmoxClusterId: SET NULL, no index.
|
|
20
|
+
*
|
|
21
|
+
* Columns/FKs are derived from the model decorators in
|
|
22
|
+
* Common/Models/DatabaseModels/{ProxmoxCluster,ProxmoxResource}.ts.
|
|
23
|
+
*/
|
|
24
|
+
export class AddProxmoxCephV3Columns1781700000000
|
|
25
|
+
implements MigrationInterface
|
|
26
|
+
{
|
|
27
|
+
public name = "AddProxmoxCephV3Columns1781700000000";
|
|
28
|
+
|
|
29
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
30
|
+
// WI-24: backup coverage snapshot columns.
|
|
31
|
+
await queryRunner.query(
|
|
32
|
+
`ALTER TABLE "ProxmoxCluster" ADD "guestsWithoutBackupCount" integer`,
|
|
33
|
+
);
|
|
34
|
+
await queryRunner.query(
|
|
35
|
+
`ALTER TABLE "ProxmoxResource" ADD "isBackedUp" boolean`,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// WI-28: ProxmoxCluster -> CephCluster cross-link (manual only).
|
|
39
|
+
await queryRunner.query(
|
|
40
|
+
`ALTER TABLE "ProxmoxCluster" ADD "cephClusterId" uuid`,
|
|
41
|
+
);
|
|
42
|
+
await queryRunner.query(
|
|
43
|
+
`ALTER TABLE "ProxmoxCluster" ADD CONSTRAINT "FK_proxmox_cluster_cephClusterId" FOREIGN KEY ("cephClusterId") REFERENCES "CephCluster"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
48
|
+
// WI-28: Ceph cross-link.
|
|
49
|
+
await queryRunner.query(
|
|
50
|
+
`ALTER TABLE "ProxmoxCluster" DROP CONSTRAINT "FK_proxmox_cluster_cephClusterId"`,
|
|
51
|
+
);
|
|
52
|
+
await queryRunner.query(
|
|
53
|
+
`ALTER TABLE "ProxmoxCluster" DROP COLUMN "cephClusterId"`,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
// WI-24: backup coverage snapshot columns.
|
|
57
|
+
await queryRunner.query(
|
|
58
|
+
`ALTER TABLE "ProxmoxResource" DROP COLUMN "isBackedUp"`,
|
|
59
|
+
);
|
|
60
|
+
await queryRunner.query(
|
|
61
|
+
`ALTER TABLE "ProxmoxCluster" DROP COLUMN "guestsWithoutBackupCount"`,
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -385,6 +385,11 @@ import { AddTelemetryEntityRelationshipTable1781200000001 } from "./178120000000
|
|
|
385
385
|
import { MigrationName1781250074195 } from "./1781250074195-MigrationName";
|
|
386
386
|
import { AddTelemetryEntityLabels1781300000000 } from "./1781300000000-AddTelemetryEntityLabels";
|
|
387
387
|
import { AddServiceTelemetrySdkLanguage1781400000000 } from "./1781400000000-AddServiceTelemetrySdkLanguage";
|
|
388
|
+
import { AddProxmoxAndCephClusterTables1781500000000 } from "./1781500000000-AddProxmoxAndCephClusterTables";
|
|
389
|
+
import { MigrationName1781587937032 } from "./1781587937032-MigrationName";
|
|
390
|
+
import { AddProxmoxCephV2Columns1781600000000 } from "./1781600000000-AddProxmoxCephV2Columns";
|
|
391
|
+
import { AddProxmoxCephActivityAndRules1781600000001 } from "./1781600000001-AddProxmoxCephActivityAndRules";
|
|
392
|
+
import { AddProxmoxCephV3Columns1781700000000 } from "./1781700000000-AddProxmoxCephV3Columns";
|
|
388
393
|
|
|
389
394
|
export default [
|
|
390
395
|
InitialMigration,
|
|
@@ -774,4 +779,9 @@ export default [
|
|
|
774
779
|
AddTelemetryEntityLabels1781300000000,
|
|
775
780
|
AddServiceTelemetrySdkLanguage1781400000000,
|
|
776
781
|
MigrationName1781250074195,
|
|
782
|
+
AddProxmoxAndCephClusterTables1781500000000,
|
|
783
|
+
AddProxmoxCephV2Columns1781600000000,
|
|
784
|
+
AddProxmoxCephActivityAndRules1781600000001,
|
|
785
|
+
AddProxmoxCephV3Columns1781700000000,
|
|
786
|
+
MigrationName1781587937032,
|
|
777
787
|
];
|
|
@@ -100,22 +100,50 @@ export default abstract class Redis {
|
|
|
100
100
|
const connectToDatabase: ConnectToDatabaseFunction = async (
|
|
101
101
|
client: RedisClient,
|
|
102
102
|
): Promise<void> => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
logger.debug(
|
|
108
|
-
"Cannot connect to Redis. Retrying again in 5 seconds",
|
|
109
|
-
);
|
|
110
|
-
// sleep for 5 seconds.
|
|
103
|
+
// A previous attempt (or ioredis' background reconnect) already succeeded.
|
|
104
|
+
if (client.status === "ready") {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
111
107
|
|
|
112
|
-
|
|
108
|
+
/*
|
|
109
|
+
* The client is created with lazyConnect, so it starts in the "wait" state
|
|
110
|
+
* and only opens when we call connect(). If the first attempt fails, ioredis
|
|
111
|
+
* begins auto-reconnecting in the background (status "connecting" /
|
|
112
|
+
* "reconnecting"), and calling connect() again in that state throws
|
|
113
|
+
* "Redis is already connecting/connected" — which previously propagated out
|
|
114
|
+
* of init() and crashlooped the process. So only issue connect() when the
|
|
115
|
+
* client is idle; when a (re)connect is already in flight, skip the call and
|
|
116
|
+
* wait for it to settle on the next iteration.
|
|
117
|
+
*/
|
|
118
|
+
const isIdle: boolean =
|
|
119
|
+
client.status === "wait" ||
|
|
120
|
+
client.status === "end" ||
|
|
121
|
+
client.status === "close";
|
|
113
122
|
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
try {
|
|
124
|
+
if (isIdle) {
|
|
125
|
+
await client.connect();
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
} catch (err) {
|
|
129
|
+
if (retry >= 3) {
|
|
130
|
+
throw err;
|
|
116
131
|
}
|
|
117
|
-
throw err;
|
|
118
132
|
}
|
|
133
|
+
|
|
134
|
+
if (retry >= 3) {
|
|
135
|
+
throw new Error(
|
|
136
|
+
`Unable to connect to Redis at ${RedisHostname}:${RedisPort.toNumber()} (status: ${client.status})`,
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
logger.debug("Cannot connect to Redis. Retrying again in 5 seconds");
|
|
141
|
+
// sleep for 5 seconds.
|
|
142
|
+
|
|
143
|
+
await Sleep.sleep(5000);
|
|
144
|
+
|
|
145
|
+
retry++;
|
|
146
|
+
return await connectToDatabase(client);
|
|
119
147
|
};
|
|
120
148
|
|
|
121
149
|
await connectToDatabase(this.client);
|
|
@@ -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
|
}
|
|
@@ -793,14 +793,35 @@ export class BillingService extends BaseService {
|
|
|
793
793
|
const customer: Stripe.Response<Stripe.Customer | Stripe.DeletedCustomer> =
|
|
794
794
|
await this.stripe.customers.retrieve(customerId);
|
|
795
795
|
|
|
796
|
-
|
|
796
|
+
const defaultPaymentMethod:
|
|
797
|
+
| string
|
|
798
|
+
| Stripe.PaymentMethod
|
|
799
|
+
| null
|
|
800
|
+
| undefined = (customer as Stripe.Customer).invoice_settings
|
|
801
|
+
?.default_payment_method;
|
|
802
|
+
|
|
803
|
+
const defaultPaymentMethodId: string | undefined =
|
|
804
|
+
typeof defaultPaymentMethod === "string"
|
|
805
|
+
? defaultPaymentMethod
|
|
806
|
+
: defaultPaymentMethod?.id;
|
|
807
|
+
|
|
808
|
+
if (defaultPaymentMethodId) {
|
|
809
|
+
for (const paymentMethod of paymentMethods) {
|
|
810
|
+
paymentMethod.isDefault = paymentMethod.id === defaultPaymentMethodId;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
// default payment method first — it's charged first when paying invoices.
|
|
814
|
+
paymentMethods.sort((a: PaymentMethod, b: PaymentMethod) => {
|
|
815
|
+
return Number(b.isDefault) - Number(a.isDefault);
|
|
816
|
+
});
|
|
817
|
+
} else if (
|
|
797
818
|
(customer as Stripe.Customer).invoice_settings &&
|
|
798
|
-
|
|
819
|
+
paymentMethods.length > 0 &&
|
|
820
|
+
paymentMethods[0]?.id
|
|
799
821
|
) {
|
|
800
822
|
// set the first payment method as default.
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
}
|
|
823
|
+
await this.setDefaultPaymentMethod(customerId, paymentMethods[0].id);
|
|
824
|
+
paymentMethods[0].isDefault = true;
|
|
804
825
|
}
|
|
805
826
|
|
|
806
827
|
return paymentMethods;
|
|
@@ -1237,6 +1258,41 @@ export class BillingService extends BaseService {
|
|
|
1237
1258
|
return invoice;
|
|
1238
1259
|
}
|
|
1239
1260
|
|
|
1261
|
+
/*
|
|
1262
|
+
* Returns true if the error is attributable to the payment method itself
|
|
1263
|
+
* (declined, expired, unusable), meaning paying with a different payment
|
|
1264
|
+
* method may succeed.
|
|
1265
|
+
*
|
|
1266
|
+
* Not retryable:
|
|
1267
|
+
* - invoice_payment_intent_requires_action (3DS/SCA): the payment method
|
|
1268
|
+
* works but needs customer authentication — throw so the interactive
|
|
1269
|
+
* flow (BillingInvoiceAPI) surfaces the authentication prompt for the
|
|
1270
|
+
* default method instead of silently charging a backup method.
|
|
1271
|
+
* - Invoice-state or connectivity errors: another payment method would
|
|
1272
|
+
* not help, and if the outcome of the attempt is unknown a retry could
|
|
1273
|
+
* double-charge the customer.
|
|
1274
|
+
*
|
|
1275
|
+
* Note: most bank debit (ACH/SEPA/BACS) failures are asynchronous — the
|
|
1276
|
+
* pay call succeeds and the failure arrives days later via webhook — so
|
|
1277
|
+
* failover only catches the synchronous ones (unverified/unusable
|
|
1278
|
+
* accounts).
|
|
1279
|
+
*/
|
|
1280
|
+
private canRetryWithDifferentPaymentMethod(err: unknown): boolean {
|
|
1281
|
+
const stripeError: { type?: string; code?: string } = err as {
|
|
1282
|
+
type?: string;
|
|
1283
|
+
code?: string;
|
|
1284
|
+
};
|
|
1285
|
+
|
|
1286
|
+
if (stripeError?.type === "StripeCardError") {
|
|
1287
|
+
return true;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
return Boolean(
|
|
1291
|
+
stripeError?.code?.startsWith("payment_method_") ||
|
|
1292
|
+
stripeError?.code?.startsWith("bank_account_"),
|
|
1293
|
+
);
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1240
1296
|
@CaptureSpan()
|
|
1241
1297
|
public async payInvoice(
|
|
1242
1298
|
customerId: string,
|
|
@@ -1250,23 +1306,55 @@ export class BillingService extends BaseService {
|
|
|
1250
1306
|
throw new BadDataException(Errors.BillingService.NO_PAYMENTS_METHODS);
|
|
1251
1307
|
}
|
|
1252
1308
|
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1309
|
+
/*
|
|
1310
|
+
* getPaymentMethods returns the default payment method first. If it is
|
|
1311
|
+
* declined, fall back to the customer's other payment methods before
|
|
1312
|
+
* giving up. Attempts are capped to bound decline traffic on unattended
|
|
1313
|
+
* retry paths (e.g. recharge-on-low-balance), which create a fresh
|
|
1314
|
+
* invoice and retry on every cycle.
|
|
1315
|
+
*/
|
|
1316
|
+
const maxPaymentMethodsToTry: number = 3;
|
|
1317
|
+
let lastError: unknown = null;
|
|
1256
1318
|
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1319
|
+
for (const paymentMethod of paymentMethods.slice(
|
|
1320
|
+
0,
|
|
1321
|
+
maxPaymentMethodsToTry,
|
|
1322
|
+
)) {
|
|
1323
|
+
try {
|
|
1324
|
+
const invoice: Stripe.Invoice = await this.stripe.invoices.pay(
|
|
1325
|
+
invoiceId,
|
|
1326
|
+
{
|
|
1327
|
+
payment_method: paymentMethod.id,
|
|
1328
|
+
},
|
|
1329
|
+
);
|
|
1330
|
+
|
|
1331
|
+
return {
|
|
1332
|
+
id: invoice.id!,
|
|
1333
|
+
amount: invoice.amount_due,
|
|
1334
|
+
currencyCode: invoice.currency,
|
|
1335
|
+
subscriptionId: invoice.subscription?.toString() || undefined,
|
|
1336
|
+
status: invoice.status?.toString() || "Unknown",
|
|
1337
|
+
downloadableLink: invoice.invoice_pdf?.toString() || "",
|
|
1338
|
+
customerId: invoice.customer?.toString() || "",
|
|
1339
|
+
invoiceDate: invoice.created
|
|
1340
|
+
? new Date(invoice.created * 1000)
|
|
1341
|
+
: OneUptimeDate.getCurrentDate(),
|
|
1342
|
+
invoiceNumber: invoice.number || undefined,
|
|
1343
|
+
};
|
|
1344
|
+
} catch (err) {
|
|
1345
|
+
logger.error(
|
|
1346
|
+
`Failed to pay invoice ${invoiceId} with payment method ${paymentMethod.type} ending in ${paymentMethod.last4Digits}: ${err}`,
|
|
1347
|
+
);
|
|
1348
|
+
|
|
1349
|
+
if (!this.canRetryWithDifferentPaymentMethod(err)) {
|
|
1350
|
+
throw err;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
lastError = err;
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
throw lastError;
|
|
1270
1358
|
}
|
|
1271
1359
|
|
|
1272
1360
|
public getMeteredPlanPriceId(productType: ProductType): string {
|