@oneuptime/common 11.6.1 → 11.6.2

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