@oneuptime/common 11.6.1 → 11.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/Index.ts +4 -0
- package/Models/AnalyticsModels/KubernetesCostAllocation.ts +842 -0
- package/Models/AnalyticsModels/NetworkFlow.ts +54 -0
- package/Models/AnalyticsModels/SloHistory.ts +243 -0
- package/Models/DatabaseModels/Index.ts +20 -0
- package/Models/DatabaseModels/NetworkDevice.ts +453 -6
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +7 -6
- package/Models/DatabaseModels/NetworkEndpoint.ts +753 -0
- package/Models/DatabaseModels/NetworkSite.ts +1155 -0
- package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +517 -0
- package/Models/DatabaseModels/NetworkSiteLink.ts +611 -0
- package/Models/DatabaseModels/NetworkSiteStatusTimeline.ts +520 -0
- package/Models/DatabaseModels/NetworkSiteType.ts +499 -0
- package/Models/DatabaseModels/ServiceLevelObjective.ts +1115 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.ts +762 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +444 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +443 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.ts +359 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.ts +48 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.ts +65 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.ts +88 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.ts +391 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785066759532-MigrationName.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Services/AnalyticsDatabaseService.ts +25 -9
- package/Server/Services/Index.ts +24 -0
- package/Server/Services/KubernetesCostAllocationService.ts +14 -0
- package/Server/Services/MetricService.ts +21 -2
- package/Server/Services/MonitorService.ts +22 -0
- package/Server/Services/NetworkDeviceService.ts +438 -2
- package/Server/Services/NetworkEndpointService.ts +414 -0
- package/Server/Services/NetworkSiteAssignmentRuleService.ts +98 -0
- package/Server/Services/NetworkSiteLinkService.ts +10 -0
- package/Server/Services/NetworkSiteService.ts +1254 -0
- package/Server/Services/NetworkSiteStatusTimelineService.ts +10 -0
- package/Server/Services/NetworkSiteTypeService.ts +10 -0
- package/Server/Services/ProjectService.ts +122 -2
- package/Server/Services/ServiceLevelObjectiveBurnRateRuleService.ts +457 -0
- package/Server/Services/ServiceLevelObjectiveOwnerTeamService.ts +10 -0
- package/Server/Services/ServiceLevelObjectiveOwnerUserService.ts +10 -0
- package/Server/Services/ServiceLevelObjectiveService.ts +685 -0
- package/Server/Services/SloHistoryService.ts +101 -0
- package/Server/Services/UserNotificationSettingService.ts +37 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +9 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +15 -0
- package/Server/Utils/AnalyticsDatabase/Statement.ts +39 -3
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +87 -48
- package/Server/Utils/Memory.ts +9 -1
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +190 -12
- package/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
- package/Server/Utils/Monitor/DnsResolutionCache.ts +129 -0
- package/Server/Utils/Monitor/MonitorResource.ts +4 -30
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +214 -39
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +343 -0
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +251 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +176 -142
- package/Server/Utils/Monitor/OuiLookupUtil.ts +49 -0
- package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +17 -13
- package/Server/Utils/WhatsAppTemplateUtil.ts +7 -3
- package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +135 -0
- package/Tests/Models/NetworkSiteHierarchy.test.ts +134 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +239 -0
- package/Tests/Server/Services/KubernetesCostAllocationAggregate.test.ts +338 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +142 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +484 -0
- package/Tests/Server/Services/NetworkEndpointServiceUpsert.test.ts +686 -0
- package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +185 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +1354 -0
- package/Tests/Server/Services/ServiceLevelObjectiveBurnRateRuleService.test.ts +1313 -0
- package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +1988 -0
- package/Tests/Server/Utils/AnalyticsDatabase/Statement.test.ts +22 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +404 -0
- package/Tests/Server/Utils/Encryption.test.ts +70 -0
- package/Tests/Server/Utils/FileAttachmentMarkdownUtil.test.ts +225 -0
- package/Tests/Server/Utils/JsonWebToken.test.ts +175 -0
- package/Tests/Server/Utils/LocalFile.test.ts +258 -0
- package/Tests/Server/Utils/Memory.test.ts +213 -0
- package/Tests/Server/Utils/Monitor/Criteria/LogMonitorCriteria.test.ts +30 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +385 -0
- package/Tests/Server/Utils/Monitor/DnsResolutionCache.test.ts +194 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +155 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +600 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +151 -124
- package/Tests/Server/Utils/Monitor/SnmpInterfaceRateUtil.test.ts +496 -0
- package/Tests/Server/Utils/MonitorCriteriaDataExtractor.test.ts +175 -0
- package/Tests/Server/Utils/MonitorCriteriaMessageFormatter.test.ts +282 -0
- package/Tests/Server/Utils/OuiLookupUtil.test.ts +59 -0
- package/Tests/Server/Utils/SeriesResourceLabels.test.ts +117 -0
- package/Tests/Server/Utils/StackTraceParser.test.ts +370 -0
- package/Tests/Server/Utils/Stream.test.ts +87 -0
- package/Tests/Server/Utils/ValidateGlobalProviderProjectTeams.test.ts +221 -0
- package/Tests/Server/Utils/WhatsAppTemplateUtil.test.ts +199 -0
- package/Tests/Types/Database/CompareOperatorWireSerialization.test.ts +33 -0
- package/Tests/Types/Email.test.ts +198 -0
- package/Tests/Types/Kubernetes/KubernetesObjectParser.test.ts +177 -0
- package/Tests/Types/Log/LogQueryToFilter.test.ts +111 -0
- package/Tests/Types/Monitor/MonitorCriteria.test.ts +155 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +465 -0
- package/Tests/Types/Monitor/MonitorStep.test.ts +183 -0
- package/Tests/Types/Monitor/MonitorStepNetworkDeviceMonitor.test.ts +141 -1
- package/Tests/Types/Monitor/MonitorSteps.test.ts +183 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +59 -1
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +97 -0
- package/Tests/Types/Monitor/SnmpEndpointDiscovery.test.ts +151 -0
- package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +110 -6
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +129 -0
- package/Tests/Types/SerializableObjectDictionary.test.ts +166 -0
- package/Tests/Types/Time/RangeStartAndEndDateTime.test.ts +98 -0
- package/Tests/Types/WebsiteRequest.test.ts +230 -0
- package/Tests/UI/Components/EntityFilterRoundTrip.test.tsx +103 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +612 -0
- package/Tests/UI/Components/ModelTable/FilterDataToQuery.test.ts +275 -0
- package/Tests/UI/Utils/LogExport.test.ts +159 -0
- package/Tests/UI/Utils/Navigation.test.ts +183 -0
- package/Tests/UI/Utils/TableFilterUrlState.test.ts +539 -0
- package/Tests/UI/Utils/TableViewUrlState.test.ts +272 -0
- package/Tests/Utils/Base64.test.ts +51 -0
- package/Tests/Utils/Boolean.test.ts +76 -0
- package/Tests/Utils/Crypto.test.ts +48 -0
- package/Tests/Utils/Dashboard/DashboardSloComponent.test.ts +259 -0
- package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +162 -0
- package/Tests/Utils/Enum.test.ts +54 -0
- package/Tests/Utils/IpCanonicalUtil.test.ts +85 -0
- package/Tests/Utils/Memory.test.ts +44 -0
- package/Tests/Utils/Metrics/MetricSeriesFingerprint.test.ts +160 -0
- package/Tests/Utils/Monitor/EndpointAttachmentUtil.test.ts +836 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +218 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +447 -0
- package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +440 -0
- package/Tests/Utils/NetworkSite/MaterializedPathUtil.test.ts +205 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +221 -0
- package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +283 -0
- package/Tests/Utils/ObjectUtil.test.ts +30 -0
- package/Tests/Utils/Slo/SloBurnRateRuleState.test.ts +124 -0
- package/Tests/Utils/Slo/SloDuration.test.ts +148 -0
- package/Tests/Utils/Slo/SloHealth.test.ts +334 -0
- package/Tests/Utils/Slo/SloStatusColor.test.ts +89 -0
- package/Tests/Utils/Slo/SloUtil.test.ts +1980 -0
- package/Tests/Utils/Slo/SloWidgetFormat.test.ts +605 -0
- package/Tests/Utils/TechStack.test.ts +50 -0
- package/Tests/Utils/Traces/CriticalPath.test.ts +178 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +10 -0
- package/Types/BaseDatabase/EqualTo.ts +9 -1
- package/Types/BaseDatabase/EqualToOrNull.ts +9 -1
- package/Types/BaseDatabase/NotEqual.ts +9 -1
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardSloComponent.ts +42 -0
- package/Types/Dashboard/DashboardTemplates.ts +214 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/Kubernetes/KubernetesCostIngest.ts +79 -0
- package/Types/Monitor/CriteriaFilter.ts +9 -0
- package/Types/Monitor/MonitorStep.ts +5 -8
- package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +27 -5
- package/Types/Monitor/MonitorType.ts +15 -5
- package/Types/Monitor/SnmpMonitor/ArpEntry.ts +14 -0
- package/Types/Monitor/SnmpMonitor/FdbEntry.ts +18 -0
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +10 -3
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +31 -5
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +12 -0
- package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +231 -3
- package/Types/NetworkSite/DefaultNetworkSiteType.ts +20 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
- package/Types/Permission.ts +449 -0
- package/Types/ServiceLevelObjective/SliType.ts +6 -0
- package/Types/ServiceLevelObjective/SloMultiMonitorMode.ts +6 -0
- package/Types/ServiceLevelObjective/SloStatus.ts +9 -0
- package/Types/ServiceLevelObjective/SloWindowType.ts +6 -0
- package/Types/Telemetry/ServiceType.ts +1 -0
- package/UI/Components/Filters/EntityFilter.tsx +16 -0
- package/UI/Components/Filters/FilterViewer.tsx +22 -5
- package/UI/Components/List/List.tsx +8 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +309 -106
- package/UI/Components/ModelTable/FilterDataToQuery.ts +172 -0
- package/UI/Components/Navbar/NavBar.tsx +16 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +3 -3
- package/UI/Utils/Navigation.ts +10 -0
- package/UI/Utils/TableFilterUrlState.ts +204 -17
- package/UI/Utils/TableViewUrlState.ts +165 -0
- package/Utils/Dashboard/Components/DashboardSloComponent.ts +114 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/IpCanonicalUtil.ts +134 -0
- package/Utils/Monitor/EndpointAttachmentUtil.ts +508 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +157 -5
- package/Utils/NetworkSite/CidrMatchUtil.ts +296 -0
- package/Utils/NetworkSite/MaterializedPathUtil.ts +115 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +97 -0
- package/Utils/NetworkSite/SiteUptimeUtil.ts +111 -0
- package/Utils/Slo/SloBurnRateRuleState.ts +91 -0
- package/Utils/Slo/SloDuration.ts +165 -0
- package/Utils/Slo/SloEvaluation.ts +22 -0
- package/Utils/Slo/SloHealth.ts +302 -0
- package/Utils/Slo/SloStatusColor.ts +54 -0
- package/Utils/Slo/SloUtil.ts +637 -0
- package/Utils/Slo/SloWidgetFormat.ts +383 -0
- package/build/dist/Models/AnalyticsModels/Index.js +4 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +713 -0
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js +44 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/SloHistory.js +218 -0
- package/build/dist/Models/AnalyticsModels/SloHistory.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +20 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +458 -6
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +0 -6
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkEndpoint.js +779 -0
- package/build/dist/Models/DatabaseModels/NetworkEndpoint.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js +1180 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +534 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteLink.js +629 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteLink.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js +538 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +522 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js +1134 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +769 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +460 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +459 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js +130 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js +31 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js +49 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js +140 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785066759532-MigrationName.js +21 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785066759532-MigrationName.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/Services/AnalyticsDatabaseService.js +23 -6
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +24 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesCostAllocationService.js +12 -0
- package/build/dist/Server/Services/KubernetesCostAllocationService.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +21 -3
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +19 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +351 -1
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkEndpointService.js +319 -0
- package/build/dist/Server/Services/NetworkEndpointService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +90 -0
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteLinkService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteLinkService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteService.js +1038 -0
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -0
- package/build/dist/Server/Services/ProjectService.js +98 -2
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +358 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js +588 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -0
- package/build/dist/Server/Services/SloHistoryService.js +77 -0
- package/build/dist/Server/Services/SloHistoryService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +20 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +9 -0
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +15 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +31 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +76 -48
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Memory.js +9 -1
- package/build/dist/Server/Utils/Memory.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +132 -10
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
- package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js +77 -0
- package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +21 -41
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +152 -40
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +262 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +201 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +152 -120
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js +44 -0
- package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +10 -10
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +5 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/EqualTo.js +9 -1
- package/build/dist/Types/BaseDatabase/EqualTo.js.map +1 -1
- package/build/dist/Types/BaseDatabase/EqualToOrNull.js +9 -1
- package/build/dist/Types/BaseDatabase/EqualToOrNull.js.map +1 -1
- package/build/dist/Types/BaseDatabase/NotEqual.js +9 -1
- package/build/dist/Types/BaseDatabase/NotEqual.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -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/DashboardSloComponent.js +23 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +205 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js +21 -0
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +5 -5
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +8 -0
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +15 -5
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +9 -3
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +217 -3
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js +21 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +409 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/ServiceLevelObjective/SliType.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SliType.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloStatus.js +10 -0
- package/build/dist/Types/ServiceLevelObjective/SloStatus.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloWindowType.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SloWindowType.js.map +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Filters/EntityFilter.js +15 -0
- package/build/dist/UI/Components/Filters/EntityFilter.js.map +1 -1
- package/build/dist/UI/Components/Filters/FilterViewer.js +19 -4
- package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
- package/build/dist/UI/Components/List/List.js +1 -1
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +235 -89
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js +96 -0
- package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js.map +1 -0
- package/build/dist/UI/Components/Navbar/NavBar.js +14 -2
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +3 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +9 -0
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/TableFilterUrlState.js +159 -15
- package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
- package/build/dist/UI/Utils/TableViewUrlState.js +103 -0
- package/build/dist/UI/Utils/TableViewUrlState.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js +93 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/IpCanonicalUtil.js +110 -0
- package/build/dist/Utils/IpCanonicalUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js +311 -0
- package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +98 -5
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +222 -0
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js +89 -0
- package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +60 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +76 -0
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -0
- package/build/dist/Utils/Slo/SloBurnRateRuleState.js +35 -0
- package/build/dist/Utils/Slo/SloBurnRateRuleState.js.map +1 -0
- package/build/dist/Utils/Slo/SloDuration.js +87 -0
- package/build/dist/Utils/Slo/SloDuration.js.map +1 -0
- package/build/dist/Utils/Slo/SloEvaluation.js +21 -0
- package/build/dist/Utils/Slo/SloEvaluation.js.map +1 -0
- package/build/dist/Utils/Slo/SloHealth.js +179 -0
- package/build/dist/Utils/Slo/SloHealth.js.map +1 -0
- package/build/dist/Utils/Slo/SloStatusColor.js +18 -0
- package/build/dist/Utils/Slo/SloStatusColor.js.map +1 -0
- package/build/dist/Utils/Slo/SloUtil.js +393 -0
- package/build/dist/Utils/Slo/SloUtil.js.map +1 -0
- package/build/dist/Utils/Slo/SloWidgetFormat.js +174 -0
- package/build/dist/Utils/Slo/SloWidgetFormat.js.map +1 -0
- package/package.json +2 -2
- package/Types/Dashboard/DashboardComponents/Index.ts +0 -7
- package/build/dist/Types/Dashboard/DashboardComponents/Index.js +0 -8
- package/build/dist/Types/Dashboard/DashboardComponents/Index.js.map +0 -1
|
@@ -0,0 +1,842 @@
|
|
|
1
|
+
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
2
|
+
import Route from "../../Types/API/Route";
|
|
3
|
+
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
|
|
4
|
+
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
|
|
5
|
+
import AnalyticsTableColumn, {
|
|
6
|
+
SkipIndexType,
|
|
7
|
+
} from "../../Types/AnalyticsDatabase/TableColumn";
|
|
8
|
+
import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
9
|
+
import ObjectID from "../../Types/ObjectID";
|
|
10
|
+
import Permission from "../../Types/Permission";
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* One cost-allocation record for a Kubernetes workload over a time window,
|
|
14
|
+
* as computed by an in-cluster cost engine (OpenCost / Kubecost cost-model)
|
|
15
|
+
* and shipped by the OneUptime Kubernetes agent's cost poller. Each row is
|
|
16
|
+
* one (cluster, window, namespace, controller, pod, container) slice with
|
|
17
|
+
* pre-priced cpu/ram/gpu/pv/network/load-balancer cost components and
|
|
18
|
+
* request-vs-usage efficiency ratios.
|
|
19
|
+
*
|
|
20
|
+
* Idle and unallocated capacity arrive as regular rows whose namespace is
|
|
21
|
+
* the engine's sentinel ("__idle__" / "__unallocated__"), so idle spend is
|
|
22
|
+
* queryable with the same GROUP BY as workload spend.
|
|
23
|
+
*
|
|
24
|
+
* Access control mirrors the KubernetesCluster database model — cost rows
|
|
25
|
+
* are an attribute of the cluster they were metered on.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
const readPermissions: Array<Permission> = [
|
|
29
|
+
Permission.ProjectOwner,
|
|
30
|
+
Permission.ProjectAdmin,
|
|
31
|
+
Permission.ProjectMember,
|
|
32
|
+
Permission.Viewer,
|
|
33
|
+
Permission.SettingsAdmin,
|
|
34
|
+
Permission.SettingsMember,
|
|
35
|
+
Permission.SettingsViewer,
|
|
36
|
+
Permission.ReadKubernetesCluster,
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const createPermissions: Array<Permission> = [
|
|
40
|
+
Permission.ProjectOwner,
|
|
41
|
+
Permission.ProjectAdmin,
|
|
42
|
+
Permission.ProjectMember,
|
|
43
|
+
Permission.SettingsAdmin,
|
|
44
|
+
Permission.SettingsMember,
|
|
45
|
+
Permission.CreateKubernetesCluster,
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const deletePermissions: Array<Permission> = [
|
|
49
|
+
Permission.ProjectOwner,
|
|
50
|
+
Permission.ProjectAdmin,
|
|
51
|
+
Permission.ProjectMember,
|
|
52
|
+
Permission.SettingsAdmin,
|
|
53
|
+
Permission.SettingsMember,
|
|
54
|
+
Permission.DeleteKubernetesCluster,
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
type CostColumnDef = {
|
|
58
|
+
key: string;
|
|
59
|
+
title: string;
|
|
60
|
+
description: string;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export default class KubernetesCostAllocation extends AnalyticsBaseModel {
|
|
64
|
+
public constructor() {
|
|
65
|
+
const projectIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
66
|
+
key: "projectId",
|
|
67
|
+
title: "Project ID",
|
|
68
|
+
description: "ID of project",
|
|
69
|
+
required: true,
|
|
70
|
+
type: TableColumnType.ObjectID,
|
|
71
|
+
isTenantId: true,
|
|
72
|
+
accessControl: {
|
|
73
|
+
read: readPermissions,
|
|
74
|
+
create: createPermissions,
|
|
75
|
+
update: [],
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const kubernetesClusterIdColumn: AnalyticsTableColumn =
|
|
80
|
+
new AnalyticsTableColumn({
|
|
81
|
+
key: "kubernetesClusterId",
|
|
82
|
+
title: "Kubernetes Cluster ID",
|
|
83
|
+
description:
|
|
84
|
+
"ID of the KubernetesCluster this cost row was metered on. Resolved at ingest from the cluster name (findOrCreateByClusterIdentifier), so every stored row has one.",
|
|
85
|
+
required: true,
|
|
86
|
+
type: TableColumnType.ObjectID,
|
|
87
|
+
accessControl: {
|
|
88
|
+
read: readPermissions,
|
|
89
|
+
create: createPermissions,
|
|
90
|
+
update: [],
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const clusterNameColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
95
|
+
key: "clusterName",
|
|
96
|
+
title: "Cluster Name",
|
|
97
|
+
description:
|
|
98
|
+
"Cluster identifier as reported by the agent (matches KubernetesCluster.clusterIdentifier and the resource.k8s.cluster.name metric attribute).",
|
|
99
|
+
required: true,
|
|
100
|
+
type: TableColumnType.Text,
|
|
101
|
+
skipIndex: {
|
|
102
|
+
name: "idx_cluster_name",
|
|
103
|
+
type: SkipIndexType.Set,
|
|
104
|
+
params: [100],
|
|
105
|
+
granularity: 4,
|
|
106
|
+
},
|
|
107
|
+
accessControl: {
|
|
108
|
+
read: readPermissions,
|
|
109
|
+
create: createPermissions,
|
|
110
|
+
update: [],
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const k8sClusterEntityKeyColumn: AnalyticsTableColumn =
|
|
115
|
+
new AnalyticsTableColumn({
|
|
116
|
+
key: "k8sClusterEntityKey",
|
|
117
|
+
title: "Kubernetes Cluster Entity Key",
|
|
118
|
+
description:
|
|
119
|
+
"Stable 16-hex entity key of the cluster (see Common/Utils/Telemetry/EntityKey.keyForKubernetesCluster); joins cost rows to the metric rollups keyed by the same column.",
|
|
120
|
+
required: true,
|
|
121
|
+
defaultValue: "",
|
|
122
|
+
type: TableColumnType.Text,
|
|
123
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
124
|
+
skipIndex: {
|
|
125
|
+
name: "idx_k8s_cluster_entity_key",
|
|
126
|
+
type: SkipIndexType.BloomFilter,
|
|
127
|
+
params: [0.01],
|
|
128
|
+
granularity: 1,
|
|
129
|
+
},
|
|
130
|
+
accessControl: {
|
|
131
|
+
read: readPermissions,
|
|
132
|
+
create: createPermissions,
|
|
133
|
+
update: [],
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const windowStartColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
138
|
+
key: "windowStart",
|
|
139
|
+
codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
|
|
140
|
+
title: "Window Start",
|
|
141
|
+
description: "Start of the allocation window this row covers.",
|
|
142
|
+
required: true,
|
|
143
|
+
type: TableColumnType.DateTime64,
|
|
144
|
+
accessControl: {
|
|
145
|
+
read: readPermissions,
|
|
146
|
+
create: createPermissions,
|
|
147
|
+
update: [],
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
const windowEndColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
152
|
+
key: "windowEnd",
|
|
153
|
+
codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
|
|
154
|
+
title: "Window End",
|
|
155
|
+
description: "End of the allocation window this row covers.",
|
|
156
|
+
required: true,
|
|
157
|
+
type: TableColumnType.DateTime64,
|
|
158
|
+
accessControl: {
|
|
159
|
+
read: readPermissions,
|
|
160
|
+
create: createPermissions,
|
|
161
|
+
update: [],
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const namespaceColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
166
|
+
key: "namespace",
|
|
167
|
+
title: "Namespace",
|
|
168
|
+
description:
|
|
169
|
+
'Kubernetes namespace of the workload. Engine sentinels ("__idle__", "__unallocated__") mark non-workload capacity.',
|
|
170
|
+
required: true,
|
|
171
|
+
defaultValue: "",
|
|
172
|
+
type: TableColumnType.Text,
|
|
173
|
+
skipIndex: {
|
|
174
|
+
name: "idx_namespace",
|
|
175
|
+
type: SkipIndexType.Set,
|
|
176
|
+
params: [100],
|
|
177
|
+
granularity: 4,
|
|
178
|
+
},
|
|
179
|
+
accessControl: {
|
|
180
|
+
read: readPermissions,
|
|
181
|
+
create: createPermissions,
|
|
182
|
+
update: [],
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const controllerKindColumn: AnalyticsTableColumn = new AnalyticsTableColumn(
|
|
187
|
+
{
|
|
188
|
+
key: "controllerKind",
|
|
189
|
+
isLowCardinality: true,
|
|
190
|
+
title: "Controller Kind",
|
|
191
|
+
description:
|
|
192
|
+
"Kind of the owning controller (deployment / statefulset / daemonset / job / cronjob / replicaset / pod).",
|
|
193
|
+
required: true,
|
|
194
|
+
defaultValue: "",
|
|
195
|
+
type: TableColumnType.Text,
|
|
196
|
+
accessControl: {
|
|
197
|
+
read: readPermissions,
|
|
198
|
+
create: createPermissions,
|
|
199
|
+
update: [],
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
const controllerNameColumn: AnalyticsTableColumn = new AnalyticsTableColumn(
|
|
205
|
+
{
|
|
206
|
+
key: "controllerName",
|
|
207
|
+
title: "Controller Name",
|
|
208
|
+
description: "Name of the owning controller (the workload).",
|
|
209
|
+
required: true,
|
|
210
|
+
defaultValue: "",
|
|
211
|
+
type: TableColumnType.Text,
|
|
212
|
+
skipIndex: {
|
|
213
|
+
name: "idx_controller_name",
|
|
214
|
+
type: SkipIndexType.BloomFilter,
|
|
215
|
+
params: [0.01],
|
|
216
|
+
granularity: 1,
|
|
217
|
+
},
|
|
218
|
+
accessControl: {
|
|
219
|
+
read: readPermissions,
|
|
220
|
+
create: createPermissions,
|
|
221
|
+
update: [],
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
const podNameColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
227
|
+
key: "podName",
|
|
228
|
+
title: "Pod Name",
|
|
229
|
+
description: "Name of the pod, when the row is pod- or container-level.",
|
|
230
|
+
required: true,
|
|
231
|
+
defaultValue: "",
|
|
232
|
+
type: TableColumnType.Text,
|
|
233
|
+
skipIndex: {
|
|
234
|
+
name: "idx_pod_name",
|
|
235
|
+
type: SkipIndexType.BloomFilter,
|
|
236
|
+
params: [0.01],
|
|
237
|
+
granularity: 1,
|
|
238
|
+
},
|
|
239
|
+
accessControl: {
|
|
240
|
+
read: readPermissions,
|
|
241
|
+
create: createPermissions,
|
|
242
|
+
update: [],
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
const containerNameColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
247
|
+
key: "containerName",
|
|
248
|
+
title: "Container Name",
|
|
249
|
+
description: "Name of the container, when the row is container-level.",
|
|
250
|
+
required: true,
|
|
251
|
+
defaultValue: "",
|
|
252
|
+
type: TableColumnType.Text,
|
|
253
|
+
accessControl: {
|
|
254
|
+
read: readPermissions,
|
|
255
|
+
create: createPermissions,
|
|
256
|
+
update: [],
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
const nodeNameColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
261
|
+
key: "nodeName",
|
|
262
|
+
title: "Node Name",
|
|
263
|
+
description: "Node the workload ran on during the window.",
|
|
264
|
+
required: true,
|
|
265
|
+
defaultValue: "",
|
|
266
|
+
type: TableColumnType.Text,
|
|
267
|
+
skipIndex: {
|
|
268
|
+
name: "idx_node_name",
|
|
269
|
+
type: SkipIndexType.BloomFilter,
|
|
270
|
+
params: [0.01],
|
|
271
|
+
granularity: 1,
|
|
272
|
+
},
|
|
273
|
+
accessControl: {
|
|
274
|
+
read: readPermissions,
|
|
275
|
+
create: createPermissions,
|
|
276
|
+
update: [],
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
const providerIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
281
|
+
key: "providerId",
|
|
282
|
+
title: "Provider ID",
|
|
283
|
+
description:
|
|
284
|
+
"Cloud provider instance identifier of the node, when known.",
|
|
285
|
+
required: true,
|
|
286
|
+
defaultValue: "",
|
|
287
|
+
type: TableColumnType.Text,
|
|
288
|
+
accessControl: {
|
|
289
|
+
read: readPermissions,
|
|
290
|
+
create: createPermissions,
|
|
291
|
+
update: [],
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
const labelsColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
296
|
+
key: "labels",
|
|
297
|
+
codec: { codec: "ZSTD", level: 3 },
|
|
298
|
+
title: "Labels",
|
|
299
|
+
description:
|
|
300
|
+
"Kubernetes labels of the workload (merged pod/namespace labels as reported by the cost engine). Enables cost-by-label (team / app / env) queries.",
|
|
301
|
+
required: true,
|
|
302
|
+
defaultValue: {},
|
|
303
|
+
type: TableColumnType.MapStringString,
|
|
304
|
+
mapKeysColumn: "labelKeys",
|
|
305
|
+
accessControl: {
|
|
306
|
+
read: readPermissions,
|
|
307
|
+
create: createPermissions,
|
|
308
|
+
update: [],
|
|
309
|
+
},
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
const labelKeysColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
313
|
+
key: "labelKeys",
|
|
314
|
+
codec: { codec: "ZSTD", level: 3 },
|
|
315
|
+
title: "Label Keys",
|
|
316
|
+
description: "Label keys extracted from labels",
|
|
317
|
+
required: true,
|
|
318
|
+
defaultValue: [],
|
|
319
|
+
type: TableColumnType.ArrayText,
|
|
320
|
+
skipIndex: {
|
|
321
|
+
name: "idx_label_keys",
|
|
322
|
+
type: SkipIndexType.BloomFilter,
|
|
323
|
+
params: [0.01],
|
|
324
|
+
granularity: 1,
|
|
325
|
+
},
|
|
326
|
+
accessControl: labelsColumn.accessControl,
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
/*
|
|
330
|
+
* Cost / usage / efficiency measures. All Float64 (Decimal), non-Nullable
|
|
331
|
+
* with a 0 default — the ingest service always writes every measure, and
|
|
332
|
+
* non-Nullable keeps sum()/avg() aggregations state-free.
|
|
333
|
+
*/
|
|
334
|
+
const measureColumns: Array<AnalyticsTableColumn> = (
|
|
335
|
+
[
|
|
336
|
+
{
|
|
337
|
+
key: "cpuCoreHours",
|
|
338
|
+
title: "CPU Core Hours",
|
|
339
|
+
description: "CPU core-hours allocated over the window.",
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
key: "cpuCoreRequestAverage",
|
|
343
|
+
title: "CPU Core Request Average",
|
|
344
|
+
description: "Average CPU cores requested over the window.",
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
key: "cpuCoreUsageAverage",
|
|
348
|
+
title: "CPU Core Usage Average",
|
|
349
|
+
description: "Average CPU cores actually used over the window.",
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
key: "cpuCost",
|
|
353
|
+
title: "CPU Cost",
|
|
354
|
+
description: "Cost of allocated CPU over the window.",
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
key: "gpuHours",
|
|
358
|
+
title: "GPU Hours",
|
|
359
|
+
description: "GPU-hours allocated over the window.",
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
key: "gpuCost",
|
|
363
|
+
title: "GPU Cost",
|
|
364
|
+
description: "Cost of allocated GPUs over the window.",
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
key: "ramByteHours",
|
|
368
|
+
title: "RAM Byte Hours",
|
|
369
|
+
description: "RAM byte-hours allocated over the window.",
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
key: "ramBytesRequestAverage",
|
|
373
|
+
title: "RAM Bytes Request Average",
|
|
374
|
+
description: "Average RAM bytes requested over the window.",
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
key: "ramBytesUsageAverage",
|
|
378
|
+
title: "RAM Bytes Usage Average",
|
|
379
|
+
description: "Average RAM bytes actually used over the window.",
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
key: "ramCost",
|
|
383
|
+
title: "RAM Cost",
|
|
384
|
+
description: "Cost of allocated RAM over the window.",
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
key: "pvByteHours",
|
|
388
|
+
title: "PV Byte Hours",
|
|
389
|
+
description:
|
|
390
|
+
"Persistent-volume byte-hours allocated over the window.",
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
key: "pvCost",
|
|
394
|
+
title: "PV Cost",
|
|
395
|
+
description: "Cost of persistent volumes over the window.",
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
key: "networkCost",
|
|
399
|
+
title: "Network Cost",
|
|
400
|
+
description: "Network egress cost over the window.",
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
key: "loadBalancerCost",
|
|
404
|
+
title: "Load Balancer Cost",
|
|
405
|
+
description: "Load balancer cost over the window.",
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
key: "sharedCost",
|
|
409
|
+
title: "Shared Cost",
|
|
410
|
+
description:
|
|
411
|
+
"Share of cluster overhead distributed to this workload.",
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
key: "externalCost",
|
|
415
|
+
title: "External Cost",
|
|
416
|
+
description:
|
|
417
|
+
"Out-of-cluster cost attributed to this workload, when the engine reports one.",
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
key: "totalCost",
|
|
421
|
+
title: "Total Cost",
|
|
422
|
+
description:
|
|
423
|
+
"Total cost of the row over the window (all components).",
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
key: "cpuEfficiency",
|
|
427
|
+
title: "CPU Efficiency",
|
|
428
|
+
description: "CPU usage / request ratio over the window (0..1+).",
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
key: "ramEfficiency",
|
|
432
|
+
title: "RAM Efficiency",
|
|
433
|
+
description: "RAM usage / request ratio over the window (0..1+).",
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
key: "totalEfficiency",
|
|
437
|
+
title: "Total Efficiency",
|
|
438
|
+
description:
|
|
439
|
+
"Cost-weighted cpu+ram efficiency over the window (0..1+).",
|
|
440
|
+
},
|
|
441
|
+
] as Array<CostColumnDef>
|
|
442
|
+
).map((def: CostColumnDef): AnalyticsTableColumn => {
|
|
443
|
+
return new AnalyticsTableColumn({
|
|
444
|
+
key: def.key,
|
|
445
|
+
title: def.title,
|
|
446
|
+
description: def.description,
|
|
447
|
+
required: true,
|
|
448
|
+
defaultValue: 0,
|
|
449
|
+
type: TableColumnType.Decimal,
|
|
450
|
+
codec: [{ codec: "Gorilla" }, { codec: "ZSTD", level: 1 }],
|
|
451
|
+
accessControl: {
|
|
452
|
+
read: readPermissions,
|
|
453
|
+
create: createPermissions,
|
|
454
|
+
update: [],
|
|
455
|
+
},
|
|
456
|
+
});
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
const currencyColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
460
|
+
key: "currency",
|
|
461
|
+
isLowCardinality: true,
|
|
462
|
+
title: "Currency",
|
|
463
|
+
description:
|
|
464
|
+
'Currency code of the cost figures as configured in the cost engine (e.g. "USD"). Empty when the engine reports none — treat as USD.',
|
|
465
|
+
required: true,
|
|
466
|
+
defaultValue: "",
|
|
467
|
+
type: TableColumnType.Text,
|
|
468
|
+
accessControl: {
|
|
469
|
+
read: readPermissions,
|
|
470
|
+
create: createPermissions,
|
|
471
|
+
update: [],
|
|
472
|
+
},
|
|
473
|
+
});
|
|
474
|
+
|
|
475
|
+
const retentionDateColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
476
|
+
key: "retentionDate",
|
|
477
|
+
codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
|
|
478
|
+
title: "Retention Date",
|
|
479
|
+
description:
|
|
480
|
+
"Date after which this row is eligible for TTL deletion, computed at ingest time as windowStart + the cluster's (or project's) telemetry retention days",
|
|
481
|
+
required: true,
|
|
482
|
+
type: TableColumnType.Date,
|
|
483
|
+
defaultValue: undefined,
|
|
484
|
+
});
|
|
485
|
+
|
|
486
|
+
super({
|
|
487
|
+
tableName: AnalyticsTableName.KubernetesCostAllocation,
|
|
488
|
+
tableEngine: AnalyticsTableEngine.MergeTree,
|
|
489
|
+
singularName: "Kubernetes Cost Allocation",
|
|
490
|
+
pluralName: "Kubernetes Cost Allocations",
|
|
491
|
+
accessControl: {
|
|
492
|
+
read: readPermissions,
|
|
493
|
+
create: createPermissions,
|
|
494
|
+
update: [],
|
|
495
|
+
delete: deletePermissions,
|
|
496
|
+
},
|
|
497
|
+
crudApiPath: new Route("/kubernetes-cost-allocation"),
|
|
498
|
+
enableMCP: true,
|
|
499
|
+
enableDocumentation: true,
|
|
500
|
+
tableDescription:
|
|
501
|
+
"Kubernetes cost allocations — pre-priced cpu/ram/gpu/pv/network cost per workload per time window, as computed by an in-cluster cost engine (OpenCost / Kubecost) and shipped by the OneUptime Kubernetes agent. Query spend by cluster, namespace, controller, pod, or label over time.",
|
|
502
|
+
tableColumns: [
|
|
503
|
+
projectIdColumn,
|
|
504
|
+
kubernetesClusterIdColumn,
|
|
505
|
+
clusterNameColumn,
|
|
506
|
+
k8sClusterEntityKeyColumn,
|
|
507
|
+
windowStartColumn,
|
|
508
|
+
windowEndColumn,
|
|
509
|
+
namespaceColumn,
|
|
510
|
+
controllerKindColumn,
|
|
511
|
+
controllerNameColumn,
|
|
512
|
+
podNameColumn,
|
|
513
|
+
containerNameColumn,
|
|
514
|
+
nodeNameColumn,
|
|
515
|
+
providerIdColumn,
|
|
516
|
+
labelsColumn,
|
|
517
|
+
labelKeysColumn,
|
|
518
|
+
...measureColumns,
|
|
519
|
+
currencyColumn,
|
|
520
|
+
retentionDateColumn,
|
|
521
|
+
],
|
|
522
|
+
sortKeys: [
|
|
523
|
+
"projectId",
|
|
524
|
+
"kubernetesClusterId",
|
|
525
|
+
"windowStart",
|
|
526
|
+
"namespace",
|
|
527
|
+
],
|
|
528
|
+
primaryKeys: [
|
|
529
|
+
"projectId",
|
|
530
|
+
"kubernetesClusterId",
|
|
531
|
+
"windowStart",
|
|
532
|
+
"namespace",
|
|
533
|
+
],
|
|
534
|
+
partitionKey: "toYYYYMMDD(windowStart)",
|
|
535
|
+
/*
|
|
536
|
+
* Shard by cluster so one cluster's cost rows co-locate (every query
|
|
537
|
+
* filters by cluster or fans out across all of a project's clusters).
|
|
538
|
+
*/
|
|
539
|
+
shardingKey: "cityHash64(projectId, kubernetesClusterId)",
|
|
540
|
+
tableSettings:
|
|
541
|
+
"ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
|
|
542
|
+
ttlExpression: "retentionDate DELETE",
|
|
543
|
+
defaultSortColumn: "windowStart",
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
public get projectId(): ObjectID | undefined {
|
|
548
|
+
return this.getColumnValue("projectId") as ObjectID | undefined;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
public set projectId(v: ObjectID | undefined) {
|
|
552
|
+
this.setColumnValue("projectId", v);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
public get kubernetesClusterId(): ObjectID | undefined {
|
|
556
|
+
return this.getColumnValue("kubernetesClusterId") as ObjectID | undefined;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
public set kubernetesClusterId(v: ObjectID | undefined) {
|
|
560
|
+
this.setColumnValue("kubernetesClusterId", v);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
public get clusterName(): string | undefined {
|
|
564
|
+
return this.getColumnValue("clusterName") as string | undefined;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
public set clusterName(v: string | undefined) {
|
|
568
|
+
this.setColumnValue("clusterName", v);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
public get k8sClusterEntityKey(): string | undefined {
|
|
572
|
+
return this.getColumnValue("k8sClusterEntityKey") as string | undefined;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
public set k8sClusterEntityKey(v: string | undefined) {
|
|
576
|
+
this.setColumnValue("k8sClusterEntityKey", v);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
public get windowStart(): Date | undefined {
|
|
580
|
+
return this.getColumnValue("windowStart") as Date | undefined;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
public set windowStart(v: Date | undefined) {
|
|
584
|
+
this.setColumnValue("windowStart", v);
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
public get windowEnd(): Date | undefined {
|
|
588
|
+
return this.getColumnValue("windowEnd") as Date | undefined;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
public set windowEnd(v: Date | undefined) {
|
|
592
|
+
this.setColumnValue("windowEnd", v);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
public get namespace(): string | undefined {
|
|
596
|
+
return this.getColumnValue("namespace") as string | undefined;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
public set namespace(v: string | undefined) {
|
|
600
|
+
this.setColumnValue("namespace", v);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
public get controllerKind(): string | undefined {
|
|
604
|
+
return this.getColumnValue("controllerKind") as string | undefined;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
public set controllerKind(v: string | undefined) {
|
|
608
|
+
this.setColumnValue("controllerKind", v);
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
public get controllerName(): string | undefined {
|
|
612
|
+
return this.getColumnValue("controllerName") as string | undefined;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
public set controllerName(v: string | undefined) {
|
|
616
|
+
this.setColumnValue("controllerName", v);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
public get podName(): string | undefined {
|
|
620
|
+
return this.getColumnValue("podName") as string | undefined;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
public set podName(v: string | undefined) {
|
|
624
|
+
this.setColumnValue("podName", v);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
public get containerName(): string | undefined {
|
|
628
|
+
return this.getColumnValue("containerName") as string | undefined;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
public set containerName(v: string | undefined) {
|
|
632
|
+
this.setColumnValue("containerName", v);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
public get nodeName(): string | undefined {
|
|
636
|
+
return this.getColumnValue("nodeName") as string | undefined;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
public set nodeName(v: string | undefined) {
|
|
640
|
+
this.setColumnValue("nodeName", v);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
public get providerId(): string | undefined {
|
|
644
|
+
return this.getColumnValue("providerId") as string | undefined;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
public set providerId(v: string | undefined) {
|
|
648
|
+
this.setColumnValue("providerId", v);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
public get labels(): Record<string, string> | undefined {
|
|
652
|
+
return this.getColumnValue("labels") as Record<string, string> | undefined;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
public set labels(v: Record<string, string> | undefined) {
|
|
656
|
+
this.setColumnValue("labels", v);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
public get labelKeys(): Array<string> | undefined {
|
|
660
|
+
return this.getColumnValue("labelKeys") as Array<string> | undefined;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
public set labelKeys(v: Array<string> | undefined) {
|
|
664
|
+
this.setColumnValue("labelKeys", v);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
public get cpuCoreHours(): number | undefined {
|
|
668
|
+
return this.getColumnValue("cpuCoreHours") as number | undefined;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
public set cpuCoreHours(v: number | undefined) {
|
|
672
|
+
this.setColumnValue("cpuCoreHours", v);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
public get cpuCoreRequestAverage(): number | undefined {
|
|
676
|
+
return this.getColumnValue("cpuCoreRequestAverage") as number | undefined;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
public set cpuCoreRequestAverage(v: number | undefined) {
|
|
680
|
+
this.setColumnValue("cpuCoreRequestAverage", v);
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
public get cpuCoreUsageAverage(): number | undefined {
|
|
684
|
+
return this.getColumnValue("cpuCoreUsageAverage") as number | undefined;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
public set cpuCoreUsageAverage(v: number | undefined) {
|
|
688
|
+
this.setColumnValue("cpuCoreUsageAverage", v);
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
public get cpuCost(): number | undefined {
|
|
692
|
+
return this.getColumnValue("cpuCost") as number | undefined;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
public set cpuCost(v: number | undefined) {
|
|
696
|
+
this.setColumnValue("cpuCost", v);
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
public get gpuHours(): number | undefined {
|
|
700
|
+
return this.getColumnValue("gpuHours") as number | undefined;
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
public set gpuHours(v: number | undefined) {
|
|
704
|
+
this.setColumnValue("gpuHours", v);
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
public get gpuCost(): number | undefined {
|
|
708
|
+
return this.getColumnValue("gpuCost") as number | undefined;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
public set gpuCost(v: number | undefined) {
|
|
712
|
+
this.setColumnValue("gpuCost", v);
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
public get ramByteHours(): number | undefined {
|
|
716
|
+
return this.getColumnValue("ramByteHours") as number | undefined;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
public set ramByteHours(v: number | undefined) {
|
|
720
|
+
this.setColumnValue("ramByteHours", v);
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
public get ramBytesRequestAverage(): number | undefined {
|
|
724
|
+
return this.getColumnValue("ramBytesRequestAverage") as number | undefined;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
public set ramBytesRequestAverage(v: number | undefined) {
|
|
728
|
+
this.setColumnValue("ramBytesRequestAverage", v);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
public get ramBytesUsageAverage(): number | undefined {
|
|
732
|
+
return this.getColumnValue("ramBytesUsageAverage") as number | undefined;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
public set ramBytesUsageAverage(v: number | undefined) {
|
|
736
|
+
this.setColumnValue("ramBytesUsageAverage", v);
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
public get ramCost(): number | undefined {
|
|
740
|
+
return this.getColumnValue("ramCost") as number | undefined;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
public set ramCost(v: number | undefined) {
|
|
744
|
+
this.setColumnValue("ramCost", v);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
public get pvByteHours(): number | undefined {
|
|
748
|
+
return this.getColumnValue("pvByteHours") as number | undefined;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
public set pvByteHours(v: number | undefined) {
|
|
752
|
+
this.setColumnValue("pvByteHours", v);
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
public get pvCost(): number | undefined {
|
|
756
|
+
return this.getColumnValue("pvCost") as number | undefined;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
public set pvCost(v: number | undefined) {
|
|
760
|
+
this.setColumnValue("pvCost", v);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
public get networkCost(): number | undefined {
|
|
764
|
+
return this.getColumnValue("networkCost") as number | undefined;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
public set networkCost(v: number | undefined) {
|
|
768
|
+
this.setColumnValue("networkCost", v);
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
public get loadBalancerCost(): number | undefined {
|
|
772
|
+
return this.getColumnValue("loadBalancerCost") as number | undefined;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
public set loadBalancerCost(v: number | undefined) {
|
|
776
|
+
this.setColumnValue("loadBalancerCost", v);
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
public get sharedCost(): number | undefined {
|
|
780
|
+
return this.getColumnValue("sharedCost") as number | undefined;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
public set sharedCost(v: number | undefined) {
|
|
784
|
+
this.setColumnValue("sharedCost", v);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
public get externalCost(): number | undefined {
|
|
788
|
+
return this.getColumnValue("externalCost") as number | undefined;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
public set externalCost(v: number | undefined) {
|
|
792
|
+
this.setColumnValue("externalCost", v);
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
public get totalCost(): number | undefined {
|
|
796
|
+
return this.getColumnValue("totalCost") as number | undefined;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
public set totalCost(v: number | undefined) {
|
|
800
|
+
this.setColumnValue("totalCost", v);
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
public get cpuEfficiency(): number | undefined {
|
|
804
|
+
return this.getColumnValue("cpuEfficiency") as number | undefined;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
public set cpuEfficiency(v: number | undefined) {
|
|
808
|
+
this.setColumnValue("cpuEfficiency", v);
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
public get ramEfficiency(): number | undefined {
|
|
812
|
+
return this.getColumnValue("ramEfficiency") as number | undefined;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
public set ramEfficiency(v: number | undefined) {
|
|
816
|
+
this.setColumnValue("ramEfficiency", v);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
public get totalEfficiency(): number | undefined {
|
|
820
|
+
return this.getColumnValue("totalEfficiency") as number | undefined;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
public set totalEfficiency(v: number | undefined) {
|
|
824
|
+
this.setColumnValue("totalEfficiency", v);
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
public get currency(): string | undefined {
|
|
828
|
+
return this.getColumnValue("currency") as string | undefined;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
public set currency(v: string | undefined) {
|
|
832
|
+
this.setColumnValue("currency", v);
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
public get retentionDate(): Date | undefined {
|
|
836
|
+
return this.getColumnValue("retentionDate") as Date | undefined;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
public set retentionDate(v: Date | undefined) {
|
|
840
|
+
this.setColumnValue("retentionDate", v);
|
|
841
|
+
}
|
|
842
|
+
}
|