@oneuptime/common 11.0.2 → 11.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/Alert.ts +166 -0
- package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
- package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
- package/Models/DatabaseModels/DockerSwarmCluster.ts +989 -0
- package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +514 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +486 -0
- package/Models/DatabaseModels/DockerSwarmResource.ts +750 -0
- package/Models/DatabaseModels/Incident.ts +166 -0
- package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
- package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
- package/Models/DatabaseModels/Index.ts +24 -0
- package/Models/DatabaseModels/PodmanHost.ts +859 -0
- package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
- package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
- package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
- package/Models/DatabaseModels/PodmanResource.ts +498 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
- package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Server/API/DashboardAPI.ts +89 -0
- package/Server/API/DockerSwarmResourceAPI.ts +137 -0
- package/Server/API/TelemetryAPI.ts +8 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
- package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
- package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
- package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
- package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
- package/Server/Services/DockerSwarmClusterService.ts +404 -0
- package/Server/Services/DockerSwarmResourceService.ts +381 -0
- package/Server/Services/ExceptionAggregationService.ts +1 -0
- package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
- package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +14 -0
- package/Server/Services/LogAggregationService.ts +1 -0
- package/Server/Services/MetricAggregationService.ts +1 -0
- package/Server/Services/OpenTelemetryIngestService.ts +37 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
- package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
- package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
- package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
- package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
- package/Server/Services/PodmanHostService.ts +368 -0
- package/Server/Services/PodmanResourceService.ts +310 -0
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
- package/Server/Services/TelemetryUsageBillingService.ts +18 -0
- package/Server/Services/TraceAggregationService.ts +1 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +10 -0
- package/Server/Utils/Monitor/MonitorClusterContext.ts +35 -6
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +306 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +45 -0
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +17 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
- package/Server/Utils/Telemetry/Telemetry.ts +10 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +1 -0
- package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
- package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
- package/Types/Dashboard/DashboardComponentType.ts +7 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
- package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
- package/Types/Dashboard/DashboardTemplates.ts +194 -0
- package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
- package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
- package/Types/Monitor/HostAlertTemplates.ts +455 -0
- package/Types/Monitor/HostMetricCatalog.ts +177 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +21 -0
- package/Types/Monitor/MonitorStep.ts +99 -0
- package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
- package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
- package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
- package/Types/Monitor/MonitorType.ts +42 -0
- package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
- package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
- package/Types/Permission.ts +465 -4
- package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
- package/Types/Telemetry/EntityType.ts +12 -0
- package/Types/Telemetry/ServiceType.ts +2 -0
- package/UI/Components/Icon/Icon.tsx +57 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +6 -0
- package/UI/Utils/TelemetryService.ts +1 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
- package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
- package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
- package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
- package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
- package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
- package/Utils/Dashboard/Components/Index.ts +51 -0
- package/Utils/Telemetry/EntityKey.ts +18 -0
- package/build/dist/Models/DatabaseModels/Alert.js +162 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +162 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +24 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
- package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
- package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +89 -0
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
- package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
- package/build/dist/Server/API/TelemetryAPI.js +8 -1
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js +1100 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
- package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +8 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +14 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +1 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +1 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +43 -13
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostService.js +319 -0
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
- package/build/dist/Server/Services/PodmanResourceService.js +196 -0
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +1 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +8 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +35 -7
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +194 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +35 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +9 -0
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +16 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +18 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +7 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +168 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
- package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
- package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
- package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStep.js +69 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
- package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
- package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
- package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +39 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
- package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
- package/build/dist/Types/Permission.js +420 -4
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
- package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +12 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +2 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +16 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +6 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +1 -0
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +28 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +14 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,750 @@
|
|
|
1
|
+
import DockerSwarmCluster from "./DockerSwarmCluster";
|
|
2
|
+
import Project from "./Project";
|
|
3
|
+
import User from "./User";
|
|
4
|
+
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
5
|
+
import Route from "../../Types/API/Route";
|
|
6
|
+
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
7
|
+
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
8
|
+
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
9
|
+
import ColumnType from "../../Types/Database/ColumnType";
|
|
10
|
+
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
11
|
+
import TableColumn from "../../Types/Database/TableColumn";
|
|
12
|
+
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
13
|
+
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
14
|
+
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
15
|
+
import IconProp from "../../Types/Icon/IconProp";
|
|
16
|
+
import { JSONObject } from "../../Types/JSON";
|
|
17
|
+
import ObjectID from "../../Types/ObjectID";
|
|
18
|
+
import Permission from "../../Types/Permission";
|
|
19
|
+
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* ------------------------------------------------------------------
|
|
23
|
+
* DockerSwarmResource
|
|
24
|
+
* ------------------------------------------------------------------
|
|
25
|
+
*
|
|
26
|
+
* Inventory snapshot of a single Docker Swarm object in a single
|
|
27
|
+
* cluster. One wide table holds every kind:
|
|
28
|
+
*
|
|
29
|
+
* Node — a manager or worker node in the swarm
|
|
30
|
+
* Service — a replicated or global swarm service
|
|
31
|
+
* Task — a single task (container instance) of a service
|
|
32
|
+
* Stack — a deployed compose stack (grouping of services)
|
|
33
|
+
* Network — a swarm-scoped (overlay) or local network
|
|
34
|
+
* Secret — a swarm-managed secret (metadata only; no value)
|
|
35
|
+
* Config — a swarm-managed config (metadata only)
|
|
36
|
+
* Volume — a volume reported by a node
|
|
37
|
+
*
|
|
38
|
+
* Populated by the telemetry ingest path from the OneUptime Docker
|
|
39
|
+
* Swarm agent's inventory poller (`docker node/service/task/stack/
|
|
40
|
+
* network/secret/config/volume ls`, shipped as JSON-line log records)
|
|
41
|
+
* plus the docker_stats receiver for the per-task latest CPU/memory
|
|
42
|
+
* mirror. The list/detail pages read this table instead of grouping
|
|
43
|
+
* over ClickHouse telemetry.
|
|
44
|
+
*
|
|
45
|
+
* `externalId` is the stable, collision-free id within a cluster and
|
|
46
|
+
* the detail-route param: `node/<id>`, `service/<id>`, `task/<id>`,
|
|
47
|
+
* `stack/<name>`, `network/<id>`, `secret/<id>`, `config/<id>`,
|
|
48
|
+
* `volume/<name>@<nodeId>`.
|
|
49
|
+
*
|
|
50
|
+
* Kind-specific fields that the list/detail pages do not sort or
|
|
51
|
+
* filter on live in the `attributes` JSON column (node availability /
|
|
52
|
+
* managerStatus / engineVersion / addr, network scope / ingress,
|
|
53
|
+
* volume mountpoint, task slot / containerId / message, secret/config
|
|
54
|
+
* createdAt, …) so the schema does not explode across eight kinds.
|
|
55
|
+
*
|
|
56
|
+
* Rows are upserted per snapshot and hard-deleted once lastSeenAt
|
|
57
|
+
* falls behind "now - 15min" for clusters that remain connected.
|
|
58
|
+
* Writes go through DockerSwarmResourceService under isRoot; users
|
|
59
|
+
* never create/update/delete rows directly.
|
|
60
|
+
*
|
|
61
|
+
* ------------------------------------------------------------------
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
const READ_PERMISSIONS: Array<Permission> = [
|
|
65
|
+
Permission.ProjectOwner,
|
|
66
|
+
Permission.ProjectAdmin,
|
|
67
|
+
Permission.ProjectMember,
|
|
68
|
+
Permission.Viewer,
|
|
69
|
+
Permission.SettingsAdmin,
|
|
70
|
+
Permission.SettingsMember,
|
|
71
|
+
Permission.SettingsViewer,
|
|
72
|
+
Permission.ReadDockerSwarmCluster,
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
@TenantColumn("projectId")
|
|
76
|
+
@TableAccessControl({
|
|
77
|
+
create: [],
|
|
78
|
+
read: READ_PERMISSIONS,
|
|
79
|
+
update: [],
|
|
80
|
+
delete: [],
|
|
81
|
+
})
|
|
82
|
+
@CrudApiEndpoint(new Route("/docker-swarm-resource"))
|
|
83
|
+
@TableMetadata({
|
|
84
|
+
tableName: "DockerSwarmResource",
|
|
85
|
+
singularName: "Docker Swarm Resource",
|
|
86
|
+
pluralName: "Docker Swarm Resources",
|
|
87
|
+
icon: IconProp.Cube,
|
|
88
|
+
tableDescription:
|
|
89
|
+
"Snapshot of a Docker Swarm object (node, service, task, stack, network, secret, config or volume) as last reported by the Docker Swarm agent. Populated by the telemetry ingest pipeline; not user-editable.",
|
|
90
|
+
})
|
|
91
|
+
@Index(["projectId", "dockerSwarmClusterId", "kind", "externalId"], {
|
|
92
|
+
unique: true,
|
|
93
|
+
})
|
|
94
|
+
@Entity({
|
|
95
|
+
name: "DockerSwarmResource",
|
|
96
|
+
})
|
|
97
|
+
export default class DockerSwarmResource extends BaseModel {
|
|
98
|
+
@ColumnAccessControl({
|
|
99
|
+
create: [],
|
|
100
|
+
read: READ_PERMISSIONS,
|
|
101
|
+
update: [],
|
|
102
|
+
})
|
|
103
|
+
@TableColumn({
|
|
104
|
+
manyToOneRelationColumn: "projectId",
|
|
105
|
+
type: TableColumnType.Entity,
|
|
106
|
+
modelType: Project,
|
|
107
|
+
title: "Project",
|
|
108
|
+
description: "Relation to Project this resource belongs to.",
|
|
109
|
+
})
|
|
110
|
+
@ManyToOne(
|
|
111
|
+
() => {
|
|
112
|
+
return Project;
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
eager: false,
|
|
116
|
+
nullable: true,
|
|
117
|
+
onDelete: "CASCADE",
|
|
118
|
+
orphanedRowAction: "nullify",
|
|
119
|
+
},
|
|
120
|
+
)
|
|
121
|
+
@JoinColumn({ name: "projectId" })
|
|
122
|
+
public project?: Project = undefined;
|
|
123
|
+
|
|
124
|
+
@ColumnAccessControl({
|
|
125
|
+
create: [],
|
|
126
|
+
read: READ_PERMISSIONS,
|
|
127
|
+
update: [],
|
|
128
|
+
})
|
|
129
|
+
@Index()
|
|
130
|
+
@TableColumn({
|
|
131
|
+
type: TableColumnType.ObjectID,
|
|
132
|
+
required: true,
|
|
133
|
+
canReadOnRelationQuery: true,
|
|
134
|
+
title: "Project ID",
|
|
135
|
+
description: "ID of the Project this resource belongs to.",
|
|
136
|
+
})
|
|
137
|
+
@Column({
|
|
138
|
+
type: ColumnType.ObjectID,
|
|
139
|
+
nullable: false,
|
|
140
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
141
|
+
})
|
|
142
|
+
public projectId?: ObjectID = undefined;
|
|
143
|
+
|
|
144
|
+
@ColumnAccessControl({
|
|
145
|
+
create: [],
|
|
146
|
+
read: READ_PERMISSIONS,
|
|
147
|
+
update: [],
|
|
148
|
+
})
|
|
149
|
+
@TableColumn({
|
|
150
|
+
manyToOneRelationColumn: "dockerSwarmClusterId",
|
|
151
|
+
type: TableColumnType.Entity,
|
|
152
|
+
modelType: DockerSwarmCluster,
|
|
153
|
+
title: "Docker Swarm Cluster",
|
|
154
|
+
description: "Cluster this resource lives in.",
|
|
155
|
+
})
|
|
156
|
+
@ManyToOne(
|
|
157
|
+
() => {
|
|
158
|
+
return DockerSwarmCluster;
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
eager: false,
|
|
162
|
+
nullable: true,
|
|
163
|
+
onDelete: "CASCADE",
|
|
164
|
+
orphanedRowAction: "nullify",
|
|
165
|
+
},
|
|
166
|
+
)
|
|
167
|
+
@JoinColumn({ name: "dockerSwarmClusterId" })
|
|
168
|
+
public dockerSwarmCluster?: DockerSwarmCluster = undefined;
|
|
169
|
+
|
|
170
|
+
@ColumnAccessControl({
|
|
171
|
+
create: [],
|
|
172
|
+
read: READ_PERMISSIONS,
|
|
173
|
+
update: [],
|
|
174
|
+
})
|
|
175
|
+
@Index()
|
|
176
|
+
@TableColumn({
|
|
177
|
+
type: TableColumnType.ObjectID,
|
|
178
|
+
required: true,
|
|
179
|
+
canReadOnRelationQuery: true,
|
|
180
|
+
title: "Docker Swarm Cluster ID",
|
|
181
|
+
description: "ID of the Docker Swarm Cluster this resource lives in.",
|
|
182
|
+
})
|
|
183
|
+
@Column({
|
|
184
|
+
type: ColumnType.ObjectID,
|
|
185
|
+
nullable: false,
|
|
186
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
187
|
+
})
|
|
188
|
+
public dockerSwarmClusterId?: ObjectID = undefined;
|
|
189
|
+
|
|
190
|
+
@ColumnAccessControl({
|
|
191
|
+
create: [],
|
|
192
|
+
read: READ_PERMISSIONS,
|
|
193
|
+
update: [],
|
|
194
|
+
})
|
|
195
|
+
@TableColumn({
|
|
196
|
+
required: true,
|
|
197
|
+
type: TableColumnType.ShortText,
|
|
198
|
+
canReadOnRelationQuery: true,
|
|
199
|
+
title: "Kind",
|
|
200
|
+
description:
|
|
201
|
+
"Docker Swarm resource kind in singular PascalCase: Node, Service, Task, Stack, Network, Secret, Config or Volume.",
|
|
202
|
+
})
|
|
203
|
+
@Column({
|
|
204
|
+
nullable: false,
|
|
205
|
+
type: ColumnType.ShortText,
|
|
206
|
+
length: ColumnLength.ShortText,
|
|
207
|
+
})
|
|
208
|
+
public kind?: string = undefined;
|
|
209
|
+
|
|
210
|
+
@ColumnAccessControl({
|
|
211
|
+
create: [],
|
|
212
|
+
read: READ_PERMISSIONS,
|
|
213
|
+
update: [],
|
|
214
|
+
})
|
|
215
|
+
@TableColumn({
|
|
216
|
+
required: true,
|
|
217
|
+
type: TableColumnType.ShortText,
|
|
218
|
+
canReadOnRelationQuery: true,
|
|
219
|
+
title: "External ID",
|
|
220
|
+
description:
|
|
221
|
+
"Stable, collision-free id within a cluster (e.g. node/<id>, service/<id>, task/<id>, stack/<name>, network/<id>, volume/<name>@<nodeId>). Also the detail-route param.",
|
|
222
|
+
})
|
|
223
|
+
@Column({
|
|
224
|
+
nullable: false,
|
|
225
|
+
type: ColumnType.ShortText,
|
|
226
|
+
length: ColumnLength.ShortText,
|
|
227
|
+
})
|
|
228
|
+
public externalId?: string = undefined;
|
|
229
|
+
|
|
230
|
+
@ColumnAccessControl({
|
|
231
|
+
create: [],
|
|
232
|
+
read: READ_PERMISSIONS,
|
|
233
|
+
update: [],
|
|
234
|
+
})
|
|
235
|
+
@TableColumn({
|
|
236
|
+
required: false,
|
|
237
|
+
type: TableColumnType.ShortText,
|
|
238
|
+
canReadOnRelationQuery: true,
|
|
239
|
+
title: "Name",
|
|
240
|
+
description:
|
|
241
|
+
"Human-friendly name: node hostname, service name, task name (service.slot), stack name, network/secret/config/volume name.",
|
|
242
|
+
})
|
|
243
|
+
@Column({
|
|
244
|
+
nullable: true,
|
|
245
|
+
type: ColumnType.ShortText,
|
|
246
|
+
length: ColumnLength.ShortText,
|
|
247
|
+
})
|
|
248
|
+
public name?: string = undefined;
|
|
249
|
+
|
|
250
|
+
@ColumnAccessControl({
|
|
251
|
+
create: [],
|
|
252
|
+
read: READ_PERMISSIONS,
|
|
253
|
+
update: [],
|
|
254
|
+
})
|
|
255
|
+
@TableColumn({
|
|
256
|
+
required: false,
|
|
257
|
+
type: TableColumnType.ShortText,
|
|
258
|
+
canReadOnRelationQuery: true,
|
|
259
|
+
title: "State",
|
|
260
|
+
description:
|
|
261
|
+
"Latest state word for this kind — Node: ready/down; Task: new/assigned/preparing/running/complete/failed/shutdown/rejected/orphaned; Service/Stack: derived running/replica string; null for kinds without a state.",
|
|
262
|
+
})
|
|
263
|
+
@Column({
|
|
264
|
+
nullable: true,
|
|
265
|
+
type: ColumnType.ShortText,
|
|
266
|
+
length: ColumnLength.ShortText,
|
|
267
|
+
})
|
|
268
|
+
public state?: string = undefined;
|
|
269
|
+
|
|
270
|
+
@ColumnAccessControl({
|
|
271
|
+
create: [],
|
|
272
|
+
read: READ_PERMISSIONS,
|
|
273
|
+
update: [],
|
|
274
|
+
})
|
|
275
|
+
@TableColumn({
|
|
276
|
+
required: false,
|
|
277
|
+
type: TableColumnType.ShortText,
|
|
278
|
+
canReadOnRelationQuery: true,
|
|
279
|
+
title: "Role",
|
|
280
|
+
description: "Node role: manager or worker. Null for non-Node kinds.",
|
|
281
|
+
})
|
|
282
|
+
@Column({
|
|
283
|
+
nullable: true,
|
|
284
|
+
type: ColumnType.ShortText,
|
|
285
|
+
length: ColumnLength.ShortText,
|
|
286
|
+
})
|
|
287
|
+
public role?: string = undefined;
|
|
288
|
+
|
|
289
|
+
@ColumnAccessControl({
|
|
290
|
+
create: [],
|
|
291
|
+
read: READ_PERMISSIONS,
|
|
292
|
+
update: [],
|
|
293
|
+
})
|
|
294
|
+
@TableColumn({
|
|
295
|
+
required: false,
|
|
296
|
+
type: TableColumnType.ShortText,
|
|
297
|
+
canReadOnRelationQuery: true,
|
|
298
|
+
title: "Service Mode",
|
|
299
|
+
description:
|
|
300
|
+
"Service scheduling mode: replicated or global. Null for non-Service kinds.",
|
|
301
|
+
})
|
|
302
|
+
@Column({
|
|
303
|
+
nullable: true,
|
|
304
|
+
type: ColumnType.ShortText,
|
|
305
|
+
length: ColumnLength.ShortText,
|
|
306
|
+
})
|
|
307
|
+
public serviceMode?: string = undefined;
|
|
308
|
+
|
|
309
|
+
@ColumnAccessControl({
|
|
310
|
+
create: [],
|
|
311
|
+
read: READ_PERMISSIONS,
|
|
312
|
+
update: [],
|
|
313
|
+
})
|
|
314
|
+
@TableColumn({
|
|
315
|
+
required: false,
|
|
316
|
+
type: TableColumnType.Number,
|
|
317
|
+
canReadOnRelationQuery: true,
|
|
318
|
+
title: "Desired Replicas",
|
|
319
|
+
description:
|
|
320
|
+
"Desired task count for a replicated Service (null for global services and non-Service kinds).",
|
|
321
|
+
})
|
|
322
|
+
@Column({
|
|
323
|
+
nullable: true,
|
|
324
|
+
type: ColumnType.Number,
|
|
325
|
+
})
|
|
326
|
+
public desiredReplicas?: number = undefined;
|
|
327
|
+
|
|
328
|
+
@ColumnAccessControl({
|
|
329
|
+
create: [],
|
|
330
|
+
read: READ_PERMISSIONS,
|
|
331
|
+
update: [],
|
|
332
|
+
})
|
|
333
|
+
@TableColumn({
|
|
334
|
+
required: false,
|
|
335
|
+
type: TableColumnType.Number,
|
|
336
|
+
canReadOnRelationQuery: true,
|
|
337
|
+
title: "Running Replicas",
|
|
338
|
+
description:
|
|
339
|
+
"Count of running tasks for a Service. The numerator of the X/Y replicas badge.",
|
|
340
|
+
})
|
|
341
|
+
@Column({
|
|
342
|
+
nullable: true,
|
|
343
|
+
type: ColumnType.Number,
|
|
344
|
+
})
|
|
345
|
+
public runningReplicas?: number = undefined;
|
|
346
|
+
|
|
347
|
+
@ColumnAccessControl({
|
|
348
|
+
create: [],
|
|
349
|
+
read: READ_PERMISSIONS,
|
|
350
|
+
update: [],
|
|
351
|
+
})
|
|
352
|
+
@TableColumn({
|
|
353
|
+
required: false,
|
|
354
|
+
type: TableColumnType.LongText,
|
|
355
|
+
canReadOnRelationQuery: true,
|
|
356
|
+
title: "Image",
|
|
357
|
+
description:
|
|
358
|
+
"Container image reference for a Service or Task (e.g. nginx:1.27). Null for other kinds.",
|
|
359
|
+
})
|
|
360
|
+
@Column({
|
|
361
|
+
nullable: true,
|
|
362
|
+
type: ColumnType.LongText,
|
|
363
|
+
length: ColumnLength.LongText,
|
|
364
|
+
})
|
|
365
|
+
public image?: string = undefined;
|
|
366
|
+
|
|
367
|
+
@ColumnAccessControl({
|
|
368
|
+
create: [],
|
|
369
|
+
read: READ_PERMISSIONS,
|
|
370
|
+
update: [],
|
|
371
|
+
})
|
|
372
|
+
@TableColumn({
|
|
373
|
+
required: false,
|
|
374
|
+
type: TableColumnType.ShortText,
|
|
375
|
+
canReadOnRelationQuery: true,
|
|
376
|
+
title: "Stack Name",
|
|
377
|
+
description:
|
|
378
|
+
"The com.docker.stack.namespace this Service/Task/Stack belongs to (null for resources not deployed via a stack).",
|
|
379
|
+
})
|
|
380
|
+
@Column({
|
|
381
|
+
nullable: true,
|
|
382
|
+
type: ColumnType.ShortText,
|
|
383
|
+
length: ColumnLength.ShortText,
|
|
384
|
+
})
|
|
385
|
+
public stackName?: string = undefined;
|
|
386
|
+
|
|
387
|
+
@ColumnAccessControl({
|
|
388
|
+
create: [],
|
|
389
|
+
read: READ_PERMISSIONS,
|
|
390
|
+
update: [],
|
|
391
|
+
})
|
|
392
|
+
@TableColumn({
|
|
393
|
+
required: false,
|
|
394
|
+
type: TableColumnType.ShortText,
|
|
395
|
+
canReadOnRelationQuery: true,
|
|
396
|
+
title: "Service Name",
|
|
397
|
+
description:
|
|
398
|
+
"The parent service name for a Task (null for non-Task kinds).",
|
|
399
|
+
})
|
|
400
|
+
@Column({
|
|
401
|
+
nullable: true,
|
|
402
|
+
type: ColumnType.ShortText,
|
|
403
|
+
length: ColumnLength.ShortText,
|
|
404
|
+
})
|
|
405
|
+
public serviceName?: string = undefined;
|
|
406
|
+
|
|
407
|
+
@ColumnAccessControl({
|
|
408
|
+
create: [],
|
|
409
|
+
read: READ_PERMISSIONS,
|
|
410
|
+
update: [],
|
|
411
|
+
})
|
|
412
|
+
@TableColumn({
|
|
413
|
+
required: false,
|
|
414
|
+
type: TableColumnType.ShortText,
|
|
415
|
+
canReadOnRelationQuery: true,
|
|
416
|
+
title: "Node Hostname",
|
|
417
|
+
description:
|
|
418
|
+
"The swarm node a Task is scheduled on, or the node a Volume lives on. Null for kinds without a node placement.",
|
|
419
|
+
})
|
|
420
|
+
@Column({
|
|
421
|
+
nullable: true,
|
|
422
|
+
type: ColumnType.ShortText,
|
|
423
|
+
length: ColumnLength.ShortText,
|
|
424
|
+
})
|
|
425
|
+
public nodeHostname?: string = undefined;
|
|
426
|
+
|
|
427
|
+
@ColumnAccessControl({
|
|
428
|
+
create: [],
|
|
429
|
+
read: READ_PERMISSIONS,
|
|
430
|
+
update: [],
|
|
431
|
+
})
|
|
432
|
+
@TableColumn({
|
|
433
|
+
required: false,
|
|
434
|
+
type: TableColumnType.ShortText,
|
|
435
|
+
canReadOnRelationQuery: true,
|
|
436
|
+
title: "Driver",
|
|
437
|
+
description:
|
|
438
|
+
"Network or Volume driver (overlay / bridge / local / …). Null for other kinds.",
|
|
439
|
+
})
|
|
440
|
+
@Column({
|
|
441
|
+
nullable: true,
|
|
442
|
+
type: ColumnType.ShortText,
|
|
443
|
+
length: ColumnLength.ShortText,
|
|
444
|
+
})
|
|
445
|
+
public driver?: string = undefined;
|
|
446
|
+
|
|
447
|
+
@ColumnAccessControl({
|
|
448
|
+
create: [],
|
|
449
|
+
read: READ_PERMISSIONS,
|
|
450
|
+
update: [],
|
|
451
|
+
})
|
|
452
|
+
@TableColumn({
|
|
453
|
+
required: false,
|
|
454
|
+
type: TableColumnType.Boolean,
|
|
455
|
+
canReadOnRelationQuery: true,
|
|
456
|
+
title: "Is Ready",
|
|
457
|
+
description:
|
|
458
|
+
"True when this resource is in a healthy steady state — Node ready, Task running, Service fully converged (running == desired). Null for kinds without a readiness notion.",
|
|
459
|
+
})
|
|
460
|
+
@Column({
|
|
461
|
+
nullable: true,
|
|
462
|
+
type: ColumnType.Boolean,
|
|
463
|
+
})
|
|
464
|
+
public isReady?: boolean = undefined;
|
|
465
|
+
|
|
466
|
+
@ColumnAccessControl({
|
|
467
|
+
create: [],
|
|
468
|
+
read: READ_PERMISSIONS,
|
|
469
|
+
update: [],
|
|
470
|
+
})
|
|
471
|
+
@TableColumn({
|
|
472
|
+
required: false,
|
|
473
|
+
type: TableColumnType.JSON,
|
|
474
|
+
title: "Attributes",
|
|
475
|
+
description:
|
|
476
|
+
"Kind-specific extras the list/detail pages render but do not sort on: node availability/managerStatus/engineVersion/addr/isLeader, network scope/isIngress/isAttachable, volume mountpoint, task slot/containerId/message, secret/config createdAt, stack serviceCount, etc.",
|
|
477
|
+
})
|
|
478
|
+
@Column({
|
|
479
|
+
type: ColumnType.JSON,
|
|
480
|
+
nullable: true,
|
|
481
|
+
})
|
|
482
|
+
public attributes?: JSONObject = undefined;
|
|
483
|
+
|
|
484
|
+
@ColumnAccessControl({
|
|
485
|
+
create: [],
|
|
486
|
+
read: READ_PERMISSIONS,
|
|
487
|
+
update: [],
|
|
488
|
+
})
|
|
489
|
+
@TableColumn({
|
|
490
|
+
required: false,
|
|
491
|
+
type: TableColumnType.Number,
|
|
492
|
+
canReadOnRelationQuery: true,
|
|
493
|
+
title: "Latest CPU Percent",
|
|
494
|
+
description:
|
|
495
|
+
"Most recent CPU utilization percent for a Task (docker_stats container.cpu.utilization * 100), or the aggregate for a Service. Stored as decimal so sub-percent precision survives the round trip. Null until the first metric arrives.",
|
|
496
|
+
})
|
|
497
|
+
@Column({
|
|
498
|
+
nullable: true,
|
|
499
|
+
type: ColumnType.Decimal,
|
|
500
|
+
transformer: {
|
|
501
|
+
to: (value: number | null | undefined): number | null => {
|
|
502
|
+
if (value === null || value === undefined) {
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
return value;
|
|
506
|
+
},
|
|
507
|
+
from: (value: string | number | null | undefined): number | null => {
|
|
508
|
+
if (value === null || value === undefined) {
|
|
509
|
+
return null;
|
|
510
|
+
}
|
|
511
|
+
if (typeof value === "number") {
|
|
512
|
+
return value;
|
|
513
|
+
}
|
|
514
|
+
const parsed: number = parseFloat(value);
|
|
515
|
+
return isNaN(parsed) ? null : parsed;
|
|
516
|
+
},
|
|
517
|
+
},
|
|
518
|
+
})
|
|
519
|
+
public latestCpuPercent?: number = undefined;
|
|
520
|
+
|
|
521
|
+
@ColumnAccessControl({
|
|
522
|
+
create: [],
|
|
523
|
+
read: READ_PERMISSIONS,
|
|
524
|
+
update: [],
|
|
525
|
+
})
|
|
526
|
+
@TableColumn({
|
|
527
|
+
required: false,
|
|
528
|
+
type: TableColumnType.BigPositiveNumber,
|
|
529
|
+
canReadOnRelationQuery: true,
|
|
530
|
+
title: "Latest Memory Bytes",
|
|
531
|
+
description:
|
|
532
|
+
"Most recent memory usage (docker_stats container.memory.usage). Stored as bigint so values past 2 GiB don't overflow.",
|
|
533
|
+
})
|
|
534
|
+
@Column({
|
|
535
|
+
nullable: true,
|
|
536
|
+
type: ColumnType.BigPositiveNumber,
|
|
537
|
+
transformer: {
|
|
538
|
+
to: (value: number | null | undefined): string | null => {
|
|
539
|
+
if (value === null || value === undefined) {
|
|
540
|
+
return null;
|
|
541
|
+
}
|
|
542
|
+
return Math.trunc(value).toString();
|
|
543
|
+
},
|
|
544
|
+
from: (value: string | null | undefined): number | null => {
|
|
545
|
+
if (value === null || value === undefined) {
|
|
546
|
+
return null;
|
|
547
|
+
}
|
|
548
|
+
const parsed: number = parseInt(value, 10);
|
|
549
|
+
return isNaN(parsed) ? null : parsed;
|
|
550
|
+
},
|
|
551
|
+
},
|
|
552
|
+
})
|
|
553
|
+
public latestMemoryBytes?: number = undefined;
|
|
554
|
+
|
|
555
|
+
@ColumnAccessControl({
|
|
556
|
+
create: [],
|
|
557
|
+
read: READ_PERMISSIONS,
|
|
558
|
+
update: [],
|
|
559
|
+
})
|
|
560
|
+
@TableColumn({
|
|
561
|
+
required: false,
|
|
562
|
+
type: TableColumnType.BigPositiveNumber,
|
|
563
|
+
canReadOnRelationQuery: true,
|
|
564
|
+
title: "Max Memory Bytes",
|
|
565
|
+
description:
|
|
566
|
+
"Memory limit for this Task/Service (docker_stats container.memory.limit), the denominator for the memory usage bar. Null when unlimited.",
|
|
567
|
+
})
|
|
568
|
+
@Column({
|
|
569
|
+
nullable: true,
|
|
570
|
+
type: ColumnType.BigPositiveNumber,
|
|
571
|
+
transformer: {
|
|
572
|
+
to: (value: number | null | undefined): string | null => {
|
|
573
|
+
if (value === null || value === undefined) {
|
|
574
|
+
return null;
|
|
575
|
+
}
|
|
576
|
+
return Math.trunc(value).toString();
|
|
577
|
+
},
|
|
578
|
+
from: (value: string | null | undefined): number | null => {
|
|
579
|
+
if (value === null || value === undefined) {
|
|
580
|
+
return null;
|
|
581
|
+
}
|
|
582
|
+
const parsed: number = parseInt(value, 10);
|
|
583
|
+
return isNaN(parsed) ? null : parsed;
|
|
584
|
+
},
|
|
585
|
+
},
|
|
586
|
+
})
|
|
587
|
+
public maxMemoryBytes?: number = undefined;
|
|
588
|
+
|
|
589
|
+
@ColumnAccessControl({
|
|
590
|
+
create: [],
|
|
591
|
+
read: READ_PERMISSIONS,
|
|
592
|
+
update: [],
|
|
593
|
+
})
|
|
594
|
+
@TableColumn({
|
|
595
|
+
required: false,
|
|
596
|
+
type: TableColumnType.Number,
|
|
597
|
+
canReadOnRelationQuery: true,
|
|
598
|
+
title: "Latest Memory Percent",
|
|
599
|
+
description:
|
|
600
|
+
"Most recent memory usage as a percent of maxMemoryBytes. Stored as decimal — mirrors latestCpuPercent — so list views can sort/filter without dividing bigints client-side.",
|
|
601
|
+
})
|
|
602
|
+
@Column({
|
|
603
|
+
nullable: true,
|
|
604
|
+
type: ColumnType.Decimal,
|
|
605
|
+
transformer: {
|
|
606
|
+
to: (value: number | null | undefined): number | null => {
|
|
607
|
+
if (value === null || value === undefined) {
|
|
608
|
+
return null;
|
|
609
|
+
}
|
|
610
|
+
return value;
|
|
611
|
+
},
|
|
612
|
+
from: (value: string | number | null | undefined): number | null => {
|
|
613
|
+
if (value === null || value === undefined) {
|
|
614
|
+
return null;
|
|
615
|
+
}
|
|
616
|
+
if (typeof value === "number") {
|
|
617
|
+
return value;
|
|
618
|
+
}
|
|
619
|
+
const parsed: number = parseFloat(value);
|
|
620
|
+
return isNaN(parsed) ? null : parsed;
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
})
|
|
624
|
+
public latestMemoryPercent?: number = undefined;
|
|
625
|
+
|
|
626
|
+
@ColumnAccessControl({
|
|
627
|
+
create: [],
|
|
628
|
+
read: READ_PERMISSIONS,
|
|
629
|
+
update: [],
|
|
630
|
+
})
|
|
631
|
+
@TableColumn({
|
|
632
|
+
required: false,
|
|
633
|
+
type: TableColumnType.Date,
|
|
634
|
+
canReadOnRelationQuery: true,
|
|
635
|
+
title: "Metrics Updated At",
|
|
636
|
+
description:
|
|
637
|
+
"Observed timestamp of the latest metric point. Acts as the monotonic guard for metric updates and the cutoff for staleness rendering.",
|
|
638
|
+
})
|
|
639
|
+
@Column({
|
|
640
|
+
nullable: true,
|
|
641
|
+
type: ColumnType.Date,
|
|
642
|
+
})
|
|
643
|
+
public metricsUpdatedAt?: Date = undefined;
|
|
644
|
+
|
|
645
|
+
@ColumnAccessControl({
|
|
646
|
+
create: [],
|
|
647
|
+
read: READ_PERMISSIONS,
|
|
648
|
+
update: [],
|
|
649
|
+
})
|
|
650
|
+
@TableColumn({
|
|
651
|
+
required: true,
|
|
652
|
+
type: TableColumnType.Date,
|
|
653
|
+
canReadOnRelationQuery: true,
|
|
654
|
+
title: "Last Seen At",
|
|
655
|
+
description:
|
|
656
|
+
"Agent-observed timestamp of the most recent snapshot containing this resource. Also acts as the monotonic guard for upserts.",
|
|
657
|
+
})
|
|
658
|
+
@Column({
|
|
659
|
+
nullable: false,
|
|
660
|
+
type: ColumnType.Date,
|
|
661
|
+
})
|
|
662
|
+
public lastSeenAt?: Date = undefined;
|
|
663
|
+
|
|
664
|
+
@ColumnAccessControl({
|
|
665
|
+
create: [],
|
|
666
|
+
read: READ_PERMISSIONS,
|
|
667
|
+
update: [],
|
|
668
|
+
})
|
|
669
|
+
@TableColumn({
|
|
670
|
+
manyToOneRelationColumn: "createdByUserId",
|
|
671
|
+
type: TableColumnType.Entity,
|
|
672
|
+
modelType: User,
|
|
673
|
+
title: "Created By User",
|
|
674
|
+
description:
|
|
675
|
+
"Not user-facing; ingest writes as isRoot so this stays null in practice.",
|
|
676
|
+
})
|
|
677
|
+
@ManyToOne(
|
|
678
|
+
() => {
|
|
679
|
+
return User;
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
eager: false,
|
|
683
|
+
nullable: true,
|
|
684
|
+
onDelete: "SET NULL",
|
|
685
|
+
orphanedRowAction: "nullify",
|
|
686
|
+
},
|
|
687
|
+
)
|
|
688
|
+
@JoinColumn({ name: "createdByUserId" })
|
|
689
|
+
public createdByUser?: User = undefined;
|
|
690
|
+
|
|
691
|
+
@ColumnAccessControl({
|
|
692
|
+
create: [],
|
|
693
|
+
read: READ_PERMISSIONS,
|
|
694
|
+
update: [],
|
|
695
|
+
})
|
|
696
|
+
@TableColumn({
|
|
697
|
+
type: TableColumnType.ObjectID,
|
|
698
|
+
title: "Created By User ID",
|
|
699
|
+
description: "ID of the user who created this row.",
|
|
700
|
+
})
|
|
701
|
+
@Column({
|
|
702
|
+
type: ColumnType.ObjectID,
|
|
703
|
+
nullable: true,
|
|
704
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
705
|
+
})
|
|
706
|
+
public createdByUserId?: ObjectID = undefined;
|
|
707
|
+
|
|
708
|
+
@ColumnAccessControl({
|
|
709
|
+
create: [],
|
|
710
|
+
read: READ_PERMISSIONS,
|
|
711
|
+
update: [],
|
|
712
|
+
})
|
|
713
|
+
@TableColumn({
|
|
714
|
+
manyToOneRelationColumn: "deletedByUserId",
|
|
715
|
+
type: TableColumnType.Entity,
|
|
716
|
+
modelType: User,
|
|
717
|
+
title: "Deleted By User",
|
|
718
|
+
description: "Relation to the user who deleted this row.",
|
|
719
|
+
})
|
|
720
|
+
@ManyToOne(
|
|
721
|
+
() => {
|
|
722
|
+
return User;
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
eager: false,
|
|
726
|
+
nullable: true,
|
|
727
|
+
onDelete: "SET NULL",
|
|
728
|
+
orphanedRowAction: "nullify",
|
|
729
|
+
},
|
|
730
|
+
)
|
|
731
|
+
@JoinColumn({ name: "deletedByUserId" })
|
|
732
|
+
public deletedByUser?: User = undefined;
|
|
733
|
+
|
|
734
|
+
@ColumnAccessControl({
|
|
735
|
+
create: [],
|
|
736
|
+
read: READ_PERMISSIONS,
|
|
737
|
+
update: [],
|
|
738
|
+
})
|
|
739
|
+
@TableColumn({
|
|
740
|
+
type: TableColumnType.ObjectID,
|
|
741
|
+
title: "Deleted By User ID",
|
|
742
|
+
description: "ID of the user who deleted this row.",
|
|
743
|
+
})
|
|
744
|
+
@Column({
|
|
745
|
+
type: ColumnType.ObjectID,
|
|
746
|
+
nullable: true,
|
|
747
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
748
|
+
})
|
|
749
|
+
public deletedByUserId?: ObjectID = undefined;
|
|
750
|
+
}
|