@oneuptime/common 13.0.0 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/Alert.ts +55 -0
- package/Models/DatabaseModels/CloudResource.ts +45 -7
- package/Models/DatabaseModels/CodeRepository.ts +85 -0
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +57 -7
- package/Models/DatabaseModels/GoogleSecOpsConnectionRun.ts +263 -0
- package/Models/DatabaseModels/Incident.ts +55 -0
- package/Models/DatabaseModels/Index.ts +16 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
- package/Models/DatabaseModels/User.ts +51 -2
- package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +43 -2
- package/Models/DatabaseModels/UserWebAuthn.ts +17 -0
- package/Models/DatabaseModels/VMwareResource.ts +1149 -0
- package/Models/DatabaseModels/VMwareVCenter.ts +1122 -0
- package/Models/DatabaseModels/VMwareVCenterFeed.ts +625 -0
- package/Models/DatabaseModels/VMwareVCenterLabelRule.ts +514 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +485 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +484 -0
- package/Models/DatabaseModels/WorkflowVariable.ts +22 -1
- package/Server/API/AIAgentDataAPI.ts +79 -4
- package/Server/API/AIAgentGitHubAPI.ts +523 -0
- package/Server/API/AIChatAPI.ts +20 -1
- package/Server/API/BillingAPI.ts +33 -0
- package/Server/API/DashboardAPI.ts +10 -0
- package/Server/API/GitHubAPI.ts +47 -5
- package/Server/API/GoogleSecOpsConnectionAPI.ts +79 -0
- package/Server/API/UserWebAuthnAPI.ts +21 -1
- package/Server/API/VMwareResourceAPI.ts +143 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.ts +68 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.ts +26 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.ts +636 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.ts +83 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Middleware/IdentityRateLimit.ts +101 -0
- package/Server/Services/AIRunService.ts +13 -0
- package/Server/Services/BillingPaymentMethodService.ts +99 -28
- package/Server/Services/BillingService.ts +287 -20
- package/Server/Services/CloudResourceInstanceService.ts +70 -0
- package/Server/Services/ExceptionAggregationService.ts +1 -0
- package/Server/Services/GoogleSecOpsConnectionRunService.ts +10 -0
- package/Server/Services/GoogleSecOpsConnectionService.ts +12 -0
- package/Server/Services/Index.ts +16 -0
- package/Server/Services/LogAggregationService.ts +1 -0
- package/Server/Services/MetricAggregationService.ts +1 -0
- package/Server/Services/MobilePasskeyLoginService.ts +216 -0
- package/Server/Services/MonitorService.ts +51 -1
- package/Server/Services/MonitorTemplateService.ts +91 -29
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +132 -1
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +176 -2
- package/Server/Services/OpenTelemetryIngestService.ts +17 -0
- package/Server/Services/PayAsYouGoBillingService.ts +446 -0
- package/Server/Services/ProjectService.ts +46 -2
- package/Server/Services/ServerlessFunctionInstanceService.ts +71 -0
- package/Server/Services/TeamMemberService.ts +96 -36
- package/Server/Services/TelemetryIngestionKeyService.ts +80 -10
- package/Server/Services/TelemetryUsageBillingService.ts +95 -5
- package/Server/Services/TraceAggregationService.ts +5 -4
- package/Server/Services/UserWebAuthnService.ts +592 -133
- package/Server/Services/VMwareResourceService.ts +648 -0
- package/Server/Services/VMwareVCenterFeedService.ts +99 -0
- package/Server/Services/VMwareVCenterLabelRuleEngineService.ts +240 -0
- package/Server/Services/VMwareVCenterLabelRuleService.ts +14 -0
- package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +252 -0
- package/Server/Services/VMwareVCenterOwnerRuleService.ts +14 -0
- package/Server/Services/VMwareVCenterOwnerTeamService.ts +139 -0
- package/Server/Services/VMwareVCenterOwnerUserService.ts +133 -0
- package/Server/Services/VMwareVCenterService.ts +629 -0
- package/Server/Services/WorkflowVariableService.ts +203 -0
- package/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.ts +17 -0
- package/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.ts +31 -1
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +7 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.ts +341 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.ts +274 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.ts +375 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubConversation.ts +846 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.ts +360 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubRunReply.ts +421 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.ts +140 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.ts +906 -0
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +143 -0
- package/Server/Utils/DataSource/EgressGuard.ts +160 -15
- package/Server/Utils/Database/TruncateColumnValue.ts +1 -1
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +2 -0
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +33 -0
- package/Server/Utils/EmailRollup/EmailRollupWriter.ts +44 -0
- package/Server/Utils/LogRedaction.ts +2 -1
- package/Server/Utils/Monitor/MonitorAlert.ts +1 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +302 -3
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +26 -4
- package/Server/Utils/Monitor/MonitorResourceContext.ts +5 -3
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +14 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +28 -5
- package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +3 -3
- package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +14 -9
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +116 -84
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +594 -195
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.ts +466 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +5 -0
- package/Server/Utils/Telemetry/ResourceHeartbeat.ts +2 -1
- package/Server/Utils/Telemetry/TelemetryEntity.ts +181 -1
- package/Server/Utils/Telemetry/VMwareSnapshotScan.ts +1352 -0
- package/Tests/App/Accounts/LoginPasskey.test.tsx +529 -0
- package/Tests/App/Accounts/MobilePasskey.test.tsx +620 -0
- package/Tests/App/Accounts/PasswordRequirements.test.tsx +254 -0
- package/Tests/App/Accounts/RegisterPassword.test.tsx +553 -0
- package/Tests/App/Dashboard/AskAiAvailability.test.ts +224 -0
- package/Tests/App/Dashboard/AskAiDisabled.test.tsx +432 -0
- package/Tests/App/Dashboard/BackupCodes.test.tsx +414 -0
- package/Tests/App/Dashboard/BillingPaidUsageFlow.test.tsx +530 -0
- package/Tests/App/Dashboard/BillingPaymentMethodForm.test.tsx +195 -0
- package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +199 -0
- package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +198 -0
- package/Tests/App/Dashboard/CloudDocumentationMarkdown.test.ts +215 -0
- package/Tests/App/Dashboard/CloudFleetSummary.test.ts +183 -0
- package/Tests/App/Dashboard/CloudFleetSummaryComponent.test.tsx +248 -0
- package/Tests/App/Dashboard/CloudResourceTelemetryScope.test.ts +215 -0
- package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +3 -0
- package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +441 -0
- package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +458 -0
- package/Tests/App/Dashboard/DashboardToolbarPopupLayering.test.tsx +566 -0
- package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +376 -0
- package/Tests/App/Dashboard/DiscoveryScanLiveUpdates.test.tsx +642 -0
- package/Tests/App/Dashboard/DiscoveryScanProgress.test.tsx +267 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +69 -231
- package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +244 -0
- package/Tests/App/Dashboard/GoogleSecOpsDiagnostics.test.tsx +724 -0
- package/Tests/App/Dashboard/MonitorTemplateSyncFields.test.tsx +539 -0
- package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +24 -7
- package/Tests/App/Dashboard/OnCallOverridePresentation.test.ts +496 -0
- package/Tests/App/Dashboard/OnCallScheduleOverrideClarity.test.tsx +677 -0
- package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +31 -3
- package/Tests/App/Dashboard/PaidUsageConsent.test.tsx +180 -0
- package/Tests/App/Dashboard/PasskeySettings.test.tsx +1220 -0
- package/Tests/App/Dashboard/PayAsYouGoConsentGate.test.tsx +176 -275
- package/Tests/App/Dashboard/PayAsYouGoNotices.test.tsx +380 -233
- package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +3 -23
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +1 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
- package/Tests/App/Dashboard/TwoFactorStatus.test.tsx +260 -0
- package/Tests/App/Dashboard/VMwareDashboardWidgets.test.ts +573 -0
- package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
- package/Tests/App/Dashboard/WorkflowVariablesTable.test.tsx +768 -0
- package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +532 -40
- package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +19 -2
- package/Tests/Fixtures/MobilePasskeyUser.json +8 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +25 -6
- package/Tests/Models/DatabaseModels/VMwareModels.test.ts +1134 -0
- package/Tests/Models/RunnerVersionLabel.test.ts +4 -2
- package/Tests/Server/API/AIChatProvidersAIEnabled.test.ts +259 -0
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +31 -2
- package/Tests/Server/API/BillingPayAsYouGoStatus.test.ts +116 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +29 -1
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +13 -2
- package/Tests/Server/API/GitHubWebhookSignature.test.ts +368 -0
- package/Tests/Server/API/GoogleSecOpsConnectionAPI.test.ts +248 -0
- package/Tests/Server/API/UserWebAuthnAuthenticationOptionsRoute.test.ts +330 -0
- package/Tests/Server/API/UserWebAuthnPasskeyAPI.test.ts +172 -0
- package/Tests/Server/API/VMwareResourceAPI.test.ts +546 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupMetadataMigration.test.ts +85 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +34 -3
- package/Tests/Server/Middleware/PasskeyRateLimit.test.ts +141 -0
- package/Tests/Server/Services/AutoImportRuleRearmRecentScans.test.ts +343 -0
- package/Tests/Server/Services/AutoImportRuleWriteRearmsScans.test.ts +381 -0
- package/Tests/Server/Services/BillingPaymentMethodServiceSync.test.ts +175 -0
- package/Tests/Server/Services/BillingService.test.ts +26 -11
- package/Tests/Server/Services/BillingServiceMeteredPaymentAuthorization.test.ts +245 -0
- package/Tests/Server/Services/BillingServicePaymentMethodReads.test.ts +362 -0
- package/Tests/Server/Services/CloudResourceInstanceStalePrune.test.ts +188 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +16 -2
- package/Tests/Server/Services/GoogleSecOpsDiagnosticsModel.test.ts +153 -0
- package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +13 -0
- package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +5 -0
- package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +36 -0
- package/Tests/Server/Services/InventoryUpsertTruncationGuard.test.ts +151 -0
- package/Tests/Server/Services/MobilePasskeyLoginIntegration.test.ts +231 -0
- package/Tests/Server/Services/MobilePasskeyLoginService.test.ts +315 -0
- package/Tests/Server/Services/MonitorPayAsYouGoBilling.test.ts +302 -0
- package/Tests/Server/Services/MonitorTemplateServiceFieldSync.test.ts +994 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +22 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
- package/Tests/Server/Services/PayAsYouGoBillingService.test.ts +857 -0
- package/Tests/Server/Services/PayAsYouGoStripeRateLimitBudget.test.ts +379 -0
- package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +99 -1
- package/Tests/Server/Services/ProjectServiceSubscriptionSeats.test.ts +134 -0
- package/Tests/Server/Services/ResourceFeedServices.test.ts +3 -2
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +32 -6
- package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +363 -175
- package/Tests/Server/Services/ServerlessFunctionInstanceStalePrune.test.ts +200 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +3 -0
- package/Tests/Server/Services/TeamMemberBillingSeatSync.test.ts +762 -0
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +3 -0
- package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +72 -0
- package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +17 -4
- package/Tests/Server/Services/TelemetryPayAsYouGoBilling.test.ts +355 -0
- package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +41 -4
- package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +37 -0
- package/Tests/Server/Services/UserWebAuthnPasskeyIntegration.test.ts +401 -0
- package/Tests/Server/Services/UserWebAuthnPasskeyService.test.ts +769 -0
- package/Tests/Server/Services/UserWebAuthnUserVerification.test.ts +649 -0
- package/Tests/Server/Services/VMwareResourceService.test.ts +945 -0
- package/Tests/Server/Services/VMwareVCenterService.test.ts +722 -0
- package/Tests/Server/Services/WorkflowVariableRenameUniqueness.test.ts +842 -0
- package/Tests/Server/TestingUtils/PasskeyHttpIntegration.ts +102 -0
- package/Tests/Server/TestingUtils/SecurityKey.ts +464 -0
- package/Tests/Server/TestingUtils/WebAuthnServiceMocks.ts +60 -0
- package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +573 -0
- package/Tests/Server/Types/Database/Permissions/ProjectCustomerSupportAccessColumn.test.ts +261 -0
- package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +95 -0
- package/Tests/Server/Utils/CodeRepository/GitHubAgentTaskTrigger.test.ts +2101 -0
- package/Tests/Server/Utils/CodeRepository/GitHubCommandAuthorizer.test.ts +883 -0
- package/Tests/Server/Utils/CodeRepository/GitHubCommandParser.test.ts +1474 -0
- package/Tests/Server/Utils/CodeRepository/GitHubConversation.test.ts +1526 -0
- package/Tests/Server/Utils/CodeRepository/GitHubReplyComposer.test.ts +1389 -0
- package/Tests/Server/Utils/CodeRepository/GitHubRunReply.test.ts +1707 -0
- package/Tests/Server/Utils/CodeRepository/GitHubWebhookHandler.test.ts +2202 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +345 -0
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +896 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupMetadataIntegration.test.ts +246 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +299 -1
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +6 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +185 -0
- package/Tests/Server/Utils/LogRedaction.test.ts +33 -0
- package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +2 -1
- package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +10 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +66 -1
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +362 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +60 -1
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +60 -0
- package/Tests/Server/Utils/Monitor/MonitorRootCauseTargetResolution.test.ts +423 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +6 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +46 -2
- package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +81 -45
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.test.ts +711 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClickhouseIntegration.test.ts +223 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +69 -1
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsDiagnostics.test.ts +838 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +241 -28
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsHttpIntegration.test.ts +651 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +11 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +13 -12
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +112 -127
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +12 -18
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +43 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +580 -0
- package/Tests/Server/Utils/Telemetry/VMwareSnapshotScan.test.ts +1748 -0
- package/Tests/Types/Cloud/CloudPlatform.test.ts +574 -0
- package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +2 -0
- package/Tests/Types/Monitor/MonitorCriteriaMetricVariables.test.ts +9 -0
- package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorStepInfraMonitorUtils.test.ts +53 -8
- package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +97 -0
- package/Tests/Types/Monitor/MonitorStepMetricViewConfigUtil.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorStepTemplateSyncFields.test.ts +107 -0
- package/Tests/Types/Monitor/MonitorTemplateSyncField.test.ts +172 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +2 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +1 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +9 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
- package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +131 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +10 -0
- package/Tests/Types/Monitor/VMwareAlertTemplates.test.ts +1608 -0
- package/Tests/Types/Monitor/VMwareMetricCatalog.test.ts +488 -0
- package/Tests/Types/OnCallDutyPolicy/OverrideProvenance.test.ts +295 -0
- package/Tests/Types/Runner/RunnerLiveStatus.test.ts +2 -2
- package/Tests/Types/SignupPassword.test.ts +205 -0
- package/Tests/Types/StatusPage/StatusPageLanguage.test.ts +44 -0
- package/Tests/Types/SupportedLanguages.test.ts +119 -0
- package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +19 -0
- package/Tests/UI/ColorPickerBuild.test.ts +86 -0
- package/Tests/UI/Components/Breadcrumbs.test.tsx +32 -0
- package/Tests/UI/Components/Forms/ModelFormPreservesUserInput.test.tsx +937 -0
- package/Tests/UI/Components/Forms/ModelFormWriteOnlyColumnSelect.test.tsx +230 -0
- package/Tests/UI/Components/Forms/ValidationFormSteps.test.ts +3 -4
- package/Tests/UI/Components/LabelRuleImportExport.test.tsx +907 -0
- package/Tests/UI/Components/ModelTable/ModelTableCreateAfterEdit.test.tsx +514 -0
- package/Tests/UI/Components/MonitorGraphs/Uptime.test.tsx +301 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +2 -1
- package/Tests/UI/Components/TooltipLazyContent.test.tsx +373 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +43 -12
- package/Tests/UI/ReactDomBuild.test.ts +104 -0
- package/Tests/UI/ReactRouterSingletonBuild.test.ts +11 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +148 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +29 -0
- package/Tests/UI/Utils/DashboardStackingLayers.test.ts +197 -0
- package/Tests/UI/Utils/LabelRuleImportExport.test.ts +546 -0
- package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +109 -2
- package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +7 -2
- package/Tests/UI/Utils/UserEmailRegistrationStatus.test.tsx +295 -0
- package/Tests/UI/Utils/WebAuthn.test.ts +265 -0
- package/Tests/Utils/Dashboard/Components/DashboardComponentDefaults.test.ts +5 -0
- package/Tests/Utils/Dashboard/Components/DashboardVMwareListComponents.test.ts +548 -0
- package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +17 -3
- package/Tests/Utils/LabelRuleImportExport.test.ts +583 -0
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/MonitorTemplateSyncUtil.test.ts +590 -0
- package/Tests/Utils/RequestFailedDetails.test.ts +325 -0
- package/Tests/Utils/Telemetry/CloudInstanceIdentity.test.ts +255 -0
- package/Tests/Utils/Telemetry/EntityRelationship.test.ts +167 -0
- package/Tests/Utils/WebAuthnTestUtil.ts +79 -0
- package/Tests/__mocks__/simplewebauthn.js +33 -4
- package/Types/AI/CodeFixTaskContext.ts +122 -0
- package/Types/AI/CodeFixTaskType.ts +62 -0
- package/Types/Accounts/AccountsLanguage.ts +1 -0
- package/Types/AdminDashboard/AdminDashboardLanguage.ts +1 -0
- package/Types/Calendar/CalendarEvent.ts +16 -0
- package/Types/Cloud/CloudPlatform.ts +372 -0
- package/Types/CodeRepository/GitHubCommand.ts +69 -0
- package/Types/Dashboard/DashboardComponentType.ts +2 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.ts +23 -0
- package/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.ts +30 -0
- package/Types/Dashboard/DashboardLanguage.ts +1 -0
- package/Types/Dashboard/DashboardTemplates.ts +314 -0
- package/Types/Docs/DocsLanguage.ts +1 -0
- package/Types/Exception/EgressGuardException.ts +65 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +36 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +1 -0
- package/Types/Monitor/MonitorStep.ts +78 -17
- package/Types/Monitor/MonitorStepMetricViewConfigUtil.ts +1 -0
- package/Types/Monitor/MonitorStepVMwareMonitor.ts +127 -0
- package/Types/Monitor/MonitorTemplateSyncField.ts +291 -0
- package/Types/Monitor/MonitorType.ts +24 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +33 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +2 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +3 -0
- package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +158 -0
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +61 -0
- package/Types/Monitor/VMwareAlertTemplates.ts +1070 -0
- package/Types/Monitor/VMwareMetricCatalog.ts +914 -0
- package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +29 -0
- package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +16 -0
- package/Types/Password.ts +84 -5
- package/Types/Permission.ts +265 -0
- package/Types/Probe/RequestFailedDetails.ts +7 -0
- package/Types/Runner/RunnerLiveStatus.ts +1 -1
- package/Types/SecurityEvent/GoogleSecOpsDiagnostics.ts +56 -0
- package/Types/StatusPage/StatusPageLanguage.ts +1 -0
- package/Types/Telemetry/EntityType.ts +21 -0
- package/Types/Telemetry/ServiceType.ts +1 -0
- package/Typings/Index.d.ts +63 -0
- package/UI/Components/Breadcrumbs/Breadcrumbs.tsx +2 -2
- package/UI/Components/Calendar/Calendar.css +78 -0
- package/UI/Components/Calendar/Calendar.tsx +28 -3
- package/UI/Components/Forms/BasicForm.tsx +44 -2
- package/UI/Components/Forms/Fields/ColorPicker.tsx +2 -1
- package/UI/Components/Forms/Fields/FormField.tsx +16 -3
- package/UI/Components/Forms/ModelForm.tsx +159 -5
- package/UI/Components/Forms/Types/Field.ts +8 -1
- package/UI/Components/Graphs/DayUptimeGraph.tsx +8 -10
- package/UI/Components/Icon/Icon.tsx +16 -0
- package/UI/Components/Input/Input.tsx +42 -7
- package/UI/Components/LabelRule/ImportLabelRulesModal.tsx +441 -0
- package/UI/Components/LabelRule/LabelRuleTable.tsx +142 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +22 -5
- package/UI/Components/ModelTable/ModelTable.tsx +14 -6
- package/UI/Components/MonitorGraphs/Uptime.tsx +17 -27
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +3 -1
- package/UI/Components/Tooltip/Tooltip.tsx +52 -6
- package/UI/Utils/DashboardStackingLayers.ts +85 -0
- package/UI/Utils/LabelRuleImportExport.ts +310 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +4 -3
- package/UI/Utils/TelemetryService.ts +4 -3
- package/UI/Utils/UseDashboardGridDnd.ts +4 -1
- package/UI/Utils/UserEmailRegistrationStatus.ts +33 -5
- package/UI/Utils/WebAuthn.ts +220 -0
- package/UI/esbuild-config.js +4 -0
- package/Utils/API.ts +34 -0
- package/Utils/Dashboard/Components/DashboardVMwareHostListComponent.ts +38 -0
- package/Utils/Dashboard/Components/DashboardVMwareResourceListShared.ts +70 -0
- package/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.ts +76 -0
- package/Utils/Dashboard/Components/Index.ts +16 -0
- package/Utils/LabelRuleImportExport.ts +496 -0
- package/Utils/Monitor/MonitorTemplateSyncUtil.ts +164 -0
- package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +8 -0
- package/Utils/Telemetry/CloudInstanceIdentity.ts +94 -0
- package/Utils/Telemetry/EntityKey.ts +19 -0
- package/Utils/Telemetry/EntityRelationship.ts +19 -0
- package/build/dist/Models/DatabaseModels/Alert.js +54 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResource.js +44 -7
- package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CodeRepository.js +87 -0
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +60 -7
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js +287 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +54 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +16 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +57 -4
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +47 -2
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +18 -0
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareResource.js +1201 -0
- package/build/dist/Models/DatabaseModels/VMwareResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js +1149 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js +22 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +63 -3
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentGitHubAPI.js +363 -0
- package/build/dist/Server/API/AIAgentGitHubAPI.js.map +1 -0
- package/build/dist/Server/API/AIChatAPI.js +19 -1
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/BillingAPI.js +22 -0
- package/build/dist/Server/API/BillingAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +10 -0
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/GitHubAPI.js +33 -5
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js +56 -0
- package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js.map +1 -0
- package/build/dist/Server/API/UserWebAuthnAPI.js +17 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
- package/build/dist/Server/API/VMwareResourceAPI.js +106 -0
- package/build/dist/Server/API/VMwareResourceAPI.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js +41 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js +241 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.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/Middleware/IdentityRateLimit.js +80 -0
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +14 -1
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/BillingPaymentMethodService.js +71 -21
- package/build/dist/Server/Services/BillingPaymentMethodService.js.map +1 -1
- package/build/dist/Server/Services/BillingService.js +210 -22
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceInstanceService.js +66 -0
- package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js +9 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js.map +1 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionService.js +7 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +16 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +1 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +1 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MobilePasskeyLoginService.js +137 -0
- package/build/dist/Server/Services/MobilePasskeyLoginService.js.map +1 -0
- package/build/dist/Server/Services/MonitorService.js +34 -1
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +64 -26
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +124 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +142 -2
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +28 -13
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PayAsYouGoBillingService.js +297 -0
- package/build/dist/Server/Services/PayAsYouGoBillingService.js.map +1 -0
- package/build/dist/Server/Services/ProjectService.js +38 -2
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +66 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +85 -28
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js +61 -10
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +62 -5
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +5 -4
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Services/UserWebAuthnService.js +345 -113
- package/build/dist/Server/Services/UserWebAuthnService.js.map +1 -1
- package/build/dist/Server/Services/VMwareResourceService.js +395 -0
- package/build/dist/Server/Services/VMwareResourceService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterFeedService.js +89 -0
- package/build/dist/Server/Services/VMwareVCenterFeedService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +197 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +214 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js +129 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js +122 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterService.js +533 -0
- package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -0
- package/build/dist/Server/Services/WorkflowVariableService.js +169 -0
- package/build/dist/Server/Services/WorkflowVariableService.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js +12 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js +25 -2
- package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js +275 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js +226 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js +297 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js +582 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js +275 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js +365 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js +103 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js +661 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +113 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +99 -15
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +2 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +18 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +31 -2
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -1
- package/build/dist/Server/Utils/LogRedaction.js +2 -1
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +219 -4
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +12 -4
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +5 -3
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +22 -9
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +21 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +21 -6
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +3 -3
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +9 -9
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +92 -71
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +428 -143
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js +376 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +136 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js +933 -0
- package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js.map +1 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js +40 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
- package/build/dist/Types/AI/CodeFixTaskType.js +57 -0
- package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -1
- package/build/dist/Types/Accounts/AccountsLanguage.js +1 -0
- package/build/dist/Types/Accounts/AccountsLanguage.js.map +1 -1
- package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js +1 -0
- package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js.map +1 -1
- package/build/dist/Types/Cloud/CloudPlatform.js +277 -0
- package/build/dist/Types/Cloud/CloudPlatform.js.map +1 -0
- package/build/dist/Types/CodeRepository/GitHubCommand.js +52 -0
- package/build/dist/Types/CodeRepository/GitHubCommand.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardLanguage.js +1 -0
- package/build/dist/Types/Dashboard/DashboardLanguage.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +286 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Docs/DocsLanguage.js +1 -0
- package/build/dist/Types/Docs/DocsLanguage.js.map +1 -1
- package/build/dist/Types/Exception/EgressGuardException.js +59 -0
- package/build/dist/Types/Exception/EgressGuardException.js.map +1 -0
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +61 -18
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js +1 -0
- package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js +71 -0
- package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorTemplateSyncField.js +211 -0
- package/build/dist/Types/Monitor/MonitorTemplateSyncField.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +23 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +28 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +1 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +2 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +120 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +60 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
- package/build/dist/Types/Monitor/VMwareAlertTemplates.js +775 -0
- package/build/dist/Types/Monitor/VMwareAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/VMwareMetricCatalog.js +799 -0
- package/build/dist/Types/Monitor/VMwareMetricCatalog.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +25 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +5 -0
- package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
- package/build/dist/Types/Password.js +63 -5
- package/build/dist/Types/Password.js.map +1 -1
- package/build/dist/Types/Permission.js +234 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Probe/RequestFailedDetails.js +7 -0
- package/build/dist/Types/Probe/RequestFailedDetails.js.map +1 -1
- package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js +2 -0
- package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js.map +1 -0
- package/build/dist/Types/StatusPage/StatusPageLanguage.js +1 -0
- package/build/dist/Types/StatusPage/StatusPageLanguage.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +21 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js +2 -2
- package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/build/dist/UI/Components/Calendar/Calendar.js +24 -4
- package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +28 -3
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +1 -1
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +10 -3
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Forms/ModelForm.js +89 -6
- package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +5 -6
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +14 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +37 -8
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js +228 -0
- package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js.map +1 -0
- package/build/dist/UI/Components/LabelRule/LabelRuleTable.js +102 -0
- package/build/dist/UI/Components/LabelRule/LabelRuleTable.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +15 -2
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ModelTable.js +13 -5
- package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js +14 -15
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js +33 -4
- package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
- package/build/dist/UI/Utils/DashboardStackingLayers.js +44 -0
- package/build/dist/UI/Utils/DashboardStackingLayers.js.map +1 -0
- package/build/dist/UI/Utils/LabelRuleImportExport.js +195 -0
- package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -0
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +4 -4
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +3 -2
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardGridDnd.js +2 -1
- package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -1
- package/build/dist/UI/Utils/UserEmailRegistrationStatus.js +21 -4
- package/build/dist/UI/Utils/UserEmailRegistrationStatus.js.map +1 -1
- package/build/dist/UI/Utils/WebAuthn.js +121 -0
- package/build/dist/UI/Utils/WebAuthn.js.map +1 -0
- package/build/dist/Utils/API.js +29 -0
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js +33 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js +54 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js +60 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/LabelRuleImportExport.js +356 -0
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js +110 -0
- package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +6 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -1
- package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js +88 -0
- package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +15 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityRelationship.js +13 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,1149 @@
|
|
|
1
|
+
import VMwareVCenter from "./VMwareVCenter";
|
|
2
|
+
import Project from "./Project";
|
|
3
|
+
import User from "./User";
|
|
4
|
+
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
5
|
+
import Route from "../../Types/API/Route";
|
|
6
|
+
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
7
|
+
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
8
|
+
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
9
|
+
import ColumnType from "../../Types/Database/ColumnType";
|
|
10
|
+
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
11
|
+
import TableColumn from "../../Types/Database/TableColumn";
|
|
12
|
+
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
13
|
+
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
14
|
+
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
15
|
+
import IconProp from "../../Types/Icon/IconProp";
|
|
16
|
+
import ObjectID from "../../Types/ObjectID";
|
|
17
|
+
import Permission from "../../Types/Permission";
|
|
18
|
+
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* ------------------------------------------------------------------
|
|
22
|
+
* VMwareResource
|
|
23
|
+
* ------------------------------------------------------------------
|
|
24
|
+
*
|
|
25
|
+
* Inventory snapshot of a single vSphere object (Datacenter, Cluster,
|
|
26
|
+
* ESXi Host, Virtual Machine, Datastore or Resource Pool) as seen
|
|
27
|
+
* through one vCenter. Populated by the OTel metrics ingest path from
|
|
28
|
+
* the OpenTelemetry Collector `vcenter` receiver — identity arrives in
|
|
29
|
+
* the RESOURCE attributes of every metric batch (vcenter.datacenter.name,
|
|
30
|
+
* vcenter.cluster.name, vcenter.host.name, vcenter.vm.name / vcenter.vm.id,
|
|
31
|
+
* vcenter.datastore.name, vcenter.resource_pool.inventory_path), so no
|
|
32
|
+
* separate object stream is needed.
|
|
33
|
+
*
|
|
34
|
+
* `externalId` is derived from those attributes and is immutable and
|
|
35
|
+
* collision-free within a vCenter:
|
|
36
|
+
* datacenter/<dc> cluster/<dc>/<cluster>
|
|
37
|
+
* host/<dc>/<host> vm/<vcenter.vm.id | vcenter.vm_template.id>
|
|
38
|
+
* datastore/<dc>/<datastore> resourcepool/<inventory path>
|
|
39
|
+
* The column is ShortText (100). An id longer than that (a deeply
|
|
40
|
+
* nested resource-pool path, the vm/<dc>/<host>/<name> fallback) is
|
|
41
|
+
* shortened by the snapshot scan to a prefix + "~" + 16-hex sha1 of the
|
|
42
|
+
* full id, so two long paths never share a row; the full path stays in
|
|
43
|
+
* the LongText resourcePoolPath column.
|
|
44
|
+
*
|
|
45
|
+
* Power state is inferred rather than reported: the receiver emits
|
|
46
|
+
* vcenter.vm.cpu.* ONLY for powered-on virtual machines, so a VM whose
|
|
47
|
+
* batch carried memory/disk points but no CPU point is powered off (or
|
|
48
|
+
* suspended — the receiver does not distinguish). Templates never carry
|
|
49
|
+
* a power state.
|
|
50
|
+
*
|
|
51
|
+
* Count columns that fan out over datapoint attributes (status,
|
|
52
|
+
* power_state, effective) are SUMMED across the newest timestamp for
|
|
53
|
+
* that (resource, metric) — never "newest datapoint wins".
|
|
54
|
+
*
|
|
55
|
+
* The list/detail pages read this table instead of groupBy-ing over
|
|
56
|
+
* 24h of ClickHouse metric data. Rows are upserted per collection and
|
|
57
|
+
* hard-deleted once lastSeenAt falls behind the staleness threshold for
|
|
58
|
+
* vCenters that remain connected.
|
|
59
|
+
*
|
|
60
|
+
* Writes go through VMwareResourceService under isRoot; users never
|
|
61
|
+
* create/update/delete rows directly.
|
|
62
|
+
*
|
|
63
|
+
* ------------------------------------------------------------------
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
const READ_PERMISSIONS: Array<Permission> = [
|
|
67
|
+
Permission.ProjectOwner,
|
|
68
|
+
Permission.ProjectAdmin,
|
|
69
|
+
Permission.ProjectMember,
|
|
70
|
+
Permission.Viewer,
|
|
71
|
+
Permission.SettingsAdmin,
|
|
72
|
+
Permission.SettingsMember,
|
|
73
|
+
Permission.SettingsViewer,
|
|
74
|
+
Permission.ReadVMwareVCenter,
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
@TenantColumn("projectId")
|
|
78
|
+
@TableAccessControl({
|
|
79
|
+
create: [],
|
|
80
|
+
read: READ_PERMISSIONS,
|
|
81
|
+
update: [],
|
|
82
|
+
delete: [],
|
|
83
|
+
})
|
|
84
|
+
@CrudApiEndpoint(new Route("/vmware-resource"))
|
|
85
|
+
@TableMetadata({
|
|
86
|
+
tableName: "VMwareResource",
|
|
87
|
+
singularName: "VMware Resource",
|
|
88
|
+
pluralName: "VMware Resources",
|
|
89
|
+
icon: IconProp.Cube,
|
|
90
|
+
tableDescription:
|
|
91
|
+
"Snapshot of a vSphere object (datacenter, cluster, ESXi host, virtual machine, datastore or resource pool) as last reported by the VMware agent through vCenter. Populated by the telemetry ingest pipeline; not user-editable.",
|
|
92
|
+
})
|
|
93
|
+
@Index(["projectId", "vmwareVCenterId", "kind", "externalId"], {
|
|
94
|
+
unique: true,
|
|
95
|
+
})
|
|
96
|
+
@Entity({
|
|
97
|
+
name: "VMwareResource",
|
|
98
|
+
})
|
|
99
|
+
export default class VMwareResource extends BaseModel {
|
|
100
|
+
@ColumnAccessControl({
|
|
101
|
+
create: [],
|
|
102
|
+
read: READ_PERMISSIONS,
|
|
103
|
+
update: [],
|
|
104
|
+
})
|
|
105
|
+
@TableColumn({
|
|
106
|
+
manyToOneRelationColumn: "projectId",
|
|
107
|
+
type: TableColumnType.Entity,
|
|
108
|
+
modelType: Project,
|
|
109
|
+
title: "Project",
|
|
110
|
+
description: "Relation to Project this resource belongs to.",
|
|
111
|
+
})
|
|
112
|
+
@ManyToOne(
|
|
113
|
+
() => {
|
|
114
|
+
return Project;
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
eager: false,
|
|
118
|
+
nullable: true,
|
|
119
|
+
onDelete: "CASCADE",
|
|
120
|
+
orphanedRowAction: "nullify",
|
|
121
|
+
},
|
|
122
|
+
)
|
|
123
|
+
@JoinColumn({ name: "projectId" })
|
|
124
|
+
public project?: Project = undefined;
|
|
125
|
+
|
|
126
|
+
@ColumnAccessControl({
|
|
127
|
+
create: [],
|
|
128
|
+
read: READ_PERMISSIONS,
|
|
129
|
+
update: [],
|
|
130
|
+
})
|
|
131
|
+
@Index()
|
|
132
|
+
@TableColumn({
|
|
133
|
+
type: TableColumnType.ObjectID,
|
|
134
|
+
required: true,
|
|
135
|
+
canReadOnRelationQuery: true,
|
|
136
|
+
title: "Project ID",
|
|
137
|
+
description: "ID of the Project this resource belongs to.",
|
|
138
|
+
})
|
|
139
|
+
@Column({
|
|
140
|
+
type: ColumnType.ObjectID,
|
|
141
|
+
nullable: false,
|
|
142
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
143
|
+
})
|
|
144
|
+
public projectId?: ObjectID = undefined;
|
|
145
|
+
|
|
146
|
+
@ColumnAccessControl({
|
|
147
|
+
create: [],
|
|
148
|
+
read: READ_PERMISSIONS,
|
|
149
|
+
update: [],
|
|
150
|
+
})
|
|
151
|
+
@TableColumn({
|
|
152
|
+
manyToOneRelationColumn: "vmwareVCenterId",
|
|
153
|
+
type: TableColumnType.Entity,
|
|
154
|
+
modelType: VMwareVCenter,
|
|
155
|
+
title: "vCenter",
|
|
156
|
+
description: "vCenter this resource is inventoried through.",
|
|
157
|
+
})
|
|
158
|
+
@ManyToOne(
|
|
159
|
+
() => {
|
|
160
|
+
return VMwareVCenter;
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
eager: false,
|
|
164
|
+
nullable: true,
|
|
165
|
+
onDelete: "CASCADE",
|
|
166
|
+
orphanedRowAction: "nullify",
|
|
167
|
+
},
|
|
168
|
+
)
|
|
169
|
+
@JoinColumn({ name: "vmwareVCenterId" })
|
|
170
|
+
public vmwareVCenter?: VMwareVCenter = undefined;
|
|
171
|
+
|
|
172
|
+
@ColumnAccessControl({
|
|
173
|
+
create: [],
|
|
174
|
+
read: READ_PERMISSIONS,
|
|
175
|
+
update: [],
|
|
176
|
+
})
|
|
177
|
+
@Index()
|
|
178
|
+
@TableColumn({
|
|
179
|
+
type: TableColumnType.ObjectID,
|
|
180
|
+
required: true,
|
|
181
|
+
canReadOnRelationQuery: true,
|
|
182
|
+
title: "vCenter ID",
|
|
183
|
+
description: "ID of the vCenter this resource is inventoried through.",
|
|
184
|
+
})
|
|
185
|
+
@Column({
|
|
186
|
+
type: ColumnType.ObjectID,
|
|
187
|
+
nullable: false,
|
|
188
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
189
|
+
})
|
|
190
|
+
public vmwareVCenterId?: ObjectID = undefined;
|
|
191
|
+
|
|
192
|
+
@ColumnAccessControl({
|
|
193
|
+
create: [],
|
|
194
|
+
read: READ_PERMISSIONS,
|
|
195
|
+
update: [],
|
|
196
|
+
})
|
|
197
|
+
@TableColumn({
|
|
198
|
+
required: true,
|
|
199
|
+
type: TableColumnType.ShortText,
|
|
200
|
+
canReadOnRelationQuery: true,
|
|
201
|
+
title: "Kind",
|
|
202
|
+
description:
|
|
203
|
+
"vSphere object kind in singular PascalCase: Datacenter, Cluster, Host, VirtualMachine, Datastore or ResourcePool.",
|
|
204
|
+
})
|
|
205
|
+
@Column({
|
|
206
|
+
nullable: false,
|
|
207
|
+
type: ColumnType.ShortText,
|
|
208
|
+
length: ColumnLength.ShortText,
|
|
209
|
+
})
|
|
210
|
+
public kind?: string = undefined;
|
|
211
|
+
|
|
212
|
+
@ColumnAccessControl({
|
|
213
|
+
create: [],
|
|
214
|
+
read: READ_PERMISSIONS,
|
|
215
|
+
update: [],
|
|
216
|
+
})
|
|
217
|
+
@TableColumn({
|
|
218
|
+
required: true,
|
|
219
|
+
type: TableColumnType.ShortText,
|
|
220
|
+
canReadOnRelationQuery: true,
|
|
221
|
+
title: "External ID",
|
|
222
|
+
description:
|
|
223
|
+
"Immutable, collision-free identity within a vCenter, derived from the vcenter receiver's resource attributes: datacenter/<dc>, cluster/<dc>/<cluster>, host/<dc>/<host>, vm/<instance uuid> (fallback vm/<dc>/<host>/<name>), datastore/<dc>/<datastore>, resourcepool/<inventory path>. Also the URL-encoded detail-route param. Ids longer than 100 characters are shortened by the ingest layer to an 83-character prefix plus '~' and a 16-hex sha1 suffix of the full id, so two long inventory paths never collapse to the same key; the full inventory path stays in resourcePoolPath.",
|
|
224
|
+
})
|
|
225
|
+
@Column({
|
|
226
|
+
nullable: false,
|
|
227
|
+
type: ColumnType.ShortText,
|
|
228
|
+
length: ColumnLength.ShortText,
|
|
229
|
+
})
|
|
230
|
+
public externalId?: string = undefined;
|
|
231
|
+
|
|
232
|
+
@ColumnAccessControl({
|
|
233
|
+
create: [],
|
|
234
|
+
read: READ_PERMISSIONS,
|
|
235
|
+
update: [],
|
|
236
|
+
})
|
|
237
|
+
@TableColumn({
|
|
238
|
+
required: false,
|
|
239
|
+
type: TableColumnType.ShortText,
|
|
240
|
+
canReadOnRelationQuery: true,
|
|
241
|
+
title: "Name",
|
|
242
|
+
description:
|
|
243
|
+
"Display name of the object as shown in the vSphere Client — the vcenter.datacenter.name, vcenter.cluster.name, vcenter.host.name, vcenter.vm.name / vcenter.vm_template.name, vcenter.datastore.name or vcenter.resource_pool.name resource attribute.",
|
|
244
|
+
})
|
|
245
|
+
@Column({
|
|
246
|
+
nullable: true,
|
|
247
|
+
type: ColumnType.ShortText,
|
|
248
|
+
length: ColumnLength.ShortText,
|
|
249
|
+
})
|
|
250
|
+
public name?: string = undefined;
|
|
251
|
+
|
|
252
|
+
@ColumnAccessControl({
|
|
253
|
+
create: [],
|
|
254
|
+
read: READ_PERMISSIONS,
|
|
255
|
+
update: [],
|
|
256
|
+
})
|
|
257
|
+
@TableColumn({
|
|
258
|
+
required: false,
|
|
259
|
+
type: TableColumnType.ShortText,
|
|
260
|
+
canReadOnRelationQuery: true,
|
|
261
|
+
title: "Datacenter Name",
|
|
262
|
+
description:
|
|
263
|
+
"The vcenter.datacenter.name resource attribute — the vSphere datacenter this object lives in. Every kind carries it.",
|
|
264
|
+
})
|
|
265
|
+
@Column({
|
|
266
|
+
nullable: true,
|
|
267
|
+
type: ColumnType.ShortText,
|
|
268
|
+
length: ColumnLength.ShortText,
|
|
269
|
+
})
|
|
270
|
+
public datacenterName?: string = undefined;
|
|
271
|
+
|
|
272
|
+
@ColumnAccessControl({
|
|
273
|
+
create: [],
|
|
274
|
+
read: READ_PERMISSIONS,
|
|
275
|
+
update: [],
|
|
276
|
+
})
|
|
277
|
+
@TableColumn({
|
|
278
|
+
required: false,
|
|
279
|
+
type: TableColumnType.ShortText,
|
|
280
|
+
canReadOnRelationQuery: true,
|
|
281
|
+
title: "Cluster Name",
|
|
282
|
+
description:
|
|
283
|
+
"The vcenter.cluster.name resource attribute — the vSphere cluster this host, virtual machine or resource pool belongs to. Null for standalone ESXi hosts and their VMs, and for Datacenter / Datastore kinds.",
|
|
284
|
+
})
|
|
285
|
+
@Column({
|
|
286
|
+
nullable: true,
|
|
287
|
+
type: ColumnType.ShortText,
|
|
288
|
+
length: ColumnLength.ShortText,
|
|
289
|
+
})
|
|
290
|
+
public clusterName?: string = undefined;
|
|
291
|
+
|
|
292
|
+
@ColumnAccessControl({
|
|
293
|
+
create: [],
|
|
294
|
+
read: READ_PERMISSIONS,
|
|
295
|
+
update: [],
|
|
296
|
+
})
|
|
297
|
+
@TableColumn({
|
|
298
|
+
required: false,
|
|
299
|
+
type: TableColumnType.ShortText,
|
|
300
|
+
canReadOnRelationQuery: true,
|
|
301
|
+
title: "Host Name",
|
|
302
|
+
description:
|
|
303
|
+
"The vcenter.host.name resource attribute — the ESXi host a virtual machine currently runs on, or the owner host of a resource pool on a standalone host. For Host kinds this equals name.",
|
|
304
|
+
})
|
|
305
|
+
@Column({
|
|
306
|
+
nullable: true,
|
|
307
|
+
type: ColumnType.ShortText,
|
|
308
|
+
length: ColumnLength.ShortText,
|
|
309
|
+
})
|
|
310
|
+
public hostName?: string = undefined;
|
|
311
|
+
|
|
312
|
+
@ColumnAccessControl({
|
|
313
|
+
create: [],
|
|
314
|
+
read: READ_PERMISSIONS,
|
|
315
|
+
update: [],
|
|
316
|
+
})
|
|
317
|
+
@TableColumn({
|
|
318
|
+
required: false,
|
|
319
|
+
type: TableColumnType.ShortText,
|
|
320
|
+
canReadOnRelationQuery: true,
|
|
321
|
+
title: "Resource Pool Name",
|
|
322
|
+
description:
|
|
323
|
+
"The vcenter.resource_pool.name resource attribute — the resource pool a virtual machine is placed in. Null when the VM belongs to a vApp instead, and for non-VM kinds other than ResourcePool.",
|
|
324
|
+
})
|
|
325
|
+
@Column({
|
|
326
|
+
nullable: true,
|
|
327
|
+
type: ColumnType.ShortText,
|
|
328
|
+
length: ColumnLength.ShortText,
|
|
329
|
+
})
|
|
330
|
+
public resourcePoolName?: string = undefined;
|
|
331
|
+
|
|
332
|
+
@ColumnAccessControl({
|
|
333
|
+
create: [],
|
|
334
|
+
read: READ_PERMISSIONS,
|
|
335
|
+
update: [],
|
|
336
|
+
})
|
|
337
|
+
@TableColumn({
|
|
338
|
+
required: false,
|
|
339
|
+
type: TableColumnType.LongText,
|
|
340
|
+
canReadOnRelationQuery: true,
|
|
341
|
+
title: "Resource Pool Inventory Path",
|
|
342
|
+
description:
|
|
343
|
+
"The vcenter.resource_pool.inventory_path resource attribute (e.g. /DC1/host/Cluster1/Resources/Prod). For VMs placed in a vApp this holds vcenter.virtual_app.inventory_path instead. Stored as long text because vSphere inventory paths regularly exceed 100 characters.",
|
|
344
|
+
})
|
|
345
|
+
@Column({
|
|
346
|
+
nullable: true,
|
|
347
|
+
type: ColumnType.LongText,
|
|
348
|
+
length: ColumnLength.LongText,
|
|
349
|
+
})
|
|
350
|
+
public resourcePoolPath?: string = undefined;
|
|
351
|
+
|
|
352
|
+
@ColumnAccessControl({
|
|
353
|
+
create: [],
|
|
354
|
+
read: READ_PERMISSIONS,
|
|
355
|
+
update: [],
|
|
356
|
+
})
|
|
357
|
+
@TableColumn({
|
|
358
|
+
required: false,
|
|
359
|
+
type: TableColumnType.ShortText,
|
|
360
|
+
canReadOnRelationQuery: true,
|
|
361
|
+
title: "vApp Name",
|
|
362
|
+
description:
|
|
363
|
+
"The vcenter.virtual_app.name resource attribute — the vApp a virtual machine belongs to. Null unless the VM is a vApp member.",
|
|
364
|
+
})
|
|
365
|
+
@Column({
|
|
366
|
+
nullable: true,
|
|
367
|
+
type: ColumnType.ShortText,
|
|
368
|
+
length: ColumnLength.ShortText,
|
|
369
|
+
})
|
|
370
|
+
public virtualAppName?: string = undefined;
|
|
371
|
+
|
|
372
|
+
@ColumnAccessControl({
|
|
373
|
+
create: [],
|
|
374
|
+
read: READ_PERMISSIONS,
|
|
375
|
+
update: [],
|
|
376
|
+
})
|
|
377
|
+
@TableColumn({
|
|
378
|
+
required: false,
|
|
379
|
+
type: TableColumnType.ShortText,
|
|
380
|
+
canReadOnRelationQuery: true,
|
|
381
|
+
title: "VM Instance UUID",
|
|
382
|
+
description:
|
|
383
|
+
"The vcenter.vm.id (or vcenter.vm_template.id) resource attribute — the virtual machine's instance UUID, stable across vMotion and renames. Null for non-VM kinds.",
|
|
384
|
+
})
|
|
385
|
+
@Column({
|
|
386
|
+
nullable: true,
|
|
387
|
+
type: ColumnType.ShortText,
|
|
388
|
+
length: ColumnLength.ShortText,
|
|
389
|
+
})
|
|
390
|
+
public vmInstanceUuid?: string = undefined;
|
|
391
|
+
|
|
392
|
+
@ColumnAccessControl({
|
|
393
|
+
create: [],
|
|
394
|
+
read: READ_PERMISSIONS,
|
|
395
|
+
update: [],
|
|
396
|
+
})
|
|
397
|
+
@TableColumn({
|
|
398
|
+
required: false,
|
|
399
|
+
type: TableColumnType.Boolean,
|
|
400
|
+
canReadOnRelationQuery: true,
|
|
401
|
+
title: "Is Template",
|
|
402
|
+
description:
|
|
403
|
+
"True when this VirtualMachine row is a VM template (reported under vcenter.vm_template.*). Templates only report disk usage and never have a power state. Null for non-VM kinds.",
|
|
404
|
+
})
|
|
405
|
+
@Column({
|
|
406
|
+
nullable: true,
|
|
407
|
+
type: ColumnType.Boolean,
|
|
408
|
+
})
|
|
409
|
+
public isTemplate?: boolean = undefined;
|
|
410
|
+
|
|
411
|
+
@ColumnAccessControl({
|
|
412
|
+
create: [],
|
|
413
|
+
read: READ_PERMISSIONS,
|
|
414
|
+
update: [],
|
|
415
|
+
})
|
|
416
|
+
@TableColumn({
|
|
417
|
+
required: false,
|
|
418
|
+
type: TableColumnType.Boolean,
|
|
419
|
+
canReadOnRelationQuery: true,
|
|
420
|
+
title: "Is Powered On",
|
|
421
|
+
description:
|
|
422
|
+
"Inferred power state for VirtualMachine rows: true when the latest collection carried any vcenter.vm.cpu.* datapoint (the receiver emits those only for powered-on VMs), false when it carried memory or disk points but no CPU point (powered off or suspended — the receiver does not distinguish). Null for templates and non-VM kinds.",
|
|
423
|
+
})
|
|
424
|
+
@Column({
|
|
425
|
+
nullable: true,
|
|
426
|
+
type: ColumnType.Boolean,
|
|
427
|
+
})
|
|
428
|
+
public isPoweredOn?: boolean = undefined;
|
|
429
|
+
|
|
430
|
+
@ColumnAccessControl({
|
|
431
|
+
create: [],
|
|
432
|
+
read: READ_PERMISSIONS,
|
|
433
|
+
update: [],
|
|
434
|
+
})
|
|
435
|
+
@TableColumn({
|
|
436
|
+
required: false,
|
|
437
|
+
type: TableColumnType.Number,
|
|
438
|
+
canReadOnRelationQuery: true,
|
|
439
|
+
title: "Latest CPU Percent",
|
|
440
|
+
description:
|
|
441
|
+
"Most recent CPU utilization percent — vcenter.host.cpu.utilization for hosts, vcenter.vm.cpu.utilization for virtual machines (already a 0-100 percent, so no denominator cache is needed). Stored as decimal so sub-percent precision survives the round trip. Null for other kinds and until the first metric arrives.",
|
|
442
|
+
})
|
|
443
|
+
@Column({
|
|
444
|
+
nullable: true,
|
|
445
|
+
type: ColumnType.Decimal,
|
|
446
|
+
transformer: {
|
|
447
|
+
to: (value: number | null | undefined): number | null => {
|
|
448
|
+
if (value === null || value === undefined) {
|
|
449
|
+
return null;
|
|
450
|
+
}
|
|
451
|
+
return value;
|
|
452
|
+
},
|
|
453
|
+
from: (value: string | number | null | undefined): number | null => {
|
|
454
|
+
if (value === null || value === undefined) {
|
|
455
|
+
return null;
|
|
456
|
+
}
|
|
457
|
+
if (typeof value === "number") {
|
|
458
|
+
return value;
|
|
459
|
+
}
|
|
460
|
+
const parsed: number = parseFloat(value);
|
|
461
|
+
return isNaN(parsed) ? null : parsed;
|
|
462
|
+
},
|
|
463
|
+
},
|
|
464
|
+
})
|
|
465
|
+
public latestCpuPercent?: number = undefined;
|
|
466
|
+
|
|
467
|
+
@ColumnAccessControl({
|
|
468
|
+
create: [],
|
|
469
|
+
read: READ_PERMISSIONS,
|
|
470
|
+
update: [],
|
|
471
|
+
})
|
|
472
|
+
@TableColumn({
|
|
473
|
+
required: false,
|
|
474
|
+
type: TableColumnType.Number,
|
|
475
|
+
canReadOnRelationQuery: true,
|
|
476
|
+
title: "Latest CPU MHz",
|
|
477
|
+
description:
|
|
478
|
+
"Most recent CPU usage in MHz — vcenter.host.cpu.usage, vcenter.vm.cpu.usage or vcenter.resource_pool.cpu.usage. Rounded to a whole MHz by the ingest layer.",
|
|
479
|
+
})
|
|
480
|
+
@Column({
|
|
481
|
+
nullable: true,
|
|
482
|
+
type: ColumnType.Number,
|
|
483
|
+
})
|
|
484
|
+
public latestCpuMhz?: number = undefined;
|
|
485
|
+
|
|
486
|
+
@ColumnAccessControl({
|
|
487
|
+
create: [],
|
|
488
|
+
read: READ_PERMISSIONS,
|
|
489
|
+
update: [],
|
|
490
|
+
})
|
|
491
|
+
@TableColumn({
|
|
492
|
+
required: false,
|
|
493
|
+
type: TableColumnType.Number,
|
|
494
|
+
canReadOnRelationQuery: true,
|
|
495
|
+
title: "CPU Capacity MHz",
|
|
496
|
+
description:
|
|
497
|
+
"Total CPU capacity in MHz — vcenter.host.cpu.capacity for hosts, vcenter.cluster.cpu.limit for clusters, vcenter.datacenter.cpu.limit for datacenters. The denominator for the CPU usage bar.",
|
|
498
|
+
})
|
|
499
|
+
@Column({
|
|
500
|
+
nullable: true,
|
|
501
|
+
type: ColumnType.Number,
|
|
502
|
+
})
|
|
503
|
+
public cpuCapacityMhz?: number = undefined;
|
|
504
|
+
|
|
505
|
+
@ColumnAccessControl({
|
|
506
|
+
create: [],
|
|
507
|
+
read: READ_PERMISSIONS,
|
|
508
|
+
update: [],
|
|
509
|
+
})
|
|
510
|
+
@TableColumn({
|
|
511
|
+
required: false,
|
|
512
|
+
type: TableColumnType.Number,
|
|
513
|
+
canReadOnRelationQuery: true,
|
|
514
|
+
title: "CPU Effective MHz",
|
|
515
|
+
description:
|
|
516
|
+
"vcenter.cluster.cpu.effective — CPU capacity in MHz actually available to virtual machines after vSphere HA / maintenance-mode reservations. Cluster kinds only.",
|
|
517
|
+
})
|
|
518
|
+
@Column({
|
|
519
|
+
nullable: true,
|
|
520
|
+
type: ColumnType.Number,
|
|
521
|
+
})
|
|
522
|
+
public cpuEffectiveMhz?: number = undefined;
|
|
523
|
+
|
|
524
|
+
@ColumnAccessControl({
|
|
525
|
+
create: [],
|
|
526
|
+
read: READ_PERMISSIONS,
|
|
527
|
+
update: [],
|
|
528
|
+
})
|
|
529
|
+
@TableColumn({
|
|
530
|
+
required: false,
|
|
531
|
+
type: TableColumnType.BigPositiveNumber,
|
|
532
|
+
canReadOnRelationQuery: true,
|
|
533
|
+
title: "Latest Memory Bytes",
|
|
534
|
+
description:
|
|
535
|
+
"Most recent memory usage in bytes — vcenter.host.memory.usage, vcenter.vm.memory.usage or vcenter.resource_pool.memory.usage (guest type), converted from MiB. Stored as bigint so values past 2 GiB don't overflow.",
|
|
536
|
+
})
|
|
537
|
+
@Column({
|
|
538
|
+
nullable: true,
|
|
539
|
+
type: ColumnType.BigPositiveNumber,
|
|
540
|
+
transformer: {
|
|
541
|
+
to: (value: number | null | undefined): string | null => {
|
|
542
|
+
if (value === null || value === undefined) {
|
|
543
|
+
return null;
|
|
544
|
+
}
|
|
545
|
+
return Math.trunc(value).toString();
|
|
546
|
+
},
|
|
547
|
+
from: (value: string | null | undefined): number | null => {
|
|
548
|
+
if (value === null || value === undefined) {
|
|
549
|
+
return null;
|
|
550
|
+
}
|
|
551
|
+
const parsed: number = parseInt(value, 10);
|
|
552
|
+
return isNaN(parsed) ? null : parsed;
|
|
553
|
+
},
|
|
554
|
+
},
|
|
555
|
+
})
|
|
556
|
+
public latestMemoryBytes?: number = undefined;
|
|
557
|
+
|
|
558
|
+
@ColumnAccessControl({
|
|
559
|
+
create: [],
|
|
560
|
+
read: READ_PERMISSIONS,
|
|
561
|
+
update: [],
|
|
562
|
+
})
|
|
563
|
+
@TableColumn({
|
|
564
|
+
required: false,
|
|
565
|
+
type: TableColumnType.BigPositiveNumber,
|
|
566
|
+
canReadOnRelationQuery: true,
|
|
567
|
+
title: "Max Memory Bytes",
|
|
568
|
+
description:
|
|
569
|
+
"Total memory in bytes — vcenter.host.memory.capacity for hosts (falling back to usage / utilization), derived from usage and utilization for virtual machines, vcenter.cluster.memory.limit for clusters, vcenter.datacenter.memory.limit for datacenters. The denominator for the memory usage bar.",
|
|
570
|
+
})
|
|
571
|
+
@Column({
|
|
572
|
+
nullable: true,
|
|
573
|
+
type: ColumnType.BigPositiveNumber,
|
|
574
|
+
transformer: {
|
|
575
|
+
to: (value: number | null | undefined): string | null => {
|
|
576
|
+
if (value === null || value === undefined) {
|
|
577
|
+
return null;
|
|
578
|
+
}
|
|
579
|
+
return Math.trunc(value).toString();
|
|
580
|
+
},
|
|
581
|
+
from: (value: string | null | undefined): number | null => {
|
|
582
|
+
if (value === null || value === undefined) {
|
|
583
|
+
return null;
|
|
584
|
+
}
|
|
585
|
+
const parsed: number = parseInt(value, 10);
|
|
586
|
+
return isNaN(parsed) ? null : parsed;
|
|
587
|
+
},
|
|
588
|
+
},
|
|
589
|
+
})
|
|
590
|
+
public maxMemoryBytes?: number = undefined;
|
|
591
|
+
|
|
592
|
+
@ColumnAccessControl({
|
|
593
|
+
create: [],
|
|
594
|
+
read: READ_PERMISSIONS,
|
|
595
|
+
update: [],
|
|
596
|
+
})
|
|
597
|
+
@TableColumn({
|
|
598
|
+
required: false,
|
|
599
|
+
type: TableColumnType.BigPositiveNumber,
|
|
600
|
+
canReadOnRelationQuery: true,
|
|
601
|
+
title: "Memory Effective Bytes",
|
|
602
|
+
description:
|
|
603
|
+
"vcenter.cluster.memory.effective — memory in bytes actually available to virtual machines after vSphere HA / maintenance-mode reservations. Cluster kinds only.",
|
|
604
|
+
})
|
|
605
|
+
@Column({
|
|
606
|
+
nullable: true,
|
|
607
|
+
type: ColumnType.BigPositiveNumber,
|
|
608
|
+
transformer: {
|
|
609
|
+
to: (value: number | null | undefined): string | null => {
|
|
610
|
+
if (value === null || value === undefined) {
|
|
611
|
+
return null;
|
|
612
|
+
}
|
|
613
|
+
return Math.trunc(value).toString();
|
|
614
|
+
},
|
|
615
|
+
from: (value: string | null | undefined): number | null => {
|
|
616
|
+
if (value === null || value === undefined) {
|
|
617
|
+
return null;
|
|
618
|
+
}
|
|
619
|
+
const parsed: number = parseInt(value, 10);
|
|
620
|
+
return isNaN(parsed) ? null : parsed;
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
})
|
|
624
|
+
public memoryEffectiveBytes?: number = undefined;
|
|
625
|
+
|
|
626
|
+
@ColumnAccessControl({
|
|
627
|
+
create: [],
|
|
628
|
+
read: READ_PERMISSIONS,
|
|
629
|
+
update: [],
|
|
630
|
+
})
|
|
631
|
+
@TableColumn({
|
|
632
|
+
required: false,
|
|
633
|
+
type: TableColumnType.Number,
|
|
634
|
+
canReadOnRelationQuery: true,
|
|
635
|
+
title: "Latest Memory Percent",
|
|
636
|
+
description:
|
|
637
|
+
"Most recent memory utilization percent — vcenter.host.memory.utilization or vcenter.vm.memory.utilization. Stored as decimal — mirrors latestCpuPercent — so list views can sort/filter without dividing bigints client-side.",
|
|
638
|
+
})
|
|
639
|
+
@Column({
|
|
640
|
+
nullable: true,
|
|
641
|
+
type: ColumnType.Decimal,
|
|
642
|
+
transformer: {
|
|
643
|
+
to: (value: number | null | undefined): number | null => {
|
|
644
|
+
if (value === null || value === undefined) {
|
|
645
|
+
return null;
|
|
646
|
+
}
|
|
647
|
+
return value;
|
|
648
|
+
},
|
|
649
|
+
from: (value: string | number | null | undefined): number | null => {
|
|
650
|
+
if (value === null || value === undefined) {
|
|
651
|
+
return null;
|
|
652
|
+
}
|
|
653
|
+
if (typeof value === "number") {
|
|
654
|
+
return value;
|
|
655
|
+
}
|
|
656
|
+
const parsed: number = parseFloat(value);
|
|
657
|
+
return isNaN(parsed) ? null : parsed;
|
|
658
|
+
},
|
|
659
|
+
},
|
|
660
|
+
})
|
|
661
|
+
public latestMemoryPercent?: number = undefined;
|
|
662
|
+
|
|
663
|
+
@ColumnAccessControl({
|
|
664
|
+
create: [],
|
|
665
|
+
read: READ_PERMISSIONS,
|
|
666
|
+
update: [],
|
|
667
|
+
})
|
|
668
|
+
@TableColumn({
|
|
669
|
+
required: false,
|
|
670
|
+
type: TableColumnType.BigPositiveNumber,
|
|
671
|
+
canReadOnRelationQuery: true,
|
|
672
|
+
title: "Latest Disk Bytes",
|
|
673
|
+
description:
|
|
674
|
+
"Most recent used disk space in bytes — vcenter.vm.disk.usage{disk_state=used} for virtual machines, vcenter.datastore.disk.usage{disk_state=used} for datastores, vcenter.datacenter.disk.space{disk_state=used} for datacenters. Null for other kinds.",
|
|
675
|
+
})
|
|
676
|
+
@Column({
|
|
677
|
+
nullable: true,
|
|
678
|
+
type: ColumnType.BigPositiveNumber,
|
|
679
|
+
transformer: {
|
|
680
|
+
to: (value: number | null | undefined): string | null => {
|
|
681
|
+
if (value === null || value === undefined) {
|
|
682
|
+
return null;
|
|
683
|
+
}
|
|
684
|
+
return Math.trunc(value).toString();
|
|
685
|
+
},
|
|
686
|
+
from: (value: string | null | undefined): number | null => {
|
|
687
|
+
if (value === null || value === undefined) {
|
|
688
|
+
return null;
|
|
689
|
+
}
|
|
690
|
+
const parsed: number = parseInt(value, 10);
|
|
691
|
+
return isNaN(parsed) ? null : parsed;
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
})
|
|
695
|
+
public latestDiskBytes?: number = undefined;
|
|
696
|
+
|
|
697
|
+
@ColumnAccessControl({
|
|
698
|
+
create: [],
|
|
699
|
+
read: READ_PERMISSIONS,
|
|
700
|
+
update: [],
|
|
701
|
+
})
|
|
702
|
+
@TableColumn({
|
|
703
|
+
required: false,
|
|
704
|
+
type: TableColumnType.BigPositiveNumber,
|
|
705
|
+
canReadOnRelationQuery: true,
|
|
706
|
+
title: "Max Disk Bytes",
|
|
707
|
+
description:
|
|
708
|
+
"Total disk space in bytes — the used plus available disk_state datapoints of the same metric that feeds latestDiskBytes. The denominator for the disk / datastore usage bar.",
|
|
709
|
+
})
|
|
710
|
+
@Column({
|
|
711
|
+
nullable: true,
|
|
712
|
+
type: ColumnType.BigPositiveNumber,
|
|
713
|
+
transformer: {
|
|
714
|
+
to: (value: number | null | undefined): string | null => {
|
|
715
|
+
if (value === null || value === undefined) {
|
|
716
|
+
return null;
|
|
717
|
+
}
|
|
718
|
+
return Math.trunc(value).toString();
|
|
719
|
+
},
|
|
720
|
+
from: (value: string | null | undefined): number | null => {
|
|
721
|
+
if (value === null || value === undefined) {
|
|
722
|
+
return null;
|
|
723
|
+
}
|
|
724
|
+
const parsed: number = parseInt(value, 10);
|
|
725
|
+
return isNaN(parsed) ? null : parsed;
|
|
726
|
+
},
|
|
727
|
+
},
|
|
728
|
+
})
|
|
729
|
+
public maxDiskBytes?: number = undefined;
|
|
730
|
+
|
|
731
|
+
@ColumnAccessControl({
|
|
732
|
+
create: [],
|
|
733
|
+
read: READ_PERMISSIONS,
|
|
734
|
+
update: [],
|
|
735
|
+
})
|
|
736
|
+
@TableColumn({
|
|
737
|
+
required: false,
|
|
738
|
+
type: TableColumnType.Number,
|
|
739
|
+
canReadOnRelationQuery: true,
|
|
740
|
+
title: "Latest Disk Percent",
|
|
741
|
+
description:
|
|
742
|
+
"Most recent disk utilization percent — vcenter.vm.disk.utilization or vcenter.datastore.disk.utilization; derived as used / (used + available) x 100 for datacenters.",
|
|
743
|
+
})
|
|
744
|
+
@Column({
|
|
745
|
+
nullable: true,
|
|
746
|
+
type: ColumnType.Decimal,
|
|
747
|
+
transformer: {
|
|
748
|
+
to: (value: number | null | undefined): number | null => {
|
|
749
|
+
if (value === null || value === undefined) {
|
|
750
|
+
return null;
|
|
751
|
+
}
|
|
752
|
+
return value;
|
|
753
|
+
},
|
|
754
|
+
from: (value: string | number | null | undefined): number | null => {
|
|
755
|
+
if (value === null || value === undefined) {
|
|
756
|
+
return null;
|
|
757
|
+
}
|
|
758
|
+
if (typeof value === "number") {
|
|
759
|
+
return value;
|
|
760
|
+
}
|
|
761
|
+
const parsed: number = parseFloat(value);
|
|
762
|
+
return isNaN(parsed) ? null : parsed;
|
|
763
|
+
},
|
|
764
|
+
},
|
|
765
|
+
})
|
|
766
|
+
public latestDiskPercent?: number = undefined;
|
|
767
|
+
|
|
768
|
+
@ColumnAccessControl({
|
|
769
|
+
create: [],
|
|
770
|
+
read: READ_PERMISSIONS,
|
|
771
|
+
update: [],
|
|
772
|
+
})
|
|
773
|
+
@TableColumn({
|
|
774
|
+
required: false,
|
|
775
|
+
type: TableColumnType.Number,
|
|
776
|
+
canReadOnRelationQuery: true,
|
|
777
|
+
title: "CPU Readiness Percent",
|
|
778
|
+
description:
|
|
779
|
+
"vcenter.vm.cpu.readiness — percentage of time the virtual machine was ready to run but could not be scheduled on a physical CPU (CPU ready). Sustained values above 10% mean host CPU contention. VirtualMachine kinds only.",
|
|
780
|
+
})
|
|
781
|
+
@Column({
|
|
782
|
+
nullable: true,
|
|
783
|
+
type: ColumnType.Decimal,
|
|
784
|
+
transformer: {
|
|
785
|
+
to: (value: number | null | undefined): number | null => {
|
|
786
|
+
if (value === null || value === undefined) {
|
|
787
|
+
return null;
|
|
788
|
+
}
|
|
789
|
+
return value;
|
|
790
|
+
},
|
|
791
|
+
from: (value: string | number | null | undefined): number | null => {
|
|
792
|
+
if (value === null || value === undefined) {
|
|
793
|
+
return null;
|
|
794
|
+
}
|
|
795
|
+
if (typeof value === "number") {
|
|
796
|
+
return value;
|
|
797
|
+
}
|
|
798
|
+
const parsed: number = parseFloat(value);
|
|
799
|
+
return isNaN(parsed) ? null : parsed;
|
|
800
|
+
},
|
|
801
|
+
},
|
|
802
|
+
})
|
|
803
|
+
public cpuReadinessPercent?: number = undefined;
|
|
804
|
+
|
|
805
|
+
@ColumnAccessControl({
|
|
806
|
+
create: [],
|
|
807
|
+
read: READ_PERMISSIONS,
|
|
808
|
+
update: [],
|
|
809
|
+
})
|
|
810
|
+
@TableColumn({
|
|
811
|
+
required: false,
|
|
812
|
+
type: TableColumnType.BigPositiveNumber,
|
|
813
|
+
canReadOnRelationQuery: true,
|
|
814
|
+
title: "Memory Ballooned Bytes",
|
|
815
|
+
description:
|
|
816
|
+
"vcenter.vm.memory.ballooned or vcenter.resource_pool.memory.ballooned converted from MiB — guest memory reclaimed by the balloon driver. Any non-zero value means the host is under memory pressure.",
|
|
817
|
+
})
|
|
818
|
+
@Column({
|
|
819
|
+
nullable: true,
|
|
820
|
+
type: ColumnType.BigPositiveNumber,
|
|
821
|
+
transformer: {
|
|
822
|
+
to: (value: number | null | undefined): string | null => {
|
|
823
|
+
if (value === null || value === undefined) {
|
|
824
|
+
return null;
|
|
825
|
+
}
|
|
826
|
+
return Math.trunc(value).toString();
|
|
827
|
+
},
|
|
828
|
+
from: (value: string | null | undefined): number | null => {
|
|
829
|
+
if (value === null || value === undefined) {
|
|
830
|
+
return null;
|
|
831
|
+
}
|
|
832
|
+
const parsed: number = parseInt(value, 10);
|
|
833
|
+
return isNaN(parsed) ? null : parsed;
|
|
834
|
+
},
|
|
835
|
+
},
|
|
836
|
+
})
|
|
837
|
+
public memoryBalloonedBytes?: number = undefined;
|
|
838
|
+
|
|
839
|
+
@ColumnAccessControl({
|
|
840
|
+
create: [],
|
|
841
|
+
read: READ_PERMISSIONS,
|
|
842
|
+
update: [],
|
|
843
|
+
})
|
|
844
|
+
@TableColumn({
|
|
845
|
+
required: false,
|
|
846
|
+
type: TableColumnType.BigPositiveNumber,
|
|
847
|
+
canReadOnRelationQuery: true,
|
|
848
|
+
title: "Memory Swapped Bytes",
|
|
849
|
+
description:
|
|
850
|
+
"vcenter.vm.memory.swapped or vcenter.resource_pool.memory.swapped converted from MiB — guest memory swapped to disk by the hypervisor. Any non-zero value is a critical memory-pressure signal.",
|
|
851
|
+
})
|
|
852
|
+
@Column({
|
|
853
|
+
nullable: true,
|
|
854
|
+
type: ColumnType.BigPositiveNumber,
|
|
855
|
+
transformer: {
|
|
856
|
+
to: (value: number | null | undefined): string | null => {
|
|
857
|
+
if (value === null || value === undefined) {
|
|
858
|
+
return null;
|
|
859
|
+
}
|
|
860
|
+
return Math.trunc(value).toString();
|
|
861
|
+
},
|
|
862
|
+
from: (value: string | null | undefined): number | null => {
|
|
863
|
+
if (value === null || value === undefined) {
|
|
864
|
+
return null;
|
|
865
|
+
}
|
|
866
|
+
const parsed: number = parseInt(value, 10);
|
|
867
|
+
return isNaN(parsed) ? null : parsed;
|
|
868
|
+
},
|
|
869
|
+
},
|
|
870
|
+
})
|
|
871
|
+
public memorySwappedBytes?: number = undefined;
|
|
872
|
+
|
|
873
|
+
@ColumnAccessControl({
|
|
874
|
+
create: [],
|
|
875
|
+
read: READ_PERMISSIONS,
|
|
876
|
+
update: [],
|
|
877
|
+
})
|
|
878
|
+
@TableColumn({
|
|
879
|
+
required: false,
|
|
880
|
+
type: TableColumnType.Number,
|
|
881
|
+
canReadOnRelationQuery: true,
|
|
882
|
+
title: "Host Count",
|
|
883
|
+
description:
|
|
884
|
+
"ESXi hosts in this cluster or datacenter — the sum of vcenter.cluster.host.count over both effective values, or of vcenter.datacenter.host.count over every status and power_state. Cluster and Datacenter kinds only.",
|
|
885
|
+
})
|
|
886
|
+
@Column({
|
|
887
|
+
nullable: true,
|
|
888
|
+
type: ColumnType.Number,
|
|
889
|
+
})
|
|
890
|
+
public hostCount?: number = undefined;
|
|
891
|
+
|
|
892
|
+
@ColumnAccessControl({
|
|
893
|
+
create: [],
|
|
894
|
+
read: READ_PERMISSIONS,
|
|
895
|
+
update: [],
|
|
896
|
+
})
|
|
897
|
+
@TableColumn({
|
|
898
|
+
required: false,
|
|
899
|
+
type: TableColumnType.Number,
|
|
900
|
+
canReadOnRelationQuery: true,
|
|
901
|
+
title: "Effective Host Count",
|
|
902
|
+
description:
|
|
903
|
+
"vcenter.cluster.host.count{effective=true} — hosts that are connected, not in maintenance mode and contributing resources to the cluster. A gap against hostCount means a host is in maintenance mode or unresponsive. Cluster kinds only.",
|
|
904
|
+
})
|
|
905
|
+
@Column({
|
|
906
|
+
nullable: true,
|
|
907
|
+
type: ColumnType.Number,
|
|
908
|
+
})
|
|
909
|
+
public effectiveHostCount?: number = undefined;
|
|
910
|
+
|
|
911
|
+
@ColumnAccessControl({
|
|
912
|
+
create: [],
|
|
913
|
+
read: READ_PERMISSIONS,
|
|
914
|
+
update: [],
|
|
915
|
+
})
|
|
916
|
+
@TableColumn({
|
|
917
|
+
required: false,
|
|
918
|
+
type: TableColumnType.Number,
|
|
919
|
+
canReadOnRelationQuery: true,
|
|
920
|
+
title: "Powered On Host Count",
|
|
921
|
+
description:
|
|
922
|
+
"Sum of vcenter.datacenter.host.count{power_state=on} across every status. Datacenter kinds only.",
|
|
923
|
+
})
|
|
924
|
+
@Column({
|
|
925
|
+
nullable: true,
|
|
926
|
+
type: ColumnType.Number,
|
|
927
|
+
})
|
|
928
|
+
public poweredOnHostCount?: number = undefined;
|
|
929
|
+
|
|
930
|
+
@ColumnAccessControl({
|
|
931
|
+
create: [],
|
|
932
|
+
read: READ_PERMISSIONS,
|
|
933
|
+
update: [],
|
|
934
|
+
})
|
|
935
|
+
@TableColumn({
|
|
936
|
+
required: false,
|
|
937
|
+
type: TableColumnType.Number,
|
|
938
|
+
canReadOnRelationQuery: true,
|
|
939
|
+
title: "VM Count",
|
|
940
|
+
description:
|
|
941
|
+
"Virtual machines in this cluster or datacenter — the sum of vcenter.cluster.vm.count over every power_state, or of vcenter.datacenter.vm.count over every status and power_state. Cluster and Datacenter kinds only.",
|
|
942
|
+
})
|
|
943
|
+
@Column({
|
|
944
|
+
nullable: true,
|
|
945
|
+
type: ColumnType.Number,
|
|
946
|
+
})
|
|
947
|
+
public vmCount?: number = undefined;
|
|
948
|
+
|
|
949
|
+
@ColumnAccessControl({
|
|
950
|
+
create: [],
|
|
951
|
+
read: READ_PERMISSIONS,
|
|
952
|
+
update: [],
|
|
953
|
+
})
|
|
954
|
+
@TableColumn({
|
|
955
|
+
required: false,
|
|
956
|
+
type: TableColumnType.Number,
|
|
957
|
+
canReadOnRelationQuery: true,
|
|
958
|
+
title: "Powered On VM Count",
|
|
959
|
+
description:
|
|
960
|
+
"vcenter.cluster.vm.count{power_state=on}, or the sum of vcenter.datacenter.vm.count{power_state=on} across every status. Cluster and Datacenter kinds only.",
|
|
961
|
+
})
|
|
962
|
+
@Column({
|
|
963
|
+
nullable: true,
|
|
964
|
+
type: ColumnType.Number,
|
|
965
|
+
})
|
|
966
|
+
public poweredOnVmCount?: number = undefined;
|
|
967
|
+
|
|
968
|
+
@ColumnAccessControl({
|
|
969
|
+
create: [],
|
|
970
|
+
read: READ_PERMISSIONS,
|
|
971
|
+
update: [],
|
|
972
|
+
})
|
|
973
|
+
@TableColumn({
|
|
974
|
+
required: false,
|
|
975
|
+
type: TableColumnType.Number,
|
|
976
|
+
canReadOnRelationQuery: true,
|
|
977
|
+
title: "VM Template Count",
|
|
978
|
+
description:
|
|
979
|
+
"vcenter.cluster.vm_template.count — VM templates registered in this cluster. Cluster kinds only.",
|
|
980
|
+
})
|
|
981
|
+
@Column({
|
|
982
|
+
nullable: true,
|
|
983
|
+
type: ColumnType.Number,
|
|
984
|
+
})
|
|
985
|
+
public vmTemplateCount?: number = undefined;
|
|
986
|
+
|
|
987
|
+
@ColumnAccessControl({
|
|
988
|
+
create: [],
|
|
989
|
+
read: READ_PERMISSIONS,
|
|
990
|
+
update: [],
|
|
991
|
+
})
|
|
992
|
+
@TableColumn({
|
|
993
|
+
required: false,
|
|
994
|
+
type: TableColumnType.Number,
|
|
995
|
+
canReadOnRelationQuery: true,
|
|
996
|
+
title: "Datastore Count",
|
|
997
|
+
description:
|
|
998
|
+
"vcenter.datacenter.datastore.count — datastores visible in this datacenter. Datacenter kinds only.",
|
|
999
|
+
})
|
|
1000
|
+
@Column({
|
|
1001
|
+
nullable: true,
|
|
1002
|
+
type: ColumnType.Number,
|
|
1003
|
+
})
|
|
1004
|
+
public datastoreCount?: number = undefined;
|
|
1005
|
+
|
|
1006
|
+
@ColumnAccessControl({
|
|
1007
|
+
create: [],
|
|
1008
|
+
read: READ_PERMISSIONS,
|
|
1009
|
+
update: [],
|
|
1010
|
+
})
|
|
1011
|
+
@TableColumn({
|
|
1012
|
+
required: false,
|
|
1013
|
+
type: TableColumnType.Number,
|
|
1014
|
+
canReadOnRelationQuery: true,
|
|
1015
|
+
title: "Cluster Count",
|
|
1016
|
+
description:
|
|
1017
|
+
"Sum of vcenter.datacenter.cluster.count across every status — clusters in this datacenter. Datacenter kinds only.",
|
|
1018
|
+
})
|
|
1019
|
+
@Column({
|
|
1020
|
+
nullable: true,
|
|
1021
|
+
type: ColumnType.Number,
|
|
1022
|
+
})
|
|
1023
|
+
public clusterCount?: number = undefined;
|
|
1024
|
+
|
|
1025
|
+
@ColumnAccessControl({
|
|
1026
|
+
create: [],
|
|
1027
|
+
read: READ_PERMISSIONS,
|
|
1028
|
+
update: [],
|
|
1029
|
+
})
|
|
1030
|
+
@TableColumn({
|
|
1031
|
+
required: false,
|
|
1032
|
+
type: TableColumnType.Date,
|
|
1033
|
+
canReadOnRelationQuery: true,
|
|
1034
|
+
title: "Metrics Updated At",
|
|
1035
|
+
description:
|
|
1036
|
+
"Observed timestamp of the latest metric point. Acts as the monotonic guard for metric updates and the cutoff for staleness rendering.",
|
|
1037
|
+
})
|
|
1038
|
+
@Column({
|
|
1039
|
+
nullable: true,
|
|
1040
|
+
type: ColumnType.Date,
|
|
1041
|
+
})
|
|
1042
|
+
public metricsUpdatedAt?: Date = undefined;
|
|
1043
|
+
|
|
1044
|
+
@ColumnAccessControl({
|
|
1045
|
+
create: [],
|
|
1046
|
+
read: READ_PERMISSIONS,
|
|
1047
|
+
update: [],
|
|
1048
|
+
})
|
|
1049
|
+
@TableColumn({
|
|
1050
|
+
required: true,
|
|
1051
|
+
type: TableColumnType.Date,
|
|
1052
|
+
canReadOnRelationQuery: true,
|
|
1053
|
+
title: "Last Seen At",
|
|
1054
|
+
description:
|
|
1055
|
+
"Agent-observed timestamp of the most recent collection containing this resource. Also acts as the monotonic guard for upserts and the staleness delete threshold.",
|
|
1056
|
+
})
|
|
1057
|
+
@Column({
|
|
1058
|
+
nullable: false,
|
|
1059
|
+
type: ColumnType.Date,
|
|
1060
|
+
})
|
|
1061
|
+
public lastSeenAt?: Date = undefined;
|
|
1062
|
+
|
|
1063
|
+
@ColumnAccessControl({
|
|
1064
|
+
create: [],
|
|
1065
|
+
read: READ_PERMISSIONS,
|
|
1066
|
+
update: [],
|
|
1067
|
+
})
|
|
1068
|
+
@TableColumn({
|
|
1069
|
+
manyToOneRelationColumn: "createdByUserId",
|
|
1070
|
+
type: TableColumnType.Entity,
|
|
1071
|
+
modelType: User,
|
|
1072
|
+
title: "Created By User",
|
|
1073
|
+
description:
|
|
1074
|
+
"Not user-facing; ingest writes as isRoot so this stays null in practice.",
|
|
1075
|
+
})
|
|
1076
|
+
@ManyToOne(
|
|
1077
|
+
() => {
|
|
1078
|
+
return User;
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
eager: false,
|
|
1082
|
+
nullable: true,
|
|
1083
|
+
onDelete: "SET NULL",
|
|
1084
|
+
orphanedRowAction: "nullify",
|
|
1085
|
+
},
|
|
1086
|
+
)
|
|
1087
|
+
@JoinColumn({ name: "createdByUserId" })
|
|
1088
|
+
public createdByUser?: User = undefined;
|
|
1089
|
+
|
|
1090
|
+
@ColumnAccessControl({
|
|
1091
|
+
create: [],
|
|
1092
|
+
read: READ_PERMISSIONS,
|
|
1093
|
+
update: [],
|
|
1094
|
+
})
|
|
1095
|
+
@TableColumn({
|
|
1096
|
+
type: TableColumnType.ObjectID,
|
|
1097
|
+
title: "Created By User ID",
|
|
1098
|
+
description: "ID of the user who created this row.",
|
|
1099
|
+
})
|
|
1100
|
+
@Column({
|
|
1101
|
+
type: ColumnType.ObjectID,
|
|
1102
|
+
nullable: true,
|
|
1103
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
1104
|
+
})
|
|
1105
|
+
public createdByUserId?: ObjectID = undefined;
|
|
1106
|
+
|
|
1107
|
+
@ColumnAccessControl({
|
|
1108
|
+
create: [],
|
|
1109
|
+
read: READ_PERMISSIONS,
|
|
1110
|
+
update: [],
|
|
1111
|
+
})
|
|
1112
|
+
@TableColumn({
|
|
1113
|
+
manyToOneRelationColumn: "deletedByUserId",
|
|
1114
|
+
type: TableColumnType.Entity,
|
|
1115
|
+
modelType: User,
|
|
1116
|
+
title: "Deleted By User",
|
|
1117
|
+
description: "Relation to the user who deleted this row.",
|
|
1118
|
+
})
|
|
1119
|
+
@ManyToOne(
|
|
1120
|
+
() => {
|
|
1121
|
+
return User;
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
eager: false,
|
|
1125
|
+
nullable: true,
|
|
1126
|
+
onDelete: "SET NULL",
|
|
1127
|
+
orphanedRowAction: "nullify",
|
|
1128
|
+
},
|
|
1129
|
+
)
|
|
1130
|
+
@JoinColumn({ name: "deletedByUserId" })
|
|
1131
|
+
public deletedByUser?: User = undefined;
|
|
1132
|
+
|
|
1133
|
+
@ColumnAccessControl({
|
|
1134
|
+
create: [],
|
|
1135
|
+
read: READ_PERMISSIONS,
|
|
1136
|
+
update: [],
|
|
1137
|
+
})
|
|
1138
|
+
@TableColumn({
|
|
1139
|
+
type: TableColumnType.ObjectID,
|
|
1140
|
+
title: "Deleted By User ID",
|
|
1141
|
+
description: "ID of the user who deleted this row.",
|
|
1142
|
+
})
|
|
1143
|
+
@Column({
|
|
1144
|
+
type: ColumnType.ObjectID,
|
|
1145
|
+
nullable: true,
|
|
1146
|
+
transformer: ObjectID.getDatabaseTransformer(),
|
|
1147
|
+
})
|
|
1148
|
+
public deletedByUserId?: ObjectID = undefined;
|
|
1149
|
+
}
|