@oneuptime/common 13.0.1 → 13.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/RumSession.ts +34 -0
- package/Models/DatabaseModels/AlertEpisodeLabelRule.ts +2 -2
- package/Models/DatabaseModels/AlertEpisodeOnCallRule.ts +2 -2
- package/Models/DatabaseModels/AlertEpisodeOwnerRule.ts +2 -2
- package/Models/DatabaseModels/AlertEpisodePrivacyRule.ts +2 -2
- package/Models/DatabaseModels/AlertGroupingRule.ts +2 -2
- package/Models/DatabaseModels/AlertLabelRule.ts +2 -2
- package/Models/DatabaseModels/AlertOnCallRule.ts +2 -2
- package/Models/DatabaseModels/AlertOwnerRule.ts +2 -2
- package/Models/DatabaseModels/AlertPrivacyRule.ts +2 -2
- package/Models/DatabaseModels/AlertReminderRule.ts +6 -4
- package/Models/DatabaseModels/AutoRemediationRule.ts +2 -2
- package/Models/DatabaseModels/CephClusterLabelRule.ts +2 -2
- package/Models/DatabaseModels/CephClusterOwnerRule.ts +2 -2
- package/Models/DatabaseModels/CloudResourceLabelRule.ts +2 -2
- package/Models/DatabaseModels/CloudResourceOwnerRule.ts +2 -2
- package/Models/DatabaseModels/DashboardLabelRule.ts +2 -2
- package/Models/DatabaseModels/DashboardOwnerRule.ts +2 -2
- package/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.ts +11 -0
- package/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.ts +44 -0
- package/Models/DatabaseModels/DockerHostLabelRule.ts +2 -2
- package/Models/DatabaseModels/DockerHostOwnerRule.ts +2 -2
- package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +2 -2
- package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +2 -2
- package/Models/DatabaseModels/HostLabelRule.ts +2 -2
- package/Models/DatabaseModels/HostOwnerRule.ts +2 -2
- package/Models/DatabaseModels/IncidentEpisodeLabelRule.ts +2 -2
- package/Models/DatabaseModels/IncidentEpisodeOnCallRule.ts +2 -2
- package/Models/DatabaseModels/IncidentEpisodeOwnerRule.ts +2 -2
- package/Models/DatabaseModels/IncidentEpisodePrivacyRule.ts +2 -2
- package/Models/DatabaseModels/IncidentGroupingRule.ts +2 -2
- package/Models/DatabaseModels/IncidentLabelRule.ts +2 -2
- package/Models/DatabaseModels/IncidentOnCallRule.ts +2 -2
- package/Models/DatabaseModels/IncidentOwnerRule.ts +2 -2
- package/Models/DatabaseModels/IncidentPrivacyRule.ts +2 -2
- package/Models/DatabaseModels/IncidentReminderRule.ts +6 -4
- package/Models/DatabaseModels/IncidentSlaRule.ts +2 -2
- package/Models/DatabaseModels/IncomingCallPolicy.ts +3 -4
- package/Models/DatabaseModels/IncomingCallPolicyLabelRule.ts +2 -2
- package/Models/DatabaseModels/IncomingCallPolicyOwnerRule.ts +2 -2
- package/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.ts +254 -0
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/IoTFleetLabelRule.ts +2 -2
- package/Models/DatabaseModels/IoTFleetOwnerRule.ts +2 -2
- package/Models/DatabaseModels/KubernetesClusterLabelRule.ts +2 -2
- package/Models/DatabaseModels/KubernetesClusterOwnerRule.ts +2 -2
- package/Models/DatabaseModels/MonitorLabelRule.ts +2 -2
- package/Models/DatabaseModels/MonitorOwnerRule.ts +2 -2
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +2 -2
- package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +2 -2
- package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +2 -2
- package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyLabelRule.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.ts +2 -2
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.ts +2 -2
- package/Models/DatabaseModels/PodmanHostLabelRule.ts +2 -2
- package/Models/DatabaseModels/PodmanHostOwnerRule.ts +2 -2
- package/Models/DatabaseModels/ProxmoxClusterLabelRule.ts +2 -2
- package/Models/DatabaseModels/ProxmoxClusterOwnerRule.ts +2 -2
- package/Models/DatabaseModels/RumApplicationLabelRule.ts +2 -2
- package/Models/DatabaseModels/RumApplicationOwnerRule.ts +2 -2
- package/Models/DatabaseModels/RunbookLabelRule.ts +2 -2
- package/Models/DatabaseModels/RunbookOwnerRule.ts +2 -2
- package/Models/DatabaseModels/RunbookRule.ts +2 -2
- package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +2 -2
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +2 -2
- package/Models/DatabaseModels/ScheduledMaintenanceReminderRule.ts +6 -4
- package/Models/DatabaseModels/ServerlessFunctionLabelRule.ts +2 -2
- package/Models/DatabaseModels/ServerlessFunctionOwnerRule.ts +2 -2
- package/Models/DatabaseModels/ServiceLabelRule.ts +2 -2
- package/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.ts +283 -4
- package/Models/DatabaseModels/ServiceOwnerRule.ts +2 -2
- package/Models/DatabaseModels/StatusPageLabelRule.ts +2 -2
- package/Models/DatabaseModels/StatusPageMonitorRule.ts +2 -2
- package/Models/DatabaseModels/StatusPageOwnerRule.ts +2 -2
- package/Models/DatabaseModels/VMwareVCenterLabelRule.ts +2 -2
- package/Models/DatabaseModels/VMwareVCenterOwnerRule.ts +2 -2
- package/Models/DatabaseModels/WorkflowLabelRule.ts +2 -2
- package/Models/DatabaseModels/WorkflowOwnerRule.ts +2 -2
- package/Server/API/TelemetryAPI.ts +323 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.ts +111 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.ts +644 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Middleware/MultipartFormData.ts +46 -21
- package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +21 -0
- package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +21 -0
- package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +21 -0
- package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +21 -0
- package/Server/Services/AlertGroupingEngineService.ts +27 -0
- package/Server/Services/AlertLabelRuleEngineService.ts +27 -0
- package/Server/Services/AlertOnCallRuleEngineService.ts +27 -0
- package/Server/Services/AlertOwnerRuleEngineService.ts +27 -0
- package/Server/Services/AlertPrivacyRuleEngineService.ts +27 -0
- package/Server/Services/AlertReminderRuleService.ts +65 -33
- package/Server/Services/AutoRemediationRuleEngineService.ts +90 -8
- package/Server/Services/CephClusterLabelRuleEngineService.ts +20 -0
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +20 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +20 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +20 -0
- package/Server/Services/DashboardLabelRuleEngineService.ts +20 -0
- package/Server/Services/DashboardOwnerRuleEngineService.ts +20 -0
- package/Server/Services/DatabaseService.ts +409 -6
- package/Server/Services/DockerHostLabelRuleEngineService.ts +20 -0
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +20 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +23 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +23 -0
- package/Server/Services/HostLabelRuleEngineService.ts +13 -0
- package/Server/Services/HostOwnerRuleEngineService.ts +13 -0
- package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +21 -0
- package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +21 -0
- package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +21 -0
- package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +21 -0
- package/Server/Services/IncidentGroupingEngineService.ts +64 -13
- package/Server/Services/IncidentLabelRuleEngineService.ts +64 -9
- package/Server/Services/IncidentOnCallRuleEngineService.ts +64 -10
- package/Server/Services/IncidentOwnerRuleEngineService.ts +64 -10
- package/Server/Services/IncidentPrivacyRuleEngineService.ts +64 -10
- package/Server/Services/IncidentReminderRuleService.ts +66 -34
- package/Server/Services/IncidentSlaRuleService.ts +55 -12
- package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +20 -0
- package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +20 -0
- package/Server/Services/IncomingCallPolicyPhoneNumberService.ts +184 -0
- package/Server/Services/IncomingCallPolicyService.ts +276 -5
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/IoTFleetLabelRuleEngineService.ts +20 -0
- package/Server/Services/IoTFleetOwnerRuleEngineService.ts +20 -0
- package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +23 -0
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +23 -0
- package/Server/Services/LabelService.ts +50 -7
- package/Server/Services/MonitorLabelRuleEngineService.ts +20 -0
- package/Server/Services/MonitorOwnerRuleEngineService.ts +20 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +2 -0
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +93 -1
- package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +26 -0
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +25 -0
- package/Server/Services/NetworkDeviceService.ts +2 -0
- package/Server/Services/NetworkSiteAssignmentRuleService.ts +90 -1
- package/Server/Services/NetworkSiteService.ts +242 -29
- package/Server/Services/NetworkSiteTypeService.ts +177 -77
- package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +20 -0
- package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +20 -0
- package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +22 -0
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +22 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +20 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +20 -0
- package/Server/Services/ProjectCallSMSConfigService.ts +156 -7
- package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +25 -0
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +25 -0
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +22 -0
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +22 -0
- package/Server/Services/RunbookLabelRuleEngineService.ts +20 -0
- package/Server/Services/RunbookOwnerRuleEngineService.ts +20 -0
- package/Server/Services/RunbookRuleEngineService.ts +18 -1
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +62 -10
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +62 -11
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +48 -18
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +25 -0
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +25 -0
- package/Server/Services/ServiceLabelRuleEngineService.ts +20 -0
- package/Server/Services/ServiceLevelObjectiveBurnRateRuleService.ts +675 -12
- package/Server/Services/ServiceLevelObjectiveService.ts +55 -13
- package/Server/Services/ServiceOwnerRuleEngineService.ts +20 -0
- package/Server/Services/StatusPageLabelRuleEngineService.ts +20 -0
- package/Server/Services/StatusPageMonitorRuleEngineService.ts +31 -2
- package/Server/Services/StatusPageMonitorRuleService.ts +34 -1
- package/Server/Services/StatusPageOwnerRuleEngineService.ts +20 -0
- package/Server/Services/UserService.ts +23 -50
- package/Server/Services/VMwareVCenterLabelRuleEngineService.ts +25 -0
- package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +25 -0
- package/Server/Services/WorkflowLabelRuleEngineService.ts +20 -0
- package/Server/Services/WorkflowOwnerRuleEngineService.ts +20 -0
- package/Server/Static/Brand/README.md +10 -5
- package/Server/Static/Brand/favicons/oneuptime-up-v1.svg +8 -0
- package/Server/Types/Database/QueryHelper.ts +88 -0
- package/Server/Utils/AI/Toolbox/SloTools.ts +19 -2
- package/Server/Utils/IncomingCallPhoneNumber.ts +29 -16
- package/Server/Utils/Profiling.ts +13 -1
- package/Server/Utils/Rules/MonitorRuleCriteriaCache.ts +38 -0
- package/Server/Utils/SessionReplay/SessionReplayReadService.ts +498 -0
- package/Server/Utils/Telemetry.ts +3 -1
- package/Server/Utils/VendorAssets.ts +3 -0
- package/Tests/App/Dashboard/AIInsightViewTriage.test.tsx +348 -0
- package/Tests/App/Dashboard/ArchiveResourceCard.test.tsx +476 -0
- package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +25 -0
- package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +449 -24
- package/Tests/App/Dashboard/DashboardPersistentSideMenuLayouts.test.tsx +702 -0
- package/Tests/App/Dashboard/ExceptionsLandingRedirect.test.tsx +63 -0
- package/Tests/App/Dashboard/FeedOrdering.test.ts +150 -0
- package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +279 -100
- package/Tests/App/Dashboard/InventoryItemSideMenu.test.tsx +155 -0
- package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +11 -0
- package/Tests/App/Dashboard/PasskeySettings.test.tsx +215 -71
- package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +347 -0
- package/Tests/App/Dashboard/ResourceAuditLogsSideMenus.test.tsx +263 -0
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +413 -17
- package/Tests/App/Dashboard/RumSessionReplaySideMenu.test.tsx +138 -0
- package/Tests/App/Dashboard/SloDashboardTemplateWidgets.test.tsx +940 -0
- package/Tests/App/Dashboard/TelemetryIngestionKeyEdit.test.tsx +378 -0
- package/Tests/App/Dashboard/TelemetryIngestionKeyForm.test.tsx +735 -0
- package/Tests/App/Dashboard/TwoFactorStatus.test.tsx +275 -108
- package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +13 -3
- package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +127 -4
- package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +5 -4
- package/Tests/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.test.ts +362 -0
- package/Tests/Models/DatabaseModels/RuleBaseModel.test.ts +69 -0
- package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +181 -0
- package/Tests/Server/API/SessionReplayAPI.test.ts +1303 -145
- package/Tests/Server/API/UserTwoFactorSelfService.test.ts +407 -0
- package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +611 -0
- package/Tests/Server/Middleware/MultipartFormData.test.ts +61 -3
- package/Tests/Server/Middleware/TelemetryIngestionDisabled.test.ts +211 -0
- package/Tests/Server/Services/AlertIncidentRuleCriteriaEngineServices.test.ts +651 -0
- package/Tests/Server/Services/AutoRemediationRuleEngineService.test.ts +79 -0
- package/Tests/Server/Services/DatabaseServiceRelationOnlyRuleRollout.test.ts +330 -0
- package/Tests/Server/Services/DatabaseServiceRuleCriteriaValidation.test.ts +522 -0
- package/Tests/Server/Services/IncidentSlaRuleCriteriaCorrelation.test.ts +99 -0
- package/Tests/Server/Services/IncomingCallPolicyPhoneNumberService.test.ts +1540 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +179 -2
- package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +170 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +559 -53
- package/Tests/Server/Services/NetworkSiteTypeService.test.ts +122 -55
- package/Tests/Server/Services/ReminderRuleCriteria.test.ts +173 -0
- package/Tests/Server/Services/ResourceRuleCriteriaEngineServices.test.ts +170 -0
- package/Tests/Server/Services/ScheduledMaintenanceRuleCriteriaCorrelation.test.ts +154 -0
- package/Tests/Server/Services/ServiceLevelObjectiveBurnRateRuleService.test.ts +2450 -470
- package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +464 -121
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +281 -0
- package/Tests/Server/Services/StatusPageMonitorRuleEngineService.test.ts +132 -0
- package/Tests/Server/Services/StatusPageMonitorRuleHooks.test.ts +159 -14
- package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +6 -8
- package/Tests/Server/Services/UserTwoFactorAuthAdmin.test.ts +203 -34
- package/Tests/Server/Types/Database/QueryHelperJsonArrayObjects.test.ts +128 -0
- package/Tests/Server/Utils/AI/SloTools.test.ts +190 -1
- package/Tests/Server/Utils/AI/Toolbox/AIToolbox.test.ts +461 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +25 -0
- package/Tests/Server/Utils/Billing/BillingFailureNoticeThrottle.test.ts +359 -0
- package/Tests/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.test.ts +318 -0
- package/Tests/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.test.ts +220 -0
- package/Tests/Server/Utils/Dashboard/SloTemplatePublicDashboard.test.ts +1043 -0
- package/Tests/Server/Utils/Execute.test.ts +302 -0
- package/Tests/Server/Utils/GracefulShutdown.test.ts +565 -0
- package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +36 -20
- package/Tests/Server/Utils/LoggerCore.test.ts +597 -0
- package/Tests/Server/Utils/Monitor/MonitorTemplateUtil.test.ts +1109 -0
- package/Tests/Server/Utils/Monitor/SloTemplateMetricEmitterContract.test.ts +750 -0
- package/Tests/Server/Utils/ProductAnalytics.test.ts +404 -0
- package/Tests/Server/Utils/Profiling.test.ts +366 -0
- package/Tests/Server/Utils/Rules/MonitorRuleCriteriaCache.test.ts +99 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +558 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +711 -0
- package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +522 -0
- package/Tests/Server/Utils/VendorAssets.test.ts +17 -0
- package/Tests/Types/Dashboard/DashboardTemplateEditorialInvariants.test.ts +659 -0
- package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +97 -0
- package/Tests/Types/Dashboard/SloDashboardTemplate.test.ts +1179 -0
- package/Tests/Types/Database/AccessControl/OwnedThrough.test.ts +136 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilCorePaths.test.ts +1014 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilExhaustiveRotation.test.ts +9 -6
- package/Tests/Types/Rules/RuleCriteriaFieldRegistry.test.ts +276 -0
- package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +180 -1
- package/Tests/Types/Telemetry/LlmConventions.test.ts +495 -0
- package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +13 -6
- package/Tests/UI/Components/Alert.test.tsx +532 -93
- package/Tests/UI/Components/Feed.test.tsx +241 -0
- package/Tests/UI/Components/Forms/BasicFormStepNavigation.test.tsx +368 -0
- package/Tests/UI/Components/Forms/FormSummary.test.tsx +454 -0
- package/Tests/UI/Components/Forms/ModelFormJsonColumns.test.tsx +290 -0
- package/Tests/UI/Components/Forms/ModelFormRuleCriteria.test.tsx +331 -0
- package/Tests/UI/Components/IconOpticalSize.test.tsx +79 -31
- package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +6 -6
- package/Tests/UI/Components/NavBar.test.tsx +91 -2
- package/Tests/UI/Components/PencilButton.test.tsx +211 -0
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilder.test.tsx +510 -0
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +350 -0
- package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +50 -0
- package/Tests/UI/Components/Telemetry/TelemetryRetentionConfigForm.test.tsx +329 -0
- package/Tests/UI/Components/useFeedItems.test.tsx +107 -0
- package/Tests/UI/Rum/ChunkLoader.test.ts +401 -0
- package/Tests/UI/Rum/RecordingHealthCard.test.tsx +1 -1
- package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +7 -1
- package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +2 -0
- package/Tests/UI/Rum/ReplayEngine.test.ts +1069 -5
- package/Tests/UI/Rum/ReplayHeader.test.tsx +579 -2
- package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +23 -5
- package/Tests/UI/Rum/ReplayRail.test.tsx +143 -1
- package/Tests/UI/Rum/ReplayRenderBudget.test.tsx +338 -0
- package/Tests/UI/Rum/ReplaySignals.test.ts +179 -0
- package/Tests/UI/Rum/ReplayStage.test.tsx +210 -3
- package/Tests/UI/Rum/ReplayTimeline.test.tsx +180 -1
- package/Tests/UI/Rum/ReplayUserSessionsMenu.test.tsx +405 -0
- package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +13 -16
- package/Tests/UI/Rum/SessionReplayFacets.test.tsx +199 -0
- package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +58 -21
- package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +2 -0
- package/Tests/UI/Rum/SessionReplayTable.test.tsx +717 -4
- package/Tests/UI/Rum/SessionReplayUsersPage.test.tsx +435 -0
- package/Tests/UI/Rum/SessionReplayUsersTable.test.tsx +577 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +1 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -1
- package/Tests/UI/Utils/LabelRuleImportExport.test.ts +192 -0
- package/Tests/UI/Utils/Navigation.test.ts +30 -0
- package/Tests/Utils/Dashboard/SloTemplateVariableScoping.test.ts +880 -0
- package/Tests/Utils/LabelRuleImportExport.test.ts +158 -0
- package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +93 -0
- package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +138 -0
- package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +174 -0
- package/Tests/Utils/Rules/RuleCriteriaMatcher.test.ts +1424 -0
- package/Tests/Utils/Rum/SessionIdentity.test.ts +72 -0
- package/Tests/Utils/Rum/SessionReplayHealth.test.ts +884 -0
- package/Tests/Utils/Slo/SloBurnRateRuleState.test.ts +374 -28
- package/Tests/Utils/Telemetry/OriginAllowList.test.ts +118 -0
- package/Types/Dashboard/DashboardTemplates.ts +465 -0
- package/Types/OnCallDutyPolicy/Layer.ts +12 -0
- package/Types/Rules/RuleCriteria.ts +51 -0
- package/Types/Rules/RuleCriteriaFieldRegistry.ts +449 -0
- package/Types/Rum/SessionReplay.ts +75 -0
- package/Types/Rum/SessionReplayApi.ts +93 -0
- package/UI/Components/Alerts/Alert.tsx +102 -72
- package/UI/Components/Button/Button.tsx +4 -1
- package/UI/Components/Dropdown/Dropdown.tsx +2 -0
- package/UI/Components/Feed/Feed.tsx +15 -0
- package/UI/Components/Feed/useFeedItems.ts +227 -0
- package/UI/Components/Forms/BasicForm.tsx +42 -21
- package/UI/Components/Forms/ModelForm.tsx +80 -1
- package/UI/Components/Icon/Icon.tsx +3 -35
- package/UI/Components/ModelTable/ModelTable.tsx +19 -0
- package/UI/Components/Navbar/NavBar.tsx +1 -0
- package/UI/Components/RuleCriteria/RuleCriteriaBuilder.tsx +735 -0
- package/UI/Components/RuleCriteria/RuleCriteriaModelForm.tsx +209 -0
- package/UI/Components/RuleCriteria/RuleCriteriaModelTable.tsx +205 -0
- package/UI/Components/RuleCriteria/RuleCriteriaSummary.tsx +123 -0
- package/UI/Components/Table/Table.tsx +3 -0
- package/UI/Components/Table/TableBody.tsx +3 -0
- package/UI/Components/Table/TableRow.tsx +8 -2
- package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +14 -2
- package/UI/Styles/Theme.css +1 -0
- package/UI/Utils/LabelRuleImportExport.ts +114 -6
- package/UI/Utils/Navigation.ts +1 -2
- package/UI/esbuild-config.js +46 -0
- package/Utils/Faker.ts +93 -6
- package/Utils/LabelRuleImportExport.ts +295 -2
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +108 -8
- package/Utils/NetworkSite/CidrMatchUtil.ts +102 -0
- package/Utils/NetworkSite/TypeHierarchyUtil.ts +152 -2
- package/Utils/Rules/RuleCriteriaMatcher.ts +931 -0
- package/Utils/Rum/SessionIdentity.ts +16 -0
- package/Utils/Slo/SloBurnRateRuleState.ts +87 -33
- package/Utils/Telemetry/OriginAllowList.ts +74 -0
- package/build/dist/Models/AnalyticsModels/RumSession.js +32 -0
- package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertGroupingRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertGroupingRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOnCallRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertOnCallRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertReminderRule.js +6 -5
- package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +2 -2
- package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DashboardLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/DashboardLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/DashboardOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.js +12 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RelationOnlyRuleBaseModel.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.js +50 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/RuleBaseModel.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerHostLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/DockerHostLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/DockerHostOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/HostLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/HostOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +6 -5
- package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentSlaRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncidentSlaRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js +3 -4
- package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.js +277 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyPhoneNumber.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/KubernetesClusterLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/MonitorLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/MonitorOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +2 -2
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +2 -2
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/RunbookLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookRule.js +2 -2
- package/build/dist/Models/DatabaseModels/RunbookRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +6 -5
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ServiceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +281 -4
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/ServiceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js +2 -2
- package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +211 -4
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792400000000-AddSloBurnRateRuleIncidents.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.js +301 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792500000000-AddConfigurableRuleCriteria.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792600000000-AddIncomingCallPolicyPhoneNumbers.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MultipartFormData.js +38 -21
- package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +17 -0
- package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +17 -0
- package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +17 -0
- package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +17 -0
- package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js +21 -0
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +21 -0
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +21 -0
- package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +21 -0
- package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +44 -26
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +54 -11
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +235 -10
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostLabelRuleEngineService.js +12 -0
- package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +12 -0
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +17 -0
- package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +17 -0
- package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +17 -0
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +17 -0
- package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +39 -13
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +39 -9
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +39 -10
- package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +39 -10
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +39 -10
- package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentReminderRuleService.js +44 -26
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSlaRuleService.js +33 -12
- package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyPhoneNumberService.js +127 -0
- package/build/dist/Server/Services/IncomingCallPolicyPhoneNumberService.js.map +1 -0
- package/build/dist/Server/Services/IncomingCallPolicyService.js +187 -4
- package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +2 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/LabelService.js +39 -7
- package/build/dist/Server/Services/LabelService.js.map +1 -1
- package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +2 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +57 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +17 -0
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +2 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +56 -1
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +187 -22
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteTypeService.js +126 -51
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProjectCallSMSConfigService.js +115 -6
- package/build/dist/Server/Services/ProjectCallSMSConfigService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookRuleEngineService.js +12 -0
- package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +38 -9
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +38 -10
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +32 -14
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +554 -12
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js +50 -14
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +25 -2
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageMonitorRuleService.js +19 -1
- package/build/dist/Server/Services/StatusPageMonitorRuleService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +14 -49
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +16 -0
- package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +16 -0
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +67 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +21 -4
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -1
- package/build/dist/Server/Utils/IncomingCallPhoneNumber.js +9 -3
- package/build/dist/Server/Utils/IncomingCallPhoneNumber.js.map +1 -1
- package/build/dist/Server/Utils/Profiling.js +10 -1
- package/build/dist/Server/Utils/Profiling.js.map +1 -1
- package/build/dist/Server/Utils/Rules/MonitorRuleCriteriaCache.js +30 -0
- package/build/dist/Server/Utils/Rules/MonitorRuleCriteriaCache.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +344 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +1 -1
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +2 -0
- package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +425 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/Layer.js +11 -0
- package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
- package/build/dist/Types/Rules/RuleCriteria.js +18 -0
- package/build/dist/Types/Rules/RuleCriteria.js.map +1 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +435 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplay.js +64 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -1
- package/build/dist/UI/Components/Alerts/Alert.js +63 -41
- package/build/dist/UI/Components/Alerts/Alert.js.map +1 -1
- package/build/dist/UI/Components/Button/Button.js +3 -1
- package/build/dist/UI/Components/Button/Button.js.map +1 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js +1 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/Feed/Feed.js +4 -1
- package/build/dist/UI/Components/Feed/Feed.js.map +1 -1
- package/build/dist/UI/Components/Feed/useFeedItems.js +137 -0
- package/build/dist/UI/Components/Feed/useFeedItems.js.map +1 -0
- package/build/dist/UI/Components/Forms/BasicForm.js +38 -19
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/ModelForm.js +65 -1
- package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +3 -35
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ModelTable.js +12 -1
- package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +1 -0
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js +383 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js.map +1 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js +124 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js.map +1 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js +126 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js.map +1 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js +63 -0
- package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js.map +1 -0
- package/build/dist/UI/Components/Table/Table.js +1 -1
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableBody.js +4 -2
- package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +3 -2
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js +14 -2
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
- package/build/dist/UI/Utils/LabelRuleImportExport.js +81 -5
- package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/Utils/Faker.js +76 -6
- package/build/dist/Utils/Faker.js.map +1 -1
- package/build/dist/Utils/LabelRuleImportExport.js +157 -3
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +81 -5
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +77 -0
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +109 -2
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -1
- package/build/dist/Utils/Rules/RuleCriteriaMatcher.js +526 -0
- package/build/dist/Utils/Rules/RuleCriteriaMatcher.js.map +1 -0
- package/build/dist/Utils/Rum/SessionIdentity.js +13 -1
- package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -1
- package/build/dist/Utils/Slo/SloBurnRateRuleState.js +28 -15
- package/build/dist/Utils/Slo/SloBurnRateRuleState.js.map +1 -1
- package/build/dist/Utils/Telemetry/OriginAllowList.js +61 -0
- package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -1
- package/package.json +20 -20
|
@@ -14,6 +14,10 @@ import MonitorMetricType from "../Monitor/MonitorMetricType";
|
|
|
14
14
|
import MonitorType from "../Monitor/MonitorType";
|
|
15
15
|
import MetricDashboardMetricType from "../Metrics/MetricDashboardMetricType";
|
|
16
16
|
import { DashboardValueTrendDirection } from "./DashboardComponents/DashboardValueComponent";
|
|
17
|
+
import {
|
|
18
|
+
SloWidgetDisplayType,
|
|
19
|
+
SloWidgetMetric,
|
|
20
|
+
} from "./DashboardComponents/DashboardSloComponent";
|
|
17
21
|
|
|
18
22
|
/*
|
|
19
23
|
* Trace / Exception / Profiles entries are intentionally not in this
|
|
@@ -42,6 +46,7 @@ export enum DashboardTemplateType {
|
|
|
42
46
|
Metrics = "Metrics",
|
|
43
47
|
Rum = "Rum",
|
|
44
48
|
Network = "Network",
|
|
49
|
+
Slo = "Slo",
|
|
45
50
|
}
|
|
46
51
|
|
|
47
52
|
/*
|
|
@@ -104,6 +109,14 @@ export const DashboardTemplates: Array<DashboardTemplate> = [
|
|
|
104
109
|
icon: IconProp.Globe,
|
|
105
110
|
category: DashboardTemplateCategory.Monitoring,
|
|
106
111
|
},
|
|
112
|
+
{
|
|
113
|
+
type: DashboardTemplateType.Slo,
|
|
114
|
+
name: "SLO Dashboard",
|
|
115
|
+
description:
|
|
116
|
+
"One objective's SLI, error budget remaining and burn rate as tiles and trends, with monitor uptime, latency, incidents and alerts beside it. Pick the SLO on each widget after creating it.",
|
|
117
|
+
icon: IconProp.Percent,
|
|
118
|
+
category: DashboardTemplateCategory.Monitoring,
|
|
119
|
+
},
|
|
107
120
|
{
|
|
108
121
|
type: DashboardTemplateType.Incident,
|
|
109
122
|
name: "Incident Dashboard",
|
|
@@ -904,6 +917,100 @@ function createNetworkMapComponent(data: {
|
|
|
904
917
|
};
|
|
905
918
|
}
|
|
906
919
|
|
|
920
|
+
/*
|
|
921
|
+
* An SLO widget names exactly ONE ServiceLevelObjective, by id. A template
|
|
922
|
+
* cannot know which of a project's SLOs a reader means, so every widget the
|
|
923
|
+
* SLO template ships leaves `serviceLevelObjectiveId` unset and the renderer
|
|
924
|
+
* shows its "Click to select an SLO" setup state until the reader picks one
|
|
925
|
+
* (DashboardSloComponent).
|
|
926
|
+
*
|
|
927
|
+
* `widgetTitle` is therefore always set here. Left unset, the renderer titles
|
|
928
|
+
* a configured widget "<SLO name> · <metric>", which is nicer once an SLO is
|
|
929
|
+
* chosen but leaves all six unconfigured widgets reading "SLO Widget" in the
|
|
930
|
+
* template a reader has just created. A self-describing template wins: the
|
|
931
|
+
* reader can see which tile is the burn rate before anything is configured,
|
|
932
|
+
* and can rename any of them afterwards.
|
|
933
|
+
*/
|
|
934
|
+
function createSloComponent(data: {
|
|
935
|
+
title: string;
|
|
936
|
+
sloMetric: SloWidgetMetric;
|
|
937
|
+
displayType: SloWidgetDisplayType;
|
|
938
|
+
top: number;
|
|
939
|
+
left: number;
|
|
940
|
+
width: number;
|
|
941
|
+
height: number;
|
|
942
|
+
}): DashboardBaseComponent {
|
|
943
|
+
return {
|
|
944
|
+
_type: ObjectType.DashboardComponent,
|
|
945
|
+
componentType: DashboardComponentType.Slo,
|
|
946
|
+
componentId: ObjectID.generate(),
|
|
947
|
+
topInDashboardUnits: data.top,
|
|
948
|
+
leftInDashboardUnits: data.left,
|
|
949
|
+
widthInDashboardUnits: data.width,
|
|
950
|
+
heightInDashboardUnits: data.height,
|
|
951
|
+
// Same floor the widget's own default declares (DashboardSloComponentUtil).
|
|
952
|
+
minHeightInDashboardUnits: 2,
|
|
953
|
+
minWidthInDashboardUnits: 2,
|
|
954
|
+
arguments: {
|
|
955
|
+
widgetTitle: data.title,
|
|
956
|
+
sloMetric: data.sloMetric,
|
|
957
|
+
displayType: data.displayType,
|
|
958
|
+
},
|
|
959
|
+
};
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
function createIncidentListComponent(data: {
|
|
963
|
+
title: string;
|
|
964
|
+
top: number;
|
|
965
|
+
left: number;
|
|
966
|
+
width: number;
|
|
967
|
+
height: number;
|
|
968
|
+
maxRows?: number;
|
|
969
|
+
}): DashboardBaseComponent {
|
|
970
|
+
return {
|
|
971
|
+
_type: ObjectType.DashboardComponent,
|
|
972
|
+
componentType: DashboardComponentType.IncidentList,
|
|
973
|
+
componentId: ObjectID.generate(),
|
|
974
|
+
topInDashboardUnits: data.top,
|
|
975
|
+
leftInDashboardUnits: data.left,
|
|
976
|
+
widthInDashboardUnits: data.width,
|
|
977
|
+
heightInDashboardUnits: data.height,
|
|
978
|
+
minHeightInDashboardUnits: 3,
|
|
979
|
+
minWidthInDashboardUnits: 6,
|
|
980
|
+
arguments: {
|
|
981
|
+
title: data.title,
|
|
982
|
+
maxRows: data.maxRows ?? 25,
|
|
983
|
+
viewMode: "list",
|
|
984
|
+
},
|
|
985
|
+
};
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
function createAlertListComponent(data: {
|
|
989
|
+
title: string;
|
|
990
|
+
top: number;
|
|
991
|
+
left: number;
|
|
992
|
+
width: number;
|
|
993
|
+
height: number;
|
|
994
|
+
maxRows?: number;
|
|
995
|
+
}): DashboardBaseComponent {
|
|
996
|
+
return {
|
|
997
|
+
_type: ObjectType.DashboardComponent,
|
|
998
|
+
componentType: DashboardComponentType.AlertList,
|
|
999
|
+
componentId: ObjectID.generate(),
|
|
1000
|
+
topInDashboardUnits: data.top,
|
|
1001
|
+
leftInDashboardUnits: data.left,
|
|
1002
|
+
widthInDashboardUnits: data.width,
|
|
1003
|
+
heightInDashboardUnits: data.height,
|
|
1004
|
+
minHeightInDashboardUnits: 3,
|
|
1005
|
+
minWidthInDashboardUnits: 6,
|
|
1006
|
+
arguments: {
|
|
1007
|
+
title: data.title,
|
|
1008
|
+
maxRows: data.maxRows ?? 25,
|
|
1009
|
+
viewMode: "list",
|
|
1010
|
+
},
|
|
1011
|
+
};
|
|
1012
|
+
}
|
|
1013
|
+
|
|
907
1014
|
function createMonitorListComponent(data: {
|
|
908
1015
|
title: string;
|
|
909
1016
|
top: number;
|
|
@@ -2839,6 +2946,362 @@ function createRumDashboardConfig(): DashboardViewConfig {
|
|
|
2839
2946
|
};
|
|
2840
2947
|
}
|
|
2841
2948
|
|
|
2949
|
+
function createSloDashboardConfig(): DashboardViewConfig {
|
|
2950
|
+
/*
|
|
2951
|
+
* What this template can and cannot query, which is what its whole shape
|
|
2952
|
+
* follows from:
|
|
2953
|
+
*
|
|
2954
|
+
* - The three SLO numbers (SLI, error budget remaining, burn rate) live in
|
|
2955
|
+
* Postgres (the columns the evaluation worker maintains) and in the
|
|
2956
|
+
* SloHistory ClickHouse table. Neither is in the metric store, so a
|
|
2957
|
+
* Chart / Value / Gauge widget over a metric NAME can never render them.
|
|
2958
|
+
* The dedicated Slo widget is the only thing that reads them, and it
|
|
2959
|
+
* names exactly one SLO by id, which is why the six widgets below ship
|
|
2960
|
+
* unconfigured and the first text row says so.
|
|
2961
|
+
*
|
|
2962
|
+
* - Dashboard variables do not reach the Slo widget at all: it resolves one
|
|
2963
|
+
* SLO from its stored id and has nothing to interpolate. The Monitor
|
|
2964
|
+
* variable below therefore scopes only the metric widgets in the second
|
|
2965
|
+
* half of the dashboard.
|
|
2966
|
+
*
|
|
2967
|
+
* - Those metric widgets query `oneuptime.monitor.online` and
|
|
2968
|
+
* `oneuptime.monitor.response.time`, which MonitorMetricUtil emits for
|
|
2969
|
+
* EVERY probeable monitor in the project. Unscoped they describe the
|
|
2970
|
+
* project, not the objective. That is exactly what the Monitor variable
|
|
2971
|
+
* is for, and it binds to the bare `monitorName` attribute key those
|
|
2972
|
+
* series carry (no `resource.` prefix).
|
|
2973
|
+
*
|
|
2974
|
+
* Two callers write those names, though, and only one stamps
|
|
2975
|
+
* `monitorName`. NetworkDeviceMetricUtil.saveWalkMetrics writes the same
|
|
2976
|
+
* `oneuptime.monitor.online` / `.response.time` names off a network
|
|
2977
|
+
* device poll with `deviceName` and `networkDeviceId` instead, so the
|
|
2978
|
+
* unscoped view is "every probeable monitor PLUS every network device",
|
|
2979
|
+
* and device rows drop out the moment a monitor is picked rather than
|
|
2980
|
+
* being selectable. Nothing here can filter them out — the template
|
|
2981
|
+
* helpers expose no stored attribute filter — so the widgets are
|
|
2982
|
+
* labelled for what they are and the Monitor variable is the scope.
|
|
2983
|
+
*
|
|
2984
|
+
* - The Objective Health tiles do NOT follow the dashboard time picker.
|
|
2985
|
+
* They read the SLO's own state columns, which the evaluation worker
|
|
2986
|
+
* maintains over the objective's compliance window; only the three Slo
|
|
2987
|
+
* CHARTS and the monitor widgets honour the selected range.
|
|
2988
|
+
*
|
|
2989
|
+
* - Incident and alert METRICS are deliberately NOT on this dashboard even
|
|
2990
|
+
* though an error budget is spent by incidents, for two DIFFERENT
|
|
2991
|
+
* reasons — not one shared one.
|
|
2992
|
+
*
|
|
2993
|
+
* Incident metrics cannot be scoped at all: IncidentService stamps them
|
|
2994
|
+
* with `monitorNames` (plural, comma-joined) rather than `monitorName`,
|
|
2995
|
+
* so picking a monitor would empty every incident tile while the uptime
|
|
2996
|
+
* tiles beside them stayed populated.
|
|
2997
|
+
*
|
|
2998
|
+
* Alert metrics CAN be scoped — AlertService writes the singular key —
|
|
2999
|
+
* but createBurnRateAlert in EvaluateSlos never sets `monitor`, so a
|
|
3000
|
+
* burn-rate alert carries no `monitorName` and a scoped alert tile would
|
|
3001
|
+
* hide precisely the alerts this dashboard exists for. (That omission is
|
|
3002
|
+
* not the uptime-repair problem its incident twin has: resolving an
|
|
3003
|
+
* Alert never writes MonitorStatusTimeline — only the Incident path
|
|
3004
|
+
* reaches markMonitorsActiveForMonitoring.)
|
|
3005
|
+
*
|
|
3006
|
+
* The incident and alert LISTS below read Postgres and ignore telemetry
|
|
3007
|
+
* variables entirely, so they stay correct under every selection — but
|
|
3008
|
+
* they are project-wide and honour no time range; see their row.
|
|
3009
|
+
*
|
|
3010
|
+
* - Monitor uptime is a PROXY, not the SLI. An availability SLI is
|
|
3011
|
+
* computed from MonitorStatusTimeline downtime intervals (honouring
|
|
3012
|
+
* maintenance windows and the SLO's own downtime statuses); the uptime
|
|
3013
|
+
* tile is the probe's raw 0/1 series averaged over the window. They will
|
|
3014
|
+
* disagree, which is why the tile is labelled "Monitor Uptime" rather
|
|
3015
|
+
* than anything that reads as a second opinion on the SLI.
|
|
3016
|
+
*/
|
|
3017
|
+
const components: Array<DashboardBaseComponent> = [
|
|
3018
|
+
// Row 0: Title
|
|
3019
|
+
createTextComponent({
|
|
3020
|
+
text: "SLO Dashboard",
|
|
3021
|
+
top: 0,
|
|
3022
|
+
left: 0,
|
|
3023
|
+
width: 12,
|
|
3024
|
+
height: 1,
|
|
3025
|
+
isBold: true,
|
|
3026
|
+
}),
|
|
3027
|
+
|
|
3028
|
+
/*
|
|
3029
|
+
* Row 1: the one instruction a reader needs on a freshly created SLO
|
|
3030
|
+
* dashboard. No other template carries a guidance row, and none of them
|
|
3031
|
+
* has to: their widgets query immediately. Every Slo widget here is
|
|
3032
|
+
* inert until somebody picks an objective, so saying it once beats six
|
|
3033
|
+
* identical "Click to select an SLO" placeholders explaining themselves.
|
|
3034
|
+
*
|
|
3035
|
+
* It names EDIT deliberately. The widgets' own placeholder says "Click
|
|
3036
|
+
* to select an SLO", but the click only opens the settings panel in
|
|
3037
|
+
* edit mode — and a dashboard created from a template opens in view
|
|
3038
|
+
* mode, where following that instruction does nothing.
|
|
3039
|
+
*
|
|
3040
|
+
* Kept to one short line on purpose: the Text widget scales its font to
|
|
3041
|
+
* the widget's height, so a sentence much past ~70 characters wraps out
|
|
3042
|
+
* of a height-1 row and is clipped. Everything else this dashboard
|
|
3043
|
+
* needs to say is said by the widget titles.
|
|
3044
|
+
*/
|
|
3045
|
+
createTextComponent({
|
|
3046
|
+
text: "Edit this dashboard to pick an objective on each SLO widget.",
|
|
3047
|
+
top: 1,
|
|
3048
|
+
left: 0,
|
|
3049
|
+
width: 12,
|
|
3050
|
+
height: 1,
|
|
3051
|
+
}),
|
|
3052
|
+
|
|
3053
|
+
// Row 2: Section header
|
|
3054
|
+
createTextComponent({
|
|
3055
|
+
text: "Objective Health",
|
|
3056
|
+
top: 2,
|
|
3057
|
+
left: 0,
|
|
3058
|
+
width: 12,
|
|
3059
|
+
height: 1,
|
|
3060
|
+
isBold: true,
|
|
3061
|
+
}),
|
|
3062
|
+
|
|
3063
|
+
/*
|
|
3064
|
+
* Rows 3-5: the three numbers an SLO review opens with, in the order
|
|
3065
|
+
* they are read — where the service is (SLI), how much room is left
|
|
3066
|
+
* (error budget), and how fast the room is disappearing (burn rate).
|
|
3067
|
+
* Every tile carries the SLO's status pill; the sublines differ — SLI
|
|
3068
|
+
* shows the target, the budget tile shows time remaining or over
|
|
3069
|
+
* budget, and burn rate has none.
|
|
3070
|
+
*/
|
|
3071
|
+
createSloComponent({
|
|
3072
|
+
title: "SLI",
|
|
3073
|
+
sloMetric: SloWidgetMetric.Sli,
|
|
3074
|
+
displayType: SloWidgetDisplayType.Tile,
|
|
3075
|
+
top: 3,
|
|
3076
|
+
left: 0,
|
|
3077
|
+
width: 4,
|
|
3078
|
+
height: 3,
|
|
3079
|
+
}),
|
|
3080
|
+
createSloComponent({
|
|
3081
|
+
title: "Error Budget Remaining",
|
|
3082
|
+
sloMetric: SloWidgetMetric.ErrorBudgetRemaining,
|
|
3083
|
+
displayType: SloWidgetDisplayType.Tile,
|
|
3084
|
+
top: 3,
|
|
3085
|
+
left: 4,
|
|
3086
|
+
width: 4,
|
|
3087
|
+
height: 3,
|
|
3088
|
+
}),
|
|
3089
|
+
createSloComponent({
|
|
3090
|
+
title: "Burn Rate",
|
|
3091
|
+
sloMetric: SloWidgetMetric.BurnRate,
|
|
3092
|
+
displayType: SloWidgetDisplayType.Tile,
|
|
3093
|
+
top: 3,
|
|
3094
|
+
left: 8,
|
|
3095
|
+
width: 4,
|
|
3096
|
+
height: 3,
|
|
3097
|
+
}),
|
|
3098
|
+
|
|
3099
|
+
// Row 6: Section header
|
|
3100
|
+
createTextComponent({
|
|
3101
|
+
text: "Error Budget Trends",
|
|
3102
|
+
top: 6,
|
|
3103
|
+
left: 0,
|
|
3104
|
+
width: 12,
|
|
3105
|
+
height: 1,
|
|
3106
|
+
isBold: true,
|
|
3107
|
+
}),
|
|
3108
|
+
|
|
3109
|
+
/*
|
|
3110
|
+
* Rows 7-10: the same three numbers over the dashboard's time range,
|
|
3111
|
+
* read from SloHistory. The SLI chart draws the objective's target as a
|
|
3112
|
+
* reference line, so "are we above the line" is answerable at a glance
|
|
3113
|
+
* rather than by comparing two numbers.
|
|
3114
|
+
*/
|
|
3115
|
+
createSloComponent({
|
|
3116
|
+
title: "SLI Over Time",
|
|
3117
|
+
sloMetric: SloWidgetMetric.Sli,
|
|
3118
|
+
displayType: SloWidgetDisplayType.Chart,
|
|
3119
|
+
top: 7,
|
|
3120
|
+
left: 0,
|
|
3121
|
+
width: 6,
|
|
3122
|
+
height: 4,
|
|
3123
|
+
}),
|
|
3124
|
+
createSloComponent({
|
|
3125
|
+
title: "Error Budget Remaining Over Time",
|
|
3126
|
+
sloMetric: SloWidgetMetric.ErrorBudgetRemaining,
|
|
3127
|
+
displayType: SloWidgetDisplayType.Chart,
|
|
3128
|
+
top: 7,
|
|
3129
|
+
left: 6,
|
|
3130
|
+
width: 6,
|
|
3131
|
+
height: 4,
|
|
3132
|
+
}),
|
|
3133
|
+
|
|
3134
|
+
/*
|
|
3135
|
+
* Rows 11-14: burn rate beside the incidents. A burn-rate rule declares
|
|
3136
|
+
* an incident when the budget starts going fast, so the spike and the
|
|
3137
|
+
* record of what was done about it belong on one row.
|
|
3138
|
+
*
|
|
3139
|
+
* The list cannot be narrowed to those incidents, though, and says so
|
|
3140
|
+
* in its title. IncidentList has no SLO or fingerprint filter, and —
|
|
3141
|
+
* unlike every chart on this dashboard — it does not read
|
|
3142
|
+
* `dashboardStartAndEndDate` at all. It is the project's latest
|
|
3143
|
+
* incidents, newest first, NOT the incidents inside the window the
|
|
3144
|
+
* chart beside it is drawing. Titled "Latest" rather than "Recent" so
|
|
3145
|
+
* it does not imply the dashboard's time range.
|
|
3146
|
+
*/
|
|
3147
|
+
createSloComponent({
|
|
3148
|
+
title: "Burn Rate Over Time",
|
|
3149
|
+
sloMetric: SloWidgetMetric.BurnRate,
|
|
3150
|
+
displayType: SloWidgetDisplayType.Chart,
|
|
3151
|
+
top: 11,
|
|
3152
|
+
left: 0,
|
|
3153
|
+
width: 6,
|
|
3154
|
+
height: 4,
|
|
3155
|
+
}),
|
|
3156
|
+
createIncidentListComponent({
|
|
3157
|
+
title: "Latest Incidents",
|
|
3158
|
+
top: 11,
|
|
3159
|
+
left: 6,
|
|
3160
|
+
width: 6,
|
|
3161
|
+
height: 4,
|
|
3162
|
+
maxRows: 25,
|
|
3163
|
+
}),
|
|
3164
|
+
|
|
3165
|
+
// Row 15: Section header
|
|
3166
|
+
createTextComponent({
|
|
3167
|
+
text: "Monitor Health",
|
|
3168
|
+
top: 15,
|
|
3169
|
+
left: 0,
|
|
3170
|
+
width: 12,
|
|
3171
|
+
height: 1,
|
|
3172
|
+
isBold: true,
|
|
3173
|
+
}),
|
|
3174
|
+
|
|
3175
|
+
/*
|
|
3176
|
+
* Row 16: the probe's own view of the monitors the SLO is built on.
|
|
3177
|
+
*
|
|
3178
|
+
* IsOnline is emitted as 0/1 with unit "", so Avg is an uptime RATIO in
|
|
3179
|
+
* [0, 1] and not a percent — labelled "(avg)" for the same reason the
|
|
3180
|
+
* Monitor template labels its tile that way. Response time gets both an
|
|
3181
|
+
* average and a max: an SLO that is burning on latency usually shows it
|
|
3182
|
+
* in the tail long before the mean moves.
|
|
3183
|
+
*/
|
|
3184
|
+
createValueComponent({
|
|
3185
|
+
title: "Monitor Uptime (avg)",
|
|
3186
|
+
top: 16,
|
|
3187
|
+
left: 0,
|
|
3188
|
+
width: 4,
|
|
3189
|
+
metricConfig: {
|
|
3190
|
+
metricName: MonitorMetricType.IsOnline,
|
|
3191
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
3192
|
+
},
|
|
3193
|
+
trendDirection: DashboardValueTrendDirection.HigherIsBetter,
|
|
3194
|
+
}),
|
|
3195
|
+
createValueComponent({
|
|
3196
|
+
title: "Avg Response Time",
|
|
3197
|
+
top: 16,
|
|
3198
|
+
left: 4,
|
|
3199
|
+
width: 4,
|
|
3200
|
+
metricConfig: {
|
|
3201
|
+
metricName: MonitorMetricType.ResponseTime,
|
|
3202
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
3203
|
+
legendUnit: "ms",
|
|
3204
|
+
},
|
|
3205
|
+
trendDirection: DashboardValueTrendDirection.HigherIsWorse,
|
|
3206
|
+
}),
|
|
3207
|
+
createValueComponent({
|
|
3208
|
+
title: "Worst Response Time",
|
|
3209
|
+
top: 16,
|
|
3210
|
+
left: 8,
|
|
3211
|
+
width: 4,
|
|
3212
|
+
metricConfig: {
|
|
3213
|
+
metricName: MonitorMetricType.ResponseTime,
|
|
3214
|
+
aggregationType: MetricsAggregationType.Max,
|
|
3215
|
+
legendUnit: "ms",
|
|
3216
|
+
},
|
|
3217
|
+
trendDirection: DashboardValueTrendDirection.HigherIsWorse,
|
|
3218
|
+
}),
|
|
3219
|
+
|
|
3220
|
+
// Rows 17-19: the same two signals over time.
|
|
3221
|
+
createChartComponent({
|
|
3222
|
+
title: "Monitor Uptime Over Time",
|
|
3223
|
+
chartType: DashboardChartType.Area,
|
|
3224
|
+
top: 17,
|
|
3225
|
+
left: 0,
|
|
3226
|
+
width: 6,
|
|
3227
|
+
height: 3,
|
|
3228
|
+
metricConfig: {
|
|
3229
|
+
metricName: MonitorMetricType.IsOnline,
|
|
3230
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
3231
|
+
legend: "Uptime Ratio",
|
|
3232
|
+
},
|
|
3233
|
+
}),
|
|
3234
|
+
createChartComponent({
|
|
3235
|
+
title: "Response Time Over Time",
|
|
3236
|
+
chartType: DashboardChartType.Line,
|
|
3237
|
+
top: 17,
|
|
3238
|
+
left: 6,
|
|
3239
|
+
width: 6,
|
|
3240
|
+
height: 3,
|
|
3241
|
+
metricConfig: {
|
|
3242
|
+
metricName: MonitorMetricType.ResponseTime,
|
|
3243
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
3244
|
+
legend: "Avg Response Time",
|
|
3245
|
+
legendUnit: "ms",
|
|
3246
|
+
},
|
|
3247
|
+
}),
|
|
3248
|
+
|
|
3249
|
+
/*
|
|
3250
|
+
* Rows 20-23: the monitors themselves, and the alerts a burn-rate rule
|
|
3251
|
+
* raises. Both read Postgres, so neither is affected by the Monitor
|
|
3252
|
+
* variable and neither honours the dashboard time range.
|
|
3253
|
+
*
|
|
3254
|
+
* The monitor list is titled "All Monitors" rather than anything that
|
|
3255
|
+
* implies the objective: MonitorList's only variable binding is
|
|
3256
|
+
* `labelVariableId` against a ProjectLabel variable, which this
|
|
3257
|
+
* template does not ship, so nothing the reader does in the toolbar
|
|
3258
|
+
* narrows it. The section header above was "Monitors Behind the
|
|
3259
|
+
* Objective" and promised exactly the scoping none of these widgets
|
|
3260
|
+
* has on a freshly created dashboard. Scope the list with its own
|
|
3261
|
+
* Labels filter if the project is large.
|
|
3262
|
+
*/
|
|
3263
|
+
createMonitorListComponent({
|
|
3264
|
+
title: "All Monitors",
|
|
3265
|
+
top: 20,
|
|
3266
|
+
left: 0,
|
|
3267
|
+
width: 6,
|
|
3268
|
+
height: 4,
|
|
3269
|
+
maxRows: 25,
|
|
3270
|
+
}),
|
|
3271
|
+
createAlertListComponent({
|
|
3272
|
+
title: "Latest Alerts",
|
|
3273
|
+
top: 20,
|
|
3274
|
+
left: 6,
|
|
3275
|
+
width: 6,
|
|
3276
|
+
height: 4,
|
|
3277
|
+
maxRows: 25,
|
|
3278
|
+
}),
|
|
3279
|
+
];
|
|
3280
|
+
|
|
3281
|
+
/*
|
|
3282
|
+
* Monitor metrics are stored with the bare `monitorName` attribute key
|
|
3283
|
+
* rather than the OTel `resource.` prefix — see
|
|
3284
|
+
* MonitorMetricUtil.buildAttributes — so the variable binds to the bare
|
|
3285
|
+
* key. Multi-select because an objective is normally backed by several
|
|
3286
|
+
* monitors, and picking one of them would describe less than the SLO does.
|
|
3287
|
+
*/
|
|
3288
|
+
const variables: Array<DashboardVariable> = [
|
|
3289
|
+
createTelemetryAttributeVariable({
|
|
3290
|
+
name: "monitor",
|
|
3291
|
+
label: "Monitor",
|
|
3292
|
+
attributeKey: "monitorName",
|
|
3293
|
+
isMultiSelect: true,
|
|
3294
|
+
}),
|
|
3295
|
+
];
|
|
3296
|
+
|
|
3297
|
+
return {
|
|
3298
|
+
_type: ObjectType.DashboardViewConfig,
|
|
3299
|
+
components,
|
|
3300
|
+
variables,
|
|
3301
|
+
heightInDashboardUnits: Math.max(DashboardSize.heightInDashboardUnits, 24),
|
|
3302
|
+
};
|
|
3303
|
+
}
|
|
3304
|
+
|
|
2842
3305
|
function createHostDashboardConfig(): DashboardViewConfig {
|
|
2843
3306
|
/*
|
|
2844
3307
|
* Layout notes:
|
|
@@ -4146,6 +4609,8 @@ export function getTemplateConfig(
|
|
|
4146
4609
|
return createMetricsDashboardConfig();
|
|
4147
4610
|
case DashboardTemplateType.Rum:
|
|
4148
4611
|
return createRumDashboardConfig();
|
|
4612
|
+
case DashboardTemplateType.Slo:
|
|
4613
|
+
return createSloDashboardConfig();
|
|
4149
4614
|
case DashboardTemplateType.Network:
|
|
4150
4615
|
return createNetworkDashboardConfig();
|
|
4151
4616
|
case DashboardTemplateType.Blank:
|
|
@@ -313,6 +313,18 @@ export default class LayerUtil {
|
|
|
313
313
|
hasReachedTheEndOfTheCalendar = true;
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
+
/*
|
|
317
|
+
* When the window end lands exactly on a handoff, the previous period
|
|
318
|
+
* already ended at `end` and this period starts 1 s after it, so the
|
|
319
|
+
* clamp above leaves an inverted [end + 1s, end] slice. Emitting it
|
|
320
|
+
* handed direct getEvents callers (the layer shift preview, the calendar
|
|
321
|
+
* feed coverage envelope) a negative-length event for the next user.
|
|
322
|
+
* It is the final period, so stopping here changes nothing else.
|
|
323
|
+
*/
|
|
324
|
+
if (OneUptimeDate.isAfter(currentEventStartTime, currentEventEndTime)) {
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
|
|
316
328
|
// check restriction times. if the end time of the event is after the end time of the restriction times, we need to update the end time of the event.
|
|
317
329
|
|
|
318
330
|
const trimmedStartAndEndTimes: Array<StartAndEndTime> =
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import FilterCondition from "../Filter/FilterCondition";
|
|
2
|
+
|
|
3
|
+
type RuleCriteriaSchemaVersion = 1;
|
|
4
|
+
|
|
5
|
+
export const RULE_CRITERIA_SCHEMA_VERSION: RuleCriteriaSchemaVersion =
|
|
6
|
+
1 as const;
|
|
7
|
+
|
|
8
|
+
/** A legacy regular expression that can never match any resource value. */
|
|
9
|
+
export const RULE_CRITERIA_LEGACY_NEVER_MATCH_PATTERN: string = "(?!)";
|
|
10
|
+
|
|
11
|
+
export enum RuleCriteriaOperator {
|
|
12
|
+
Equals = "Equals",
|
|
13
|
+
NotEquals = "NotEquals",
|
|
14
|
+
Contains = "Contains",
|
|
15
|
+
DoesNotContain = "DoesNotContain",
|
|
16
|
+
StartsWith = "StartsWith",
|
|
17
|
+
EndsWith = "EndsWith",
|
|
18
|
+
MatchesPattern = "MatchesPattern",
|
|
19
|
+
DoesNotMatchPattern = "DoesNotMatchPattern",
|
|
20
|
+
HasAnyOf = "HasAnyOf",
|
|
21
|
+
HasAllOf = "HasAllOf",
|
|
22
|
+
HasNoneOf = "HasNoneOf",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type RuleCriteriaValue = string | number | boolean | Array<string>;
|
|
26
|
+
|
|
27
|
+
export interface RuleCriteriaFilter {
|
|
28
|
+
field: string;
|
|
29
|
+
operator: RuleCriteriaOperator;
|
|
30
|
+
value: RuleCriteriaValue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Versioned, resource-agnostic criteria stored by rule models.
|
|
35
|
+
*
|
|
36
|
+
* Field allowlists and field-specific operator choices deliberately live with
|
|
37
|
+
* each rule form and engine. This shared type only describes how conditions
|
|
38
|
+
* are combined and serialized.
|
|
39
|
+
*/
|
|
40
|
+
export default interface RuleCriteria {
|
|
41
|
+
schemaVersion: typeof RULE_CRITERIA_SCHEMA_VERSION;
|
|
42
|
+
filterCondition: FilterCondition;
|
|
43
|
+
filters: Array<RuleCriteriaFilter>;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Logical state carried only for relation-only rules during rolling deploys.
|
|
47
|
+
* Their legacy `isEnabled` column is deliberately sent as false so an old
|
|
48
|
+
* API cannot create an enabled match-all rule after dropping `criteria`.
|
|
49
|
+
*/
|
|
50
|
+
isEnabled?: boolean;
|
|
51
|
+
}
|