@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
|
@@ -26,7 +26,7 @@ const PACK: Array<NetworkDeviceAlertPackItem> = [
|
|
|
26
26
|
{
|
|
27
27
|
name: "Device unreachable",
|
|
28
28
|
description:
|
|
29
|
-
"The device stopped answering SNMP — likely down or unreachable.",
|
|
29
|
+
"The device stopped answering ping and SNMP — likely down or unreachable.",
|
|
30
30
|
filters: [
|
|
31
31
|
{
|
|
32
32
|
checkOn: CheckOn.SnmpIsOnline,
|
|
@@ -37,6 +37,27 @@ const PACK: Array<NetworkDeviceAlertPackItem> = [
|
|
|
37
37
|
createIncidents: true,
|
|
38
38
|
createAlerts: false,
|
|
39
39
|
},
|
|
40
|
+
/*
|
|
41
|
+
* An alert, not an incident: the device is still answering ping, so it is
|
|
42
|
+
* not down - but its SNMP walk is failing, which means no interfaces, no
|
|
43
|
+
* inventory and no health OIDs until someone fixes the credentials, the
|
|
44
|
+
* agent or the ACL. Never fires on a device that is only pinged: the
|
|
45
|
+
* criterion is not evaluated at all when no walk ran.
|
|
46
|
+
*/
|
|
47
|
+
{
|
|
48
|
+
name: "SNMP walk failing",
|
|
49
|
+
description:
|
|
50
|
+
"The device answers ping but its SNMP walk is failing — check the credentials, the SNMP agent, or an ACL.",
|
|
51
|
+
filters: [
|
|
52
|
+
{
|
|
53
|
+
checkOn: CheckOn.SnmpWalkIsSucceeding,
|
|
54
|
+
filterType: FilterType.False,
|
|
55
|
+
value: undefined,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
createIncidents: false,
|
|
59
|
+
createAlerts: true,
|
|
60
|
+
},
|
|
40
61
|
{
|
|
41
62
|
name: "Interface down",
|
|
42
63
|
description:
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import SqlDatabaseType from "./SqlDatabaseType";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* The connection half of a SQL-speaking monitor's configuration.
|
|
5
|
+
*
|
|
6
|
+
* Extracted so the SQL Query monitor and the Database Health monitor can
|
|
7
|
+
* share one implementation of the fiddly parts - TLS options, and especially
|
|
8
|
+
* the SQL Server integrated-authentication path, which has to detect the
|
|
9
|
+
* host's ODBC driver and build a connection string by hand. Duplicating that
|
|
10
|
+
* for a second monitor type would guarantee the two drift.
|
|
11
|
+
*
|
|
12
|
+
* Both MonitorStepSqlMonitor and MonitorStepDatabaseMonitor extend this, so
|
|
13
|
+
* anything that only needs to CONNECT should take this type rather than
|
|
14
|
+
* either step type.
|
|
15
|
+
*/
|
|
16
|
+
export default interface SqlConnectionConfig {
|
|
17
|
+
databaseType: SqlDatabaseType;
|
|
18
|
+
host: string;
|
|
19
|
+
port: number;
|
|
20
|
+
databaseName: string;
|
|
21
|
+
username: string;
|
|
22
|
+
// Raw password OR a {{monitorSecrets.name}} reference resolved server-side.
|
|
23
|
+
password: string;
|
|
24
|
+
/*
|
|
25
|
+
* Microsoft SQL Server only: authenticate as the identity the probe runs
|
|
26
|
+
* as (SSPI on Windows, Kerberos elsewhere).
|
|
27
|
+
*/
|
|
28
|
+
useWindowsIntegratedAuthentication: boolean;
|
|
29
|
+
useSsl: boolean;
|
|
30
|
+
rejectUnauthorizedSsl: boolean;
|
|
31
|
+
}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHICH devices a Network Alert Policy covers.
|
|
3
|
+
*
|
|
4
|
+
* A policy says "devices like THESE get a Network Device monitor cloned from
|
|
5
|
+
* THIS template" once, and the engine keeps one monitor per matching device
|
|
6
|
+
* from then on. The "like these" half is this object: a set of site ids, a
|
|
7
|
+
* set of device-role ids and a set of label ids, stored as one jsonb column
|
|
8
|
+
* on the policy row rather than as three join tables.
|
|
9
|
+
*
|
|
10
|
+
* jsonb, not join tables, on purpose. The scope is read whole every time the
|
|
11
|
+
* engine asks "does this device match?" and never queried the other way
|
|
12
|
+
* round ("which policies name site X?" is answered by scanning the project's
|
|
13
|
+
* handful of policies, not by an index), so three link tables would buy
|
|
14
|
+
* nothing but three more CRUD surfaces and three more cascade rules to get
|
|
15
|
+
* right. It also lets the dashboard post the whole picker state as one field.
|
|
16
|
+
*
|
|
17
|
+
* The matching rule is the one every filter in this product uses:
|
|
18
|
+
*
|
|
19
|
+
* - AND across kinds: a device must satisfy the site list AND the role list
|
|
20
|
+
* AND the label list.
|
|
21
|
+
* - OR within a kind: "in site A or site B", "carrying label X or label Y".
|
|
22
|
+
* - An EMPTY kind matches everything. Leaving the sites list empty means
|
|
23
|
+
* "any site (including no site)", not "no site".
|
|
24
|
+
*
|
|
25
|
+
* So `{}` — every list empty — is the widest possible scope: every device in
|
|
26
|
+
* the project. That is a legitimate and common policy ("everything gets a
|
|
27
|
+
* reachability monitor"), but it is also the one that provisions the most
|
|
28
|
+
* billable monitors, which is why `isUnscoped` exists as a named question
|
|
29
|
+
* rather than a `length === 0` check scattered over the callers: the settings
|
|
30
|
+
* table, the confirm dialog and the engine all need to say "ALL devices" in
|
|
31
|
+
* the same breath.
|
|
32
|
+
*
|
|
33
|
+
* Everything that reads a scope goes through `normalize` first. The column is
|
|
34
|
+
* jsonb, so a row can hold whatever a client — or a hand-edited API call — put
|
|
35
|
+
* in it: a lone string where an array was expected, nulls, duplicated ids,
|
|
36
|
+
* blank strings from an empty picker. Tolerating all of that in one place
|
|
37
|
+
* means the engine never throws over one bad row and never double-counts a
|
|
38
|
+
* device because a site id was listed twice.
|
|
39
|
+
*/
|
|
40
|
+
export interface NetworkAlertPolicyScope {
|
|
41
|
+
siteIds?: Array<string>;
|
|
42
|
+
networkDeviceRoleIds?: Array<string>;
|
|
43
|
+
labelIds?: Array<string>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* The slice of a NetworkDevice the matcher looks at. Kept to plain ids so
|
|
48
|
+
* the engine can feed it rows selected with three columns and a label join,
|
|
49
|
+
* and so a test can build one in a line.
|
|
50
|
+
*/
|
|
51
|
+
export interface NetworkAlertPolicyScopeDevice {
|
|
52
|
+
siteId?: string | null;
|
|
53
|
+
networkDeviceRoleId?: string | null;
|
|
54
|
+
labelIds?: Array<string>;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* Display names for `describe`, keyed by id. Every map is optional and every
|
|
59
|
+
* lookup may miss: the settings table renders before its lookups resolve,
|
|
60
|
+
* and a scope can name a site that has since been deleted. A missing name
|
|
61
|
+
* falls back to a count ("in 2 sites"), never to the raw id.
|
|
62
|
+
*/
|
|
63
|
+
export interface NetworkAlertPolicyScopeNames {
|
|
64
|
+
sites?: Record<string, string>;
|
|
65
|
+
roles?: Record<string, string>;
|
|
66
|
+
labels?: Record<string, string>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* A normalized scope: every list present, deduplicated, and holding only
|
|
71
|
+
* non-blank strings. What `normalize` returns and what every other method
|
|
72
|
+
* works on internally.
|
|
73
|
+
*/
|
|
74
|
+
interface NormalizedNetworkAlertPolicyScope {
|
|
75
|
+
siteIds: Array<string>;
|
|
76
|
+
networkDeviceRoleIds: Array<string>;
|
|
77
|
+
labelIds: Array<string>;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/*
|
|
81
|
+
* One kind of id, for `describe`. `singular`/`plural` are the nouns; how the
|
|
82
|
+
* clause hangs off "Devices" is decided by the caller — sites are somewhere
|
|
83
|
+
* ("in"), roles and labels are something a device has ("with").
|
|
84
|
+
*/
|
|
85
|
+
interface ScopeKindDescription {
|
|
86
|
+
ids: Array<string>;
|
|
87
|
+
names: Record<string, string> | undefined;
|
|
88
|
+
singular: string;
|
|
89
|
+
plural: string;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export class NetworkAlertPolicyScopeUtil {
|
|
93
|
+
/*
|
|
94
|
+
* The canonical form of whatever was stored or posted.
|
|
95
|
+
*
|
|
96
|
+
* Accepts anything: `undefined`, `null`, a non-object, an object whose
|
|
97
|
+
* lists are missing, `null`, lone strings, or arrays holding nulls,
|
|
98
|
+
* numbers, blanks and duplicates. Returns three arrays of unique, trimmed,
|
|
99
|
+
* non-empty strings — and nothing else, so a stray property on the stored
|
|
100
|
+
* JSON never round-trips back into the column.
|
|
101
|
+
*/
|
|
102
|
+
public static normalize(raw: unknown): NetworkAlertPolicyScope {
|
|
103
|
+
const source: Record<string, unknown> =
|
|
104
|
+
raw && typeof raw === "object" && !Array.isArray(raw)
|
|
105
|
+
? (raw as Record<string, unknown>)
|
|
106
|
+
: {};
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
siteIds: NetworkAlertPolicyScopeUtil.readIdList(source["siteIds"]),
|
|
110
|
+
networkDeviceRoleIds: NetworkAlertPolicyScopeUtil.readIdList(
|
|
111
|
+
source["networkDeviceRoleIds"],
|
|
112
|
+
),
|
|
113
|
+
labelIds: NetworkAlertPolicyScopeUtil.readIdList(source["labelIds"]),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* True when the scope names nothing at all — every device in the project.
|
|
119
|
+
*
|
|
120
|
+
* Runs through `normalize` first, so a scope of `{ siteIds: [""] }` or
|
|
121
|
+
* `{ siteIds: null }` reads as unscoped too: a blank picker is an empty
|
|
122
|
+
* picker, and the alternative — a scope that matches nothing because it
|
|
123
|
+
* holds one blank id — would be a policy that silently does nothing.
|
|
124
|
+
*/
|
|
125
|
+
public static isUnscoped(
|
|
126
|
+
scope: NetworkAlertPolicyScope | null | undefined,
|
|
127
|
+
): boolean {
|
|
128
|
+
const normalized: NormalizedNetworkAlertPolicyScope =
|
|
129
|
+
NetworkAlertPolicyScopeUtil.normalize(
|
|
130
|
+
scope,
|
|
131
|
+
) as NormalizedNetworkAlertPolicyScope;
|
|
132
|
+
|
|
133
|
+
return (
|
|
134
|
+
normalized.siteIds.length === 0 &&
|
|
135
|
+
normalized.networkDeviceRoleIds.length === 0 &&
|
|
136
|
+
normalized.labelIds.length === 0
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/*
|
|
141
|
+
* The matching rule itself: AND across kinds, OR within a kind, an empty
|
|
142
|
+
* kind matches everything.
|
|
143
|
+
*
|
|
144
|
+
* A device with no site never matches a scope that lists sites, and a
|
|
145
|
+
* device with no labels never matches a scope that lists labels — "in site
|
|
146
|
+
* A" cannot be true of a device that is nowhere. The converse is the
|
|
147
|
+
* empty-kind rule: a scope that lists no sites is satisfied by a device
|
|
148
|
+
* with no site.
|
|
149
|
+
*/
|
|
150
|
+
public static matchesDevice(
|
|
151
|
+
scope: NetworkAlertPolicyScope | null | undefined,
|
|
152
|
+
device: NetworkAlertPolicyScopeDevice,
|
|
153
|
+
): boolean {
|
|
154
|
+
const normalized: NormalizedNetworkAlertPolicyScope =
|
|
155
|
+
NetworkAlertPolicyScopeUtil.normalize(
|
|
156
|
+
scope,
|
|
157
|
+
) as NormalizedNetworkAlertPolicyScope;
|
|
158
|
+
|
|
159
|
+
if (
|
|
160
|
+
normalized.siteIds.length > 0 &&
|
|
161
|
+
!NetworkAlertPolicyScopeUtil.listHasId(normalized.siteIds, device.siteId)
|
|
162
|
+
) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (
|
|
167
|
+
normalized.networkDeviceRoleIds.length > 0 &&
|
|
168
|
+
!NetworkAlertPolicyScopeUtil.listHasId(
|
|
169
|
+
normalized.networkDeviceRoleIds,
|
|
170
|
+
device.networkDeviceRoleId,
|
|
171
|
+
)
|
|
172
|
+
) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (normalized.labelIds.length > 0) {
|
|
177
|
+
const deviceLabelIds: Array<string> =
|
|
178
|
+
NetworkAlertPolicyScopeUtil.readIdList(device.labelIds);
|
|
179
|
+
|
|
180
|
+
const hasAnyLabel: boolean = deviceLabelIds.some(
|
|
181
|
+
(labelId: string): boolean => {
|
|
182
|
+
return normalized.labelIds.includes(labelId);
|
|
183
|
+
},
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
if (!hasAnyLabel) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/*
|
|
195
|
+
* A sentence for the settings table.
|
|
196
|
+
*
|
|
197
|
+
* {} -> "All devices"
|
|
198
|
+
* { siteIds: [a, b] } -> "Devices in 2 sites"
|
|
199
|
+
* { siteIds: [a], roles: [switch] } -> "Devices in site Warehouse with role Switch"
|
|
200
|
+
* { roles: [switch], labels: [prod] } -> "Devices with role Switch and label Production"
|
|
201
|
+
*
|
|
202
|
+
* A single id whose name is known is named; anything else is counted. The
|
|
203
|
+
* count, never the id: an operator reading "in site 7f3c..." learns
|
|
204
|
+
* nothing, and "in 1 site" at least tells them to open the policy.
|
|
205
|
+
*
|
|
206
|
+
* "All devices" is deliberately blunt. It is the row that provisions a
|
|
207
|
+
* monitor for everything, and the wording should make somebody scanning
|
|
208
|
+
* the table stop on it.
|
|
209
|
+
*/
|
|
210
|
+
public static describe(
|
|
211
|
+
scope: NetworkAlertPolicyScope | null | undefined,
|
|
212
|
+
names: NetworkAlertPolicyScopeNames = {},
|
|
213
|
+
): string {
|
|
214
|
+
const normalized: NormalizedNetworkAlertPolicyScope =
|
|
215
|
+
NetworkAlertPolicyScopeUtil.normalize(
|
|
216
|
+
scope,
|
|
217
|
+
) as NormalizedNetworkAlertPolicyScope;
|
|
218
|
+
|
|
219
|
+
if (NetworkAlertPolicyScopeUtil.isUnscoped(normalized)) {
|
|
220
|
+
return "All devices";
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
let sentence: string = "Devices";
|
|
224
|
+
|
|
225
|
+
if (normalized.siteIds.length > 0) {
|
|
226
|
+
sentence += ` in ${NetworkAlertPolicyScopeUtil.describeKind({
|
|
227
|
+
ids: normalized.siteIds,
|
|
228
|
+
names: names.sites,
|
|
229
|
+
singular: "site",
|
|
230
|
+
plural: "sites",
|
|
231
|
+
})}`;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const withClauses: Array<string> = [];
|
|
235
|
+
|
|
236
|
+
if (normalized.networkDeviceRoleIds.length > 0) {
|
|
237
|
+
withClauses.push(
|
|
238
|
+
NetworkAlertPolicyScopeUtil.describeKind({
|
|
239
|
+
ids: normalized.networkDeviceRoleIds,
|
|
240
|
+
names: names.roles,
|
|
241
|
+
singular: "role",
|
|
242
|
+
plural: "roles",
|
|
243
|
+
}),
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (normalized.labelIds.length > 0) {
|
|
248
|
+
withClauses.push(
|
|
249
|
+
NetworkAlertPolicyScopeUtil.describeKind({
|
|
250
|
+
ids: normalized.labelIds,
|
|
251
|
+
names: names.labels,
|
|
252
|
+
singular: "label",
|
|
253
|
+
plural: "labels",
|
|
254
|
+
}),
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
if (withClauses.length > 0) {
|
|
259
|
+
sentence += ` with ${withClauses.join(" and ")}`;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return sentence;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// "site Warehouse" when there is one id and a name for it; "2 sites" else.
|
|
266
|
+
private static describeKind(kind: ScopeKindDescription): string {
|
|
267
|
+
if (kind.ids.length === 1) {
|
|
268
|
+
const name: string = (kind.names?.[kind.ids[0] as string] || "").trim();
|
|
269
|
+
|
|
270
|
+
if (name) {
|
|
271
|
+
return `${kind.singular} ${name}`;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
return `${kind.ids.length} ${
|
|
276
|
+
kind.ids.length === 1 ? kind.singular : kind.plural
|
|
277
|
+
}`;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/*
|
|
281
|
+
* One id list, cleaned. A lone string is one id (a client that sent
|
|
282
|
+
* `siteIds: "abc"` meant `["abc"]`); anything that is not a string or an
|
|
283
|
+
* array yields nothing. Inside an array only non-blank strings and
|
|
284
|
+
* ObjectID-shaped objects (which carry their id under `_id` / `id`) count,
|
|
285
|
+
* trimmed and deduplicated in first-seen order so the stored form is
|
|
286
|
+
* stable across saves.
|
|
287
|
+
*/
|
|
288
|
+
private static readIdList(raw: unknown): Array<string> {
|
|
289
|
+
const candidates: Array<unknown> = Array.isArray(raw)
|
|
290
|
+
? raw
|
|
291
|
+
: raw === undefined || raw === null
|
|
292
|
+
? []
|
|
293
|
+
: [raw];
|
|
294
|
+
|
|
295
|
+
const ids: Array<string> = [];
|
|
296
|
+
|
|
297
|
+
for (const candidate of candidates) {
|
|
298
|
+
const id: string | null = NetworkAlertPolicyScopeUtil.readId(candidate);
|
|
299
|
+
|
|
300
|
+
if (id && !ids.includes(id)) {
|
|
301
|
+
ids.push(id);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return ids;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
private static readId(value: unknown): string | null {
|
|
309
|
+
if (typeof value === "string") {
|
|
310
|
+
const trimmed: string = value.trim();
|
|
311
|
+
|
|
312
|
+
return trimmed || null;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
316
|
+
const relation: { _id?: unknown; id?: unknown } = value as {
|
|
317
|
+
_id?: unknown;
|
|
318
|
+
id?: unknown;
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
const relationId: unknown = relation._id || relation.id;
|
|
322
|
+
|
|
323
|
+
if (typeof relationId === "string") {
|
|
324
|
+
const trimmed: string = relationId.trim();
|
|
325
|
+
|
|
326
|
+
return trimmed || null;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
private static listHasId(
|
|
334
|
+
list: Array<string>,
|
|
335
|
+
id: string | null | undefined,
|
|
336
|
+
): boolean {
|
|
337
|
+
const normalizedId: string | null = NetworkAlertPolicyScopeUtil.readId(id);
|
|
338
|
+
|
|
339
|
+
return normalizedId !== null && list.includes(normalizedId);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
export default NetworkAlertPolicyScope;
|
|
@@ -1,39 +1,54 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* How a NetworkDevice's health is established.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* probe
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* A device is the unit; reachability is a built-in capability of every device
|
|
5
|
+
* a probe polls, and SNMP is an enrichment layered on top when credentials
|
|
6
|
+
* exist. That is what `Probe` means: the assigned probe pings the device on
|
|
7
|
+
* its own schedule, and walks it over SNMP as well whenever it has usable
|
|
8
|
+
* credentials (its own, or through a credential profile). A device with no
|
|
9
|
+
* credentials is simply pinged — it still has a status from its first poll,
|
|
10
|
+
* still belongs to a site, still appears on the map.
|
|
8
11
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* all — so they were absent from the site hierarchy and from the topology map,
|
|
14
|
-
* which is what issue #3023 is about.
|
|
12
|
+
* `Monitor` is the override for gear a probe cannot reach at all, or whose
|
|
13
|
+
* health is better judged by an HTTP or port check: no polling; the bound
|
|
14
|
+
* Monitor's status IS the device's status, stamped through the same bridge
|
|
15
|
+
* that stamps every other device.
|
|
15
16
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* HISTORY. The product started SNMP-first: the first value was "SNMP", and
|
|
18
|
+
* everything that could not be walked had to be `Monitor`-backed, which meant
|
|
19
|
+
* a Ping monitor per phone and per camera (issue #3023, #3447). Rows written
|
|
20
|
+
* in that era hold "SNMP" or NULL, and both read as `Probe` — they were
|
|
21
|
+
* probe-polled devices all along, the probe just did not ping them yet.
|
|
19
22
|
*
|
|
20
23
|
* Stored as free text on the column (the SnmpVersion precedent), so parse it
|
|
21
24
|
* through `NetworkDeviceMonitoringMethodUtil.parse` rather than comparing the
|
|
22
|
-
* raw column:
|
|
23
|
-
* `
|
|
25
|
+
* raw column: NULL, "", "SNMP" and anything unrecognised must read as
|
|
26
|
+
* `Probe`, and defaulting a device into "monitor-backed" would silently stop
|
|
27
|
+
* it being polled.
|
|
24
28
|
*/
|
|
25
29
|
export enum NetworkDeviceMonitoringMethod {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
/*
|
|
31
|
+
* The assigned probe pings the device on its schedule, and walks it over
|
|
32
|
+
* SNMP as well whenever it has usable credentials.
|
|
33
|
+
*/
|
|
34
|
+
Probe = "Probe",
|
|
35
|
+
// No polling; a bound Monitor (Ping, IP, Port, HTTP, ...) reports its health.
|
|
29
36
|
Monitor = "Monitor",
|
|
30
37
|
}
|
|
31
38
|
|
|
39
|
+
/*
|
|
40
|
+
* The value every device written before ping-first polling carries. Kept as
|
|
41
|
+
* a named constant for the parser, the normalising data migration and tests;
|
|
42
|
+
* it is not a value the product writes any more.
|
|
43
|
+
*/
|
|
44
|
+
export const LEGACY_SNMP_MONITORING_METHOD: string = "SNMP";
|
|
45
|
+
|
|
32
46
|
export class NetworkDeviceMonitoringMethodUtil {
|
|
33
47
|
/*
|
|
34
|
-
* NULL, empty and anything unrecognised read as
|
|
35
|
-
* device created before this column
|
|
36
|
-
* into "monitor-backed"
|
|
48
|
+
* NULL, empty, the legacy "SNMP" and anything unrecognised read as Probe —
|
|
49
|
+
* that is what every device created before this column (or before
|
|
50
|
+
* ping-first polling) is, and defaulting a device into "monitor-backed"
|
|
51
|
+
* would silently stop it being polled.
|
|
37
52
|
*/
|
|
38
53
|
public static parse(
|
|
39
54
|
value: string | undefined | null,
|
|
@@ -41,7 +56,7 @@ export class NetworkDeviceMonitoringMethodUtil {
|
|
|
41
56
|
if ((value || "").trim().toLowerCase() === "monitor") {
|
|
42
57
|
return NetworkDeviceMonitoringMethod.Monitor;
|
|
43
58
|
}
|
|
44
|
-
return NetworkDeviceMonitoringMethod.
|
|
59
|
+
return NetworkDeviceMonitoringMethod.Probe;
|
|
45
60
|
}
|
|
46
61
|
|
|
47
62
|
public static isMonitorBacked(value: string | undefined | null): boolean {
|
|
@@ -50,6 +65,11 @@ export class NetworkDeviceMonitoringMethodUtil {
|
|
|
50
65
|
NetworkDeviceMonitoringMethod.Monitor
|
|
51
66
|
);
|
|
52
67
|
}
|
|
68
|
+
|
|
69
|
+
/** The complement of isMonitorBacked: the assigned probe polls the device. */
|
|
70
|
+
public static isProbePolled(value: string | undefined | null): boolean {
|
|
71
|
+
return !NetworkDeviceMonitoringMethodUtil.isMonitorBacked(value);
|
|
72
|
+
}
|
|
53
73
|
}
|
|
54
74
|
|
|
55
75
|
export default NetworkDeviceMonitoringMethod;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import DefaultNetworkSiteType from "./DefaultNetworkSiteType";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* One shared hierarchy policy for new-project seeding and the idempotent data
|
|
5
|
+
* migration that repairs projects created before parent site types existed.
|
|
6
|
+
* Keep parents before children in creation order so every FK can be resolved
|
|
7
|
+
* from a row that has already been found or created.
|
|
8
|
+
*/
|
|
9
|
+
export const DefaultNetworkSiteTypeParent: Readonly<
|
|
10
|
+
Record<DefaultNetworkSiteType, DefaultNetworkSiteType | null>
|
|
11
|
+
> = Object.freeze({
|
|
12
|
+
[DefaultNetworkSiteType.AccountType]: null,
|
|
13
|
+
[DefaultNetworkSiteType.Region]: DefaultNetworkSiteType.AccountType,
|
|
14
|
+
[DefaultNetworkSiteType.Franchisee]: DefaultNetworkSiteType.Region,
|
|
15
|
+
[DefaultNetworkSiteType.Market]: DefaultNetworkSiteType.Franchisee,
|
|
16
|
+
[DefaultNetworkSiteType.Unit]: DefaultNetworkSiteType.Market,
|
|
17
|
+
[DefaultNetworkSiteType.DataCenter]: null,
|
|
18
|
+
[DefaultNetworkSiteType.Other]: null,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export const DefaultNetworkSiteTypeCreationOrder: ReadonlyArray<DefaultNetworkSiteType> =
|
|
22
|
+
Object.freeze([
|
|
23
|
+
DefaultNetworkSiteType.AccountType,
|
|
24
|
+
DefaultNetworkSiteType.Region,
|
|
25
|
+
DefaultNetworkSiteType.Franchisee,
|
|
26
|
+
DefaultNetworkSiteType.Market,
|
|
27
|
+
DefaultNetworkSiteType.Unit,
|
|
28
|
+
DefaultNetworkSiteType.DataCenter,
|
|
29
|
+
DefaultNetworkSiteType.Other,
|
|
30
|
+
]);
|