@oneuptime/common 14.0.3 → 14.0.5
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 +55 -0
- package/Models/DatabaseModels/DatabaseServer.ts +1650 -0
- package/Models/DatabaseModels/DatabaseServerEndpoint.ts +540 -0
- package/Models/DatabaseModels/DatabaseServerFeed.ts +625 -0
- package/Models/DatabaseModels/DatabaseServerLabelRule.ts +514 -0
- package/Models/DatabaseModels/DatabaseServerOwnerRule.ts +596 -0
- package/Models/DatabaseModels/DatabaseServerOwnerTeam.ts +491 -0
- package/Models/DatabaseModels/DatabaseServerOwnerUser.ts +490 -0
- package/Models/DatabaseModels/Incident.ts +55 -0
- package/Models/DatabaseModels/Index.ts +16 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +26 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Models/DatabaseModels/UserProjectSsoConsent.ts +146 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.ts +673 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.ts +51 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Middleware/MultipartFormData.ts +1 -1
- package/Server/Middleware/TelemetryIngest.ts +15 -8
- package/Server/Services/AlertReminderRuleService.ts +100 -24
- package/Server/Services/DatabaseServerEndpointService.ts +895 -0
- package/Server/Services/DatabaseServerFeedService.ts +128 -0
- package/Server/Services/DatabaseServerLabelRuleEngineService.ts +340 -0
- package/Server/Services/DatabaseServerLabelRuleService.ts +14 -0
- package/Server/Services/DatabaseServerOwnerRuleEngineService.ts +425 -0
- package/Server/Services/DatabaseServerOwnerRuleService.ts +14 -0
- package/Server/Services/DatabaseServerOwnerTeamService.ts +180 -0
- package/Server/Services/DatabaseServerOwnerUserService.ts +173 -0
- package/Server/Services/DatabaseServerService.ts +4546 -0
- package/Server/Services/DatabaseService.ts +14 -8
- package/Server/Services/DockerResourceService.ts +43 -2
- package/Server/Services/IncidentReminderRuleService.ts +103 -23
- package/Server/Services/Index.ts +16 -0
- package/Server/Services/InventoryItemService.ts +113 -5
- package/Server/Services/IoTDeviceService.ts +145 -37
- package/Server/Services/OpenTelemetryIngestService.ts +19 -0
- package/Server/Services/PodmanResourceService.ts +43 -2
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +107 -23
- package/Server/Services/ServiceService.ts +1 -1
- package/Server/Services/TelemetryUsageBillingService.ts +29 -2
- package/Server/Services/UserProjectSsoConsentService.ts +74 -0
- package/Server/Services/UserService.ts +14 -1
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +18 -0
- package/Server/Types/Database/QueryHelper.ts +30 -1
- package/Server/Utils/AI/Toolbox/ResourceTools.ts +69 -1
- package/Server/Utils/Database/AffectedResourceRelations.ts +6 -0
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +188 -6
- package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +2262 -755
- package/Server/Utils/Monitor/MonitorIncident.ts +28 -1
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +268 -6
- package/Server/Utils/Monitor/MonitorResource.ts +47 -11
- package/Server/Utils/Monitor/MonitorResourceContext.ts +1 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +239 -21
- package/Server/Utils/Monitor/PerSeriesResolutionRootCause.ts +43 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +291 -0
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +111 -12
- package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +25 -0
- package/Server/Utils/StartServer.ts +26 -6
- package/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.ts +2 -0
- package/Server/Utils/Telemetry/DatabaseEndpointDiscovery.ts +688 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +5 -1
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +18 -1
- package/Server/Utils/Telemetry/ResourceEntityFilter.ts +175 -12
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +12 -0
- package/Server/Utils/Telemetry/ServiceDependencyDiscovery.ts +606 -36
- package/Server/Utils/Telemetry/Telemetry.ts +16 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -22
- package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +16 -10
- package/Tests/App/Accounts/SignedInRedirect.test.tsx +241 -0
- package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +221 -4
- package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +42 -0
- package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +100 -0
- package/Tests/App/Dashboard/AffectedResourcesPicker.test.tsx +86 -0
- package/Tests/App/Dashboard/AffectedResourcesPickerHiddenTypes.test.tsx +2 -0
- package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +19 -0
- package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +14 -0
- package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +26 -1
- package/Tests/App/Dashboard/DashboardAppSsoError.test.tsx +501 -0
- package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +64 -1
- package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +178 -18
- package/Tests/App/Dashboard/DashboardMasterPageSsoRedirect.test.tsx +444 -0
- package/Tests/App/Dashboard/DashboardNavBarForeignHiddenRule.test.tsx +573 -0
- package/Tests/App/Dashboard/DatabaseChartAxes.test.tsx +431 -0
- package/Tests/App/Dashboard/DatabaseContainerDetailBadge.test.tsx +249 -0
- package/Tests/App/Dashboard/DatabaseDashboardE2EFixes.test.ts +681 -0
- package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +1801 -0
- package/Tests/App/Dashboard/DatabaseFleetSummaryRefresh.test.tsx +280 -0
- package/Tests/App/Dashboard/DatabaseFormHelpers.test.tsx +321 -0
- package/Tests/App/Dashboard/DatabaseMetricMonitorLink.test.tsx +795 -0
- package/Tests/App/Dashboard/DatabaseOverviewHeader.test.tsx +580 -0
- package/Tests/App/Dashboard/DatabaseRecommendationsEngineMetrics.test.ts +270 -0
- package/Tests/App/Dashboard/DatabaseServerComponents.test.tsx +1486 -0
- package/Tests/App/Dashboard/DatabaseServerEngineMetricsFilter.test.ts +223 -0
- package/Tests/App/Dashboard/DatabaseServerPresentation.test.ts +435 -0
- package/Tests/App/Dashboard/DatabaseServerSummary.test.ts +186 -0
- package/Tests/App/Dashboard/DatabaseServerTelemetryQueries.test.ts +1553 -0
- package/Tests/App/Dashboard/DatabaseTableTruncation.test.tsx +326 -0
- package/Tests/App/Dashboard/DatabaseTelemetryScope.test.ts +512 -0
- package/Tests/App/Dashboard/DatabaseTelemetryTabs.test.tsx +774 -0
- package/Tests/App/Dashboard/DatabaseViewLayout.test.tsx +233 -0
- package/Tests/App/Dashboard/DatabaseWorkloadBadge.test.tsx +972 -0
- package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +5 -0
- package/Tests/App/Dashboard/DiscoveryReviewUnnamedHostHint.test.tsx +1061 -0
- package/Tests/App/Dashboard/EventOverlayScope.test.ts +147 -0
- package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +1 -0
- package/Tests/App/Dashboard/LogsResourceFacetChips.test.tsx +1 -0
- package/Tests/App/Dashboard/MetricsViewerDrillDown.test.tsx +310 -0
- package/Tests/App/Dashboard/MetricsViewerEntityScopedRows.test.tsx +495 -0
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +132 -1
- package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +5 -0
- package/Tests/App/Dashboard/ProductOrientation.test.tsx +4 -3
- package/Tests/App/Dashboard/RecommendationsLoadedContext.test.tsx +349 -0
- package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +62 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
- package/Tests/App/Dashboard/ResourceFeedPagesFilterSort.test.tsx +14 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +2 -0
- package/Tests/App/Dashboard/ServiceMapDatabaseLink.test.tsx +1085 -0
- package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +10 -0
- package/Tests/App/Dashboard/TracesResourceFacets.test.tsx +2 -1
- package/Tests/App/StatusPage/StatusPageHeaderForeignHiddenRule.test.tsx +284 -0
- package/Tests/ClassStrings.ts +178 -0
- package/Tests/Fixtures/MobilePasskeyUser.json +1 -2
- package/Tests/ForeignHiddenRuleGuard.ts +2152 -0
- package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +2250 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +24 -5
- package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
- package/Tests/RenderedMarkup.ts +518 -0
- package/Tests/ResponsiveVisibility.test.ts +490 -4
- package/Tests/ResponsiveVisibility.ts +505 -52
- package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
- package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +541 -0
- package/Tests/Server/Infrastructure/Postgres/AddUserProjectSsoConsentMigration.test.ts +234 -0
- package/Tests/Server/Services/ContainerSnapshotUpsertPostgres.test.ts +319 -0
- package/Tests/Server/Services/CrossProjectRelationWriteGuard.test.ts +13 -0
- package/Tests/Server/Services/DatabaseServerEndpointService.test.ts +2033 -0
- package/Tests/Server/Services/DatabaseServerFeedAndOwnerServices.test.ts +529 -0
- package/Tests/Server/Services/DatabaseServerLifecycle.test.ts +3302 -0
- package/Tests/Server/Services/DatabaseServerRegistries.test.ts +603 -0
- package/Tests/Server/Services/DatabaseServerRuleEngines.test.ts +754 -0
- package/Tests/Server/Services/DatabaseServerService.test.ts +3558 -0
- package/Tests/Server/Services/DatabaseServerSqlPostgres.test.ts +2045 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedPostgres.test.ts +362 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedReply.test.ts +210 -0
- package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +18 -0
- package/Tests/Server/Services/IncidentAlertSloLinkSurvivesEdit.test.ts +2 -0
- package/Tests/Server/Services/IncomingCallPolicyEscalationRuleTarget.test.ts +225 -0
- package/Tests/Server/Services/InventoryItemDisplayName.test.ts +280 -2
- package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +8 -2
- package/Tests/Server/Services/IoTDeviceLatestMetricsPostgres.test.ts +689 -0
- package/Tests/Server/Services/IoTDeviceService.test.ts +379 -0
- package/Tests/Server/Services/LatestMetricsValuesShape.test.ts +360 -0
- package/Tests/Server/Services/LlmModelPriceService.test.ts +402 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
- package/Tests/Server/Services/OwnerRowUniqueness.test.ts +61 -9
- package/Tests/Server/Services/ReminderRuleLookupPostgres.test.ts +2250 -0
- package/Tests/Server/Services/ReminderRuleRefreshOpenSubjectsPaging.test.ts +653 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +68 -20
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
- package/Tests/Server/Services/TelemetryResourceFacetCounting.test.ts +9 -0
- package/Tests/Server/Services/UserProjectSsoConsentPostgres.test.ts +153 -0
- package/Tests/Server/Services/UserProjectSsoConsentService.test.ts +192 -0
- package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +71 -0
- package/Tests/Server/Services/UserSignupIdTakeoverPostgres.test.ts +238 -0
- package/Tests/Server/Services/WorkspaceNotificationSummaryHelpers.test.ts +592 -0
- package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +3 -0
- package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +1 -0
- package/Tests/Server/Types/Database/FeedEventTypeFilterQuery.test.ts +11 -0
- package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +8 -0
- package/Tests/Server/Types/Database/QueryHelperBooleanForCriteriaBackedRule.test.ts +1094 -0
- package/Tests/Server/Utils/AI/ResourceTools.test.ts +134 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +41 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +279 -9
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaDisplayContext.test.ts +933 -0
- package/Tests/Server/Utils/Monitor/DatabaseMaintenanceSuppression.test.ts +582 -0
- package/Tests/Server/Utils/Monitor/DatabaseServerMonitorLinking.test.ts +753 -0
- package/Tests/Server/Utils/Monitor/MonitorActionTimestamps.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertCriteriaReferences.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +119 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +60 -25
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorAffectedResourceEdgeCases.test.ts +1719 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesAffectedResources.test.ts +1447 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesRatioEmail.test.ts +352 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformMetricUnits.test.ts +717 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformRawScan.test.ts +2125 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformSeriesAffectedResources.test.ts +1288 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentCriteriaReferences.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentMemberRoleMembership.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +88 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +205 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +62 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceDatabaseMaintenance.test.ts +803 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +133 -3
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +472 -1
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +236 -2
- package/Tests/Server/Utils/SeriesResourceLabels.test.ts +70 -0
- package/Tests/Server/Utils/StartServerProtobufContentType.test.ts +54 -0
- package/Tests/Server/Utils/Telemetry/DatabaseEndpointDiscovery.test.ts +1895 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +7 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractorSeverityGate.test.ts +90 -0
- package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +570 -0
- package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +97 -2
- package/Tests/Server/Utils/Telemetry/ServiceDependencyDiscovery.test.ts +1337 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +295 -0
- package/Tests/Types/AI/AIResourceContext.test.ts +30 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerClassifier.test.ts +3644 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommand.test.ts +340 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommandCorpus.ts +826 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommandPostgres.test.ts +150 -0
- package/Tests/Types/DatabaseServer/DatabaseEndpoint.test.ts +2657 -0
- package/Tests/Types/DatabaseServer/DatabaseServerDiscoverySource.test.ts +64 -0
- package/Tests/Types/DatabaseServer/DatabaseServerEntityKeys.test.ts +952 -0
- package/Tests/Types/DatabaseServer/DatabaseServerMetricCatalog.test.ts +1161 -0
- package/Tests/Types/DatabaseServer/DatabaseSystem.test.ts +1514 -0
- package/Tests/Types/DatabaseServer/DatabaseTelemetryResolver.test.ts +1558 -0
- package/Tests/Types/Monitor/CephAlertTemplates.test.ts +255 -6
- package/Tests/Types/Monitor/DatabaseAlertTemplates.test.ts +2254 -0
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +298 -0
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +271 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +253 -9
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +13 -5
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +4 -2
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +111 -2
- package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +61 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +114 -0
- package/Tests/Types/Monitor/Utils/KubernetesAgentEmittedMetrics.ts +181 -0
- package/Tests/Types/NetworkDevice/DiscoveredHostNamingStatus.test.ts +401 -0
- package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +4 -1
- package/Tests/Types/Telemetry/ResourceFacetCatalog.test.ts +24 -2
- package/Tests/UI/Components/Card.test.tsx +93 -2
- package/Tests/UI/Components/FeedOptions.test.ts +6 -0
- package/Tests/UI/Components/FeedOptionsButton.test.tsx +8 -1
- package/Tests/UI/Components/ForeignHiddenRuleResilience.test.tsx +1147 -0
- package/Tests/UI/Components/HeaderRightRail.test.tsx +41 -1
- package/Tests/UI/Components/LogsEntityNames.test.ts +16 -1
- package/Tests/UI/Components/LogsFacetSidebarHiddenFacets.test.tsx +7 -3
- package/Tests/UI/Components/ResourceFacetConfigs.test.ts +2 -1
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
- package/Tests/UI/Components/SrOnlyForeignRule.test.tsx +994 -0
- package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +34 -1
- package/Tests/UI/Components/TelemetryFacetSidebarHiddenFacets.test.tsx +4 -1
- package/Tests/UI/ForeignHiddenRuleGuard.test.ts +1951 -0
- package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +19 -1
- package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +19 -1
- package/Tests/UI/TailwindPlayCdnForeignHiddenRule.test.ts +1005 -0
- package/Tests/UI/ThemeGroupHoverReveal.test.ts +847 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +70 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +21 -0
- package/Tests/UI/Utils/ModelAPISsoRedirect.test.ts +127 -0
- package/Tests/UI/Utils/Navigation.test.ts +102 -0
- package/Tests/UI/Utils/Telemetry/TelemetryEntityNames.test.ts +23 -0
- package/Tests/Utils/LabelRuleImportExport.test.ts +5 -0
- package/Tests/Utils/MetricUnitUtil.test.ts +227 -2
- package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +288 -2
- package/Tests/Utils/Monitor/PlatformResourceIdentityAndUnits.test.ts +1559 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.test.ts +2546 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +315 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +336 -1
- package/Tests/Utils/NetworkDiscovery/NetbiosNameUtil.test.ts +244 -0
- package/Tests/Utils/ValueFormatter.test.ts +50 -0
- package/Tests/tsconfig.json +16 -0
- package/Types/AI/AIResourceContext.ts +7 -0
- package/Types/Dashboard/DashboardTemplates.ts +2 -1
- package/Types/DatabaseServer/DatabaseConnectionSpan.ts +77 -0
- package/Types/DatabaseServer/DatabaseContainerClassifier.ts +2068 -0
- package/Types/DatabaseServer/DatabaseContainerCommand.ts +801 -0
- package/Types/DatabaseServer/DatabaseEndpoint.ts +1943 -0
- package/Types/DatabaseServer/DatabaseServerDiscoverySource.ts +68 -0
- package/Types/DatabaseServer/DatabaseServerMetricCatalog.ts +966 -0
- package/Types/DatabaseServer/DatabaseSystem.ts +2124 -0
- package/Types/DatabaseServer/DatabaseTelemetryResolver.ts +555 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Monitor/CephAlertTemplates.ts +18 -0
- package/Types/Monitor/DatabaseAlertTemplates.ts +2020 -0
- package/Types/Monitor/KubernetesAlertTemplates.ts +64 -24
- package/Types/Monitor/KubernetesMetricCatalog.ts +118 -19
- package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +14 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +93 -10
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +109 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +36 -7
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +43 -2
- package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +41 -6
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +26 -0
- package/Types/NetworkDevice/DiscoveredHostNamingStatus.ts +147 -0
- package/Types/Permission.ts +267 -0
- package/Types/Probe/ProbeApiIngestResponse.ts +8 -0
- package/Types/Rules/RuleCriteriaFieldRegistry.ts +10 -0
- package/Types/Rules/RuleRun.ts +12 -0
- package/Types/Telemetry/EntityType.ts +23 -0
- package/Types/Telemetry/ResourceFacetCatalog.ts +14 -0
- package/Types/Telemetry/ServiceType.ts +8 -0
- package/UI/Components/Banner/Banner.tsx +1 -1
- package/UI/Components/Card/Card.tsx +1 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +2 -2
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +1 -1
- package/UI/Components/Date/StartAndEndDate.tsx +5 -5
- package/UI/Components/Diagram/HorizontalStepChain.tsx +1 -1
- package/UI/Components/Feed/FeedOptionsButton.tsx +1 -1
- package/UI/Components/Forms/BasicForm.tsx +1 -1
- package/UI/Components/Header/Header.tsx +1 -1
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -1
- package/UI/Components/HeaderAlert/HeaderAlert.tsx +1 -1
- package/UI/Components/LogsViewer/components/FacetValueRow.tsx +1 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +1 -1
- package/UI/Components/Modal/ModalFooter.tsx +1 -1
- package/UI/Components/ModelDetail/CardModelDetail.tsx +2 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +4 -4
- package/UI/Components/Navbar/NavBar.tsx +9 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +2 -2
- package/UI/Components/Page/Page.tsx +1 -1
- package/UI/Components/Pagination/Pagination.tsx +3 -3
- package/UI/Components/ProgressButtons/ProgressButtonItem.tsx +1 -1
- package/UI/Components/SideMenu/SideMenu.tsx +4 -1
- package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +4 -2
- package/UI/Components/StatusPage/ResourceList.tsx +6 -6
- package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +1 -1
- package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +1 -1
- package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +1 -1
- package/UI/Components/Workflow/ComponentsModal.tsx +2 -2
- package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
- package/UI/Styles/Theme.css +8 -1
- package/UI/Utils/Navigation.ts +89 -42
- package/UI/Utils/Telemetry/TelemetryEntityNames.ts +7 -0
- package/UI/Utils/TelemetryService.ts +4 -3
- package/Utils/LabelRuleImportExport.ts +2 -0
- package/Utils/MetricUnitUtil.ts +103 -11
- package/Utils/Monitor/MetricValueFormatter.ts +66 -13
- package/Utils/Monitor/PlatformMetricUnitUtil.ts +215 -0
- package/Utils/Monitor/PlatformResourceIdentity.ts +514 -0
- package/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.ts +425 -0
- package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +32 -0
- package/Utils/NetworkDiscovery/NetbiosNameUtil.ts +73 -0
- package/Utils/Telemetry/DatabaseServerEntityKeys.ts +275 -0
- package/Utils/Telemetry/EntityKey.ts +176 -0
- package/Utils/ValueFormatter.ts +16 -0
- package/build/dist/Models/DatabaseModels/Alert.js +54 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseServer.js +1683 -0
- package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js +559 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js +506 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js +505 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +54 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +16 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.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/Models/DatabaseModels/UserProjectSsoConsent.js +162 -0
- package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js +240 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MultipartFormData.js +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +15 -8
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +72 -23
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseServerEndpointService.js +694 -0
- package/build/dist/Server/Services/DatabaseServerEndpointService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerFeedService.js +110 -0
- package/build/dist/Server/Services/DatabaseServerFeedService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js +272 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleService.js +13 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js +340 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js +160 -0
- package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerUserService.js +153 -0
- package/build/dist/Server/Services/DatabaseServerOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerService.js +3272 -0
- package/build/dist/Server/Services/DatabaseServerService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseService.js +8 -4
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerResourceService.js +30 -3
- package/build/dist/Server/Services/DockerResourceService.js.map +1 -1
- package/build/dist/Server/Services/IncidentReminderRuleService.js +73 -23
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +16 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/InventoryItemService.js +88 -5
- package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
- package/build/dist/Server/Services/IoTDeviceService.js +111 -24
- package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +24 -9
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanResourceService.js +30 -3
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +75 -23
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +1 -1
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +23 -2
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/UserProjectSsoConsentService.js +79 -0
- package/build/dist/Server/Services/UserProjectSsoConsentService.js.map +1 -0
- package/build/dist/Server/Services/UserService.js +13 -1
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +18 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +26 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +46 -0
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -1
- package/build/dist/Server/Utils/Database/AffectedResourceRelations.js +6 -0
- package/build/dist/Server/Utils/Database/AffectedResourceRelations.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +134 -13
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1489 -524
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +196 -6
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +36 -9
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +175 -17
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js +29 -0
- package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +211 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +82 -10
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +25 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +20 -4
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js +2 -0
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js +442 -0
- package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +15 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +121 -5
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +12 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js +438 -36
- package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +12 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -18
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +16 -10
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -1
- package/build/dist/Types/AI/AIResourceContext.js +7 -0
- package/build/dist/Types/AI/AIResourceContext.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +2 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js +71 -0
- package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js +1462 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js +691 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js +1407 -0
- package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js +60 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js +804 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseSystem.js +1860 -0
- package/build/dist/Types/DatabaseServer/DatabaseSystem.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js +406 -0
- package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Monitor/CephAlertTemplates.js +18 -0
- package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseAlertTemplates.js +1518 -0
- package/build/dist/Types/Monitor/DatabaseAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +57 -24
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +104 -18
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +80 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +10 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +29 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +21 -6
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +25 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
- package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js +136 -0
- package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js.map +1 -0
- package/build/dist/Types/Permission.js +234 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +10 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
- package/build/dist/Types/Rules/RuleRun.js +4 -0
- package/build/dist/Types/Rules/RuleRun.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +23 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ResourceFacetCatalog.js +14 -0
- package/build/dist/Types/Telemetry/ResourceFacetCatalog.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +8 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Banner/Banner.js +1 -1
- package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
- package/build/dist/UI/Components/Card/Card.js +1 -1
- package/build/dist/UI/Components/Card/Card.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/Date/StartAndEndDate.js +5 -5
- package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
- package/build/dist/UI/Components/Diagram/HorizontalStepChain.js +1 -1
- package/build/dist/UI/Components/Diagram/HorizontalStepChain.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js +1 -1
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +2 -2
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +4 -4
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +9 -2
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/Page/Page.js +1 -1
- package/build/dist/UI/Components/Page/Page.js.map +1 -1
- package/build/dist/UI/Components/Pagination/Pagination.js +3 -3
- package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
- package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js +1 -1
- package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +4 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +3 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceList.js +6 -6
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +1 -1
- package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +2 -2
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +66 -33
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js +7 -0
- package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +3 -2
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/LabelRuleImportExport.js +2 -0
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/Utils/MetricUnitUtil.js +77 -13
- package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/MetricValueFormatter.js +58 -13
- package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -1
- package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js +161 -0
- package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/PlatformResourceIdentity.js +323 -0
- package/build/dist/Utils/Monitor/PlatformResourceIdentity.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js +270 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +23 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js +61 -0
- package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js.map +1 -1
- package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js +178 -0
- package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +133 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/ValueFormatter.js +15 -0
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.tests.json +7 -5
|
@@ -0,0 +1,1650 @@
|
|
|
1
|
+
import DockerHost from "./DockerHost";
|
|
2
|
+
import KubernetesCluster from "./KubernetesCluster";
|
|
3
|
+
import Label from "./Label";
|
|
4
|
+
import PodmanHost from "./PodmanHost";
|
|
5
|
+
import Project from "./Project";
|
|
6
|
+
import User from "./User";
|
|
7
|
+
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
8
|
+
import Route from "../../Types/API/Route";
|
|
9
|
+
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
10
|
+
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
11
|
+
import AccessControlColumn from "../../Types/Database/AccessControlColumn";
|
|
12
|
+
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
13
|
+
import ColumnType from "../../Types/Database/ColumnType";
|
|
14
|
+
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
15
|
+
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
16
|
+
import SlugifyColumn from "../../Types/Database/SlugifyColumn";
|
|
17
|
+
import TableColumn from "../../Types/Database/TableColumn";
|
|
18
|
+
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
19
|
+
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
20
|
+
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
21
|
+
import IconProp from "../../Types/Icon/IconProp";
|
|
22
|
+
import { JSONObject } from "../../Types/JSON";
|
|
23
|
+
import ObjectID from "../../Types/ObjectID";
|
|
24
|
+
import Permission from "../../Types/Permission";
|
|
25
|
+
import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
|
|
26
|
+
import {
|
|
27
|
+
Column,
|
|
28
|
+
Entity,
|
|
29
|
+
Index,
|
|
30
|
+
JoinColumn,
|
|
31
|
+
JoinTable,
|
|
32
|
+
ManyToMany,
|
|
33
|
+
ManyToOne,
|
|
34
|
+
} from "typeorm";
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* A database server a project runs or talks to - PostgreSQL, MySQL, Redis,
|
|
38
|
+
* MongoDB and the rest of the engines in Types/DatabaseServer/DatabaseSystem.
|
|
39
|
+
*
|
|
40
|
+
* Not called `Database`: DatabaseService is the base class of every service,
|
|
41
|
+
* and MonitorType.Database / EntityType.Database already exist. The display
|
|
42
|
+
* names are still "Database" / "Databases".
|
|
43
|
+
*
|
|
44
|
+
* Rows come from five discovery sources (discoverySource, first creator
|
|
45
|
+
* wins): OTel Collector database receivers at ingest, CLIENT spans of
|
|
46
|
+
* instrumented applications, database workloads on a monitored Kubernetes
|
|
47
|
+
* cluster, database containers on a monitored Docker / Podman host, and
|
|
48
|
+
* manual creation in the dashboard. Every non-manual path writes as root.
|
|
49
|
+
*
|
|
50
|
+
* Telemetry is selected by entity keys, never by a column here: the keys of
|
|
51
|
+
* the row's endpoints (DatabaseServerEndpoint, one owner per endpoint per
|
|
52
|
+
* project) plus the workload member keys in memberEntityKeys.
|
|
53
|
+
*
|
|
54
|
+
* COLUMN ACCESS: DatabaseService.create runs onBeforeCreate BEFORE the column
|
|
55
|
+
* permission check, so every column DatabaseServerService.onBeforeCreate sets
|
|
56
|
+
* during a manual (non-root) create - name, description, dbSystem,
|
|
57
|
+
* serverAddress, serverPort, databaseIdentifier, discoverySource, labels -
|
|
58
|
+
* carries create permission for the table's create roles, or a manual create
|
|
59
|
+
* is refused with "User is not allowed to Create on <column>". Columns only
|
|
60
|
+
* the discovery paths write are create: [] and update: [].
|
|
61
|
+
*/
|
|
62
|
+
@AccessControlColumn("labels")
|
|
63
|
+
@EnableDocumentation()
|
|
64
|
+
@TenantColumn("projectId")
|
|
65
|
+
@TableAccessControl({
|
|
66
|
+
create: [
|
|
67
|
+
Permission.ProjectOwner,
|
|
68
|
+
Permission.ProjectAdmin,
|
|
69
|
+
Permission.ProjectMember,
|
|
70
|
+
Permission.SettingsAdmin,
|
|
71
|
+
Permission.SettingsMember,
|
|
72
|
+
Permission.CreateDatabaseServer,
|
|
73
|
+
],
|
|
74
|
+
read: [
|
|
75
|
+
Permission.ProjectOwner,
|
|
76
|
+
Permission.ProjectAdmin,
|
|
77
|
+
Permission.ProjectMember,
|
|
78
|
+
Permission.Viewer,
|
|
79
|
+
Permission.SettingsAdmin,
|
|
80
|
+
Permission.SettingsMember,
|
|
81
|
+
Permission.SettingsViewer,
|
|
82
|
+
Permission.ReadDatabaseServer,
|
|
83
|
+
],
|
|
84
|
+
delete: [
|
|
85
|
+
Permission.ProjectOwner,
|
|
86
|
+
Permission.ProjectAdmin,
|
|
87
|
+
Permission.ProjectMember,
|
|
88
|
+
Permission.SettingsAdmin,
|
|
89
|
+
Permission.SettingsMember,
|
|
90
|
+
Permission.DeleteDatabaseServer,
|
|
91
|
+
],
|
|
92
|
+
update: [
|
|
93
|
+
Permission.ProjectOwner,
|
|
94
|
+
Permission.ProjectAdmin,
|
|
95
|
+
Permission.ProjectMember,
|
|
96
|
+
Permission.SettingsAdmin,
|
|
97
|
+
Permission.SettingsMember,
|
|
98
|
+
Permission.EditDatabaseServer,
|
|
99
|
+
],
|
|
100
|
+
})
|
|
101
|
+
@CrudApiEndpoint(new Route("/database-server"))
|
|
102
|
+
@SlugifyColumn("name", "slug")
|
|
103
|
+
/*
|
|
104
|
+
* DB-level identity guard. Every discovery path find-or-creates by
|
|
105
|
+
* databaseIdentifier ("<family>|<endpoint>" or the workload form - the
|
|
106
|
+
* engine FAMILY, so a fork such as MariaDB keys as mysql), and several
|
|
107
|
+
* ingest pods / worker runs can race on the same database - only this index
|
|
108
|
+
* collapses them into one row. The display name is deliberately NOT unique:
|
|
109
|
+
* two engines can legitimately share a host name.
|
|
110
|
+
*/
|
|
111
|
+
@Index(["projectId", "databaseIdentifier"], { unique: true })
|
|
112
|
+
@Index(["projectId", "isArchived"])
|
|
113
|
+
@Index(["projectId", "dbSystem"])
|
|
114
|
+
/*
|
|
115
|
+
* Named for the same reason as IDX_ceph_cluster_slug: TypeORM's schema
|
|
116
|
+
* builder matches database indexes to entity metadata by name and drops every
|
|
117
|
+
* one it cannot find, so a partial unique index must be declared here, by
|
|
118
|
+
* name, to survive the next generated migration.
|
|
119
|
+
*/
|
|
120
|
+
@Index("IDX_database_server_slug", ["slug"], {
|
|
121
|
+
unique: true,
|
|
122
|
+
where: '"deletedAt" IS NULL',
|
|
123
|
+
})
|
|
124
|
+
/*
|
|
125
|
+
* One row per discovered workload (Kubernetes StatefulSet / Deployment /
|
|
126
|
+
* operator cluster, Docker / Podman container group). Partial so the many
|
|
127
|
+
* endpoint-only rows (NULL workloadIdentifier) never collide, and so an
|
|
128
|
+
* adopted row keeps being found by its workload after the discovery worker
|
|
129
|
+
* sets the column on it.
|
|
130
|
+
*/
|
|
131
|
+
@Index("IDX_database_server_workload", ["projectId", "workloadIdentifier"], {
|
|
132
|
+
unique: true,
|
|
133
|
+
where: '"workloadIdentifier" IS NOT NULL AND "deletedAt" IS NULL',
|
|
134
|
+
})
|
|
135
|
+
@TableMetadata({
|
|
136
|
+
tableName: "DatabaseServer",
|
|
137
|
+
singularName: "Database",
|
|
138
|
+
pluralName: "Databases",
|
|
139
|
+
icon: IconProp.Database,
|
|
140
|
+
tableDescription:
|
|
141
|
+
"Database servers this project runs or talks to. Each database is discovered from OpenTelemetry Collector database receivers, from database calls in application traces, from database workloads on monitored Kubernetes clusters and Docker / Podman hosts, or added manually.",
|
|
142
|
+
})
|
|
143
|
+
@Entity({
|
|
144
|
+
name: "DatabaseServer",
|
|
145
|
+
})
|
|
146
|
+
export default class DatabaseServer extends BaseModel {
|
|
147
|
+
@ColumnAccessControl({
|
|
148
|
+
create: [
|
|
149
|
+
Permission.ProjectOwner,
|
|
150
|
+
Permission.ProjectAdmin,
|
|
151
|
+
Permission.ProjectMember,
|
|
152
|
+
Permission.SettingsAdmin,
|
|
153
|
+
Permission.SettingsMember,
|
|
154
|
+
Permission.CreateDatabaseServer,
|
|
155
|
+
],
|
|
156
|
+
read: [
|
|
157
|
+
Permission.ProjectOwner,
|
|
158
|
+
Permission.ProjectAdmin,
|
|
159
|
+
Permission.ProjectMember,
|
|
160
|
+
Permission.Viewer,
|
|
161
|
+
Permission.SettingsAdmin,
|
|
162
|
+
Permission.SettingsMember,
|
|
163
|
+
Permission.SettingsViewer,
|
|
164
|
+
Permission.ReadDatabaseServer,
|
|
165
|
+
],
|
|
166
|
+
update: [],
|
|
167
|
+
})
|
|
168
|
+
@TableColumn({
|
|
169
|
+
manyToOneRelationColumn: "projectId",
|
|
170
|
+
type: TableColumnType.Entity,
|
|
171
|
+
modelType: Project,
|
|
172
|
+
title: "Project",
|
|
173
|
+
description: "Relation to Project Resource in which this object belongs",
|
|
174
|
+
})
|
|
175
|
+
@ManyToOne(
|
|
176
|
+
() => {
|
|
177
|
+
return Project;
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
eager: false,
|
|
181
|
+
nullable: true,
|
|
182
|
+
onDelete: "CASCADE",
|
|
183
|
+
orphanedRowAction: "nullify",
|
|
184
|
+
},
|
|
185
|
+
)
|
|
186
|
+
@JoinColumn({ name: "projectId" })
|
|
187
|
+
public project?: Project = undefined;
|
|
188
|
+
|
|
189
|
+
@ColumnAccessControl({
|
|
190
|
+
create: [
|
|
191
|
+
Permission.ProjectOwner,
|
|
192
|
+
Permission.ProjectAdmin,
|
|
193
|
+
Permission.ProjectMember,
|
|
194
|
+
Permission.SettingsAdmin,
|
|
195
|
+
Permission.SettingsMember,
|
|
196
|
+
Permission.CreateDatabaseServer,
|
|
197
|
+
],
|
|
198
|
+
read: [
|
|
199
|
+
Permission.ProjectOwner,
|
|
200
|
+
Permission.ProjectAdmin,
|
|
201
|
+
Permission.ProjectMember,
|
|
202
|
+
Permission.Viewer,
|
|
203
|
+
Permission.SettingsAdmin,
|
|
204
|
+
Permission.SettingsMember,
|
|
205
|
+
Permission.SettingsViewer,
|
|
206
|
+
Permission.ReadDatabaseServer,
|
|
207
|
+
],
|
|
208
|
+
update: [],
|
|
209
|
+
})
|
|
210
|
+
@Index()
|
|
211
|
+
@TableColumn({
|
|
212
|
+
type: TableColumnType.ObjectID,
|
|
213
|
+
required: true,
|
|
214
|
+
canReadOnRelationQuery: true,
|
|
215
|
+
title: "Project ID",
|
|
216
|
+
description: "ID of your OneUptime Project in which this object belongs",
|
|
217
|
+
})
|
|
218
|
+
@Column({
|
|
219
|
+
type: ColumnType.ObjectID,
|
|
220
|
+
nullable: false,
|
|
221
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
222
|
+
})
|
|
223
|
+
public projectId?: ObjectID = undefined;
|
|
224
|
+
|
|
225
|
+
/*
|
|
226
|
+
* Display name only - identity lives in databaseIdentifier. Discovered rows are
|
|
227
|
+
* named "<Engine> <host:port>" (buildDatabaseServerDisplayName), so a label or
|
|
228
|
+
* owner rule name pattern such as ^PostgreSQL expresses "every PostgreSQL
|
|
229
|
+
* database".
|
|
230
|
+
*/
|
|
231
|
+
@ColumnAccessControl({
|
|
232
|
+
create: [
|
|
233
|
+
Permission.ProjectOwner,
|
|
234
|
+
Permission.ProjectAdmin,
|
|
235
|
+
Permission.ProjectMember,
|
|
236
|
+
Permission.SettingsAdmin,
|
|
237
|
+
Permission.SettingsMember,
|
|
238
|
+
Permission.CreateDatabaseServer,
|
|
239
|
+
],
|
|
240
|
+
read: [
|
|
241
|
+
Permission.ProjectOwner,
|
|
242
|
+
Permission.ProjectAdmin,
|
|
243
|
+
Permission.ProjectMember,
|
|
244
|
+
Permission.Viewer,
|
|
245
|
+
Permission.SettingsAdmin,
|
|
246
|
+
Permission.SettingsMember,
|
|
247
|
+
Permission.SettingsViewer,
|
|
248
|
+
Permission.ReadDatabaseServer,
|
|
249
|
+
],
|
|
250
|
+
update: [
|
|
251
|
+
Permission.ProjectOwner,
|
|
252
|
+
Permission.ProjectAdmin,
|
|
253
|
+
Permission.ProjectMember,
|
|
254
|
+
Permission.SettingsAdmin,
|
|
255
|
+
Permission.SettingsMember,
|
|
256
|
+
Permission.EditDatabaseServer,
|
|
257
|
+
],
|
|
258
|
+
})
|
|
259
|
+
@Index()
|
|
260
|
+
@TableColumn({
|
|
261
|
+
required: true,
|
|
262
|
+
type: TableColumnType.ShortText,
|
|
263
|
+
canReadOnRelationQuery: true,
|
|
264
|
+
title: "Name",
|
|
265
|
+
description:
|
|
266
|
+
"Name of this database. Discovered databases are named after their engine and endpoint, e.g. PostgreSQL orders-db.internal:5432. Not unique - rename freely.",
|
|
267
|
+
example: "PostgreSQL orders-db.internal:5432",
|
|
268
|
+
})
|
|
269
|
+
@Column({
|
|
270
|
+
nullable: false,
|
|
271
|
+
type: ColumnType.ShortText,
|
|
272
|
+
length: ColumnLength.ShortText,
|
|
273
|
+
})
|
|
274
|
+
public name?: string = undefined;
|
|
275
|
+
|
|
276
|
+
@ColumnAccessControl({
|
|
277
|
+
create: [],
|
|
278
|
+
read: [
|
|
279
|
+
Permission.ProjectOwner,
|
|
280
|
+
Permission.ProjectAdmin,
|
|
281
|
+
Permission.ProjectMember,
|
|
282
|
+
Permission.Viewer,
|
|
283
|
+
Permission.SettingsAdmin,
|
|
284
|
+
Permission.SettingsMember,
|
|
285
|
+
Permission.SettingsViewer,
|
|
286
|
+
Permission.ReadDatabaseServer,
|
|
287
|
+
],
|
|
288
|
+
update: [],
|
|
289
|
+
})
|
|
290
|
+
@TableColumn({
|
|
291
|
+
required: true,
|
|
292
|
+
unique: true,
|
|
293
|
+
type: TableColumnType.Slug,
|
|
294
|
+
computed: true,
|
|
295
|
+
title: "Slug",
|
|
296
|
+
description: "Friendly globally unique name for your object",
|
|
297
|
+
})
|
|
298
|
+
@Column({
|
|
299
|
+
nullable: false,
|
|
300
|
+
type: ColumnType.Slug,
|
|
301
|
+
length: ColumnLength.Slug,
|
|
302
|
+
})
|
|
303
|
+
public slug?: string = undefined;
|
|
304
|
+
|
|
305
|
+
@ColumnAccessControl({
|
|
306
|
+
create: [
|
|
307
|
+
Permission.ProjectOwner,
|
|
308
|
+
Permission.ProjectAdmin,
|
|
309
|
+
Permission.ProjectMember,
|
|
310
|
+
Permission.SettingsAdmin,
|
|
311
|
+
Permission.SettingsMember,
|
|
312
|
+
Permission.CreateDatabaseServer,
|
|
313
|
+
],
|
|
314
|
+
read: [
|
|
315
|
+
Permission.ProjectOwner,
|
|
316
|
+
Permission.ProjectAdmin,
|
|
317
|
+
Permission.ProjectMember,
|
|
318
|
+
Permission.Viewer,
|
|
319
|
+
Permission.SettingsAdmin,
|
|
320
|
+
Permission.SettingsMember,
|
|
321
|
+
Permission.SettingsViewer,
|
|
322
|
+
Permission.ReadDatabaseServer,
|
|
323
|
+
],
|
|
324
|
+
update: [
|
|
325
|
+
Permission.ProjectOwner,
|
|
326
|
+
Permission.ProjectAdmin,
|
|
327
|
+
Permission.ProjectMember,
|
|
328
|
+
Permission.SettingsAdmin,
|
|
329
|
+
Permission.SettingsMember,
|
|
330
|
+
Permission.EditDatabaseServer,
|
|
331
|
+
],
|
|
332
|
+
})
|
|
333
|
+
@TableColumn({
|
|
334
|
+
required: false,
|
|
335
|
+
type: TableColumnType.LongText,
|
|
336
|
+
canReadOnRelationQuery: true,
|
|
337
|
+
title: "Description",
|
|
338
|
+
description: "Friendly description for this database",
|
|
339
|
+
example: "Primary PostgreSQL database for the orders service",
|
|
340
|
+
})
|
|
341
|
+
@Column({
|
|
342
|
+
nullable: true,
|
|
343
|
+
type: ColumnType.LongText,
|
|
344
|
+
length: ColumnLength.LongText,
|
|
345
|
+
})
|
|
346
|
+
public description?: string = undefined;
|
|
347
|
+
|
|
348
|
+
/*
|
|
349
|
+
* Creatable, never updatable - see the identical note on
|
|
350
|
+
* CloudResource.resourceIdentifier. For a manual create
|
|
351
|
+
* DatabaseServerService.onBeforeCreate computes it from dbSystem and the
|
|
352
|
+
* canonical endpoint, which is exactly why it must stay user-creatable: the
|
|
353
|
+
* column permission check runs after that hook.
|
|
354
|
+
*/
|
|
355
|
+
@ColumnAccessControl({
|
|
356
|
+
create: [
|
|
357
|
+
Permission.ProjectOwner,
|
|
358
|
+
Permission.ProjectAdmin,
|
|
359
|
+
Permission.ProjectMember,
|
|
360
|
+
Permission.SettingsAdmin,
|
|
361
|
+
Permission.SettingsMember,
|
|
362
|
+
Permission.CreateDatabaseServer,
|
|
363
|
+
],
|
|
364
|
+
read: [
|
|
365
|
+
Permission.ProjectOwner,
|
|
366
|
+
Permission.ProjectAdmin,
|
|
367
|
+
Permission.ProjectMember,
|
|
368
|
+
Permission.Viewer,
|
|
369
|
+
Permission.SettingsAdmin,
|
|
370
|
+
Permission.SettingsMember,
|
|
371
|
+
Permission.SettingsViewer,
|
|
372
|
+
Permission.ReadDatabaseServer,
|
|
373
|
+
],
|
|
374
|
+
update: [],
|
|
375
|
+
})
|
|
376
|
+
@Index()
|
|
377
|
+
@TableColumn({
|
|
378
|
+
required: true,
|
|
379
|
+
type: TableColumnType.LongText,
|
|
380
|
+
canReadOnRelationQuery: true,
|
|
381
|
+
title: "Database Identifier",
|
|
382
|
+
description:
|
|
383
|
+
"Stable identity of this database within the project: the engine family and its canonical endpoint joined with '|' (e.g. postgresql|orders-db.internal:5432), or the workload form for databases discovered on Kubernetes / Docker / Podman (e.g. postgresql|kubernetes:prod-cluster/data/statefulset/orders-db). A fork keys like the engine it forks (a MariaDB database is mysql|..., a Valkey one redis|...), so learning which of the two a database is never changes its identity. Computed by the server for manually added databases.",
|
|
384
|
+
example: "postgresql|orders-db.internal:5432",
|
|
385
|
+
})
|
|
386
|
+
@Column({
|
|
387
|
+
nullable: false,
|
|
388
|
+
type: ColumnType.LongText,
|
|
389
|
+
length: ColumnLength.LongText,
|
|
390
|
+
})
|
|
391
|
+
public databaseIdentifier?: string = undefined;
|
|
392
|
+
|
|
393
|
+
/*
|
|
394
|
+
* Root-only. Set by the container discovery worker on rows it creates AND on
|
|
395
|
+
* endpoint rows it adopts, so the workload is found again by this column on
|
|
396
|
+
* every run (IDX_database_server_workload) rather than by alias.
|
|
397
|
+
*/
|
|
398
|
+
@ColumnAccessControl({
|
|
399
|
+
create: [],
|
|
400
|
+
read: [
|
|
401
|
+
Permission.ProjectOwner,
|
|
402
|
+
Permission.ProjectAdmin,
|
|
403
|
+
Permission.ProjectMember,
|
|
404
|
+
Permission.Viewer,
|
|
405
|
+
Permission.SettingsAdmin,
|
|
406
|
+
Permission.SettingsMember,
|
|
407
|
+
Permission.SettingsViewer,
|
|
408
|
+
Permission.ReadDatabaseServer,
|
|
409
|
+
],
|
|
410
|
+
update: [],
|
|
411
|
+
})
|
|
412
|
+
@TableColumn({
|
|
413
|
+
required: false,
|
|
414
|
+
type: TableColumnType.LongText,
|
|
415
|
+
title: "Workload Identifier",
|
|
416
|
+
description:
|
|
417
|
+
"Identity of the Kubernetes / Docker / Podman workload this database runs as, e.g. postgresql|kubernetes:prod-cluster/data/statefulset/orders-db. The prefix is the engine family, not the engine (a MariaDB workload is mysql|..., a Valkey one redis|...). Empty for databases that are only known by their endpoint.",
|
|
418
|
+
example: "postgresql|kubernetes:prod-cluster/data/statefulset/orders-db",
|
|
419
|
+
})
|
|
420
|
+
@Column({
|
|
421
|
+
nullable: true,
|
|
422
|
+
type: ColumnType.LongText,
|
|
423
|
+
length: ColumnLength.LongText,
|
|
424
|
+
})
|
|
425
|
+
public workloadIdentifier?: string = undefined;
|
|
426
|
+
|
|
427
|
+
@ColumnAccessControl({
|
|
428
|
+
create: [
|
|
429
|
+
Permission.ProjectOwner,
|
|
430
|
+
Permission.ProjectAdmin,
|
|
431
|
+
Permission.ProjectMember,
|
|
432
|
+
Permission.SettingsAdmin,
|
|
433
|
+
Permission.SettingsMember,
|
|
434
|
+
Permission.CreateDatabaseServer,
|
|
435
|
+
],
|
|
436
|
+
read: [
|
|
437
|
+
Permission.ProjectOwner,
|
|
438
|
+
Permission.ProjectAdmin,
|
|
439
|
+
Permission.ProjectMember,
|
|
440
|
+
Permission.Viewer,
|
|
441
|
+
Permission.SettingsAdmin,
|
|
442
|
+
Permission.SettingsMember,
|
|
443
|
+
Permission.SettingsViewer,
|
|
444
|
+
Permission.ReadDatabaseServer,
|
|
445
|
+
],
|
|
446
|
+
update: [],
|
|
447
|
+
})
|
|
448
|
+
@TableColumn({
|
|
449
|
+
required: true,
|
|
450
|
+
type: TableColumnType.ShortText,
|
|
451
|
+
canReadOnRelationQuery: true,
|
|
452
|
+
title: "Database Engine",
|
|
453
|
+
description:
|
|
454
|
+
"Database engine family as an OpenTelemetry db.system.name value, e.g. postgresql, mysql, redis, mongodb, microsoft.sql_server.",
|
|
455
|
+
example: "postgresql",
|
|
456
|
+
})
|
|
457
|
+
@Column({
|
|
458
|
+
nullable: false,
|
|
459
|
+
type: ColumnType.ShortText,
|
|
460
|
+
length: ColumnLength.ShortText,
|
|
461
|
+
})
|
|
462
|
+
public dbSystem?: string = undefined;
|
|
463
|
+
|
|
464
|
+
@ColumnAccessControl({
|
|
465
|
+
create: [
|
|
466
|
+
Permission.ProjectOwner,
|
|
467
|
+
Permission.ProjectAdmin,
|
|
468
|
+
Permission.ProjectMember,
|
|
469
|
+
Permission.SettingsAdmin,
|
|
470
|
+
Permission.SettingsMember,
|
|
471
|
+
Permission.CreateDatabaseServer,
|
|
472
|
+
],
|
|
473
|
+
read: [
|
|
474
|
+
Permission.ProjectOwner,
|
|
475
|
+
Permission.ProjectAdmin,
|
|
476
|
+
Permission.ProjectMember,
|
|
477
|
+
Permission.Viewer,
|
|
478
|
+
Permission.SettingsAdmin,
|
|
479
|
+
Permission.SettingsMember,
|
|
480
|
+
Permission.SettingsViewer,
|
|
481
|
+
Permission.ReadDatabaseServer,
|
|
482
|
+
],
|
|
483
|
+
update: [],
|
|
484
|
+
})
|
|
485
|
+
@TableColumn({
|
|
486
|
+
required: false,
|
|
487
|
+
type: TableColumnType.LongText,
|
|
488
|
+
canReadOnRelationQuery: true,
|
|
489
|
+
title: "Server Address",
|
|
490
|
+
description:
|
|
491
|
+
"Host name or IP address of the primary endpoint of this database (the OpenTelemetry server.address attribute).",
|
|
492
|
+
example: "orders-db.internal",
|
|
493
|
+
})
|
|
494
|
+
@Column({
|
|
495
|
+
nullable: true,
|
|
496
|
+
type: ColumnType.LongText,
|
|
497
|
+
length: ColumnLength.LongText,
|
|
498
|
+
})
|
|
499
|
+
public serverAddress?: string = undefined;
|
|
500
|
+
|
|
501
|
+
@ColumnAccessControl({
|
|
502
|
+
create: [
|
|
503
|
+
Permission.ProjectOwner,
|
|
504
|
+
Permission.ProjectAdmin,
|
|
505
|
+
Permission.ProjectMember,
|
|
506
|
+
Permission.SettingsAdmin,
|
|
507
|
+
Permission.SettingsMember,
|
|
508
|
+
Permission.CreateDatabaseServer,
|
|
509
|
+
],
|
|
510
|
+
read: [
|
|
511
|
+
Permission.ProjectOwner,
|
|
512
|
+
Permission.ProjectAdmin,
|
|
513
|
+
Permission.ProjectMember,
|
|
514
|
+
Permission.Viewer,
|
|
515
|
+
Permission.SettingsAdmin,
|
|
516
|
+
Permission.SettingsMember,
|
|
517
|
+
Permission.SettingsViewer,
|
|
518
|
+
Permission.ReadDatabaseServer,
|
|
519
|
+
],
|
|
520
|
+
update: [],
|
|
521
|
+
})
|
|
522
|
+
@TableColumn({
|
|
523
|
+
required: false,
|
|
524
|
+
type: TableColumnType.Number,
|
|
525
|
+
canReadOnRelationQuery: true,
|
|
526
|
+
title: "Server Port",
|
|
527
|
+
description:
|
|
528
|
+
"Port of the primary endpoint of this database (the OpenTelemetry server.port attribute). Defaults to the engine's standard port when not given.",
|
|
529
|
+
example: "5432",
|
|
530
|
+
})
|
|
531
|
+
@Column({
|
|
532
|
+
nullable: true,
|
|
533
|
+
type: ColumnType.Number,
|
|
534
|
+
})
|
|
535
|
+
public serverPort?: number = undefined;
|
|
536
|
+
|
|
537
|
+
@ColumnAccessControl({
|
|
538
|
+
create: [],
|
|
539
|
+
read: [
|
|
540
|
+
Permission.ProjectOwner,
|
|
541
|
+
Permission.ProjectAdmin,
|
|
542
|
+
Permission.ProjectMember,
|
|
543
|
+
Permission.Viewer,
|
|
544
|
+
Permission.SettingsAdmin,
|
|
545
|
+
Permission.SettingsMember,
|
|
546
|
+
Permission.SettingsViewer,
|
|
547
|
+
Permission.ReadDatabaseServer,
|
|
548
|
+
],
|
|
549
|
+
update: [],
|
|
550
|
+
})
|
|
551
|
+
@TableColumn({
|
|
552
|
+
required: false,
|
|
553
|
+
type: TableColumnType.ShortText,
|
|
554
|
+
title: "Database Version",
|
|
555
|
+
description:
|
|
556
|
+
"Engine version last reported for this database, from the collector receiver or the container image tag.",
|
|
557
|
+
example: "16.4",
|
|
558
|
+
})
|
|
559
|
+
@Column({
|
|
560
|
+
nullable: true,
|
|
561
|
+
type: ColumnType.ShortText,
|
|
562
|
+
length: ColumnLength.ShortText,
|
|
563
|
+
})
|
|
564
|
+
public dbVersion?: string = undefined;
|
|
565
|
+
|
|
566
|
+
/*
|
|
567
|
+
* Which path created the row: collector, client-spans, kubernetes, docker,
|
|
568
|
+
* podman or manual (DatabaseServerDiscoverySource). First creator wins; it is
|
|
569
|
+
* never overwritten. Creatable because onBeforeCreate stamps "manual".
|
|
570
|
+
*/
|
|
571
|
+
@ColumnAccessControl({
|
|
572
|
+
create: [
|
|
573
|
+
Permission.ProjectOwner,
|
|
574
|
+
Permission.ProjectAdmin,
|
|
575
|
+
Permission.ProjectMember,
|
|
576
|
+
Permission.SettingsAdmin,
|
|
577
|
+
Permission.SettingsMember,
|
|
578
|
+
Permission.CreateDatabaseServer,
|
|
579
|
+
],
|
|
580
|
+
read: [
|
|
581
|
+
Permission.ProjectOwner,
|
|
582
|
+
Permission.ProjectAdmin,
|
|
583
|
+
Permission.ProjectMember,
|
|
584
|
+
Permission.Viewer,
|
|
585
|
+
Permission.SettingsAdmin,
|
|
586
|
+
Permission.SettingsMember,
|
|
587
|
+
Permission.SettingsViewer,
|
|
588
|
+
Permission.ReadDatabaseServer,
|
|
589
|
+
],
|
|
590
|
+
update: [],
|
|
591
|
+
})
|
|
592
|
+
@TableColumn({
|
|
593
|
+
required: false,
|
|
594
|
+
type: TableColumnType.ShortText,
|
|
595
|
+
canReadOnRelationQuery: true,
|
|
596
|
+
title: "Discovery Source",
|
|
597
|
+
description:
|
|
598
|
+
"How this database was first discovered: collector, client-spans, kubernetes, docker, podman or manual.",
|
|
599
|
+
example: "collector",
|
|
600
|
+
})
|
|
601
|
+
@Column({
|
|
602
|
+
nullable: true,
|
|
603
|
+
type: ColumnType.ShortText,
|
|
604
|
+
length: ColumnLength.ShortText,
|
|
605
|
+
})
|
|
606
|
+
public discoverySource?: string = undefined;
|
|
607
|
+
|
|
608
|
+
@ColumnAccessControl({
|
|
609
|
+
create: [],
|
|
610
|
+
read: [
|
|
611
|
+
Permission.ProjectOwner,
|
|
612
|
+
Permission.ProjectAdmin,
|
|
613
|
+
Permission.ProjectMember,
|
|
614
|
+
Permission.Viewer,
|
|
615
|
+
Permission.SettingsAdmin,
|
|
616
|
+
Permission.SettingsMember,
|
|
617
|
+
Permission.SettingsViewer,
|
|
618
|
+
Permission.ReadDatabaseServer,
|
|
619
|
+
],
|
|
620
|
+
update: [],
|
|
621
|
+
})
|
|
622
|
+
@TableColumn({
|
|
623
|
+
manyToOneRelationColumn: "kubernetesClusterId",
|
|
624
|
+
type: TableColumnType.Entity,
|
|
625
|
+
modelType: KubernetesCluster,
|
|
626
|
+
title: "Kubernetes Cluster",
|
|
627
|
+
description:
|
|
628
|
+
"Kubernetes cluster this database runs on, when it was discovered as a workload on a monitored cluster.",
|
|
629
|
+
})
|
|
630
|
+
@ManyToOne(
|
|
631
|
+
() => {
|
|
632
|
+
return KubernetesCluster;
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
eager: false,
|
|
636
|
+
nullable: true,
|
|
637
|
+
onDelete: "SET NULL",
|
|
638
|
+
orphanedRowAction: "nullify",
|
|
639
|
+
},
|
|
640
|
+
)
|
|
641
|
+
@JoinColumn({ name: "kubernetesClusterId" })
|
|
642
|
+
public kubernetesCluster?: KubernetesCluster = undefined;
|
|
643
|
+
|
|
644
|
+
@ColumnAccessControl({
|
|
645
|
+
create: [],
|
|
646
|
+
read: [
|
|
647
|
+
Permission.ProjectOwner,
|
|
648
|
+
Permission.ProjectAdmin,
|
|
649
|
+
Permission.ProjectMember,
|
|
650
|
+
Permission.Viewer,
|
|
651
|
+
Permission.SettingsAdmin,
|
|
652
|
+
Permission.SettingsMember,
|
|
653
|
+
Permission.SettingsViewer,
|
|
654
|
+
Permission.ReadDatabaseServer,
|
|
655
|
+
],
|
|
656
|
+
update: [],
|
|
657
|
+
})
|
|
658
|
+
@Index()
|
|
659
|
+
@TableColumn({
|
|
660
|
+
type: TableColumnType.ObjectID,
|
|
661
|
+
title: "Kubernetes Cluster ID",
|
|
662
|
+
description:
|
|
663
|
+
"ID of the Kubernetes cluster this database runs on, when it was discovered as a workload on a monitored cluster.",
|
|
664
|
+
})
|
|
665
|
+
@Column({
|
|
666
|
+
type: ColumnType.ObjectID,
|
|
667
|
+
nullable: true,
|
|
668
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
669
|
+
})
|
|
670
|
+
public kubernetesClusterId?: ObjectID = undefined;
|
|
671
|
+
|
|
672
|
+
@ColumnAccessControl({
|
|
673
|
+
create: [],
|
|
674
|
+
read: [
|
|
675
|
+
Permission.ProjectOwner,
|
|
676
|
+
Permission.ProjectAdmin,
|
|
677
|
+
Permission.ProjectMember,
|
|
678
|
+
Permission.Viewer,
|
|
679
|
+
Permission.SettingsAdmin,
|
|
680
|
+
Permission.SettingsMember,
|
|
681
|
+
Permission.SettingsViewer,
|
|
682
|
+
Permission.ReadDatabaseServer,
|
|
683
|
+
],
|
|
684
|
+
update: [],
|
|
685
|
+
})
|
|
686
|
+
@TableColumn({
|
|
687
|
+
required: false,
|
|
688
|
+
type: TableColumnType.ShortText,
|
|
689
|
+
title: "Kubernetes Namespace",
|
|
690
|
+
description: "Kubernetes namespace of the workload this database runs as.",
|
|
691
|
+
example: "data",
|
|
692
|
+
})
|
|
693
|
+
@Column({
|
|
694
|
+
nullable: true,
|
|
695
|
+
type: ColumnType.ShortText,
|
|
696
|
+
length: ColumnLength.ShortText,
|
|
697
|
+
})
|
|
698
|
+
public kubernetesNamespace?: string = undefined;
|
|
699
|
+
|
|
700
|
+
@ColumnAccessControl({
|
|
701
|
+
create: [],
|
|
702
|
+
read: [
|
|
703
|
+
Permission.ProjectOwner,
|
|
704
|
+
Permission.ProjectAdmin,
|
|
705
|
+
Permission.ProjectMember,
|
|
706
|
+
Permission.Viewer,
|
|
707
|
+
Permission.SettingsAdmin,
|
|
708
|
+
Permission.SettingsMember,
|
|
709
|
+
Permission.SettingsViewer,
|
|
710
|
+
Permission.ReadDatabaseServer,
|
|
711
|
+
],
|
|
712
|
+
update: [],
|
|
713
|
+
})
|
|
714
|
+
@TableColumn({
|
|
715
|
+
required: false,
|
|
716
|
+
type: TableColumnType.ShortText,
|
|
717
|
+
title: "Workload Kind",
|
|
718
|
+
description:
|
|
719
|
+
"Kind of workload this database runs as, e.g. StatefulSet, Deployment, Cluster (an operator-managed cluster) or Container.",
|
|
720
|
+
example: "StatefulSet",
|
|
721
|
+
})
|
|
722
|
+
@Column({
|
|
723
|
+
nullable: true,
|
|
724
|
+
type: ColumnType.ShortText,
|
|
725
|
+
length: ColumnLength.ShortText,
|
|
726
|
+
})
|
|
727
|
+
public workloadKind?: string = undefined;
|
|
728
|
+
|
|
729
|
+
@ColumnAccessControl({
|
|
730
|
+
create: [],
|
|
731
|
+
read: [
|
|
732
|
+
Permission.ProjectOwner,
|
|
733
|
+
Permission.ProjectAdmin,
|
|
734
|
+
Permission.ProjectMember,
|
|
735
|
+
Permission.Viewer,
|
|
736
|
+
Permission.SettingsAdmin,
|
|
737
|
+
Permission.SettingsMember,
|
|
738
|
+
Permission.SettingsViewer,
|
|
739
|
+
Permission.ReadDatabaseServer,
|
|
740
|
+
],
|
|
741
|
+
update: [],
|
|
742
|
+
})
|
|
743
|
+
@TableColumn({
|
|
744
|
+
required: false,
|
|
745
|
+
type: TableColumnType.LongText,
|
|
746
|
+
title: "Workload Name",
|
|
747
|
+
description:
|
|
748
|
+
"Name of the workload (StatefulSet, Deployment, operator cluster or container group) this database runs as.",
|
|
749
|
+
example: "orders-db",
|
|
750
|
+
})
|
|
751
|
+
@Column({
|
|
752
|
+
nullable: true,
|
|
753
|
+
type: ColumnType.LongText,
|
|
754
|
+
length: ColumnLength.LongText,
|
|
755
|
+
})
|
|
756
|
+
public workloadName?: string = undefined;
|
|
757
|
+
|
|
758
|
+
@ColumnAccessControl({
|
|
759
|
+
create: [],
|
|
760
|
+
read: [
|
|
761
|
+
Permission.ProjectOwner,
|
|
762
|
+
Permission.ProjectAdmin,
|
|
763
|
+
Permission.ProjectMember,
|
|
764
|
+
Permission.Viewer,
|
|
765
|
+
Permission.SettingsAdmin,
|
|
766
|
+
Permission.SettingsMember,
|
|
767
|
+
Permission.SettingsViewer,
|
|
768
|
+
Permission.ReadDatabaseServer,
|
|
769
|
+
],
|
|
770
|
+
update: [],
|
|
771
|
+
})
|
|
772
|
+
@TableColumn({
|
|
773
|
+
manyToOneRelationColumn: "dockerHostId",
|
|
774
|
+
type: TableColumnType.Entity,
|
|
775
|
+
modelType: DockerHost,
|
|
776
|
+
title: "Docker Host",
|
|
777
|
+
description:
|
|
778
|
+
"Docker host this database runs on, when it was discovered as a container on a monitored host.",
|
|
779
|
+
})
|
|
780
|
+
@ManyToOne(
|
|
781
|
+
() => {
|
|
782
|
+
return DockerHost;
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
eager: false,
|
|
786
|
+
nullable: true,
|
|
787
|
+
onDelete: "SET NULL",
|
|
788
|
+
orphanedRowAction: "nullify",
|
|
789
|
+
},
|
|
790
|
+
)
|
|
791
|
+
@JoinColumn({ name: "dockerHostId" })
|
|
792
|
+
public dockerHost?: DockerHost = undefined;
|
|
793
|
+
|
|
794
|
+
@ColumnAccessControl({
|
|
795
|
+
create: [],
|
|
796
|
+
read: [
|
|
797
|
+
Permission.ProjectOwner,
|
|
798
|
+
Permission.ProjectAdmin,
|
|
799
|
+
Permission.ProjectMember,
|
|
800
|
+
Permission.Viewer,
|
|
801
|
+
Permission.SettingsAdmin,
|
|
802
|
+
Permission.SettingsMember,
|
|
803
|
+
Permission.SettingsViewer,
|
|
804
|
+
Permission.ReadDatabaseServer,
|
|
805
|
+
],
|
|
806
|
+
update: [],
|
|
807
|
+
})
|
|
808
|
+
@TableColumn({
|
|
809
|
+
type: TableColumnType.ObjectID,
|
|
810
|
+
title: "Docker Host ID",
|
|
811
|
+
description:
|
|
812
|
+
"ID of the Docker host this database runs on, when it was discovered as a container on a monitored host.",
|
|
813
|
+
})
|
|
814
|
+
@Column({
|
|
815
|
+
type: ColumnType.ObjectID,
|
|
816
|
+
nullable: true,
|
|
817
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
818
|
+
})
|
|
819
|
+
public dockerHostId?: ObjectID = undefined;
|
|
820
|
+
|
|
821
|
+
@ColumnAccessControl({
|
|
822
|
+
create: [],
|
|
823
|
+
read: [
|
|
824
|
+
Permission.ProjectOwner,
|
|
825
|
+
Permission.ProjectAdmin,
|
|
826
|
+
Permission.ProjectMember,
|
|
827
|
+
Permission.Viewer,
|
|
828
|
+
Permission.SettingsAdmin,
|
|
829
|
+
Permission.SettingsMember,
|
|
830
|
+
Permission.SettingsViewer,
|
|
831
|
+
Permission.ReadDatabaseServer,
|
|
832
|
+
],
|
|
833
|
+
update: [],
|
|
834
|
+
})
|
|
835
|
+
@TableColumn({
|
|
836
|
+
manyToOneRelationColumn: "podmanHostId",
|
|
837
|
+
type: TableColumnType.Entity,
|
|
838
|
+
modelType: PodmanHost,
|
|
839
|
+
title: "Podman Host",
|
|
840
|
+
description:
|
|
841
|
+
"Podman host this database runs on, when it was discovered as a container on a monitored host.",
|
|
842
|
+
})
|
|
843
|
+
@ManyToOne(
|
|
844
|
+
() => {
|
|
845
|
+
return PodmanHost;
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
eager: false,
|
|
849
|
+
nullable: true,
|
|
850
|
+
onDelete: "SET NULL",
|
|
851
|
+
orphanedRowAction: "nullify",
|
|
852
|
+
},
|
|
853
|
+
)
|
|
854
|
+
@JoinColumn({ name: "podmanHostId" })
|
|
855
|
+
public podmanHost?: PodmanHost = undefined;
|
|
856
|
+
|
|
857
|
+
@ColumnAccessControl({
|
|
858
|
+
create: [],
|
|
859
|
+
read: [
|
|
860
|
+
Permission.ProjectOwner,
|
|
861
|
+
Permission.ProjectAdmin,
|
|
862
|
+
Permission.ProjectMember,
|
|
863
|
+
Permission.Viewer,
|
|
864
|
+
Permission.SettingsAdmin,
|
|
865
|
+
Permission.SettingsMember,
|
|
866
|
+
Permission.SettingsViewer,
|
|
867
|
+
Permission.ReadDatabaseServer,
|
|
868
|
+
],
|
|
869
|
+
update: [],
|
|
870
|
+
})
|
|
871
|
+
@TableColumn({
|
|
872
|
+
type: TableColumnType.ObjectID,
|
|
873
|
+
title: "Podman Host ID",
|
|
874
|
+
description:
|
|
875
|
+
"ID of the Podman host this database runs on, when it was discovered as a container on a monitored host.",
|
|
876
|
+
})
|
|
877
|
+
@Column({
|
|
878
|
+
type: ColumnType.ObjectID,
|
|
879
|
+
nullable: true,
|
|
880
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
881
|
+
})
|
|
882
|
+
public podmanHostId?: ObjectID = undefined;
|
|
883
|
+
|
|
884
|
+
/*
|
|
885
|
+
* Telemetry entity keys of the workload's members (Kubernetes pod / deployment
|
|
886
|
+
* keys, container keys) mapped to the ISO time each was last seen
|
|
887
|
+
* (DatabaseServerMemberKeys). Merged - never replaced - on every discovery run
|
|
888
|
+
* and pruned by age, so logs of a pod that was replaced last week still show
|
|
889
|
+
* on the page.
|
|
890
|
+
*/
|
|
891
|
+
@ColumnAccessControl({
|
|
892
|
+
create: [],
|
|
893
|
+
read: [
|
|
894
|
+
Permission.ProjectOwner,
|
|
895
|
+
Permission.ProjectAdmin,
|
|
896
|
+
Permission.ProjectMember,
|
|
897
|
+
Permission.Viewer,
|
|
898
|
+
Permission.SettingsAdmin,
|
|
899
|
+
Permission.SettingsMember,
|
|
900
|
+
Permission.SettingsViewer,
|
|
901
|
+
Permission.ReadDatabaseServer,
|
|
902
|
+
],
|
|
903
|
+
update: [],
|
|
904
|
+
})
|
|
905
|
+
@TableColumn({
|
|
906
|
+
required: false,
|
|
907
|
+
type: TableColumnType.JSON,
|
|
908
|
+
title: "Member Entity Keys",
|
|
909
|
+
description:
|
|
910
|
+
"Telemetry entity keys of the pods / containers this database runs as, each with the time it was last seen. Maintained by discovery.",
|
|
911
|
+
})
|
|
912
|
+
@Column({
|
|
913
|
+
type: ColumnType.JSON,
|
|
914
|
+
nullable: true,
|
|
915
|
+
})
|
|
916
|
+
public memberEntityKeys?: JSONObject = undefined;
|
|
917
|
+
|
|
918
|
+
@ColumnAccessControl({
|
|
919
|
+
create: [],
|
|
920
|
+
read: [
|
|
921
|
+
Permission.ProjectOwner,
|
|
922
|
+
Permission.ProjectAdmin,
|
|
923
|
+
Permission.ProjectMember,
|
|
924
|
+
Permission.Viewer,
|
|
925
|
+
Permission.SettingsAdmin,
|
|
926
|
+
Permission.SettingsMember,
|
|
927
|
+
Permission.SettingsViewer,
|
|
928
|
+
Permission.ReadDatabaseServer,
|
|
929
|
+
],
|
|
930
|
+
update: [],
|
|
931
|
+
})
|
|
932
|
+
@TableColumn({
|
|
933
|
+
type: TableColumnType.Number,
|
|
934
|
+
title: "Instance Count",
|
|
935
|
+
description:
|
|
936
|
+
"Number of running instances (pods / containers) last seen for this database's workload.",
|
|
937
|
+
})
|
|
938
|
+
@Column({
|
|
939
|
+
type: ColumnType.Number,
|
|
940
|
+
nullable: true,
|
|
941
|
+
default: 0,
|
|
942
|
+
})
|
|
943
|
+
public instanceCount?: number = undefined;
|
|
944
|
+
|
|
945
|
+
/*
|
|
946
|
+
* Collector liveness ONLY: "connected" while an OTel Collector database
|
|
947
|
+
* receiver (or the OneUptime Database Agent) keeps reporting engine metrics for
|
|
948
|
+
* this database, "disconnected" once it has stopped (the stale-collector
|
|
949
|
+
* sweep). Empty (NULL) while no collector ever reported - no DB default, so
|
|
950
|
+
* a database that is merely queried by applications, seen as a container or
|
|
951
|
+
* added by hand never claims a collector that "disconnected". lastSeenAt is
|
|
952
|
+
* the any-source signal.
|
|
953
|
+
*/
|
|
954
|
+
@ColumnAccessControl({
|
|
955
|
+
create: [],
|
|
956
|
+
read: [
|
|
957
|
+
Permission.ProjectOwner,
|
|
958
|
+
Permission.ProjectAdmin,
|
|
959
|
+
Permission.ProjectMember,
|
|
960
|
+
Permission.Viewer,
|
|
961
|
+
Permission.SettingsAdmin,
|
|
962
|
+
Permission.SettingsMember,
|
|
963
|
+
Permission.SettingsViewer,
|
|
964
|
+
Permission.ReadDatabaseServer,
|
|
965
|
+
],
|
|
966
|
+
update: [],
|
|
967
|
+
})
|
|
968
|
+
@TableColumn({
|
|
969
|
+
required: false,
|
|
970
|
+
type: TableColumnType.ShortText,
|
|
971
|
+
canReadOnRelationQuery: true,
|
|
972
|
+
title: "OTel Collector Status",
|
|
973
|
+
description:
|
|
974
|
+
"Whether engine metrics are currently being received from a collector / agent for this database (connected) or a collector reported and has stopped (disconnected). Empty when no collector has ever reported.",
|
|
975
|
+
example: "connected",
|
|
976
|
+
})
|
|
977
|
+
@Column({
|
|
978
|
+
nullable: true,
|
|
979
|
+
type: ColumnType.ShortText,
|
|
980
|
+
length: ColumnLength.ShortText,
|
|
981
|
+
})
|
|
982
|
+
public otelCollectorStatus?: string = undefined;
|
|
983
|
+
|
|
984
|
+
@ColumnAccessControl({
|
|
985
|
+
create: [],
|
|
986
|
+
read: [
|
|
987
|
+
Permission.ProjectOwner,
|
|
988
|
+
Permission.ProjectAdmin,
|
|
989
|
+
Permission.ProjectMember,
|
|
990
|
+
Permission.Viewer,
|
|
991
|
+
Permission.SettingsAdmin,
|
|
992
|
+
Permission.SettingsMember,
|
|
993
|
+
Permission.SettingsViewer,
|
|
994
|
+
Permission.ReadDatabaseServer,
|
|
995
|
+
],
|
|
996
|
+
update: [],
|
|
997
|
+
})
|
|
998
|
+
@TableColumn({
|
|
999
|
+
required: false,
|
|
1000
|
+
type: TableColumnType.Date,
|
|
1001
|
+
title: "Collector Last Seen At",
|
|
1002
|
+
description:
|
|
1003
|
+
"When engine telemetry from a collector / agent was last received for this database.",
|
|
1004
|
+
})
|
|
1005
|
+
@Column({
|
|
1006
|
+
nullable: true,
|
|
1007
|
+
type: ColumnType.Date,
|
|
1008
|
+
})
|
|
1009
|
+
public collectorLastSeenAt?: Date = undefined;
|
|
1010
|
+
|
|
1011
|
+
@ColumnAccessControl({
|
|
1012
|
+
create: [],
|
|
1013
|
+
read: [
|
|
1014
|
+
Permission.ProjectOwner,
|
|
1015
|
+
Permission.ProjectAdmin,
|
|
1016
|
+
Permission.ProjectMember,
|
|
1017
|
+
Permission.Viewer,
|
|
1018
|
+
Permission.SettingsAdmin,
|
|
1019
|
+
Permission.SettingsMember,
|
|
1020
|
+
Permission.SettingsViewer,
|
|
1021
|
+
Permission.ReadDatabaseServer,
|
|
1022
|
+
],
|
|
1023
|
+
update: [],
|
|
1024
|
+
})
|
|
1025
|
+
@TableColumn({
|
|
1026
|
+
required: false,
|
|
1027
|
+
type: TableColumnType.ShortText,
|
|
1028
|
+
title: "Agent Version",
|
|
1029
|
+
description:
|
|
1030
|
+
"Version of the OneUptime agent reporting this database, as self-reported via the oneuptime.agent.version resource attribute",
|
|
1031
|
+
example: "1.0.0",
|
|
1032
|
+
})
|
|
1033
|
+
@Column({
|
|
1034
|
+
nullable: true,
|
|
1035
|
+
type: ColumnType.ShortText,
|
|
1036
|
+
length: ColumnLength.ShortText,
|
|
1037
|
+
})
|
|
1038
|
+
public agentVersion?: string = undefined;
|
|
1039
|
+
|
|
1040
|
+
@ColumnAccessControl({
|
|
1041
|
+
create: [],
|
|
1042
|
+
read: [
|
|
1043
|
+
Permission.ProjectOwner,
|
|
1044
|
+
Permission.ProjectAdmin,
|
|
1045
|
+
Permission.ProjectMember,
|
|
1046
|
+
Permission.Viewer,
|
|
1047
|
+
Permission.SettingsAdmin,
|
|
1048
|
+
Permission.SettingsMember,
|
|
1049
|
+
Permission.SettingsViewer,
|
|
1050
|
+
Permission.ReadDatabaseServer,
|
|
1051
|
+
],
|
|
1052
|
+
update: [],
|
|
1053
|
+
})
|
|
1054
|
+
@TableColumn({
|
|
1055
|
+
required: false,
|
|
1056
|
+
type: TableColumnType.Date,
|
|
1057
|
+
canReadOnRelationQuery: true,
|
|
1058
|
+
title: "Last Seen At",
|
|
1059
|
+
description:
|
|
1060
|
+
"When this database was last seen by any discovery source - engine telemetry, application database calls or the workload inventory.",
|
|
1061
|
+
})
|
|
1062
|
+
@Column({
|
|
1063
|
+
nullable: true,
|
|
1064
|
+
type: ColumnType.Date,
|
|
1065
|
+
})
|
|
1066
|
+
public lastSeenAt?: Date = undefined;
|
|
1067
|
+
|
|
1068
|
+
/*
|
|
1069
|
+
* Set only by the auto-archive sweep (DatabaseServer:CleanupStaleResources) and
|
|
1070
|
+
* cleared when the database is seen again. It is what lets discovery un-archive
|
|
1071
|
+
* a row it archived itself while never touching one a person archived.
|
|
1072
|
+
*/
|
|
1073
|
+
@ColumnAccessControl({
|
|
1074
|
+
create: [],
|
|
1075
|
+
read: [
|
|
1076
|
+
Permission.ProjectOwner,
|
|
1077
|
+
Permission.ProjectAdmin,
|
|
1078
|
+
Permission.ProjectMember,
|
|
1079
|
+
Permission.Viewer,
|
|
1080
|
+
Permission.SettingsAdmin,
|
|
1081
|
+
Permission.SettingsMember,
|
|
1082
|
+
Permission.SettingsViewer,
|
|
1083
|
+
Permission.ReadDatabaseServer,
|
|
1084
|
+
],
|
|
1085
|
+
update: [],
|
|
1086
|
+
})
|
|
1087
|
+
@TableColumn({
|
|
1088
|
+
required: false,
|
|
1089
|
+
type: TableColumnType.Date,
|
|
1090
|
+
title: "Auto Archived At",
|
|
1091
|
+
description:
|
|
1092
|
+
"When this database was archived automatically because no discovery source had seen it for a while. Empty when it was archived by a person or is not archived.",
|
|
1093
|
+
})
|
|
1094
|
+
@Column({
|
|
1095
|
+
nullable: true,
|
|
1096
|
+
type: ColumnType.Date,
|
|
1097
|
+
})
|
|
1098
|
+
public autoArchivedAt?: Date = undefined;
|
|
1099
|
+
|
|
1100
|
+
/*
|
|
1101
|
+
* Set when a PERSON restores the row from the archive (a hooked update to
|
|
1102
|
+
* isArchived=false), cleared when a person archives it. The auto-archive
|
|
1103
|
+
* sweep leaves such a row alone until discovery sees it again or a long
|
|
1104
|
+
* grace period passes - otherwise a Restore of a stale discovered database
|
|
1105
|
+
* would be undone by the next five-minute sweep.
|
|
1106
|
+
*/
|
|
1107
|
+
@ColumnAccessControl({
|
|
1108
|
+
create: [],
|
|
1109
|
+
read: [
|
|
1110
|
+
Permission.ProjectOwner,
|
|
1111
|
+
Permission.ProjectAdmin,
|
|
1112
|
+
Permission.ProjectMember,
|
|
1113
|
+
Permission.Viewer,
|
|
1114
|
+
Permission.SettingsAdmin,
|
|
1115
|
+
Permission.SettingsMember,
|
|
1116
|
+
Permission.SettingsViewer,
|
|
1117
|
+
Permission.ReadDatabaseServer,
|
|
1118
|
+
],
|
|
1119
|
+
update: [],
|
|
1120
|
+
})
|
|
1121
|
+
@TableColumn({
|
|
1122
|
+
required: false,
|
|
1123
|
+
type: TableColumnType.Date,
|
|
1124
|
+
title: "Manually Restored At",
|
|
1125
|
+
description:
|
|
1126
|
+
"When a person last restored this database from the archive. Automatic archiving leaves it alone until it is seen again or a grace period passes.",
|
|
1127
|
+
})
|
|
1128
|
+
@Column({
|
|
1129
|
+
nullable: true,
|
|
1130
|
+
type: ColumnType.Date,
|
|
1131
|
+
})
|
|
1132
|
+
public manuallyRestoredAt?: Date = undefined;
|
|
1133
|
+
|
|
1134
|
+
/*
|
|
1135
|
+
* Which evidence set dbSystem (DatabaseSystemEvidence in
|
|
1136
|
+
* DatabaseServerService): manual > collector > container > client-spans.
|
|
1137
|
+
* A stronger source may correct the engine a weaker one guessed (a pgx
|
|
1138
|
+
* client saying "postgresql" for CockroachDB), any source may refine an
|
|
1139
|
+
* engine to a fork of it (redis -> valkey), and nothing ever downgrades.
|
|
1140
|
+
* Empty on a row whose engine was set by the path that created it - its
|
|
1141
|
+
* discoverySource then says which evidence that was.
|
|
1142
|
+
*/
|
|
1143
|
+
@ColumnAccessControl({
|
|
1144
|
+
create: [],
|
|
1145
|
+
read: [
|
|
1146
|
+
Permission.ProjectOwner,
|
|
1147
|
+
Permission.ProjectAdmin,
|
|
1148
|
+
Permission.ProjectMember,
|
|
1149
|
+
Permission.Viewer,
|
|
1150
|
+
Permission.SettingsAdmin,
|
|
1151
|
+
Permission.SettingsMember,
|
|
1152
|
+
Permission.SettingsViewer,
|
|
1153
|
+
Permission.ReadDatabaseServer,
|
|
1154
|
+
],
|
|
1155
|
+
update: [],
|
|
1156
|
+
})
|
|
1157
|
+
@TableColumn({
|
|
1158
|
+
required: false,
|
|
1159
|
+
type: TableColumnType.ShortText,
|
|
1160
|
+
title: "Database Engine Source",
|
|
1161
|
+
description:
|
|
1162
|
+
"What the database engine was last determined from: manual, collector, container or client-spans. Stronger evidence may correct the engine; weaker evidence never changes it.",
|
|
1163
|
+
example: "container",
|
|
1164
|
+
})
|
|
1165
|
+
@Column({
|
|
1166
|
+
nullable: true,
|
|
1167
|
+
type: ColumnType.ShortText,
|
|
1168
|
+
length: ColumnLength.ShortText,
|
|
1169
|
+
})
|
|
1170
|
+
public dbSystemSource?: string = undefined;
|
|
1171
|
+
|
|
1172
|
+
/*
|
|
1173
|
+
* When Kubernetes / Docker / Podman discovery last saw this row's workload.
|
|
1174
|
+
* Unlike lastSeenAt, application traces and collector heartbeats never move
|
|
1175
|
+
* it, so it is what tells a workload that is gone (its endpoints may be
|
|
1176
|
+
* handed to the workload that replaced it) from one that is merely quiet.
|
|
1177
|
+
*/
|
|
1178
|
+
@ColumnAccessControl({
|
|
1179
|
+
create: [],
|
|
1180
|
+
read: [
|
|
1181
|
+
Permission.ProjectOwner,
|
|
1182
|
+
Permission.ProjectAdmin,
|
|
1183
|
+
Permission.ProjectMember,
|
|
1184
|
+
Permission.Viewer,
|
|
1185
|
+
Permission.SettingsAdmin,
|
|
1186
|
+
Permission.SettingsMember,
|
|
1187
|
+
Permission.SettingsViewer,
|
|
1188
|
+
Permission.ReadDatabaseServer,
|
|
1189
|
+
],
|
|
1190
|
+
update: [],
|
|
1191
|
+
})
|
|
1192
|
+
@TableColumn({
|
|
1193
|
+
required: false,
|
|
1194
|
+
type: TableColumnType.Date,
|
|
1195
|
+
title: "Workload Last Seen At",
|
|
1196
|
+
description:
|
|
1197
|
+
"When Kubernetes, Docker or Podman discovery last saw the workload this database runs as. Empty for a database that is not a discovered workload.",
|
|
1198
|
+
})
|
|
1199
|
+
@Column({
|
|
1200
|
+
nullable: true,
|
|
1201
|
+
type: ColumnType.Date,
|
|
1202
|
+
})
|
|
1203
|
+
public workloadLastSeenAt?: Date = undefined;
|
|
1204
|
+
|
|
1205
|
+
/*
|
|
1206
|
+
* The labels and owners that rules and ingest attached to this row on their
|
|
1207
|
+
* own ({ labelIds, ownerUserIds, ownerTeamIds }, ids as lowercase strings).
|
|
1208
|
+
* The auto-archive sweep counts only the OTHER labels and owners as a sign
|
|
1209
|
+
* that somebody cares about the row, so a catch-all label or owner rule
|
|
1210
|
+
* cannot keep every discovered database alive forever. A person adding
|
|
1211
|
+
* one of these labels or owners again takes it off the list.
|
|
1212
|
+
*/
|
|
1213
|
+
@ColumnAccessControl({
|
|
1214
|
+
create: [],
|
|
1215
|
+
read: [
|
|
1216
|
+
Permission.ProjectOwner,
|
|
1217
|
+
Permission.ProjectAdmin,
|
|
1218
|
+
Permission.ProjectMember,
|
|
1219
|
+
Permission.Viewer,
|
|
1220
|
+
Permission.SettingsAdmin,
|
|
1221
|
+
Permission.SettingsMember,
|
|
1222
|
+
Permission.SettingsViewer,
|
|
1223
|
+
Permission.ReadDatabaseServer,
|
|
1224
|
+
],
|
|
1225
|
+
update: [],
|
|
1226
|
+
})
|
|
1227
|
+
@TableColumn({
|
|
1228
|
+
required: false,
|
|
1229
|
+
type: TableColumnType.JSON,
|
|
1230
|
+
title: "Automatic Assignments",
|
|
1231
|
+
description:
|
|
1232
|
+
"Label and owner ids that label rules, owner rules or telemetry attached automatically. Maintained by OneUptime.",
|
|
1233
|
+
})
|
|
1234
|
+
@Column({
|
|
1235
|
+
type: ColumnType.JSON,
|
|
1236
|
+
nullable: true,
|
|
1237
|
+
})
|
|
1238
|
+
public automaticAssignments?: JSONObject = undefined;
|
|
1239
|
+
|
|
1240
|
+
@ColumnAccessControl({
|
|
1241
|
+
create: [
|
|
1242
|
+
Permission.ProjectOwner,
|
|
1243
|
+
Permission.ProjectAdmin,
|
|
1244
|
+
Permission.ProjectMember,
|
|
1245
|
+
Permission.SettingsAdmin,
|
|
1246
|
+
Permission.SettingsMember,
|
|
1247
|
+
Permission.CreateDatabaseServer,
|
|
1248
|
+
],
|
|
1249
|
+
read: [
|
|
1250
|
+
Permission.ProjectOwner,
|
|
1251
|
+
Permission.ProjectAdmin,
|
|
1252
|
+
Permission.ProjectMember,
|
|
1253
|
+
Permission.Viewer,
|
|
1254
|
+
Permission.SettingsAdmin,
|
|
1255
|
+
Permission.SettingsMember,
|
|
1256
|
+
Permission.SettingsViewer,
|
|
1257
|
+
Permission.ReadDatabaseServer,
|
|
1258
|
+
],
|
|
1259
|
+
update: [],
|
|
1260
|
+
})
|
|
1261
|
+
@TableColumn({
|
|
1262
|
+
manyToOneRelationColumn: "createdByUserId",
|
|
1263
|
+
type: TableColumnType.Entity,
|
|
1264
|
+
modelType: User,
|
|
1265
|
+
title: "Created by User",
|
|
1266
|
+
description:
|
|
1267
|
+
"Relation to User who created this object (if this object was created by a User)",
|
|
1268
|
+
})
|
|
1269
|
+
@ManyToOne(
|
|
1270
|
+
() => {
|
|
1271
|
+
return User;
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
eager: false,
|
|
1275
|
+
nullable: true,
|
|
1276
|
+
onDelete: "SET NULL",
|
|
1277
|
+
orphanedRowAction: "nullify",
|
|
1278
|
+
},
|
|
1279
|
+
)
|
|
1280
|
+
@JoinColumn({ name: "createdByUserId" })
|
|
1281
|
+
public createdByUser?: User = undefined;
|
|
1282
|
+
|
|
1283
|
+
@ColumnAccessControl({
|
|
1284
|
+
create: [
|
|
1285
|
+
Permission.ProjectOwner,
|
|
1286
|
+
Permission.ProjectAdmin,
|
|
1287
|
+
Permission.ProjectMember,
|
|
1288
|
+
Permission.SettingsAdmin,
|
|
1289
|
+
Permission.SettingsMember,
|
|
1290
|
+
Permission.CreateDatabaseServer,
|
|
1291
|
+
],
|
|
1292
|
+
read: [
|
|
1293
|
+
Permission.ProjectOwner,
|
|
1294
|
+
Permission.ProjectAdmin,
|
|
1295
|
+
Permission.ProjectMember,
|
|
1296
|
+
Permission.Viewer,
|
|
1297
|
+
Permission.SettingsAdmin,
|
|
1298
|
+
Permission.SettingsMember,
|
|
1299
|
+
Permission.SettingsViewer,
|
|
1300
|
+
Permission.ReadDatabaseServer,
|
|
1301
|
+
],
|
|
1302
|
+
update: [],
|
|
1303
|
+
})
|
|
1304
|
+
@TableColumn({
|
|
1305
|
+
type: TableColumnType.ObjectID,
|
|
1306
|
+
title: "Created by User ID",
|
|
1307
|
+
description:
|
|
1308
|
+
"User ID who created this object (if this object was created by a User)",
|
|
1309
|
+
})
|
|
1310
|
+
@Column({
|
|
1311
|
+
type: ColumnType.ObjectID,
|
|
1312
|
+
nullable: true,
|
|
1313
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
1314
|
+
})
|
|
1315
|
+
public createdByUserId?: ObjectID = undefined;
|
|
1316
|
+
|
|
1317
|
+
@ColumnAccessControl({
|
|
1318
|
+
create: [
|
|
1319
|
+
Permission.ProjectOwner,
|
|
1320
|
+
Permission.ProjectAdmin,
|
|
1321
|
+
Permission.ProjectMember,
|
|
1322
|
+
Permission.SettingsAdmin,
|
|
1323
|
+
Permission.SettingsMember,
|
|
1324
|
+
Permission.CreateDatabaseServer,
|
|
1325
|
+
],
|
|
1326
|
+
read: [
|
|
1327
|
+
Permission.ProjectOwner,
|
|
1328
|
+
Permission.ProjectAdmin,
|
|
1329
|
+
Permission.ProjectMember,
|
|
1330
|
+
Permission.Viewer,
|
|
1331
|
+
Permission.SettingsAdmin,
|
|
1332
|
+
Permission.SettingsMember,
|
|
1333
|
+
Permission.SettingsViewer,
|
|
1334
|
+
Permission.ReadDatabaseServer,
|
|
1335
|
+
],
|
|
1336
|
+
update: [
|
|
1337
|
+
Permission.ProjectOwner,
|
|
1338
|
+
Permission.ProjectAdmin,
|
|
1339
|
+
Permission.ProjectMember,
|
|
1340
|
+
Permission.SettingsAdmin,
|
|
1341
|
+
Permission.SettingsMember,
|
|
1342
|
+
Permission.EditDatabaseServer,
|
|
1343
|
+
],
|
|
1344
|
+
})
|
|
1345
|
+
@TableColumn({
|
|
1346
|
+
isDefaultValueColumn: true,
|
|
1347
|
+
required: true,
|
|
1348
|
+
type: TableColumnType.Boolean,
|
|
1349
|
+
title: "Is Archived",
|
|
1350
|
+
description:
|
|
1351
|
+
"Is this database archived? Archived databases are hidden from lists but keep collecting telemetry.",
|
|
1352
|
+
defaultValue: false,
|
|
1353
|
+
})
|
|
1354
|
+
@Column({
|
|
1355
|
+
type: ColumnType.Boolean,
|
|
1356
|
+
nullable: false,
|
|
1357
|
+
default: false,
|
|
1358
|
+
})
|
|
1359
|
+
public isArchived?: boolean = undefined;
|
|
1360
|
+
|
|
1361
|
+
@ColumnAccessControl({
|
|
1362
|
+
create: [],
|
|
1363
|
+
read: [
|
|
1364
|
+
Permission.ProjectOwner,
|
|
1365
|
+
Permission.ProjectAdmin,
|
|
1366
|
+
Permission.ProjectMember,
|
|
1367
|
+
Permission.Viewer,
|
|
1368
|
+
Permission.SettingsAdmin,
|
|
1369
|
+
Permission.SettingsMember,
|
|
1370
|
+
Permission.SettingsViewer,
|
|
1371
|
+
Permission.ReadDatabaseServer,
|
|
1372
|
+
],
|
|
1373
|
+
update: [],
|
|
1374
|
+
})
|
|
1375
|
+
@TableColumn({
|
|
1376
|
+
required: false,
|
|
1377
|
+
type: TableColumnType.Date,
|
|
1378
|
+
title: "Archived At",
|
|
1379
|
+
description: "When was this database archived?",
|
|
1380
|
+
})
|
|
1381
|
+
@Column({
|
|
1382
|
+
type: ColumnType.Date,
|
|
1383
|
+
nullable: true,
|
|
1384
|
+
})
|
|
1385
|
+
public archivedAt?: Date = undefined;
|
|
1386
|
+
|
|
1387
|
+
@ColumnAccessControl({
|
|
1388
|
+
create: [],
|
|
1389
|
+
read: [
|
|
1390
|
+
Permission.ProjectOwner,
|
|
1391
|
+
Permission.ProjectAdmin,
|
|
1392
|
+
Permission.ProjectMember,
|
|
1393
|
+
Permission.Viewer,
|
|
1394
|
+
Permission.SettingsAdmin,
|
|
1395
|
+
Permission.SettingsMember,
|
|
1396
|
+
Permission.SettingsViewer,
|
|
1397
|
+
Permission.ReadDatabaseServer,
|
|
1398
|
+
],
|
|
1399
|
+
update: [],
|
|
1400
|
+
})
|
|
1401
|
+
@TableColumn({
|
|
1402
|
+
manyToOneRelationColumn: "archivedByUserId",
|
|
1403
|
+
type: TableColumnType.Entity,
|
|
1404
|
+
modelType: User,
|
|
1405
|
+
title: "Archived by User",
|
|
1406
|
+
description:
|
|
1407
|
+
"Relation to User who archived this object (if this object was archived by a User)",
|
|
1408
|
+
})
|
|
1409
|
+
@ManyToOne(
|
|
1410
|
+
() => {
|
|
1411
|
+
return User;
|
|
1412
|
+
},
|
|
1413
|
+
{
|
|
1414
|
+
eager: false,
|
|
1415
|
+
nullable: true,
|
|
1416
|
+
onDelete: "SET NULL",
|
|
1417
|
+
orphanedRowAction: "nullify",
|
|
1418
|
+
},
|
|
1419
|
+
)
|
|
1420
|
+
@JoinColumn({ name: "archivedByUserId" })
|
|
1421
|
+
public archivedByUser?: User = undefined;
|
|
1422
|
+
|
|
1423
|
+
@ColumnAccessControl({
|
|
1424
|
+
create: [],
|
|
1425
|
+
read: [
|
|
1426
|
+
Permission.ProjectOwner,
|
|
1427
|
+
Permission.ProjectAdmin,
|
|
1428
|
+
Permission.ProjectMember,
|
|
1429
|
+
Permission.Viewer,
|
|
1430
|
+
Permission.SettingsAdmin,
|
|
1431
|
+
Permission.SettingsMember,
|
|
1432
|
+
Permission.SettingsViewer,
|
|
1433
|
+
Permission.ReadDatabaseServer,
|
|
1434
|
+
],
|
|
1435
|
+
update: [],
|
|
1436
|
+
})
|
|
1437
|
+
@TableColumn({
|
|
1438
|
+
type: TableColumnType.ObjectID,
|
|
1439
|
+
title: "Archived by User ID",
|
|
1440
|
+
description:
|
|
1441
|
+
"User ID who archived this object (if this object was archived by a User)",
|
|
1442
|
+
})
|
|
1443
|
+
@Column({
|
|
1444
|
+
type: ColumnType.ObjectID,
|
|
1445
|
+
nullable: true,
|
|
1446
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
1447
|
+
})
|
|
1448
|
+
public archivedByUserId?: ObjectID = undefined;
|
|
1449
|
+
|
|
1450
|
+
@ColumnAccessControl({
|
|
1451
|
+
create: [],
|
|
1452
|
+
read: [
|
|
1453
|
+
Permission.ProjectOwner,
|
|
1454
|
+
Permission.ProjectAdmin,
|
|
1455
|
+
Permission.ProjectMember,
|
|
1456
|
+
Permission.Viewer,
|
|
1457
|
+
Permission.SettingsAdmin,
|
|
1458
|
+
Permission.SettingsMember,
|
|
1459
|
+
Permission.SettingsViewer,
|
|
1460
|
+
Permission.ReadDatabaseServer,
|
|
1461
|
+
],
|
|
1462
|
+
update: [],
|
|
1463
|
+
})
|
|
1464
|
+
@TableColumn({
|
|
1465
|
+
manyToOneRelationColumn: "deletedByUserId",
|
|
1466
|
+
type: TableColumnType.Entity,
|
|
1467
|
+
title: "Deleted by User",
|
|
1468
|
+
modelType: User,
|
|
1469
|
+
description:
|
|
1470
|
+
"Relation to User who deleted this object (if this object was deleted by a User)",
|
|
1471
|
+
})
|
|
1472
|
+
@ManyToOne(
|
|
1473
|
+
() => {
|
|
1474
|
+
return User;
|
|
1475
|
+
},
|
|
1476
|
+
{
|
|
1477
|
+
cascade: false,
|
|
1478
|
+
eager: false,
|
|
1479
|
+
nullable: true,
|
|
1480
|
+
onDelete: "SET NULL",
|
|
1481
|
+
orphanedRowAction: "nullify",
|
|
1482
|
+
},
|
|
1483
|
+
)
|
|
1484
|
+
@JoinColumn({ name: "deletedByUserId" })
|
|
1485
|
+
public deletedByUser?: User = undefined;
|
|
1486
|
+
|
|
1487
|
+
@ColumnAccessControl({
|
|
1488
|
+
create: [],
|
|
1489
|
+
read: [
|
|
1490
|
+
Permission.ProjectOwner,
|
|
1491
|
+
Permission.ProjectAdmin,
|
|
1492
|
+
Permission.ProjectMember,
|
|
1493
|
+
Permission.Viewer,
|
|
1494
|
+
Permission.SettingsAdmin,
|
|
1495
|
+
Permission.SettingsMember,
|
|
1496
|
+
Permission.SettingsViewer,
|
|
1497
|
+
Permission.ReadDatabaseServer,
|
|
1498
|
+
],
|
|
1499
|
+
update: [],
|
|
1500
|
+
})
|
|
1501
|
+
@TableColumn({
|
|
1502
|
+
type: TableColumnType.ObjectID,
|
|
1503
|
+
title: "Deleted by User ID",
|
|
1504
|
+
description:
|
|
1505
|
+
"User ID who deleted this object (if this object was deleted by a User)",
|
|
1506
|
+
})
|
|
1507
|
+
@Column({
|
|
1508
|
+
type: ColumnType.ObjectID,
|
|
1509
|
+
nullable: true,
|
|
1510
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
1511
|
+
})
|
|
1512
|
+
public deletedByUserId?: ObjectID = undefined;
|
|
1513
|
+
|
|
1514
|
+
@ColumnAccessControl({
|
|
1515
|
+
create: [
|
|
1516
|
+
Permission.ProjectOwner,
|
|
1517
|
+
Permission.ProjectAdmin,
|
|
1518
|
+
Permission.ProjectMember,
|
|
1519
|
+
Permission.SettingsAdmin,
|
|
1520
|
+
Permission.SettingsMember,
|
|
1521
|
+
Permission.CreateDatabaseServer,
|
|
1522
|
+
],
|
|
1523
|
+
read: [
|
|
1524
|
+
Permission.ProjectOwner,
|
|
1525
|
+
Permission.ProjectAdmin,
|
|
1526
|
+
Permission.ProjectMember,
|
|
1527
|
+
Permission.Viewer,
|
|
1528
|
+
Permission.SettingsAdmin,
|
|
1529
|
+
Permission.SettingsMember,
|
|
1530
|
+
Permission.SettingsViewer,
|
|
1531
|
+
Permission.ReadDatabaseServer,
|
|
1532
|
+
],
|
|
1533
|
+
update: [
|
|
1534
|
+
Permission.ProjectOwner,
|
|
1535
|
+
Permission.ProjectAdmin,
|
|
1536
|
+
Permission.ProjectMember,
|
|
1537
|
+
Permission.SettingsAdmin,
|
|
1538
|
+
Permission.SettingsMember,
|
|
1539
|
+
Permission.EditDatabaseServer,
|
|
1540
|
+
],
|
|
1541
|
+
})
|
|
1542
|
+
@TableColumn({
|
|
1543
|
+
required: false,
|
|
1544
|
+
type: TableColumnType.EntityArray,
|
|
1545
|
+
modelType: Label,
|
|
1546
|
+
title: "Labels",
|
|
1547
|
+
description:
|
|
1548
|
+
"Relation to Labels Array where this object is categorized in.",
|
|
1549
|
+
})
|
|
1550
|
+
@ManyToMany(
|
|
1551
|
+
() => {
|
|
1552
|
+
return Label;
|
|
1553
|
+
},
|
|
1554
|
+
{ eager: false },
|
|
1555
|
+
)
|
|
1556
|
+
@JoinTable({
|
|
1557
|
+
name: "DatabaseServerLabel",
|
|
1558
|
+
inverseJoinColumn: {
|
|
1559
|
+
name: "labelId",
|
|
1560
|
+
referencedColumnName: "_id",
|
|
1561
|
+
},
|
|
1562
|
+
joinColumn: {
|
|
1563
|
+
name: "databaseServerId",
|
|
1564
|
+
referencedColumnName: "_id",
|
|
1565
|
+
},
|
|
1566
|
+
})
|
|
1567
|
+
public labels?: Array<Label> = undefined;
|
|
1568
|
+
|
|
1569
|
+
@ColumnAccessControl({
|
|
1570
|
+
create: [
|
|
1571
|
+
Permission.ProjectOwner,
|
|
1572
|
+
Permission.ProjectAdmin,
|
|
1573
|
+
Permission.ProjectMember,
|
|
1574
|
+
Permission.SettingsAdmin,
|
|
1575
|
+
Permission.SettingsMember,
|
|
1576
|
+
Permission.CreateDatabaseServer,
|
|
1577
|
+
],
|
|
1578
|
+
read: [
|
|
1579
|
+
Permission.ProjectOwner,
|
|
1580
|
+
Permission.ProjectAdmin,
|
|
1581
|
+
Permission.ProjectMember,
|
|
1582
|
+
Permission.Viewer,
|
|
1583
|
+
Permission.SettingsAdmin,
|
|
1584
|
+
Permission.SettingsMember,
|
|
1585
|
+
Permission.SettingsViewer,
|
|
1586
|
+
Permission.ReadDatabaseServer,
|
|
1587
|
+
],
|
|
1588
|
+
update: [
|
|
1589
|
+
Permission.ProjectOwner,
|
|
1590
|
+
Permission.ProjectAdmin,
|
|
1591
|
+
Permission.ProjectMember,
|
|
1592
|
+
Permission.SettingsAdmin,
|
|
1593
|
+
Permission.SettingsMember,
|
|
1594
|
+
Permission.EditDatabaseServer,
|
|
1595
|
+
],
|
|
1596
|
+
})
|
|
1597
|
+
@TableColumn({
|
|
1598
|
+
type: TableColumnType.Number,
|
|
1599
|
+
title: "Retain Telemetry Data For Days",
|
|
1600
|
+
description:
|
|
1601
|
+
"Number of days to retain telemetry collected from this database by a collector / agent. Leave blank to use the project-wide default.",
|
|
1602
|
+
})
|
|
1603
|
+
@Column({
|
|
1604
|
+
type: ColumnType.Number,
|
|
1605
|
+
nullable: true,
|
|
1606
|
+
unique: false,
|
|
1607
|
+
})
|
|
1608
|
+
public retainTelemetryDataForDays?: number = undefined;
|
|
1609
|
+
|
|
1610
|
+
@ColumnAccessControl({
|
|
1611
|
+
create: [
|
|
1612
|
+
Permission.ProjectOwner,
|
|
1613
|
+
Permission.ProjectAdmin,
|
|
1614
|
+
Permission.ProjectMember,
|
|
1615
|
+
Permission.SettingsAdmin,
|
|
1616
|
+
Permission.SettingsMember,
|
|
1617
|
+
Permission.CreateDatabaseServer,
|
|
1618
|
+
],
|
|
1619
|
+
read: [
|
|
1620
|
+
Permission.ProjectOwner,
|
|
1621
|
+
Permission.ProjectAdmin,
|
|
1622
|
+
Permission.ProjectMember,
|
|
1623
|
+
Permission.Viewer,
|
|
1624
|
+
Permission.SettingsAdmin,
|
|
1625
|
+
Permission.SettingsMember,
|
|
1626
|
+
Permission.SettingsViewer,
|
|
1627
|
+
Permission.ReadDatabaseServer,
|
|
1628
|
+
],
|
|
1629
|
+
update: [
|
|
1630
|
+
Permission.ProjectOwner,
|
|
1631
|
+
Permission.ProjectAdmin,
|
|
1632
|
+
Permission.ProjectMember,
|
|
1633
|
+
Permission.SettingsAdmin,
|
|
1634
|
+
Permission.SettingsMember,
|
|
1635
|
+
Permission.EditDatabaseServer,
|
|
1636
|
+
],
|
|
1637
|
+
})
|
|
1638
|
+
@TableColumn({
|
|
1639
|
+
type: TableColumnType.JSON,
|
|
1640
|
+
required: false,
|
|
1641
|
+
title: "Telemetry Data Retention Overrides",
|
|
1642
|
+
description:
|
|
1643
|
+
"Per-pillar retention overrides for telemetry collected from this database by a collector / agent (logs by severity, traces by status, metrics, profiles). Unset fields fall back to the database default, then the project's retention settings.",
|
|
1644
|
+
})
|
|
1645
|
+
@Column({
|
|
1646
|
+
type: ColumnType.JSON,
|
|
1647
|
+
nullable: true,
|
|
1648
|
+
})
|
|
1649
|
+
public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
|
|
1650
|
+
}
|