@oneuptime/common 12.0.31 → 12.0.33
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/Span.ts +14 -0
- package/Models/DatabaseModels/AlertState.ts +0 -2
- package/Models/DatabaseModels/Domain.ts +1 -1
- package/Models/DatabaseModels/EnterpriseLicense.ts +56 -0
- package/Models/DatabaseModels/Incident.ts +1 -1
- package/Models/DatabaseModels/IncidentTemplate.ts +1 -1
- package/Models/DatabaseModels/Index.ts +12 -0
- package/Models/DatabaseModels/MetricType.ts +0 -2
- package/Models/DatabaseModels/Monitor.ts +76 -0
- package/Models/DatabaseModels/MonitorStatusTimeline.ts +0 -2
- package/Models/DatabaseModels/MonitorTest.ts +0 -2
- package/Models/DatabaseModels/NetworkAlertPolicy.ts +690 -0
- package/Models/DatabaseModels/NetworkDevice.ts +297 -3
- package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +3 -1
- package/Models/DatabaseModels/NetworkDeviceRole.ts +648 -0
- package/Models/DatabaseModels/NetworkSite.ts +201 -2
- package/Models/DatabaseModels/NetworkSiteType.ts +102 -3
- package/Models/DatabaseModels/NetworkSnmpCredentialProfile.ts +841 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -1
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -1
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +0 -2
- package/Models/DatabaseModels/StatusPageAnnouncementTemplate.ts +0 -2
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +0 -2
- package/Models/DatabaseModels/StatusPageResource.ts +0 -2
- package/Models/DatabaseModels/StatusPageSubscriber.ts +0 -2
- package/Models/DatabaseModels/TelemetryException.ts +119 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupBatch.ts +334 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +370 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupSetting.ts +282 -0
- package/Server/API/EnterpriseLicenseAPI.ts +391 -64
- package/Server/API/LlmProviderAPI.ts +137 -22
- package/Server/EnvironmentConfig.ts +14 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.ts +55 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.ts +124 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.ts +132 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.ts +79 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.ts +191 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
- package/Server/Infrastructure/QueueWorker.ts +38 -8
- package/Server/Middleware/BearerTokenAuthorization.ts +12 -0
- package/Server/Middleware/ProjectAuthorization.ts +11 -0
- package/Server/Middleware/SCIMAuthorization.ts +12 -0
- package/Server/Middleware/TelemetryIngest.ts +11 -0
- package/Server/Services/AIBillingService.ts +101 -27
- package/Server/Services/DatabaseService.ts +39 -9
- package/Server/Services/EnterpriseLicenseInstanceService.ts +197 -0
- package/Server/Services/EnterpriseLicenseService.ts +55 -0
- package/Server/Services/Index.ts +12 -0
- package/Server/Services/MonitorService.ts +143 -21
- package/Server/Services/MonitorStatusTimelineService.ts +150 -8
- package/Server/Services/MonitorTemplateService.ts +217 -1
- package/Server/Services/NetworkAlertPolicyEngineService.ts +2159 -0
- package/Server/Services/NetworkAlertPolicyService.ts +944 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +9 -10
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +60 -15
- package/Server/Services/NetworkDeviceRoleService.ts +90 -0
- package/Server/Services/NetworkDeviceService.ts +1032 -73
- package/Server/Services/NetworkSiteService.ts +1502 -129
- package/Server/Services/NetworkSiteTypeService.ts +1216 -0
- package/Server/Services/NetworkSnmpCredentialProfileService.ts +238 -0
- package/Server/Services/NotificationService.ts +118 -28
- package/Server/Services/ProjectService.ts +186 -44
- package/Server/Services/StatusPagePrivateUserService.ts +103 -3
- package/Server/Services/UserNotificationEmailRollupBatchService.ts +78 -0
- package/Server/Services/UserNotificationEmailRollupItemService.ts +79 -0
- package/Server/Services/UserNotificationEmailRollupSettingService.ts +113 -0
- package/Server/Services/UserNotificationSettingService.ts +62 -31
- package/Server/Services/UserService.ts +95 -0
- package/Server/Types/Database/QueryHelper.ts +2 -2
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +14 -3
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +62 -1
- package/Server/Utils/AI/Toolbox/AlertTools.ts +15 -1
- package/Server/Utils/Billing/BillingFailureNoticeThrottle.ts +80 -0
- package/Server/Utils/DataSource/HttpFetch.ts +9 -2
- package/Server/Utils/EmailRollup/EmailRollupConstants.ts +98 -0
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +872 -0
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +781 -0
- package/Server/Utils/EmailRollup/EmailRollupWriter.ts +368 -0
- package/Server/Utils/LLM/LLMService.ts +78 -0
- package/Server/Utils/LogRedaction.ts +8 -0
- package/Server/Utils/Logger.ts +79 -1
- package/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.ts +190 -0
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +9 -2
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +61 -1
- package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +14 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +49 -0
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +255 -4
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +41 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +43 -0
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +499 -19
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +66 -10
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +238 -44
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +146 -39
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +31 -18
- package/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.ts +213 -0
- package/Server/Utils/OutboundUserAgent.ts +152 -0
- package/Server/Utils/StartServer.ts +51 -19
- package/Server/Utils/Telemetry/CaptureSpan.ts +32 -8
- package/Server/Utils/Telemetry/ErrorClassResolver.ts +120 -0
- package/Server/Utils/Telemetry/SpanUtil.ts +33 -0
- package/Server/Utils/Telemetry.ts +198 -51
- package/Server/Views/Partials/SensitiveUrlToken.ejs +140 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +158 -27
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +279 -0
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +35 -8
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +107 -3
- package/Tests/App/Dashboard/DashboardEditPermissions.test.tsx +517 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +26 -0
- package/Tests/App/Dashboard/DashboardWideChartZoom.test.tsx +401 -0
- package/Tests/App/Dashboard/DeviceStatusHero.test.tsx +588 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +18 -9
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +632 -0
- package/Tests/App/Dashboard/MonitorRecommendationCreateProgress.test.tsx +682 -0
- package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +318 -0
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +4 -2
- package/Tests/App/Dashboard/NetworkDeviceBulkDelete.test.tsx +357 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormMonitorBinding.test.tsx +676 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormPingMonitor.test.tsx +791 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormProbeAndSnmp.test.tsx +833 -0
- package/Tests/App/Dashboard/NetworkDeviceCriteriaFilter.test.ts +161 -0
- package/Tests/App/Dashboard/NetworkDeviceSettingsMonitoringSection.test.tsx +458 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +626 -0
- package/Tests/App/Dashboard/PingMonitorProvisioning.test.ts +368 -0
- package/Tests/App/Dashboard/RecommendationCard.test.tsx +796 -0
- package/Tests/App/Dashboard/RecommendationToolbar.test.tsx +519 -0
- package/Tests/App/Dashboard/RecommendationsList.test.tsx +661 -0
- package/Tests/App/Dashboard/SideMenuHarness.tsx +11 -3
- package/Tests/App/Dashboard/UseBulkCreatePingMonitors.test.tsx +899 -0
- package/Tests/App/Dashboard/UseBulkSnmpCredentialProfileActions.test.tsx +732 -0
- package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +256 -0
- package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +11 -1
- package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +9 -4
- package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +115 -41
- package/Tests/Models/NetworkSiteHierarchy.test.ts +41 -4
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +951 -7
- package/Tests/Server/API/LlmProviderConnectionTest.test.ts +522 -0
- package/Tests/Server/Infrastructure/Postgres/NetworkDeviceRoleTableMigration.test.ts +476 -0
- package/Tests/Server/Infrastructure/Postgres/NetworkSnmpCredentialProfilesAndAlertPoliciesMigration.test.ts +854 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +18 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +535 -0
- package/Tests/Server/Services/AIChatPrivacyPin.test.ts +560 -0
- package/Tests/Server/Services/BillingRechargeOwnerEmailGuards.test.ts +783 -0
- package/Tests/Server/Services/DatabaseServiceGenerateSlug.test.ts +215 -0
- package/Tests/Server/Services/EnterpriseLicenseInstanceServiceDeletionUsage.test.ts +707 -0
- package/Tests/Server/Services/EnterpriseLicenseServiceUsageAggregationLock.test.ts +329 -0
- package/Tests/Server/Services/MonitorServiceDeleteNetworkDeviceCleanup.test.ts +294 -0
- package/Tests/Server/Services/MonitorStatusBridgeProbePath.test.ts +802 -0
- package/Tests/Server/Services/MonitorStatusTimelineService.test.ts +72 -2
- package/Tests/Server/Services/NetworkAlertPolicyEngineHooks.test.ts +752 -0
- package/Tests/Server/Services/NetworkAlertPolicyEngineService.test.ts +1849 -0
- package/Tests/Server/Services/NetworkAlertPolicyModel.test.ts +1793 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +47 -4
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +97 -12
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +148 -3
- package/Tests/Server/Services/NetworkDeviceMonitorBindingUpdateGuard.test.ts +514 -0
- package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +447 -58
- package/Tests/Server/Services/NetworkDeviceMonitoringMethodTransition.test.ts +739 -0
- package/Tests/Server/Services/NetworkDevicePollingTenancy.test.ts +501 -0
- package/Tests/Server/Services/NetworkDeviceRoleModel.test.ts +672 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +1 -1
- package/Tests/Server/Services/NetworkDeviceSiteDefaultProbe.test.ts +432 -0
- package/Tests/Server/Services/NetworkSiteMonitoringDefaults.test.ts +498 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +337 -55
- package/Tests/Server/Services/NetworkSiteService.test.ts +1868 -131
- package/Tests/Server/Services/NetworkSiteTypeService.test.ts +1109 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileModel.test.ts +926 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileService.test.ts +796 -0
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +67 -4
- package/Tests/Server/Services/ProjectServiceNetworkSiteTypeDefaults.test.ts +214 -0
- package/Tests/Server/Services/ScheduledMaintenanceSubscriberEndTime.test.ts +369 -0
- package/Tests/Server/Services/StatusPagePrivateUserEmailChangePasswordResetExpiry.test.ts +269 -0
- package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +472 -0
- package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +569 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingModel.test.ts +314 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingService.test.ts +409 -0
- package/Tests/Server/Services/UserNotificationSettingMonitorDefaults.test.ts +248 -0
- package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +856 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +145 -3
- package/Tests/Server/Types/Database/Permissions/DashboardAccessPermission.test.ts +321 -0
- package/Tests/Server/Types/Database/QueryHelperOperators.test.ts +17 -0
- package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +124 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +208 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +235 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +253 -0
- package/Tests/Server/Utils/BasicCron.test.ts +283 -0
- package/Tests/Server/Utils/Captcha.test.ts +422 -0
- package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +96 -2
- package/Tests/Server/Utils/Database/MigrationFailureLog.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1096 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerClaim.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +1428 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +752 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +864 -0
- package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +174 -0
- package/Tests/Server/Utils/LoggerFaultDemotion.test.ts +346 -0
- package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +633 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +196 -0
- package/Tests/Server/Utils/Monitor/DatabaseMetricWrite.test.ts +367 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +100 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +5 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +512 -31
- package/Tests/Server/Utils/Monitor/NetworkDeviceMetricUtil.test.ts +252 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +479 -42
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +351 -5
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +136 -12
- package/Tests/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.test.ts +306 -0
- package/Tests/Server/Utils/OutboundUserAgent.test.ts +266 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClientUserAgent.test.ts +141 -0
- package/Tests/Server/Utils/Telemetry/ErrorClassResolver.test.ts +298 -0
- package/Tests/Server/Utils/Telemetry.test.ts +456 -66
- package/Tests/Types/Monitor/DatabaseMetricCatalog.test.ts +388 -0
- package/Tests/Types/Monitor/MonitorStepDatabaseMonitor.test.ts +243 -0
- package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +16 -7
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +60 -0
- package/Tests/Types/NetworkDevice/DefaultNetworkDeviceRole.test.ts +417 -0
- package/Tests/Types/NetworkDevice/NetworkAlertPolicyScope.test.ts +655 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +115 -26
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +39 -0
- package/Tests/Types/NotificationSetting/NotificationEmailRollupPolicy.test.ts +299 -0
- package/Tests/Types/Telemetry/ErrorClass.test.ts +483 -0
- package/Tests/UI/Components/BasicRadioButtons.test.tsx +336 -0
- package/Tests/UI/Components/Charts/ChartClickDoubleClickDisambiguation.test.tsx +221 -0
- package/Tests/UI/Components/Charts/ChartDoubleClickReset.test.tsx +220 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +751 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +475 -43
- package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +89 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +15 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +103 -8
- package/Tests/UI/Components/ProgressBar.test.tsx +38 -2
- package/Tests/UI/Components/SideMenuItem.test.tsx +256 -4
- package/Tests/UI/Components/SideMenuSection.test.tsx +310 -0
- package/Tests/UI/Components/SideOverSubmitState.test.tsx +335 -0
- package/Tests/UI/Utils/PageScrollLock.test.tsx +377 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +78 -0
- package/Tests/UI/Utils/SensitiveUrlToken.test.ts +140 -0
- package/Tests/UI/Utils/TableColumnsToCsv.test.ts +30 -0
- package/Tests/UI/Utils/UseDashboardTimeRangeZoom.test.tsx +187 -0
- package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +302 -0
- package/Tests/Utils/Dashboard/DashboardTimeRangeZoom.test.ts +242 -0
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +69 -0
- package/Tests/Utils/EnterpriseLicenseSync.test.ts +7 -1
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +433 -2
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +280 -1
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/NetworkDeviceRoleCatalog.test.ts +981 -0
- package/Tests/Utils/Monitor/NetworkTopologyRoleCatalog.test.ts +865 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +38 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +284 -23
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +177 -0
- package/Tests/Utils/NetworkDevice/DeviceRoleKeyUtil.test.ts +538 -0
- package/Tests/Utils/NetworkDevice/MonitoringMethodThreadedClassifiers.test.ts +992 -0
- package/Tests/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.test.ts +427 -0
- package/Tests/Utils/NetworkDevice/ReachabilityStampConsistency.test.ts +185 -0
- package/Tests/Utils/NetworkDevice/SnmpCredentialUtil.test.ts +268 -0
- package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +55 -5
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +98 -21
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +98 -20
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +8 -7
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilderForAddress.test.ts +274 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +230 -51
- package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +209 -0
- package/Tests/Utils/Slo/SloEvaluation.test.ts +171 -0
- package/Tests/Utils/Slug.test.ts +61 -1
- package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +145 -0
- package/Tests/jest.setup.ts +19 -0
- package/Types/AI/ExceptionAIClassification.ts +10 -24
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +5 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.ts +13 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.ts +6 -0
- package/Types/Exception/ApiException.ts +10 -0
- package/Types/Exception/BadDataException.ts +11 -0
- package/Types/Exception/BadRequestException.ts +11 -0
- package/Types/Exception/Exception.ts +65 -0
- package/Types/Exception/ForbiddenException.ts +10 -0
- package/Types/Exception/NotAuthenticatedException.ts +10 -0
- package/Types/Exception/NotAuthorizedException.ts +10 -0
- package/Types/Exception/NotFoundException.ts +11 -0
- package/Types/Exception/PayloadTooLargeException.ts +11 -0
- package/Types/Exception/PaymentRequiredException.ts +10 -0
- package/Types/Exception/ServiceUnavailableException.ts +10 -0
- package/Types/Exception/SsoAuthorizationException.ts +10 -0
- package/Types/Exception/TenantNotFoundException.ts +11 -0
- package/Types/Exception/TimeoutException.ts +10 -0
- package/Types/Exception/TooManyRequestsException.ts +10 -0
- package/Types/Exception/UnableToReachServer.ts +10 -0
- package/Types/Exception/WebsiteRequestException.ts +10 -0
- package/Types/Monitor/CriteriaFilter.ts +60 -2
- package/Types/Monitor/DatabaseMetricCatalog.ts +693 -0
- package/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.ts +83 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +76 -0
- package/Types/Monitor/MonitorMetricType.ts +71 -0
- package/Types/Monitor/MonitorStep.ts +76 -0
- package/Types/Monitor/MonitorStepDatabaseMonitor.ts +171 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +2 -20
- package/Types/Monitor/MonitorType.ts +47 -1
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +22 -1
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +61 -0
- package/Types/Monitor/SqlConnectionConfig.ts +31 -0
- package/Types/NetworkDevice/DefaultNetworkDeviceRole.ts +145 -0
- package/Types/NetworkDevice/NetworkAlertPolicyScope.ts +343 -0
- package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +42 -22
- package/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.ts +30 -0
- package/Types/NotificationSetting/NotificationEmailRollupCategory.ts +255 -0
- package/Types/NotificationSetting/NotificationEmailRollupPolicy.ts +104 -0
- package/Types/Permission.ts +135 -0
- package/Types/Probe/ProbeMonitorResponse.ts +16 -0
- package/Types/Telemetry/ErrorClass.ts +274 -0
- package/Types/Telemetry/UnitOfWork.ts +59 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +7 -0
- package/UI/Components/Charts/Bar/BarChart.tsx +6 -0
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +9 -1
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +97 -35
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +14 -0
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +97 -35
- package/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +2 -8
- package/UI/Components/EditionLabel/EditionLabel.tsx +4 -0
- package/UI/Components/Modal/Modal.tsx +2 -8
- package/UI/Components/ModelTable/BaseModelTable.tsx +50 -15
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/Navbar/NavBar.tsx +62 -13
- package/UI/Components/Navbar/NavBarMenuModal.tsx +7 -2
- package/UI/Components/ProgressBar/ProgressBar.tsx +12 -1
- package/UI/Components/RadioButtons/BasicRadioButtons.tsx +37 -7
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +2 -0
- package/UI/Components/SideMenu/SideMenu.tsx +135 -7
- package/UI/Components/SideMenu/SideMenuItem.tsx +80 -85
- package/UI/Components/SideMenu/SideMenuSection.tsx +69 -25
- package/UI/Components/SideOver/SideOver.tsx +21 -20
- package/UI/Utils/PageScrollLock.ts +79 -3
- package/UI/Utils/PermissionGate.ts +61 -0
- package/UI/Utils/SensitiveUrlToken.ts +112 -0
- package/UI/Utils/TestLLMProvider.ts +11 -0
- package/UI/Utils/UseDashboardTimeRangeZoom.ts +77 -0
- package/Utils/Dashboard/DashboardTimeRangeZoom.ts +118 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +16 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +191 -11
- package/Utils/Monitor/MonitorMetricType.ts +153 -1
- package/Utils/Monitor/NetworkDeviceRoleCatalog.ts +232 -0
- package/Utils/Monitor/NetworkDeviceRoleUtil.ts +2 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +139 -36
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +65 -14
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +43 -14
- package/Utils/NetworkDevice/DeviceRoleKeyUtil.ts +137 -0
- package/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts +247 -0
- package/Utils/NetworkDevice/SnmpCredentialUtil.ts +68 -0
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +15 -7
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +52 -17
- package/Utils/NetworkDiscovery/DiscoveryImportEligibility.ts +55 -23
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +115 -13
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +66 -20
- package/Utils/NetworkSite/TypeHierarchyUtil.ts +313 -0
- package/Utils/Rules/RulePatternMatchUtil.ts +1 -1
- package/Utils/Slug.ts +34 -1
- package/build/dist/Models/AnalyticsModels/Span.js +14 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertState.js +0 -2
- package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +59 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +12 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +0 -2
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +75 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTest.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorTest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js +713 -0
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +304 -4
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +3 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js +677 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js +200 -2
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +102 -3
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js +878 -0
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageResource.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +123 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js +363 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +402 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js +296 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +273 -60
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/LlmProviderAPI.js +108 -13
- package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +12 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js +111 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js +77 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js +50 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +33 -5
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js +12 -0
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +11 -0
- package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +12 -0
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +11 -0
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AIBillingService.js +70 -16
- package/build/dist/Server/Services/AIBillingService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +31 -5
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +167 -0
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +39 -0
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +12 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +119 -21
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +127 -8
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +162 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js +1683 -0
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js +732 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +10 -9
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +54 -11
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceRoleService.js +70 -0
- package/build/dist/Server/Services/NetworkDeviceRoleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceService.js +841 -70
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +1145 -107
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteTypeService.js +863 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js +217 -0
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js.map +1 -0
- package/build/dist/Server/Services/NotificationService.js +80 -17
- package/build/dist/Server/Services/NotificationService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +131 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +92 -2
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js +76 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js +77 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js +111 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +46 -21
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +90 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +14 -3
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +54 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +18 -4
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js +59 -0
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +2 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +91 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +691 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +497 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +257 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -0
- package/build/dist/Server/Utils/LLM/LLMService.js +64 -1
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/LogRedaction.js +8 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +63 -1
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js +141 -0
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +51 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +7 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +37 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +158 -6
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +32 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +330 -21
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +55 -10
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +178 -49
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +119 -29
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +30 -17
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -1
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js +158 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js.map +1 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js +123 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +38 -14
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +28 -8
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js +95 -0
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js +29 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +162 -46
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Types/AI/ExceptionAIClassification.js +10 -24
- package/build/dist/Types/AI/ExceptionAIClassification.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js +2 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js.map +1 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js +7 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js.map +1 -0
- package/build/dist/Types/Exception/ApiException.js +9 -0
- package/build/dist/Types/Exception/ApiException.js.map +1 -1
- package/build/dist/Types/Exception/BadDataException.js +10 -0
- package/build/dist/Types/Exception/BadDataException.js.map +1 -1
- package/build/dist/Types/Exception/BadRequestException.js +10 -0
- package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
- package/build/dist/Types/Exception/Exception.js +56 -0
- package/build/dist/Types/Exception/Exception.js.map +1 -1
- package/build/dist/Types/Exception/ForbiddenException.js +9 -0
- package/build/dist/Types/Exception/ForbiddenException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthenticatedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthorizedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
- package/build/dist/Types/Exception/NotFoundException.js +10 -0
- package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/PayloadTooLargeException.js +10 -0
- package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -1
- package/build/dist/Types/Exception/PaymentRequiredException.js +9 -0
- package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
- package/build/dist/Types/Exception/ServiceUnavailableException.js +9 -0
- package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -1
- package/build/dist/Types/Exception/SsoAuthorizationException.js +9 -0
- package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
- package/build/dist/Types/Exception/TenantNotFoundException.js +10 -0
- package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/TimeoutException.js +9 -0
- package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
- package/build/dist/Types/Exception/TooManyRequestsException.js +9 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -1
- package/build/dist/Types/Exception/UnableToReachServer.js +9 -0
- package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
- package/build/dist/Types/Exception/WebsiteRequestException.js +9 -0
- package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +45 -2
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js +594 -0
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js +21 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +70 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +61 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +54 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js +122 -0
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +45 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +21 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SqlConnectionConfig.js +2 -0
- package/build/dist/Types/Monitor/SqlConnectionConfig.js.map +1 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js +105 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js +172 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +40 -22
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js +26 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js +186 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js +87 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +120 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ErrorClass.js +216 -0
- package/build/dist/Types/Telemetry/ErrorClass.js.map +1 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js +59 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js.map +1 -0
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +79 -31
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +7 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +79 -31
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js +14 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js.map +1 -0
- 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 +2 -7
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +3 -0
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -7
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +39 -13
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +39 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +44 -9
- 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/ProgressBar/ProgressBar.js +12 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js +6 -6
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +76 -11
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +50 -54
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +32 -9
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +5 -20
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Utils/PageScrollLock.js +31 -3
- package/build/dist/UI/Utils/PageScrollLock.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +42 -1
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
- package/build/dist/UI/Utils/SensitiveUrlToken.js +97 -0
- package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -0
- package/build/dist/UI/Utils/TestLLMProvider.js +4 -5
- package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js +42 -0
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js +74 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +15 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +111 -9
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +109 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js +126 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +2 -1
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +75 -35
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +27 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +7 -5
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js +114 -0
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js +180 -0
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js +12 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +15 -5
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +44 -15
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js +52 -23
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +85 -13
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +30 -15
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +191 -0
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -0
- package/build/dist/Utils/Rules/RulePatternMatchUtil.js +1 -1
- package/build/dist/Utils/Slug.js +31 -1
- package/build/dist/Utils/Slug.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import MonitorTemplate from "../../Models/DatabaseModels/MonitorTemplate";
|
|
2
|
+
import NetworkAlertPolicy from "../../Models/DatabaseModels/NetworkAlertPolicy";
|
|
3
|
+
import { CriteriaAlert } from "../../Types/Monitor/CriteriaAlert";
|
|
4
|
+
import { CriteriaIncident } from "../../Types/Monitor/CriteriaIncident";
|
|
5
|
+
import MonitorCriteria from "../../Types/Monitor/MonitorCriteria";
|
|
6
|
+
import MonitorCriteriaInstance from "../../Types/Monitor/MonitorCriteriaInstance";
|
|
7
|
+
import MonitorStep from "../../Types/Monitor/MonitorStep";
|
|
8
|
+
import { MonitorStepNetworkDeviceMonitorUtil } from "../../Types/Monitor/MonitorStepNetworkDeviceMonitor";
|
|
9
|
+
import MonitorSteps from "../../Types/Monitor/MonitorSteps";
|
|
10
|
+
import MonitorType from "../../Types/Monitor/MonitorType";
|
|
11
|
+
import NetworkDeviceAlertPackUtil from "../../Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack";
|
|
12
|
+
import { NetworkAlertPolicyScopeUtil } from "../../Types/NetworkDevice/NetworkAlertPolicyScope";
|
|
13
|
+
import ObjectID from "../../Types/ObjectID";
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
* The "one click to alerting" path for network devices.
|
|
17
|
+
*
|
|
18
|
+
* An alert policy is only useful once it has a Network Device monitor
|
|
19
|
+
* template to clone, and building one by hand means walking the monitor
|
|
20
|
+
* template form: pick the type, add a step, add five criteria, fill in a
|
|
21
|
+
* severity and a status on each. Most operators want exactly the Recommended
|
|
22
|
+
* Alert Pack (NetworkDeviceAlertPack) on every device, so this util builds
|
|
23
|
+
* that template and the policy that applies it to the whole project, and the
|
|
24
|
+
* settings page find-or-creates the pair from its empty state.
|
|
25
|
+
*
|
|
26
|
+
* FIND-OR-CREATE BY MARKER. The template carries RECOMMENDED_TEMPLATE_MARKER
|
|
27
|
+
* in its description. The name is what an operator renames; the marker is
|
|
28
|
+
* what the bootstrap looks for, so clicking "create the recommended policy"
|
|
29
|
+
* twice — or after the recommended policy was deleted and its template kept
|
|
30
|
+
* — reuses the template instead of minting a second one, and instead of
|
|
31
|
+
* tripping the policy service's "another policy already uses this template"
|
|
32
|
+
* refusal on a duplicate nobody meant to make.
|
|
33
|
+
*
|
|
34
|
+
* WHY THE ITEMS ARE FILLED IN HERE. NetworkDeviceAlertPackUtil deliberately
|
|
35
|
+
* leaves severities and on-call policies for the user to complete on the
|
|
36
|
+
* monitor form. A policy's monitors are never opened in that form — the
|
|
37
|
+
* engine clones them — so a criteria whose `createIncidents` is on but whose
|
|
38
|
+
* `incidents` list is empty would clone into monitors that fire nothing.
|
|
39
|
+
* Every incident-creating item therefore gets one CriteriaIncident and every
|
|
40
|
+
* alert-creating item one CriteriaAlert, both auto-resolving, at the
|
|
41
|
+
* project's lowest-order severity (PingMonitorSeedIds resolves that).
|
|
42
|
+
*
|
|
43
|
+
* NO DEVICE ON THE TEMPLATE STEP. A Network Device step names the device it
|
|
44
|
+
* watches; a template step is a placeholder the engine rebinds per device
|
|
45
|
+
* (NetworkDeviceMonitorTemplateUtil.rebindMonitorSteps), which requires the
|
|
46
|
+
* `networkDeviceMonitor` block to exist and ignores what id it holds. The
|
|
47
|
+
* step is built with the block present and the id unset, which the
|
|
48
|
+
* template's reference validator skips rather than rejects.
|
|
49
|
+
*
|
|
50
|
+
* Pure: no database, no permissions. The caller persists both rows through
|
|
51
|
+
* ModelAPI / the services so tenancy, billing and the policy engine's hooks
|
|
52
|
+
* all run.
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
export const RECOMMENDED_TEMPLATE_MARKER: string =
|
|
56
|
+
"[oneuptime:network-alert-pack:v1]";
|
|
57
|
+
|
|
58
|
+
export const RECOMMENDED_TEMPLATE_NAME: string =
|
|
59
|
+
"Network device alert pack (recommended)";
|
|
60
|
+
|
|
61
|
+
export const RECOMMENDED_POLICY_NAME: string = "Alert on every device";
|
|
62
|
+
|
|
63
|
+
export interface RecommendedMonitorTemplateSeedIds {
|
|
64
|
+
projectId: ObjectID;
|
|
65
|
+
incidentSeverityId: ObjectID;
|
|
66
|
+
alertSeverityId: ObjectID;
|
|
67
|
+
onlineMonitorStatusId: ObjectID;
|
|
68
|
+
offlineMonitorStatusId: ObjectID;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface RecommendedPolicySeedIds {
|
|
72
|
+
projectId: ObjectID;
|
|
73
|
+
monitorTemplateId: ObjectID;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* The slice of a MonitorTemplate the marker check reads. Kept to one
|
|
78
|
+
* optional field so a caller that listed templates with a narrow `select`
|
|
79
|
+
* can still ask.
|
|
80
|
+
*/
|
|
81
|
+
export interface RecommendedTemplateCandidate {
|
|
82
|
+
templateDescription?: string | undefined;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default class NetworkAlertPolicyBootstrapUtil {
|
|
86
|
+
/**
|
|
87
|
+
* The template every device's monitor is cloned from: a Network Device
|
|
88
|
+
* template whose single step carries the Recommended Alert Pack, with an
|
|
89
|
+
* incident or an alert filled in on every item.
|
|
90
|
+
*/
|
|
91
|
+
public static buildRecommendedMonitorTemplate(
|
|
92
|
+
data: RecommendedMonitorTemplateSeedIds,
|
|
93
|
+
): MonitorTemplate {
|
|
94
|
+
const criteriaInstances: Array<MonitorCriteriaInstance> =
|
|
95
|
+
NetworkDeviceAlertPackUtil.buildCriteriaInstances({
|
|
96
|
+
downMonitorStatusId: data.offlineMonitorStatusId,
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
for (const criteriaInstance of criteriaInstances) {
|
|
100
|
+
NetworkAlertPolicyBootstrapUtil.fillCriteriaActions({
|
|
101
|
+
criteriaInstance: criteriaInstance,
|
|
102
|
+
incidentSeverityId: data.incidentSeverityId,
|
|
103
|
+
alertSeverityId: data.alertSeverityId,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const monitorCriteria: MonitorCriteria = new MonitorCriteria();
|
|
108
|
+
monitorCriteria.data = {
|
|
109
|
+
monitorCriteriaInstanceArray: criteriaInstances,
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const monitorStep: MonitorStep = new MonitorStep();
|
|
113
|
+
monitorStep.data!.networkDeviceMonitor =
|
|
114
|
+
MonitorStepNetworkDeviceMonitorUtil.getDefault();
|
|
115
|
+
monitorStep.data!.monitorCriteria = monitorCriteria;
|
|
116
|
+
|
|
117
|
+
const monitorSteps: MonitorSteps = new MonitorSteps();
|
|
118
|
+
monitorSteps.data = {
|
|
119
|
+
monitorStepsInstanceArray: [monitorStep],
|
|
120
|
+
/*
|
|
121
|
+
* Where the monitor goes when no pack item matches — the device is
|
|
122
|
+
* reachable, its walk succeeds, its interfaces are up. Without this a
|
|
123
|
+
* monitor that once went Offline would never come back.
|
|
124
|
+
*/
|
|
125
|
+
defaultMonitorStatusId: new ObjectID(
|
|
126
|
+
data.onlineMonitorStatusId.toString(),
|
|
127
|
+
),
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const template: MonitorTemplate = new MonitorTemplate();
|
|
131
|
+
template.projectId = new ObjectID(data.projectId.toString());
|
|
132
|
+
template.templateName = RECOMMENDED_TEMPLATE_NAME;
|
|
133
|
+
template.templateDescription =
|
|
134
|
+
NetworkAlertPolicyBootstrapUtil.buildRecommendedTemplateDescription();
|
|
135
|
+
template.monitorType = MonitorType.NetworkDevice;
|
|
136
|
+
template.monitorSteps = monitorSteps;
|
|
137
|
+
/*
|
|
138
|
+
* Left blank on purpose: a policy's monitors are named after the device
|
|
139
|
+
* alone, and a default monitor name would become a suffix on every one
|
|
140
|
+
* of them (the auto-import precedent, issue #3486).
|
|
141
|
+
*/
|
|
142
|
+
template.monitorDescription =
|
|
143
|
+
"Provisioned by a Network Alert Policy. Edit the policy's template to change what this monitor alerts on; it is re-synced from the template, so edits made here are overwritten.";
|
|
144
|
+
|
|
145
|
+
return template;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The policy that applies the template to every device in the project.
|
|
150
|
+
* Unscoped on purpose — that is what "recommended" means here, and the
|
|
151
|
+
* settings table says "All devices" against it so nobody misreads the
|
|
152
|
+
* reach.
|
|
153
|
+
*/
|
|
154
|
+
public static buildRecommendedPolicy(
|
|
155
|
+
data: RecommendedPolicySeedIds,
|
|
156
|
+
): NetworkAlertPolicy {
|
|
157
|
+
const policy: NetworkAlertPolicy = new NetworkAlertPolicy();
|
|
158
|
+
policy.projectId = new ObjectID(data.projectId.toString());
|
|
159
|
+
policy.name = RECOMMENDED_POLICY_NAME;
|
|
160
|
+
policy.description =
|
|
161
|
+
"Every probe-polled device in the project gets a Network Device monitor cloned from the recommended alert pack: an incident when it stops answering ping and SNMP or an interface goes down, and an alert when its SNMP walk fails, an interface saturates or an interface logs errors. A device with no SNMP credentials is pinged rather than walked, so only the reachability item can fire on it until credentials are set. Narrow the scope to sites, roles or labels to cover fewer devices.";
|
|
162
|
+
policy.isEnabled = true;
|
|
163
|
+
policy.monitorTemplateId = new ObjectID(data.monitorTemplateId.toString());
|
|
164
|
+
policy.scope = NetworkAlertPolicyScopeUtil.normalize({});
|
|
165
|
+
|
|
166
|
+
return policy;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Whether a template is the one this util minted, by its marker. */
|
|
170
|
+
public static isRecommendedTemplate(
|
|
171
|
+
template: RecommendedTemplateCandidate | null | undefined,
|
|
172
|
+
): boolean {
|
|
173
|
+
return (template?.templateDescription || "").includes(
|
|
174
|
+
RECOMMENDED_TEMPLATE_MARKER,
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* The recommended template among a project's templates, or null. The
|
|
180
|
+
* first marked one wins so a project that somehow holds two keeps reusing
|
|
181
|
+
* the same one rather than alternating.
|
|
182
|
+
*/
|
|
183
|
+
public static findRecommendedTemplate<
|
|
184
|
+
TTemplate extends RecommendedTemplateCandidate,
|
|
185
|
+
>(templates: Array<TTemplate>): TTemplate | null {
|
|
186
|
+
for (const template of templates) {
|
|
187
|
+
if (NetworkAlertPolicyBootstrapUtil.isRecommendedTemplate(template)) {
|
|
188
|
+
return template;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* The description the marker lives in. The marker is on its own line at
|
|
197
|
+
* the end so an operator can rewrite the prose above it without losing
|
|
198
|
+
* the tag that makes the template findable.
|
|
199
|
+
*/
|
|
200
|
+
public static buildRecommendedTemplateDescription(): string {
|
|
201
|
+
return `The Recommended Alert Pack for network devices: an incident when a device stops answering ping and SNMP or an interface goes down, an alert when the SNMP walk fails, an interface runs above 80% utilization or an interface logs errors. Created by the "Create the recommended policy" action under Network > Settings > Alert Policies; edit the criteria here and every monitor the policy provisions follows. Keep the marker below so the action can find this template again.\n\n${RECOMMENDED_TEMPLATE_MARKER}`;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/*
|
|
205
|
+
* One CriteriaIncident on an incident-creating item, one CriteriaAlert on
|
|
206
|
+
* an alert-creating one, titled after the pack item so the incident an
|
|
207
|
+
* operator is paged with reads "Device unreachable", not "Criteria 1".
|
|
208
|
+
*/
|
|
209
|
+
private static fillCriteriaActions(data: {
|
|
210
|
+
criteriaInstance: MonitorCriteriaInstance;
|
|
211
|
+
incidentSeverityId: ObjectID;
|
|
212
|
+
alertSeverityId: ObjectID;
|
|
213
|
+
}): void {
|
|
214
|
+
const criteriaData: MonitorCriteriaInstance["data"] =
|
|
215
|
+
data.criteriaInstance.data;
|
|
216
|
+
|
|
217
|
+
if (!criteriaData) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (criteriaData.createIncidents) {
|
|
222
|
+
const incident: CriteriaIncident = {
|
|
223
|
+
id: ObjectID.generate().toString(),
|
|
224
|
+
title: criteriaData.name,
|
|
225
|
+
description: criteriaData.description,
|
|
226
|
+
incidentSeverityId: new ObjectID(data.incidentSeverityId.toString()),
|
|
227
|
+
autoResolveIncident: true,
|
|
228
|
+
onCallPolicyIds: [],
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
criteriaData.incidents = [incident];
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (criteriaData.createAlerts) {
|
|
235
|
+
const alert: CriteriaAlert = {
|
|
236
|
+
id: ObjectID.generate().toString(),
|
|
237
|
+
title: criteriaData.name,
|
|
238
|
+
description: criteriaData.description,
|
|
239
|
+
alertSeverityId: new ObjectID(data.alertSeverityId.toString()),
|
|
240
|
+
autoResolveAlert: true,
|
|
241
|
+
onCallPolicyIds: [],
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
criteriaData.alerts = [alert];
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { SnmpVersionUtil } from "../../Types/Monitor/SnmpMonitor/SnmpVersion";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* "Does this row carry enough to open an SNMP session with?"
|
|
5
|
+
*
|
|
6
|
+
* The question is asked of three different rows in turn at poll time - the
|
|
7
|
+
* device's own snmp* columns, the profile the device points at, and the
|
|
8
|
+
* profile the device's site points at - and the first row that answers yes is
|
|
9
|
+
* the one the device is walked with. A device with no usable set anywhere is
|
|
10
|
+
* pinged and never walked. So this function is the resolution order's
|
|
11
|
+
* predicate, and it is deliberately shaped to accept ANY object carrying the
|
|
12
|
+
* three fields it reads rather than a NetworkDevice or a
|
|
13
|
+
* NetworkSnmpCredentialProfile specifically: the caller hands it whichever
|
|
14
|
+
* row it is looking at and gets the same answer for each.
|
|
15
|
+
*
|
|
16
|
+
* "Usable" is the minimum an SNMP session needs to be attempted, not a
|
|
17
|
+
* guarantee it will succeed:
|
|
18
|
+
*
|
|
19
|
+
* - v1 / v2c: a non-empty community string. There is nothing else to send.
|
|
20
|
+
* - v3: a non-empty security name (username). Auth and privacy keys are
|
|
21
|
+
* legitimately absent at noAuthNoPriv, so their absence must not make a
|
|
22
|
+
* v3 row unusable; a wrong key at a higher level is the device's error to
|
|
23
|
+
* report, not this function's to predict.
|
|
24
|
+
*
|
|
25
|
+
* Whitespace-only values count as empty. A community string of " " is what
|
|
26
|
+
* a form submits when an operator clears the field without the browser
|
|
27
|
+
* sending null, and it is not a credential anything will accept.
|
|
28
|
+
*
|
|
29
|
+
* The version is read through SnmpVersionUtil.parse, never compared as raw
|
|
30
|
+
* text, for the reason that module documents: the stored spelling is "V3"
|
|
31
|
+
* and the enum's is "3", and a raw comparison sends a v3 row down the v2c
|
|
32
|
+
* branch. parse() treats a missing or unrecognised version as v2c, which is
|
|
33
|
+
* also the column default on both the device and the profile - so a row with
|
|
34
|
+
* a community string and no version at all is usable, exactly as it would be
|
|
35
|
+
* polled.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/*
|
|
39
|
+
* `| undefined` is spelled out on each field because the repo compiles with
|
|
40
|
+
* exactOptionalPropertyTypes: a caller building the carrier from a row it
|
|
41
|
+
* only partially selected (`{ snmpVersion: row.snmpVersion }`) hands over an
|
|
42
|
+
* explicit undefined, and that must type-check as readily as an omitted key.
|
|
43
|
+
*/
|
|
44
|
+
export interface SnmpCredentialCarrier {
|
|
45
|
+
snmpVersion?: string | null | undefined;
|
|
46
|
+
snmpCommunityString?: string | null | undefined;
|
|
47
|
+
snmpV3Username?: string | null | undefined;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export type HasUsableCredentialsFunction = (
|
|
51
|
+
carrier: SnmpCredentialCarrier,
|
|
52
|
+
) => boolean;
|
|
53
|
+
|
|
54
|
+
function isNonEmpty(value: string | null | undefined): boolean {
|
|
55
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const hasUsableCredentials: HasUsableCredentialsFunction = (
|
|
59
|
+
carrier: SnmpCredentialCarrier,
|
|
60
|
+
): boolean => {
|
|
61
|
+
if (SnmpVersionUtil.isV3(carrier.snmpVersion)) {
|
|
62
|
+
return isNonEmpty(carrier.snmpV3Username);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return isNonEmpty(carrier.snmpCommunityString);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export default hasUsableCredentials;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { DiscoveredNetworkDevice } from "../../Models/DatabaseModels/NetworkDeviceDiscoveryScan";
|
|
2
|
-
import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
|
|
3
2
|
import ObjectID from "../../Types/ObjectID";
|
|
4
3
|
import CidrMatchUtil from "../NetworkSite/CidrMatchUtil";
|
|
5
4
|
import RulePatternMatchUtil from "../Rules/RulePatternMatchUtil";
|
|
6
|
-
import {
|
|
5
|
+
import { isPingOnlyDiscoveredHost } from "./DiscoveryImportEligibility";
|
|
7
6
|
import ScanTargetUtil from "./ScanTargetUtil";
|
|
8
7
|
|
|
9
8
|
/*
|
|
@@ -134,12 +133,21 @@ export function matchesOidPattern(
|
|
|
134
133
|
}
|
|
135
134
|
|
|
136
135
|
export class AutoImportRuleMatcher {
|
|
137
|
-
|
|
136
|
+
/*
|
|
137
|
+
* True when the host answered ping but not SNMP.
|
|
138
|
+
*
|
|
139
|
+
* Asked of the host's own SNMP answer (`isPingOnlyDiscoveredHost`), NOT of
|
|
140
|
+
* the method it would import under. Under ping-first polling EVERY
|
|
141
|
+
* discovered host imports as a Probe device, so
|
|
142
|
+
* `monitoringMethodForDiscoveredHost` is a constant — routing this gate
|
|
143
|
+
* through it made `isPingOnlyHost` permanently false and silently opened
|
|
144
|
+
* the default-closed gate below: one SNMP credential typo would have
|
|
145
|
+
* imported a whole subnet of half-identified hosts through rules that never
|
|
146
|
+
* opted in. How a host is MONITORED and what it ANSWERED are two different
|
|
147
|
+
* questions now, and this one is the second.
|
|
148
|
+
*/
|
|
138
149
|
private static isPingOnlyHost(host: DiscoveredNetworkDevice): boolean {
|
|
139
|
-
return (
|
|
140
|
-
monitoringMethodForDiscoveredHost(host) ===
|
|
141
|
-
NetworkDeviceMonitoringMethod.Monitor
|
|
142
|
-
);
|
|
150
|
+
return isPingOnlyDiscoveredHost(host);
|
|
143
151
|
}
|
|
144
152
|
|
|
145
153
|
/*
|
|
@@ -5,7 +5,10 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
5
5
|
import SnmpScanConfigUtil, {
|
|
6
6
|
DiscoveryScanSnmpConfig,
|
|
7
7
|
} from "./SnmpScanConfigUtil";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
isPingOnlyDiscoveredHost,
|
|
10
|
+
monitoringMethodForDiscoveredHost,
|
|
11
|
+
} from "./DiscoveryImportEligibility";
|
|
9
12
|
import { normalizeReverseDnsName } from "./ReverseDnsNameUtil";
|
|
10
13
|
|
|
11
14
|
/*
|
|
@@ -167,7 +170,8 @@ export function buildFallbackDeviceName(host: DiscoveredNetworkDevice): string {
|
|
|
167
170
|
}
|
|
168
171
|
|
|
169
172
|
/*
|
|
170
|
-
* The scan columns the builder copies onto
|
|
173
|
+
* The scan columns the builder copies onto a device: the probe onto every
|
|
174
|
+
* device, the credentials onto the ones that answered SNMP. The
|
|
171
175
|
* NetworkDeviceDiscoveryScan model satisfies this structurally, so both the
|
|
172
176
|
* dashboard (holding a scan model) and the rule engine (holding a scan row it
|
|
173
177
|
* selected itself) can pass their scan straight in.
|
|
@@ -177,7 +181,7 @@ export function buildFallbackDeviceName(host: DiscoveredNetworkDevice): string {
|
|
|
177
181
|
* (and are still mirrored from the list's first entry). Neither is read
|
|
178
182
|
* directly here — SnmpScanConfigUtil reconciles the two — but BOTH have to be
|
|
179
183
|
* SELECTED by every caller, or the credentials silently arrive undefined and
|
|
180
|
-
* the device is created
|
|
184
|
+
* the device is created as a ping-only one. That is what
|
|
181
185
|
* Common/Tests/Server/Services/AutoImportScanCredentialSelect.test.ts pins.
|
|
182
186
|
*/
|
|
183
187
|
export interface DiscoveredDeviceScanSource {
|
|
@@ -197,11 +201,18 @@ export interface DiscoveredDeviceScanSource {
|
|
|
197
201
|
/**
|
|
198
202
|
* The NetworkDevice a discovered host imports as.
|
|
199
203
|
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
204
|
+
* Every host becomes a Probe device polled by the scan's probe — the probe
|
|
205
|
+
* that just proved the host answers, so the one that can keep asking. An
|
|
206
|
+
* SNMP-reachable host also carries the credential set that answered it, so
|
|
207
|
+
* its first poll walks it for interfaces, inventory and health. A ping-only
|
|
208
|
+
* host carries no credentials at all: the probe pings it and nothing more, it
|
|
209
|
+
* has a status from its first poll, and adding credentials later on its
|
|
210
|
+
* Settings page is what turns the walk on.
|
|
211
|
+
*
|
|
212
|
+
* (It used to import as a monitor-backed device with no probe and polling
|
|
213
|
+
* off, which left it on "Pending" until an operator hand-bound a Ping monitor
|
|
214
|
+
* — issue #3447. Reachability is a built-in capability of every probe-polled
|
|
215
|
+
* device now, so that dead end is gone.)
|
|
205
216
|
*
|
|
206
217
|
* The caller supplies the name (normally `buildDeviceName(host)`) so the
|
|
207
218
|
* name-collision retry can rebuild the same device under
|
|
@@ -263,12 +274,41 @@ export function buildNetworkDeviceFromDiscoveredHost(data: {
|
|
|
263
274
|
monitoringMethodForDiscoveredHost(host);
|
|
264
275
|
device.monitoringMethod = monitoringMethod;
|
|
265
276
|
|
|
266
|
-
|
|
277
|
+
/*
|
|
278
|
+
* The scan's probe, on EVERY device. It is the probe that just reached this
|
|
279
|
+
* host — over ping at the very least — so it is the one that can keep
|
|
280
|
+
* polling it. Written explicitly rather than left to the column default:
|
|
281
|
+
* a Probe device with no probe is claimed by nothing and never polls, which
|
|
282
|
+
* is the "Pending forever" the whole change exists to end.
|
|
283
|
+
*/
|
|
284
|
+
if (data.scan.probeId) {
|
|
285
|
+
// Re-wrapped: the scan may hold a serialized id rather than an ObjectID.
|
|
286
|
+
device.probeId = new ObjectID(data.scan.probeId.toString());
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/*
|
|
290
|
+
* Polling on, for both kinds of host. The column defaults to true, but this
|
|
291
|
+
* function is the recipe both import paths share and "the probe polls this
|
|
292
|
+
* device" is the whole point of it, so the recipe says so itself rather
|
|
293
|
+
* than trusting a default that a ping-only host used to override to false.
|
|
294
|
+
*/
|
|
295
|
+
device.isPollingEnabled = true;
|
|
296
|
+
|
|
297
|
+
if (isPingOnlyDiscoveredHost(host)) {
|
|
267
298
|
/*
|
|
268
|
-
* A ping-only host
|
|
269
|
-
*
|
|
299
|
+
* A ping-only host carries NO credentials, decided BEFORE any config is
|
|
300
|
+
* looked up: `snmpConfigId` and `snmpReachable` are two fields of the
|
|
301
|
+
* same probe-written jsonb row, and nothing enforces that a ping-only row
|
|
302
|
+
* leaves the first one unset. A device that answered nothing but a ping
|
|
303
|
+
* must not import carrying a community string it rejected — it would be
|
|
304
|
+
* walked with it on every poll and read as an SNMP failure rather than
|
|
305
|
+
* as the credential-less device it is. The probe pings it and nothing
|
|
306
|
+
* more until credentials are added on its Settings page.
|
|
307
|
+
*
|
|
308
|
+
* The OID template and the vendor-template auto-apply stay off too: both
|
|
309
|
+
* key off SNMP data — a polled sysObjectID, a walked OID list — that
|
|
310
|
+
* this host did not supply and will not until it has credentials.
|
|
270
311
|
*/
|
|
271
|
-
device.isPollingEnabled = false;
|
|
272
312
|
return device;
|
|
273
313
|
}
|
|
274
314
|
|
|
@@ -280,11 +320,6 @@ export function buildNetworkDeviceFromDiscoveredHost(data: {
|
|
|
280
320
|
device.autoApplyVendorHealthTemplate = true;
|
|
281
321
|
}
|
|
282
322
|
|
|
283
|
-
if (data.scan.probeId) {
|
|
284
|
-
// Re-wrapped: the scan may hold a serialized id rather than an ObjectID.
|
|
285
|
-
device.probeId = new ObjectID(data.scan.probeId.toString());
|
|
286
|
-
}
|
|
287
|
-
|
|
288
323
|
/*
|
|
289
324
|
* THE credential set that answered this host, not the scan's first one.
|
|
290
325
|
*
|
|
@@ -4,10 +4,19 @@ import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDevi
|
|
|
4
4
|
/*
|
|
5
5
|
* Pure, react-free import rule for discovery scan results.
|
|
6
6
|
*
|
|
7
|
-
* Every host the sweep found alive is importable
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Every host the sweep found alive is importable, and every one of them
|
|
8
|
+
* imports as a probe-polled device: the scan's probe pings it on its schedule,
|
|
9
|
+
* and walks it over SNMP as well when it has credentials. What differs between
|
|
10
|
+
* a host that answered SNMP and one that only answered ping is therefore not
|
|
11
|
+
* HOW it is monitored but WHAT rides along — the SNMP host carries the scan's
|
|
12
|
+
* credential set that answered it, the ping-only host carries none and is
|
|
13
|
+
* simply pinged until somebody adds credentials.
|
|
14
|
+
*
|
|
15
|
+
* That is a change from the SNMP-first era, when a ping-only host had to
|
|
16
|
+
* import as a monitor-backed device with no probe and polling off, and read
|
|
17
|
+
* "Pending" until an operator hand-bound a Ping monitor to it (issue #3447).
|
|
18
|
+
* Reachability is a built-in capability of every probe-polled device now, so
|
|
19
|
+
* the ping-only host gets a status from its first poll like any other.
|
|
11
20
|
*
|
|
12
21
|
* Ping-only hosts used to be refused outright, on the reasoning that they
|
|
13
22
|
* would turn up as ARP/FDB endpoints once their switch was monitored. That is
|
|
@@ -20,33 +29,56 @@ import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDevi
|
|
|
20
29
|
* because the dashboard's Review dialog and the server-side auto-import rule
|
|
21
30
|
* engine both decide "how does this host import" through it, and the two must
|
|
22
31
|
* never disagree: the group a host is shown under in the dialog and the
|
|
23
|
-
*
|
|
32
|
+
* device a rule imports it as are the same decision.
|
|
24
33
|
*/
|
|
25
34
|
|
|
35
|
+
/**
|
|
36
|
+
* True when the host answered ping but not SNMP — the "No SNMP" group in the
|
|
37
|
+
* Review dialog, and the host that imports with no credentials.
|
|
38
|
+
*
|
|
39
|
+
* Only an EXPLICIT snmpReachable === false is ping-only: scans stored before
|
|
40
|
+
* the field existed carry undefined, and every host on those scans answered
|
|
41
|
+
* SNMP (ping-only sweeps did not exist yet), so legacy rows keep importing
|
|
42
|
+
* with the scan's credentials.
|
|
43
|
+
*
|
|
44
|
+
* Nullish hosts read as NOT ping-only rather than throwing. `discoveredDevices`
|
|
45
|
+
* is jsonb written verbatim from the probe's payload and the only guard on it
|
|
46
|
+
* (DiscoveryScanOutcome.getDiscoveredHosts) checks that the VALUE is an array
|
|
47
|
+
* — never that its elements are objects. A single null element used to take
|
|
48
|
+
* the whole page down from inside a table cell or a modal body, where a thrown
|
|
49
|
+
* TypeError has nowhere useful to go. Every other kind of junk element (a
|
|
50
|
+
* number, a string, {}) already read as an SNMP host; null is simply
|
|
51
|
+
* consistent with them.
|
|
52
|
+
*/
|
|
53
|
+
export function isPingOnlyDiscoveredHost(
|
|
54
|
+
host: DiscoveredNetworkDevice | null | undefined,
|
|
55
|
+
): boolean {
|
|
56
|
+
return host?.snmpReachable === false;
|
|
57
|
+
}
|
|
58
|
+
|
|
26
59
|
/**
|
|
27
60
|
* Which monitoring method a discovered host should be imported under.
|
|
28
61
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
62
|
+
* Probe, for every host. Under ping-first polling there is no discovered host
|
|
63
|
+
* a probe cannot monitor: the scan's probe just proved the host answers ping,
|
|
64
|
+
* and that is all a probe-polled device needs to have a status. SNMP is an
|
|
65
|
+
* enrichment layered on top when the host answered it, and
|
|
66
|
+
* `buildNetworkDeviceFromDiscoveredHost` decides that by
|
|
67
|
+
* `isPingOnlyDiscoveredHost`, not by this function.
|
|
68
|
+
*
|
|
69
|
+
* `Monitor` — a bound monitor's status IS the device's status — is an override
|
|
70
|
+
* an operator chooses on a device's Settings page for gear a probe cannot
|
|
71
|
+
* reach at all. Discovery never has grounds to choose it: every host it offers
|
|
72
|
+
* was reached by the probe that found it.
|
|
73
|
+
*
|
|
74
|
+
* Kept as a function, with the host as its argument, because it is the one
|
|
75
|
+
* seam through which the dialog and the rule engine ask the question, and a
|
|
76
|
+
* future rule that DID need to look at the host would land here.
|
|
33
77
|
*/
|
|
34
78
|
export function monitoringMethodForDiscoveredHost(
|
|
35
|
-
|
|
79
|
+
_host: DiscoveredNetworkDevice | null | undefined,
|
|
36
80
|
): NetworkDeviceMonitoringMethod {
|
|
37
|
-
|
|
38
|
-
* Nullish hosts read as SNMP rather than throwing. `discoveredDevices` is
|
|
39
|
-
* jsonb written verbatim from the probe's payload and the only guard on it
|
|
40
|
-
* (DiscoveryScanOutcome.getDiscoveredHosts) checks that the VALUE is an
|
|
41
|
-
* array — never that its elements are objects. A single null element used
|
|
42
|
-
* to take the whole page down from inside a table cell or a modal body,
|
|
43
|
-
* where a thrown TypeError has nowhere useful to go. Every other kind of
|
|
44
|
-
* junk element (a number, a string, {}) already read as SNMP; null is now
|
|
45
|
-
* simply consistent with them.
|
|
46
|
-
*/
|
|
47
|
-
return host?.snmpReachable === false
|
|
48
|
-
? NetworkDeviceMonitoringMethod.Monitor
|
|
49
|
-
: NetworkDeviceMonitoringMethod.Snmp;
|
|
81
|
+
return NetworkDeviceMonitoringMethod.Probe;
|
|
50
82
|
}
|
|
51
83
|
|
|
52
84
|
/** True when the discovered host can be imported as a Network Device. */
|