@oneuptime/common 12.0.32 → 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/EnterpriseLicense.ts +56 -0
- package/Models/DatabaseModels/Index.ts +10 -0
- package/Models/DatabaseModels/Monitor.ts +76 -0
- package/Models/DatabaseModels/NetworkAlertPolicy.ts +690 -0
- package/Models/DatabaseModels/NetworkDevice.ts +176 -1
- package/Models/DatabaseModels/NetworkSite.ts +201 -2
- package/Models/DatabaseModels/NetworkSiteType.ts +102 -3
- package/Models/DatabaseModels/NetworkSnmpCredentialProfile.ts +841 -0
- 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/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 +12 -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/EnterpriseLicenseInstanceService.ts +197 -0
- package/Server/Services/EnterpriseLicenseService.ts +55 -0
- package/Server/Services/Index.ts +10 -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/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 +105 -48
- 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 -25
- 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 +134 -33
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +279 -0
- package/Tests/App/Dashboard/DashboardEditPermissions.test.tsx +517 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +26 -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/MonitorTypePicker.test.tsx +4 -2
- 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 +41 -5
- 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/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/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/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/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/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/ProjectServiceNetworkSiteTypeDefaults.test.ts +214 -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/UserNotificationSettingRollupRouting.test.ts +856 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +102 -1
- 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/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/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/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/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +15 -0
- package/Tests/UI/Components/ProgressBar.test.tsx +38 -2
- package/Tests/UI/Components/SideMenuItem.test.tsx +226 -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/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/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/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/Telemetry/CaptureSpanExportGating.test.ts +145 -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/SqlConnectionConfig.ts +31 -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 +90 -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/CommandPalette/CommandPalette.tsx +2 -8
- package/UI/Components/EditionLabel/EditionLabel.tsx +4 -0
- package/UI/Components/Modal/Modal.tsx +2 -8
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/ProgressBar/ProgressBar.tsx +12 -1
- package/UI/Components/RadioButtons/BasicRadioButtons.tsx +37 -7
- package/UI/Components/SideMenu/SideMenu.tsx +123 -5
- package/UI/Components/SideMenu/SideMenuItem.tsx +76 -84
- package/UI/Components/SideMenu/SideMenuSection.tsx +55 -23
- 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/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +16 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +191 -11
- package/Utils/Monitor/MonitorMetricType.ts +153 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +23 -3
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +65 -14
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +43 -14
- 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/build/dist/Models/AnalyticsModels/Span.js +14 -0
- package/build/dist/Models/AnalyticsModels/Span.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/Index.js +10 -0
- package/build/dist/Models/DatabaseModels/Index.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/NetworkAlertPolicy.js +713 -0
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +180 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- 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/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/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 +12 -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/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 +10 -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/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 +66 -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 -20
- 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/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 +80 -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/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/MonitorTemplateVariables/TemplateVariablesCatalog.js +39 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.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/SideMenu.js +67 -5
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +49 -53
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +25 -7
- 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/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/NetworkTopologyUtil.js +8 -3
- 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/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/package.json +2 -2
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import MonitorTemplate from "../../Models/DatabaseModels/MonitorTemplate";
|
|
2
|
+
import NetworkAlertPolicy from "../../Models/DatabaseModels/NetworkAlertPolicy";
|
|
3
|
+
import MonitorCriteria from "../../Types/Monitor/MonitorCriteria";
|
|
4
|
+
import MonitorStep from "../../Types/Monitor/MonitorStep";
|
|
5
|
+
import { MonitorStepNetworkDeviceMonitorUtil } from "../../Types/Monitor/MonitorStepNetworkDeviceMonitor";
|
|
6
|
+
import MonitorSteps from "../../Types/Monitor/MonitorSteps";
|
|
7
|
+
import MonitorType from "../../Types/Monitor/MonitorType";
|
|
8
|
+
import NetworkDeviceAlertPackUtil from "../../Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack";
|
|
9
|
+
import { NetworkAlertPolicyScopeUtil } from "../../Types/NetworkDevice/NetworkAlertPolicyScope";
|
|
10
|
+
import ObjectID from "../../Types/ObjectID";
|
|
11
|
+
/*
|
|
12
|
+
* The "one click to alerting" path for network devices.
|
|
13
|
+
*
|
|
14
|
+
* An alert policy is only useful once it has a Network Device monitor
|
|
15
|
+
* template to clone, and building one by hand means walking the monitor
|
|
16
|
+
* template form: pick the type, add a step, add five criteria, fill in a
|
|
17
|
+
* severity and a status on each. Most operators want exactly the Recommended
|
|
18
|
+
* Alert Pack (NetworkDeviceAlertPack) on every device, so this util builds
|
|
19
|
+
* that template and the policy that applies it to the whole project, and the
|
|
20
|
+
* settings page find-or-creates the pair from its empty state.
|
|
21
|
+
*
|
|
22
|
+
* FIND-OR-CREATE BY MARKER. The template carries RECOMMENDED_TEMPLATE_MARKER
|
|
23
|
+
* in its description. The name is what an operator renames; the marker is
|
|
24
|
+
* what the bootstrap looks for, so clicking "create the recommended policy"
|
|
25
|
+
* twice — or after the recommended policy was deleted and its template kept
|
|
26
|
+
* — reuses the template instead of minting a second one, and instead of
|
|
27
|
+
* tripping the policy service's "another policy already uses this template"
|
|
28
|
+
* refusal on a duplicate nobody meant to make.
|
|
29
|
+
*
|
|
30
|
+
* WHY THE ITEMS ARE FILLED IN HERE. NetworkDeviceAlertPackUtil deliberately
|
|
31
|
+
* leaves severities and on-call policies for the user to complete on the
|
|
32
|
+
* monitor form. A policy's monitors are never opened in that form — the
|
|
33
|
+
* engine clones them — so a criteria whose `createIncidents` is on but whose
|
|
34
|
+
* `incidents` list is empty would clone into monitors that fire nothing.
|
|
35
|
+
* Every incident-creating item therefore gets one CriteriaIncident and every
|
|
36
|
+
* alert-creating item one CriteriaAlert, both auto-resolving, at the
|
|
37
|
+
* project's lowest-order severity (PingMonitorSeedIds resolves that).
|
|
38
|
+
*
|
|
39
|
+
* NO DEVICE ON THE TEMPLATE STEP. A Network Device step names the device it
|
|
40
|
+
* watches; a template step is a placeholder the engine rebinds per device
|
|
41
|
+
* (NetworkDeviceMonitorTemplateUtil.rebindMonitorSteps), which requires the
|
|
42
|
+
* `networkDeviceMonitor` block to exist and ignores what id it holds. The
|
|
43
|
+
* step is built with the block present and the id unset, which the
|
|
44
|
+
* template's reference validator skips rather than rejects.
|
|
45
|
+
*
|
|
46
|
+
* Pure: no database, no permissions. The caller persists both rows through
|
|
47
|
+
* ModelAPI / the services so tenancy, billing and the policy engine's hooks
|
|
48
|
+
* all run.
|
|
49
|
+
*/
|
|
50
|
+
export const RECOMMENDED_TEMPLATE_MARKER = "[oneuptime:network-alert-pack:v1]";
|
|
51
|
+
export const RECOMMENDED_TEMPLATE_NAME = "Network device alert pack (recommended)";
|
|
52
|
+
export const RECOMMENDED_POLICY_NAME = "Alert on every device";
|
|
53
|
+
export default class NetworkAlertPolicyBootstrapUtil {
|
|
54
|
+
/**
|
|
55
|
+
* The template every device's monitor is cloned from: a Network Device
|
|
56
|
+
* template whose single step carries the Recommended Alert Pack, with an
|
|
57
|
+
* incident or an alert filled in on every item.
|
|
58
|
+
*/
|
|
59
|
+
static buildRecommendedMonitorTemplate(data) {
|
|
60
|
+
const criteriaInstances = NetworkDeviceAlertPackUtil.buildCriteriaInstances({
|
|
61
|
+
downMonitorStatusId: data.offlineMonitorStatusId,
|
|
62
|
+
});
|
|
63
|
+
for (const criteriaInstance of criteriaInstances) {
|
|
64
|
+
NetworkAlertPolicyBootstrapUtil.fillCriteriaActions({
|
|
65
|
+
criteriaInstance: criteriaInstance,
|
|
66
|
+
incidentSeverityId: data.incidentSeverityId,
|
|
67
|
+
alertSeverityId: data.alertSeverityId,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const monitorCriteria = new MonitorCriteria();
|
|
71
|
+
monitorCriteria.data = {
|
|
72
|
+
monitorCriteriaInstanceArray: criteriaInstances,
|
|
73
|
+
};
|
|
74
|
+
const monitorStep = new MonitorStep();
|
|
75
|
+
monitorStep.data.networkDeviceMonitor =
|
|
76
|
+
MonitorStepNetworkDeviceMonitorUtil.getDefault();
|
|
77
|
+
monitorStep.data.monitorCriteria = monitorCriteria;
|
|
78
|
+
const monitorSteps = new MonitorSteps();
|
|
79
|
+
monitorSteps.data = {
|
|
80
|
+
monitorStepsInstanceArray: [monitorStep],
|
|
81
|
+
/*
|
|
82
|
+
* Where the monitor goes when no pack item matches — the device is
|
|
83
|
+
* reachable, its walk succeeds, its interfaces are up. Without this a
|
|
84
|
+
* monitor that once went Offline would never come back.
|
|
85
|
+
*/
|
|
86
|
+
defaultMonitorStatusId: new ObjectID(data.onlineMonitorStatusId.toString()),
|
|
87
|
+
};
|
|
88
|
+
const template = new MonitorTemplate();
|
|
89
|
+
template.projectId = new ObjectID(data.projectId.toString());
|
|
90
|
+
template.templateName = RECOMMENDED_TEMPLATE_NAME;
|
|
91
|
+
template.templateDescription =
|
|
92
|
+
NetworkAlertPolicyBootstrapUtil.buildRecommendedTemplateDescription();
|
|
93
|
+
template.monitorType = MonitorType.NetworkDevice;
|
|
94
|
+
template.monitorSteps = monitorSteps;
|
|
95
|
+
/*
|
|
96
|
+
* Left blank on purpose: a policy's monitors are named after the device
|
|
97
|
+
* alone, and a default monitor name would become a suffix on every one
|
|
98
|
+
* of them (the auto-import precedent, issue #3486).
|
|
99
|
+
*/
|
|
100
|
+
template.monitorDescription =
|
|
101
|
+
"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.";
|
|
102
|
+
return template;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The policy that applies the template to every device in the project.
|
|
106
|
+
* Unscoped on purpose — that is what "recommended" means here, and the
|
|
107
|
+
* settings table says "All devices" against it so nobody misreads the
|
|
108
|
+
* reach.
|
|
109
|
+
*/
|
|
110
|
+
static buildRecommendedPolicy(data) {
|
|
111
|
+
const policy = new NetworkAlertPolicy();
|
|
112
|
+
policy.projectId = new ObjectID(data.projectId.toString());
|
|
113
|
+
policy.name = RECOMMENDED_POLICY_NAME;
|
|
114
|
+
policy.description =
|
|
115
|
+
"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.";
|
|
116
|
+
policy.isEnabled = true;
|
|
117
|
+
policy.monitorTemplateId = new ObjectID(data.monitorTemplateId.toString());
|
|
118
|
+
policy.scope = NetworkAlertPolicyScopeUtil.normalize({});
|
|
119
|
+
return policy;
|
|
120
|
+
}
|
|
121
|
+
/** Whether a template is the one this util minted, by its marker. */
|
|
122
|
+
static isRecommendedTemplate(template) {
|
|
123
|
+
return ((template === null || template === void 0 ? void 0 : template.templateDescription) || "").includes(RECOMMENDED_TEMPLATE_MARKER);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The recommended template among a project's templates, or null. The
|
|
127
|
+
* first marked one wins so a project that somehow holds two keeps reusing
|
|
128
|
+
* the same one rather than alternating.
|
|
129
|
+
*/
|
|
130
|
+
static findRecommendedTemplate(templates) {
|
|
131
|
+
for (const template of templates) {
|
|
132
|
+
if (NetworkAlertPolicyBootstrapUtil.isRecommendedTemplate(template)) {
|
|
133
|
+
return template;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The description the marker lives in. The marker is on its own line at
|
|
140
|
+
* the end so an operator can rewrite the prose above it without losing
|
|
141
|
+
* the tag that makes the template findable.
|
|
142
|
+
*/
|
|
143
|
+
static buildRecommendedTemplateDescription() {
|
|
144
|
+
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}`;
|
|
145
|
+
}
|
|
146
|
+
/*
|
|
147
|
+
* One CriteriaIncident on an incident-creating item, one CriteriaAlert on
|
|
148
|
+
* an alert-creating one, titled after the pack item so the incident an
|
|
149
|
+
* operator is paged with reads "Device unreachable", not "Criteria 1".
|
|
150
|
+
*/
|
|
151
|
+
static fillCriteriaActions(data) {
|
|
152
|
+
const criteriaData = data.criteriaInstance.data;
|
|
153
|
+
if (!criteriaData) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (criteriaData.createIncidents) {
|
|
157
|
+
const incident = {
|
|
158
|
+
id: ObjectID.generate().toString(),
|
|
159
|
+
title: criteriaData.name,
|
|
160
|
+
description: criteriaData.description,
|
|
161
|
+
incidentSeverityId: new ObjectID(data.incidentSeverityId.toString()),
|
|
162
|
+
autoResolveIncident: true,
|
|
163
|
+
onCallPolicyIds: [],
|
|
164
|
+
};
|
|
165
|
+
criteriaData.incidents = [incident];
|
|
166
|
+
}
|
|
167
|
+
if (criteriaData.createAlerts) {
|
|
168
|
+
const alert = {
|
|
169
|
+
id: ObjectID.generate().toString(),
|
|
170
|
+
title: criteriaData.name,
|
|
171
|
+
description: criteriaData.description,
|
|
172
|
+
alertSeverityId: new ObjectID(data.alertSeverityId.toString()),
|
|
173
|
+
autoResolveAlert: true,
|
|
174
|
+
onCallPolicyIds: [],
|
|
175
|
+
};
|
|
176
|
+
criteriaData.alerts = [alert];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=NetworkAlertPolicyBootstrapUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkAlertPolicyBootstrapUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SnmpVersionUtil } from "../../Types/Monitor/SnmpMonitor/SnmpVersion";
|
|
2
|
+
function isNonEmpty(value) {
|
|
3
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
4
|
+
}
|
|
5
|
+
export const hasUsableCredentials = (carrier) => {
|
|
6
|
+
if (SnmpVersionUtil.isV3(carrier.snmpVersion)) {
|
|
7
|
+
return isNonEmpty(carrier.snmpV3Username);
|
|
8
|
+
}
|
|
9
|
+
return isNonEmpty(carrier.snmpCommunityString);
|
|
10
|
+
};
|
|
11
|
+
export default hasUsableCredentials;
|
|
12
|
+
//# sourceMappingURL=SnmpCredentialUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnmpCredentialUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDevice/SnmpCredentialUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAqD9E,SAAS,UAAU,CAAC,KAAgC;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAiC,CAChE,OAA8B,EACrB,EAAE;IACX,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,OAAO,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
|
|
2
1
|
import CidrMatchUtil from "../NetworkSite/CidrMatchUtil";
|
|
3
2
|
import RulePatternMatchUtil from "../Rules/RulePatternMatchUtil";
|
|
4
|
-
import {
|
|
3
|
+
import { isPingOnlyDiscoveredHost } from "./DiscoveryImportEligibility";
|
|
5
4
|
import ScanTargetUtil from "./ScanTargetUtil";
|
|
6
5
|
/*
|
|
7
6
|
* Longest subject string a pattern is evaluated against. SNMP DisplayStrings
|
|
@@ -58,10 +57,21 @@ export function matchesOidPattern(value, pattern) {
|
|
|
58
57
|
return oid === oidPattern || oid.startsWith(oidPattern + ".");
|
|
59
58
|
}
|
|
60
59
|
export class AutoImportRuleMatcher {
|
|
61
|
-
|
|
60
|
+
/*
|
|
61
|
+
* True when the host answered ping but not SNMP.
|
|
62
|
+
*
|
|
63
|
+
* Asked of the host's own SNMP answer (`isPingOnlyDiscoveredHost`), NOT of
|
|
64
|
+
* the method it would import under. Under ping-first polling EVERY
|
|
65
|
+
* discovered host imports as a Probe device, so
|
|
66
|
+
* `monitoringMethodForDiscoveredHost` is a constant — routing this gate
|
|
67
|
+
* through it made `isPingOnlyHost` permanently false and silently opened
|
|
68
|
+
* the default-closed gate below: one SNMP credential typo would have
|
|
69
|
+
* imported a whole subnet of half-identified hosts through rules that never
|
|
70
|
+
* opted in. How a host is MONITORED and what it ANSWERED are two different
|
|
71
|
+
* questions now, and this one is the second.
|
|
72
|
+
*/
|
|
62
73
|
static isPingOnlyHost(host) {
|
|
63
|
-
return (
|
|
64
|
-
NetworkDeviceMonitoringMethod.Monitor);
|
|
74
|
+
return isPingOnlyDiscoveredHost(host);
|
|
65
75
|
}
|
|
66
76
|
/*
|
|
67
77
|
* True when this rule's populated conditions all match the host.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoImportRuleMatcher.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/AutoImportRuleMatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutoImportRuleMatcher.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/AutoImportRuleMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import NetworkDevice from "../../Models/DatabaseModels/NetworkDevice";
|
|
2
|
-
import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
|
|
3
2
|
import ObjectID from "../../Types/ObjectID";
|
|
4
3
|
import SnmpScanConfigUtil from "./SnmpScanConfigUtil";
|
|
5
|
-
import { monitoringMethodForDiscoveredHost } from "./DiscoveryImportEligibility";
|
|
4
|
+
import { isPingOnlyDiscoveredHost, monitoringMethodForDiscoveredHost, } from "./DiscoveryImportEligibility";
|
|
6
5
|
import { normalizeReverseDnsName } from "./ReverseDnsNameUtil";
|
|
7
6
|
/*
|
|
8
7
|
* One discovered host -> one NetworkDevice, the same way everywhere.
|
|
@@ -148,11 +147,18 @@ export function buildFallbackDeviceName(host) {
|
|
|
148
147
|
/**
|
|
149
148
|
* The NetworkDevice a discovered host imports as.
|
|
150
149
|
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
150
|
+
* Every host becomes a Probe device polled by the scan's probe — the probe
|
|
151
|
+
* that just proved the host answers, so the one that can keep asking. An
|
|
152
|
+
* SNMP-reachable host also carries the credential set that answered it, so
|
|
153
|
+
* its first poll walks it for interfaces, inventory and health. A ping-only
|
|
154
|
+
* host carries no credentials at all: the probe pings it and nothing more, it
|
|
155
|
+
* has a status from its first poll, and adding credentials later on its
|
|
156
|
+
* Settings page is what turns the walk on.
|
|
157
|
+
*
|
|
158
|
+
* (It used to import as a monitor-backed device with no probe and polling
|
|
159
|
+
* off, which left it on "Pending" until an operator hand-bound a Ping monitor
|
|
160
|
+
* — issue #3447. Reachability is a built-in capability of every probe-polled
|
|
161
|
+
* device now, so that dead end is gone.)
|
|
156
162
|
*
|
|
157
163
|
* The caller supplies the name (normally `buildDeviceName(host)`) so the
|
|
158
164
|
* name-collision retry can rebuild the same device under
|
|
@@ -191,12 +197,39 @@ export function buildNetworkDeviceFromDiscoveredHost(data) {
|
|
|
191
197
|
}
|
|
192
198
|
const monitoringMethod = monitoringMethodForDiscoveredHost(host);
|
|
193
199
|
device.monitoringMethod = monitoringMethod;
|
|
194
|
-
|
|
200
|
+
/*
|
|
201
|
+
* The scan's probe, on EVERY device. It is the probe that just reached this
|
|
202
|
+
* host — over ping at the very least — so it is the one that can keep
|
|
203
|
+
* polling it. Written explicitly rather than left to the column default:
|
|
204
|
+
* a Probe device with no probe is claimed by nothing and never polls, which
|
|
205
|
+
* is the "Pending forever" the whole change exists to end.
|
|
206
|
+
*/
|
|
207
|
+
if (data.scan.probeId) {
|
|
208
|
+
// Re-wrapped: the scan may hold a serialized id rather than an ObjectID.
|
|
209
|
+
device.probeId = new ObjectID(data.scan.probeId.toString());
|
|
210
|
+
}
|
|
211
|
+
/*
|
|
212
|
+
* Polling on, for both kinds of host. The column defaults to true, but this
|
|
213
|
+
* function is the recipe both import paths share and "the probe polls this
|
|
214
|
+
* device" is the whole point of it, so the recipe says so itself rather
|
|
215
|
+
* than trusting a default that a ping-only host used to override to false.
|
|
216
|
+
*/
|
|
217
|
+
device.isPollingEnabled = true;
|
|
218
|
+
if (isPingOnlyDiscoveredHost(host)) {
|
|
195
219
|
/*
|
|
196
|
-
* A ping-only host
|
|
197
|
-
*
|
|
220
|
+
* A ping-only host carries NO credentials, decided BEFORE any config is
|
|
221
|
+
* looked up: `snmpConfigId` and `snmpReachable` are two fields of the
|
|
222
|
+
* same probe-written jsonb row, and nothing enforces that a ping-only row
|
|
223
|
+
* leaves the first one unset. A device that answered nothing but a ping
|
|
224
|
+
* must not import carrying a community string it rejected — it would be
|
|
225
|
+
* walked with it on every poll and read as an SNMP failure rather than
|
|
226
|
+
* as the credential-less device it is. The probe pings it and nothing
|
|
227
|
+
* more until credentials are added on its Settings page.
|
|
228
|
+
*
|
|
229
|
+
* The OID template and the vendor-template auto-apply stay off too: both
|
|
230
|
+
* key off SNMP data — a polled sysObjectID, a walked OID list — that
|
|
231
|
+
* this host did not supply and will not until it has credentials.
|
|
198
232
|
*/
|
|
199
|
-
device.isPollingEnabled = false;
|
|
200
233
|
return device;
|
|
201
234
|
}
|
|
202
235
|
if (data.oidTemplateId) {
|
|
@@ -205,10 +238,6 @@ export function buildNetworkDeviceFromDiscoveredHost(data) {
|
|
|
205
238
|
if (data.autoApplyVendorHealthTemplate) {
|
|
206
239
|
device.autoApplyVendorHealthTemplate = true;
|
|
207
240
|
}
|
|
208
|
-
if (data.scan.probeId) {
|
|
209
|
-
// Re-wrapped: the scan may hold a serialized id rather than an ObjectID.
|
|
210
|
-
device.probeId = new ObjectID(data.scan.probeId.toString());
|
|
211
|
-
}
|
|
212
241
|
/*
|
|
213
242
|
* THE credential set that answered this host, not the scan's first one.
|
|
214
243
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscoveredDeviceBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"DiscoveredDeviceBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,19 @@ import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDevi
|
|
|
2
2
|
/*
|
|
3
3
|
* Pure, react-free import rule for discovery scan results.
|
|
4
4
|
*
|
|
5
|
-
* Every host the sweep found alive is importable
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Every host the sweep found alive is importable, and every one of them
|
|
6
|
+
* imports as a probe-polled device: the scan's probe pings it on its schedule,
|
|
7
|
+
* and walks it over SNMP as well when it has credentials. What differs between
|
|
8
|
+
* a host that answered SNMP and one that only answered ping is therefore not
|
|
9
|
+
* HOW it is monitored but WHAT rides along — the SNMP host carries the scan's
|
|
10
|
+
* credential set that answered it, the ping-only host carries none and is
|
|
11
|
+
* simply pinged until somebody adds credentials.
|
|
12
|
+
*
|
|
13
|
+
* That is a change from the SNMP-first era, when a ping-only host had to
|
|
14
|
+
* import as a monitor-backed device with no probe and polling off, and read
|
|
15
|
+
* "Pending" until an operator hand-bound a Ping monitor to it (issue #3447).
|
|
16
|
+
* Reachability is a built-in capability of every probe-polled device now, so
|
|
17
|
+
* the ping-only host gets a status from its first poll like any other.
|
|
9
18
|
*
|
|
10
19
|
* Ping-only hosts used to be refused outright, on the reasoning that they
|
|
11
20
|
* would turn up as ARP/FDB endpoints once their switch was monitored. That is
|
|
@@ -18,30 +27,50 @@ import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDevi
|
|
|
18
27
|
* because the dashboard's Review dialog and the server-side auto-import rule
|
|
19
28
|
* engine both decide "how does this host import" through it, and the two must
|
|
20
29
|
* never disagree: the group a host is shown under in the dialog and the
|
|
21
|
-
*
|
|
30
|
+
* device a rule imports it as are the same decision.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* True when the host answered ping but not SNMP — the "No SNMP" group in the
|
|
34
|
+
* Review dialog, and the host that imports with no credentials.
|
|
35
|
+
*
|
|
36
|
+
* Only an EXPLICIT snmpReachable === false is ping-only: scans stored before
|
|
37
|
+
* the field existed carry undefined, and every host on those scans answered
|
|
38
|
+
* SNMP (ping-only sweeps did not exist yet), so legacy rows keep importing
|
|
39
|
+
* with the scan's credentials.
|
|
40
|
+
*
|
|
41
|
+
* Nullish hosts read as NOT ping-only rather than throwing. `discoveredDevices`
|
|
42
|
+
* is jsonb written verbatim from the probe's payload and the only guard on it
|
|
43
|
+
* (DiscoveryScanOutcome.getDiscoveredHosts) checks that the VALUE is an array
|
|
44
|
+
* — never that its elements are objects. A single null element used to take
|
|
45
|
+
* the whole page down from inside a table cell or a modal body, where a thrown
|
|
46
|
+
* TypeError has nowhere useful to go. Every other kind of junk element (a
|
|
47
|
+
* number, a string, {}) already read as an SNMP host; null is simply
|
|
48
|
+
* consistent with them.
|
|
22
49
|
*/
|
|
50
|
+
export function isPingOnlyDiscoveredHost(host) {
|
|
51
|
+
return (host === null || host === void 0 ? void 0 : host.snmpReachable) === false;
|
|
52
|
+
}
|
|
23
53
|
/**
|
|
24
54
|
* Which monitoring method a discovered host should be imported under.
|
|
25
55
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
56
|
+
* Probe, for every host. Under ping-first polling there is no discovered host
|
|
57
|
+
* a probe cannot monitor: the scan's probe just proved the host answers ping,
|
|
58
|
+
* and that is all a probe-polled device needs to have a status. SNMP is an
|
|
59
|
+
* enrichment layered on top when the host answered it, and
|
|
60
|
+
* `buildNetworkDeviceFromDiscoveredHost` decides that by
|
|
61
|
+
* `isPingOnlyDiscoveredHost`, not by this function.
|
|
62
|
+
*
|
|
63
|
+
* `Monitor` — a bound monitor's status IS the device's status — is an override
|
|
64
|
+
* an operator chooses on a device's Settings page for gear a probe cannot
|
|
65
|
+
* reach at all. Discovery never has grounds to choose it: every host it offers
|
|
66
|
+
* was reached by the probe that found it.
|
|
67
|
+
*
|
|
68
|
+
* Kept as a function, with the host as its argument, because it is the one
|
|
69
|
+
* seam through which the dialog and the rule engine ask the question, and a
|
|
70
|
+
* future rule that DID need to look at the host would land here.
|
|
30
71
|
*/
|
|
31
|
-
export function monitoringMethodForDiscoveredHost(
|
|
32
|
-
|
|
33
|
-
* Nullish hosts read as SNMP rather than throwing. `discoveredDevices` is
|
|
34
|
-
* jsonb written verbatim from the probe's payload and the only guard on it
|
|
35
|
-
* (DiscoveryScanOutcome.getDiscoveredHosts) checks that the VALUE is an
|
|
36
|
-
* array — never that its elements are objects. A single null element used
|
|
37
|
-
* to take the whole page down from inside a table cell or a modal body,
|
|
38
|
-
* where a thrown TypeError has nowhere useful to go. Every other kind of
|
|
39
|
-
* junk element (a number, a string, {}) already read as SNMP; null is now
|
|
40
|
-
* simply consistent with them.
|
|
41
|
-
*/
|
|
42
|
-
return (host === null || host === void 0 ? void 0 : host.snmpReachable) === false
|
|
43
|
-
? NetworkDeviceMonitoringMethod.Monitor
|
|
44
|
-
: NetworkDeviceMonitoringMethod.Snmp;
|
|
72
|
+
export function monitoringMethodForDiscoveredHost(_host) {
|
|
73
|
+
return NetworkDeviceMonitoringMethod.Probe;
|
|
45
74
|
}
|
|
46
75
|
/** True when the discovered host can be imported as a Network Device. */
|
|
47
76
|
export function isImportableDiscoveredHost(_host) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscoveryImportEligibility.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveryImportEligibility.ts"],"names":[],"mappings":"AACA,OAAO,6BAA6B,MAAM,yDAAyD,CAAC;AAEpG
|
|
1
|
+
{"version":3,"file":"DiscoveryImportEligibility.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveryImportEligibility.ts"],"names":[],"mappings":"AACA,OAAO,6BAA6B,MAAM,yDAAyD,CAAC;AAEpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAgD;IAEhD,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAAiD;IAEjD,OAAO,6BAA6B,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,0BAA0B,CACxC,KAA8B;IAE9B;;;;;;;;OAQG;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -60,6 +60,23 @@ const PING_MONITOR_NAME_PREFIX = "Ping ";
|
|
|
60
60
|
* from the same dropdown.
|
|
61
61
|
*/
|
|
62
62
|
export const PING_MONITOR_INTERVAL = "*/5 * * * *";
|
|
63
|
+
/**
|
|
64
|
+
* Where a Ping monitor is being built FROM. The sentence it writes into the
|
|
65
|
+
* monitor's description is the only thing that differs, and it matters: an
|
|
66
|
+
* operator reading the monitor list months later should be told whether a
|
|
67
|
+
* scan, a form, or a bulk action put it there.
|
|
68
|
+
*/
|
|
69
|
+
export var PingMonitorOrigin;
|
|
70
|
+
(function (PingMonitorOrigin) {
|
|
71
|
+
// A host that answered a discovery sweep's ping but not its SNMP probe.
|
|
72
|
+
PingMonitorOrigin["DiscoveryImport"] = "DiscoveryImport";
|
|
73
|
+
// The device create form, with "create a Ping monitor" ticked.
|
|
74
|
+
PingMonitorOrigin["DeviceCreateForm"] = "DeviceCreateForm";
|
|
75
|
+
// The "Create Ping Monitor" button on a device's Overview or Monitors page.
|
|
76
|
+
PingMonitorOrigin["DevicePage"] = "DevicePage";
|
|
77
|
+
// The device list's bulk "Create Ping Monitors" action.
|
|
78
|
+
PingMonitorOrigin["BulkAction"] = "BulkAction";
|
|
79
|
+
})(PingMonitorOrigin || (PingMonitorOrigin = {}));
|
|
63
80
|
/**
|
|
64
81
|
* The monitor's name: "Ping <device name>", clamped to the column.
|
|
65
82
|
*
|
|
@@ -116,26 +133,53 @@ function suppressIncidentCreation(step) {
|
|
|
116
133
|
}
|
|
117
134
|
}
|
|
118
135
|
/**
|
|
119
|
-
*
|
|
120
|
-
*
|
|
136
|
+
* The sentence a provisioned monitor carries so its origin is legible later.
|
|
137
|
+
* Exported so the surfaces that build one can be tested against the exact
|
|
138
|
+
* wording rather than a paraphrase.
|
|
139
|
+
*/
|
|
140
|
+
export function buildPingMonitorDescription(data) {
|
|
141
|
+
const reachability = `Reachability for ${data.address}`;
|
|
142
|
+
switch (data.origin) {
|
|
143
|
+
case PingMonitorOrigin.DiscoveryImport:
|
|
144
|
+
return `${reachability}, created when this device was imported from a network discovery scan. The device answered ping but not SNMP, so this monitor is what reports whether it is up.`;
|
|
145
|
+
case PingMonitorOrigin.DeviceCreateForm:
|
|
146
|
+
return `${reachability}, created with this network device. The device is monitor-backed — nothing polls it over SNMP — so this monitor is what reports whether it is up.`;
|
|
147
|
+
case PingMonitorOrigin.BulkAction:
|
|
148
|
+
return `${reachability}, created by the device list's "Create Ping Monitors" action. The device is monitor-backed — nothing polls it over SNMP — so this monitor is what reports whether it is up.`;
|
|
149
|
+
case PingMonitorOrigin.DevicePage:
|
|
150
|
+
default:
|
|
151
|
+
return `${reachability}, created from this network device's page. The device is monitor-backed — nothing polls it over SNMP — so this monitor is what reports whether it is up.`;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* One device address -> the Ping monitor that will report the device's
|
|
156
|
+
* health once bound to it through `NetworkDevice.monitorId`.
|
|
121
157
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
158
|
+
* This is the shape every provisioning surface shares: discovery import, the
|
|
159
|
+
* device create form, the "Create Ping Monitor" button on a device's page and
|
|
160
|
+
* the bulk action on the device list. They differ only in where the address
|
|
161
|
+
* and the name come from and in the origin sentence; the monitor itself —
|
|
162
|
+
* type, interval, criteria, incident suppression — is identical, which is
|
|
163
|
+
* what lets an operator treat every provisioned monitor the same way.
|
|
164
|
+
*
|
|
165
|
+
* Order of operations is the caller's: discovery creates the monitor FIRST
|
|
166
|
+
* and then the device carrying its id (so the create-time stamp resolves the
|
|
167
|
+
* pill immediately), while the create form and the bulk action create or
|
|
168
|
+
* already have the device and bind afterwards — which re-stamps through
|
|
169
|
+
* `NetworkDeviceService.onUpdateSuccess`, so the pill resolves just the same.
|
|
128
170
|
*/
|
|
129
|
-
export function
|
|
130
|
-
|
|
131
|
-
const address = (((_a = data.host) === null || _a === void 0 ? void 0 : _a.ipAddress) || "").trim();
|
|
171
|
+
export function buildPingMonitorForAddress(data) {
|
|
172
|
+
const address = (data.address || "").trim();
|
|
132
173
|
if (!address) {
|
|
133
|
-
throw new Error("A
|
|
174
|
+
throw new Error("A device needs an address before a Ping monitor can be built for it.");
|
|
134
175
|
}
|
|
135
176
|
const monitor = new Monitor();
|
|
136
177
|
monitor.projectId = new ObjectID(data.projectId.toString());
|
|
137
178
|
monitor.name = buildPingMonitorName(data.deviceName);
|
|
138
|
-
monitor.description =
|
|
179
|
+
monitor.description = buildPingMonitorDescription({
|
|
180
|
+
address: address,
|
|
181
|
+
origin: data.origin,
|
|
182
|
+
});
|
|
139
183
|
monitor.monitorType = MonitorType.Ping;
|
|
140
184
|
monitor.monitoringInterval = PING_MONITOR_INTERVAL;
|
|
141
185
|
const step = MonitorStep.getDefaultMonitorStep({
|
|
@@ -160,4 +204,32 @@ export function buildPingMonitorForDiscoveredHost(data) {
|
|
|
160
204
|
monitor.monitorSteps = monitorSteps;
|
|
161
205
|
return monitor;
|
|
162
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* One ping-only discovered host -> the Ping monitor that will report its
|
|
209
|
+
* health once bound to the device through `NetworkDevice.monitorId`.
|
|
210
|
+
*
|
|
211
|
+
* The caller creates this monitor FIRST, then creates the device carrying the
|
|
212
|
+
* new monitor's id: `NetworkDeviceService.onCreateSuccess` stamps the
|
|
213
|
+
* monitor's current status onto the device at bind time, so the device's
|
|
214
|
+
* status pill resolves on the first render rather than waiting for the
|
|
215
|
+
* monitor's next status CHANGE (which on a healthy network may never come —
|
|
216
|
+
* that was OneUptime/oneuptime#3392).
|
|
217
|
+
*
|
|
218
|
+
* A thin adapter over `buildPingMonitorForAddress`: the only thing a
|
|
219
|
+
* discovered host contributes is its address.
|
|
220
|
+
*/
|
|
221
|
+
export function buildPingMonitorForDiscoveredHost(data) {
|
|
222
|
+
var _a;
|
|
223
|
+
const address = (((_a = data.host) === null || _a === void 0 ? void 0 : _a.ipAddress) || "").trim();
|
|
224
|
+
if (!address) {
|
|
225
|
+
throw new Error("A discovered host needs an address before a Ping monitor can be built for it.");
|
|
226
|
+
}
|
|
227
|
+
return buildPingMonitorForAddress({
|
|
228
|
+
projectId: data.projectId,
|
|
229
|
+
address: address,
|
|
230
|
+
deviceName: data.deviceName,
|
|
231
|
+
seedIds: data.seedIds,
|
|
232
|
+
origin: PingMonitorOrigin.DiscoveryImport,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
163
235
|
//# sourceMappingURL=PingMonitorBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PingMonitorBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/PingMonitorBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qCAAqC,CAAC;AAE1D,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEnC,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,YAAY,MAAM,kCAAkC,CAAC;AAC5D,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAW,EAAE,CAAC;AAEvD,MAAM,wBAAwB,GAAW,OAAO,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAW,aAAa,CAAC;AA4B3D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,iBAAiB,GAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAW,GAAG,wBAAwB,GAAG,iBAAiB,EAAE,CAAC;IAE3E,OAAO,QAAQ,CAAC,MAAM,GAAG,4BAA4B;QACnD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,4BAA4B,CAAC;QACrD,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,MAAM,cAAc,GAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtD,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,wBAAwB,CAAC,IAAiB;;IACjD,MAAM,iBAAiB,GACrB,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,eAAe,0CAAE,IAAI,0CAAE,4BAA4B,KAAI,EAAE,CAAC;IAEvE,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC1B,gBAAgB,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"PingMonitorBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/PingMonitorBuilder.ts"],"names":[],"mappings":"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"}
|