@oneuptime/common 11.0.0 → 11.0.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 (357) hide show
  1. package/Models/DatabaseModels/Alert.ts +110 -0
  2. package/Models/DatabaseModels/CephCluster.ts +964 -0
  3. package/Models/DatabaseModels/CephClusterLabelRule.ts +514 -0
  4. package/Models/DatabaseModels/CephClusterOwnerRule.ts +596 -0
  5. package/Models/DatabaseModels/CephClusterOwnerTeam.ts +487 -0
  6. package/Models/DatabaseModels/CephClusterOwnerUser.ts +486 -0
  7. package/Models/DatabaseModels/CephResource.ts +809 -0
  8. package/Models/DatabaseModels/Host.ts +64 -0
  9. package/Models/DatabaseModels/Incident.ts +110 -0
  10. package/Models/DatabaseModels/Index.ts +24 -0
  11. package/Models/DatabaseModels/ProxmoxCluster.ts +943 -0
  12. package/Models/DatabaseModels/ProxmoxClusterLabelRule.ts +514 -0
  13. package/Models/DatabaseModels/ProxmoxClusterOwnerRule.ts +596 -0
  14. package/Models/DatabaseModels/ProxmoxClusterOwnerTeam.ts +487 -0
  15. package/Models/DatabaseModels/ProxmoxClusterOwnerUser.ts +486 -0
  16. package/Models/DatabaseModels/ProxmoxResource.ts +726 -0
  17. package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
  18. package/Server/API/BillingInvoiceAPI.ts +47 -7
  19. package/Server/API/CephResourceAPI.ts +134 -0
  20. package/Server/API/DashboardAPI.ts +46 -0
  21. package/Server/API/ProjectAPI.ts +15 -0
  22. package/Server/API/ProxmoxResourceAPI.ts +132 -0
  23. package/Server/API/ResellerPlanAPI.ts +17 -0
  24. package/Server/Infrastructure/GlobalCache.ts +8 -2
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.ts +163 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.ts +211 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.ts +590 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.ts +64 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  30. package/Server/Infrastructure/Redis.ts +40 -12
  31. package/Server/Services/AnalyticsDatabaseService.ts +1 -1
  32. package/Server/Services/BillingService.ts +109 -21
  33. package/Server/Services/CephClusterLabelRuleEngineService.ts +200 -0
  34. package/Server/Services/CephClusterLabelRuleService.ts +14 -0
  35. package/Server/Services/CephClusterOwnerRuleEngineService.ts +218 -0
  36. package/Server/Services/CephClusterOwnerRuleService.ts +14 -0
  37. package/Server/Services/CephClusterOwnerTeamService.ts +10 -0
  38. package/Server/Services/CephClusterOwnerUserService.ts +10 -0
  39. package/Server/Services/CephClusterService.ts +401 -0
  40. package/Server/Services/CephResourceService.ts +383 -0
  41. package/Server/Services/CloudResourceService.ts +11 -3
  42. package/Server/Services/DockerHostService.ts +11 -3
  43. package/Server/Services/ExceptionAggregationService.ts +2 -0
  44. package/Server/Services/HostService.ts +11 -3
  45. package/Server/Services/Index.ts +24 -0
  46. package/Server/Services/KubernetesClusterService.ts +11 -3
  47. package/Server/Services/LogAggregationService.ts +2 -0
  48. package/Server/Services/MetricAggregationService.ts +2 -0
  49. package/Server/Services/OpenTelemetryIngestService.ts +36 -0
  50. package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +204 -0
  51. package/Server/Services/ProxmoxClusterLabelRuleService.ts +14 -0
  52. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +222 -0
  53. package/Server/Services/ProxmoxClusterOwnerRuleService.ts +14 -0
  54. package/Server/Services/ProxmoxClusterOwnerTeamService.ts +10 -0
  55. package/Server/Services/ProxmoxClusterOwnerUserService.ts +10 -0
  56. package/Server/Services/ProxmoxClusterService.ts +382 -0
  57. package/Server/Services/ProxmoxResourceService.ts +404 -0
  58. package/Server/Services/RumApplicationService.ts +11 -3
  59. package/Server/Services/ServerlessFunctionService.ts +11 -3
  60. package/Server/Services/TelemetryUsageBillingService.ts +41 -3
  61. package/Server/Services/TraceAggregationService.ts +2 -0
  62. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +8 -23
  63. package/Server/Utils/Monitor/MonitorAlert.ts +45 -0
  64. package/Server/Utils/Monitor/MonitorClusterContext.ts +129 -0
  65. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +344 -4
  66. package/Server/Utils/Monitor/MonitorIncident.ts +130 -7
  67. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +39 -6
  68. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -1
  69. package/Server/Utils/Monitor/SeriesResourceLabels.ts +33 -0
  70. package/Server/Utils/Profiling.ts +37 -2
  71. package/Server/Utils/Telemetry/EntityRegistry.ts +4 -0
  72. package/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.ts +1096 -0
  73. package/Server/Utils/Telemetry/TelemetryEntity.ts +85 -0
  74. package/Server/Utils/Telemetry.ts +8 -19
  75. package/Tests/Server/API/BillingInvoiceAPI.test.ts +194 -0
  76. package/Tests/Server/API/ProjectAPI.test.ts +91 -0
  77. package/Tests/Server/API/ResellerPlanAPI.test.ts +207 -0
  78. package/Tests/Server/Infrastructure/GlobalCache.test.ts +100 -0
  79. package/Tests/Server/Services/BillingService.test.ts +323 -0
  80. package/Tests/Server/Services/CephResourceService.test.ts +264 -0
  81. package/Tests/Server/Services/ProxmoxResourceService.test.ts +326 -0
  82. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +322 -0
  83. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +13 -0
  84. package/Tests/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.test.ts +879 -0
  85. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +196 -0
  86. package/Tests/Types/Monitor/CephAlertTemplates.test.ts +1231 -0
  87. package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +732 -0
  88. package/Tests/Utils/ModelImportExport.test.ts +366 -0
  89. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +49 -0
  90. package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +423 -0
  91. package/Types/BaseDatabase/AggregationIntervalUtil.ts +74 -0
  92. package/Types/Dashboard/DashboardComponentType.ts +4 -0
  93. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  94. package/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.ts +15 -0
  95. package/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.ts +14 -0
  96. package/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.ts +17 -0
  97. package/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.ts +16 -0
  98. package/Types/Dashboard/DashboardTemplates.ts +446 -0
  99. package/Types/Icon/IconProp.ts +2 -0
  100. package/Types/Monitor/CephAlertTemplates.ts +1647 -0
  101. package/Types/Monitor/CephMetricCatalog.ts +409 -0
  102. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +44 -0
  103. package/Types/Monitor/MonitorStep.ts +64 -0
  104. package/Types/Monitor/MonitorStepCephMonitor.ts +57 -0
  105. package/Types/Monitor/MonitorStepProxmoxMonitor.ts +81 -0
  106. package/Types/Monitor/MonitorType.ts +29 -1
  107. package/Types/Monitor/ProxmoxAlertTemplates.ts +899 -0
  108. package/Types/Monitor/ProxmoxMetricCatalog.ts +382 -0
  109. package/Types/Permission.ts +464 -0
  110. package/Types/Telemetry/EntityType.ts +11 -0
  111. package/Types/Telemetry/ServiceType.ts +2 -0
  112. package/UI/Components/Icon/Icon.tsx +84 -0
  113. package/UI/Components/ImportExport/ExportModelCard.tsx +90 -0
  114. package/UI/Components/ImportExport/ImportModelsModal.tsx +239 -0
  115. package/UI/Components/ModelTable/ModelTable.tsx +294 -143
  116. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +9 -5
  117. package/UI/Utils/ModelImportExport.ts +207 -0
  118. package/UI/Utils/Telemetry/Telemetry.ts +16 -21
  119. package/UI/Utils/TelemetryService.ts +7 -3
  120. package/Utils/Dashboard/Components/DashboardCephOsdListComponent.ts +63 -0
  121. package/Utils/Dashboard/Components/DashboardCephPoolListComponent.ts +32 -0
  122. package/Utils/Dashboard/Components/DashboardCephResourceListShared.ts +61 -0
  123. package/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.ts +69 -0
  124. package/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.ts +55 -0
  125. package/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.ts +61 -0
  126. package/Utils/Dashboard/Components/Index.ts +28 -0
  127. package/Utils/ModelImportExport.ts +369 -0
  128. package/Utils/Telemetry/EntityKey.ts +35 -0
  129. package/Utils/Telemetry/EntityRelationship.ts +6 -0
  130. package/Utils/Telemetry/HeartbeatAvailability.ts +262 -0
  131. package/build/dist/Models/DatabaseModels/Alert.js +108 -0
  132. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  133. package/build/dist/Models/DatabaseModels/CephCluster.js +992 -0
  134. package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -0
  135. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js +522 -0
  136. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js.map +1 -0
  137. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js +603 -0
  138. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js.map +1 -0
  139. package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js +503 -0
  140. package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js.map +1 -0
  141. package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js +502 -0
  142. package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js.map +1 -0
  143. package/build/dist/Models/DatabaseModels/CephResource.js +846 -0
  144. package/build/dist/Models/DatabaseModels/CephResource.js.map +1 -0
  145. package/build/dist/Models/DatabaseModels/Host.js +63 -0
  146. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  147. package/build/dist/Models/DatabaseModels/Incident.js +108 -0
  148. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  149. package/build/dist/Models/DatabaseModels/Index.js +24 -0
  150. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  151. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +967 -0
  152. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -0
  153. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js +522 -0
  154. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js.map +1 -0
  155. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js +603 -0
  156. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js.map +1 -0
  157. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js +503 -0
  158. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js.map +1 -0
  159. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js +502 -0
  160. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js.map +1 -0
  161. package/build/dist/Models/DatabaseModels/ProxmoxResource.js +761 -0
  162. package/build/dist/Models/DatabaseModels/ProxmoxResource.js.map +1 -0
  163. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
  164. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  165. package/build/dist/Server/API/BillingInvoiceAPI.js +35 -5
  166. package/build/dist/Server/API/BillingInvoiceAPI.js.map +1 -1
  167. package/build/dist/Server/API/CephResourceAPI.js +98 -0
  168. package/build/dist/Server/API/CephResourceAPI.js.map +1 -0
  169. package/build/dist/Server/API/DashboardAPI.js +46 -0
  170. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  171. package/build/dist/Server/API/ProjectAPI.js +11 -0
  172. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  173. package/build/dist/Server/API/ProxmoxResourceAPI.js +95 -0
  174. package/build/dist/Server/API/ProxmoxResourceAPI.js.map +1 -0
  175. package/build/dist/Server/API/ResellerPlanAPI.js +17 -3
  176. package/build/dist/Server/API/ResellerPlanAPI.js.map +1 -1
  177. package/build/dist/Server/Infrastructure/GlobalCache.js +7 -2
  178. package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
  179. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.js +76 -0
  180. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.js.map +1 -0
  181. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.js +108 -0
  182. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.js.map +1 -0
  183. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.js +253 -0
  184. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.js.map +1 -0
  185. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.js +43 -0
  186. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.js.map +1 -0
  187. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  189. package/build/dist/Server/Infrastructure/Redis.js +31 -8
  190. package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
  191. package/build/dist/Server/Services/AnalyticsDatabaseService.js +1 -1
  192. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  193. package/build/dist/Server/Services/BillingService.js +85 -23
  194. package/build/dist/Server/Services/BillingService.js.map +1 -1
  195. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +166 -0
  196. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -0
  197. package/build/dist/Server/Services/CephClusterLabelRuleService.js +13 -0
  198. package/build/dist/Server/Services/CephClusterLabelRuleService.js.map +1 -0
  199. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +186 -0
  200. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -0
  201. package/build/dist/Server/Services/CephClusterOwnerRuleService.js +13 -0
  202. package/build/dist/Server/Services/CephClusterOwnerRuleService.js.map +1 -0
  203. package/build/dist/Server/Services/CephClusterOwnerTeamService.js +9 -0
  204. package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -0
  205. package/build/dist/Server/Services/CephClusterOwnerUserService.js +9 -0
  206. package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -0
  207. package/build/dist/Server/Services/CephClusterService.js +353 -0
  208. package/build/dist/Server/Services/CephClusterService.js.map +1 -0
  209. package/build/dist/Server/Services/CephResourceService.js +257 -0
  210. package/build/dist/Server/Services/CephResourceService.js.map +1 -0
  211. package/build/dist/Server/Services/CloudResourceService.js +10 -2
  212. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  213. package/build/dist/Server/Services/DockerHostService.js +10 -2
  214. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  215. package/build/dist/Server/Services/ExceptionAggregationService.js +2 -0
  216. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  217. package/build/dist/Server/Services/HostService.js +10 -2
  218. package/build/dist/Server/Services/HostService.js.map +1 -1
  219. package/build/dist/Server/Services/Index.js +24 -0
  220. package/build/dist/Server/Services/Index.js.map +1 -1
  221. package/build/dist/Server/Services/KubernetesClusterService.js +10 -2
  222. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  223. package/build/dist/Server/Services/LogAggregationService.js +2 -0
  224. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  225. package/build/dist/Server/Services/MetricAggregationService.js +2 -0
  226. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  227. package/build/dist/Server/Services/OpenTelemetryIngestService.js +37 -7
  228. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  229. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +166 -0
  230. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -0
  231. package/build/dist/Server/Services/ProxmoxClusterLabelRuleService.js +13 -0
  232. package/build/dist/Server/Services/ProxmoxClusterLabelRuleService.js.map +1 -0
  233. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +186 -0
  234. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -0
  235. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleService.js +13 -0
  236. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleService.js.map +1 -0
  237. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +9 -0
  238. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -0
  239. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +9 -0
  240. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -0
  241. package/build/dist/Server/Services/ProxmoxClusterService.js +337 -0
  242. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -0
  243. package/build/dist/Server/Services/ProxmoxResourceService.js +285 -0
  244. package/build/dist/Server/Services/ProxmoxResourceService.js.map +1 -0
  245. package/build/dist/Server/Services/RumApplicationService.js +10 -2
  246. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  247. package/build/dist/Server/Services/ServerlessFunctionService.js +10 -2
  248. package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
  249. package/build/dist/Server/Services/TelemetryUsageBillingService.js +30 -3
  250. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  251. package/build/dist/Server/Services/TraceAggregationService.js +2 -0
  252. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  253. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +8 -25
  254. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  255. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +36 -0
  256. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  257. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +90 -0
  258. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -0
  259. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +228 -4
  260. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  261. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +103 -8
  262. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  263. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +23 -6
  264. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  265. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -1
  266. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  267. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +23 -0
  268. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  269. package/build/dist/Server/Utils/Profiling.js +24 -3
  270. package/build/dist/Server/Utils/Profiling.js.map +1 -1
  271. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +4 -0
  272. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  273. package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js +854 -0
  274. package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js.map +1 -0
  275. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +62 -0
  276. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  277. package/build/dist/Server/Utils/Telemetry.js +8 -10
  278. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  279. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +69 -0
  280. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -0
  281. package/build/dist/Types/Dashboard/DashboardComponentType.js +4 -0
  282. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  283. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  284. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  285. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.js +2 -0
  286. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.js.map +1 -0
  287. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.js +2 -0
  288. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.js.map +1 -0
  289. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.js +2 -0
  290. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.js.map +1 -0
  291. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.js +2 -0
  292. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.js.map +1 -0
  293. package/build/dist/Types/Dashboard/DashboardTemplates.js +394 -0
  294. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  295. package/build/dist/Types/Icon/IconProp.js +2 -0
  296. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  297. package/build/dist/Types/Monitor/CephAlertTemplates.js +1379 -0
  298. package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -0
  299. package/build/dist/Types/Monitor/CephMetricCatalog.js +353 -0
  300. package/build/dist/Types/Monitor/CephMetricCatalog.js.map +1 -0
  301. package/build/dist/Types/Monitor/MonitorStep.js +46 -0
  302. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  303. package/build/dist/Types/Monitor/MonitorStepCephMonitor.js +34 -0
  304. package/build/dist/Types/Monitor/MonitorStepCephMonitor.js.map +1 -0
  305. package/build/dist/Types/Monitor/MonitorStepProxmoxMonitor.js +36 -0
  306. package/build/dist/Types/Monitor/MonitorStepProxmoxMonitor.js.map +1 -0
  307. package/build/dist/Types/Monitor/MonitorType.js +27 -1
  308. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  309. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +743 -0
  310. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -0
  311. package/build/dist/Types/Monitor/ProxmoxMetricCatalog.js +320 -0
  312. package/build/dist/Types/Monitor/ProxmoxMetricCatalog.js.map +1 -0
  313. package/build/dist/Types/Permission.js +408 -0
  314. package/build/dist/Types/Permission.js.map +1 -1
  315. package/build/dist/Types/Telemetry/EntityType.js +11 -0
  316. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  317. package/build/dist/Types/Telemetry/ServiceType.js +2 -0
  318. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  319. package/build/dist/UI/Components/Icon/Icon.js +33 -0
  320. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  321. package/build/dist/UI/Components/ImportExport/ExportModelCard.js +50 -0
  322. package/build/dist/UI/Components/ImportExport/ExportModelCard.js.map +1 -0
  323. package/build/dist/UI/Components/ImportExport/ImportModelsModal.js +115 -0
  324. package/build/dist/UI/Components/ImportExport/ImportModelsModal.js.map +1 -0
  325. package/build/dist/UI/Components/ModelTable/ModelTable.js +166 -74
  326. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  327. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +5 -1
  328. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  329. package/build/dist/UI/Utils/ModelImportExport.js +142 -0
  330. package/build/dist/UI/Utils/ModelImportExport.js.map +1 -0
  331. package/build/dist/UI/Utils/Telemetry/Telemetry.js +11 -10
  332. package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
  333. package/build/dist/UI/Utils/TelemetryService.js +5 -2
  334. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  335. package/build/dist/Utils/Dashboard/Components/DashboardCephOsdListComponent.js +50 -0
  336. package/build/dist/Utils/Dashboard/Components/DashboardCephOsdListComponent.js.map +1 -0
  337. package/build/dist/Utils/Dashboard/Components/DashboardCephPoolListComponent.js +27 -0
  338. package/build/dist/Utils/Dashboard/Components/DashboardCephPoolListComponent.js.map +1 -0
  339. package/build/dist/Utils/Dashboard/Components/DashboardCephResourceListShared.js +46 -0
  340. package/build/dist/Utils/Dashboard/Components/DashboardCephResourceListShared.js.map +1 -0
  341. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.js +55 -0
  342. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.js.map +1 -0
  343. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.js +42 -0
  344. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.js.map +1 -0
  345. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.js +46 -0
  346. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.js.map +1 -0
  347. package/build/dist/Utils/Dashboard/Components/Index.js +16 -0
  348. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  349. package/build/dist/Utils/ModelImportExport.js +257 -0
  350. package/build/dist/Utils/ModelImportExport.js.map +1 -0
  351. package/build/dist/Utils/Telemetry/EntityKey.js +27 -0
  352. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  353. package/build/dist/Utils/Telemetry/EntityRelationship.js +3 -0
  354. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  355. package/build/dist/Utils/Telemetry/HeartbeatAvailability.js +174 -0
  356. package/build/dist/Utils/Telemetry/HeartbeatAvailability.js.map +1 -0
  357. package/package.json +29 -21
@@ -1,15 +1,35 @@
1
1
  import ModelAPI, { RequestOptions } from "../../Utils/ModelAPI/ModelAPI";
2
+ import API from "../../Utils/API/API";
3
+ import ModelImportExportUtil, {
4
+ ImportResult,
5
+ } from "../../Utils/ModelImportExport";
6
+ import PermissionUtil from "../../Utils/Permission";
7
+ import User from "../../Utils/User";
2
8
  import { FormType, ModelField } from "../Forms/ModelForm";
3
9
  import ModelFormModal from "../ModelFormModal/ModelFormModal";
4
- import BaseModelTable, { BaseTableProps, ModalType } from "./BaseModelTable";
10
+ import BaseModelTable, {
11
+ BaseTableProps,
12
+ BulkActionProps,
13
+ ModalType,
14
+ } from "./BaseModelTable";
15
+ import {
16
+ BulkActionButtonSchema,
17
+ BulkActionFailed,
18
+ BulkActionOnClickProps,
19
+ } from "../BulkUpdate/BulkUpdateForm";
20
+ import ImportModelsModal from "../ImportExport/ImportModelsModal";
21
+ import { ButtonStyleType } from "../Button/Button";
22
+ import { ComponentProps as CardComponentProps } from "../Card/Card";
5
23
  import { AnalyticsBaseModelType } from "../../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel";
6
24
  import BaseModel, {
7
25
  DatabaseBaseModelType,
8
26
  } from "../../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
9
27
  import Dictionary from "../../../Types/Dictionary";
28
+ import IconProp from "../../../Types/Icon/IconProp";
10
29
  import { JSONObject } from "../../../Types/JSON";
11
30
  import ObjectID from "../../../Types/ObjectID";
12
- import React, { ReactElement } from "react";
31
+ import Permission from "../../../Types/Permission";
32
+ import React, { ReactElement, useState } from "react";
13
33
  import Query from "../../../Types/BaseDatabase/Query";
14
34
  import GroupBy from "../../../Types/BaseDatabase/GroupBy";
15
35
  import Sort from "../../../Types/BaseDatabase/Sort";
@@ -18,6 +38,7 @@ import Select from "../../../Types/BaseDatabase/Select";
18
38
  export interface ComponentProps<TBaseModel extends BaseModel>
19
39
  extends BaseTableProps<TBaseModel> {
20
40
  modelAPI?: typeof ModelAPI | undefined;
41
+ enableJsonImportExport?: boolean | undefined;
21
42
  }
22
43
 
23
44
  const ModelTable: <TBaseModel extends BaseModel>(
@@ -28,160 +49,290 @@ const ModelTable: <TBaseModel extends BaseModel>(
28
49
  const modelAPI: typeof ModelAPI = props.modelAPI || ModelAPI;
29
50
  const model: TBaseModel = new props.modelType();
30
51
 
31
- return (
32
- <BaseModelTable
33
- {...props}
34
- callbacks={{
35
- getJSONFromModel: (item: TBaseModel): JSONObject => {
36
- return BaseModel.toJSONObject(item, props.modelType);
37
- },
52
+ const [showImportModal, setShowImportModal] = useState<boolean>(false);
53
+ const [importRefreshCounter, setImportRefreshCounter] = useState<number>(0);
38
54
 
39
- updateById: async (args: { id: ObjectID; data: JSONObject }) => {
40
- const { id, data } = args;
55
+ type GetExportBulkActionFunction = () => BulkActionButtonSchema<TBaseModel>;
41
56
 
42
- await modelAPI.updateById({
43
- modelType: props.modelType,
44
- id: new ObjectID(id),
45
- data: data,
46
- });
47
- },
57
+ const getExportBulkAction: GetExportBulkActionFunction =
58
+ (): BulkActionButtonSchema<TBaseModel> => {
59
+ return {
60
+ title: "Export JSON",
61
+ buttonStyleType: ButtonStyleType.NORMAL,
62
+ icon: IconProp.Download,
63
+ onClick: async ({
64
+ items,
65
+ onProgressInfo,
66
+ onBulkActionStart,
67
+ onBulkActionEnd,
68
+ }: BulkActionOnClickProps<TBaseModel>) => {
69
+ onBulkActionStart();
48
70
 
49
- toJSONArray: (items: TBaseModel[]): JSONObject[] => {
50
- return BaseModel.toJSONObjectArray(items, props.modelType);
51
- },
71
+ const inProgressItems: Array<TBaseModel> = [...items];
72
+ const successItems: Array<TBaseModel> = [];
73
+ const failedItems: Array<BulkActionFailed<TBaseModel>> = [];
74
+ const itemsToExport: Array<TBaseModel> = [];
52
75
 
53
- getList: async (data: {
54
- modelType: DatabaseBaseModelType | AnalyticsBaseModelType;
55
- query: Query<TBaseModel>;
56
- groupBy?: GroupBy<TBaseModel> | undefined;
57
- limit: number;
58
- skip: number;
59
- sort: Sort<TBaseModel>;
60
- select: Select<TBaseModel>;
61
- requestOptions?: RequestOptions | undefined;
62
- }) => {
63
- return await modelAPI.getList<TBaseModel>({
64
- modelType: data.modelType as { new (): TBaseModel },
65
- query: data.query,
66
- limit: data.limit,
67
- groupBy: data.groupBy,
68
- skip: data.skip,
69
- sort: data.sort,
70
- select: data.select,
71
- requestOptions: data.requestOptions,
72
- });
73
- },
76
+ for (const item of items) {
77
+ inProgressItems.splice(inProgressItems.indexOf(item), 1);
74
78
 
75
- addSlugToSelect: (select: Select<TBaseModel>): Select<TBaseModel> => {
76
- const slugifyColumn: string | null = (
77
- model as BaseModel
78
- ).getSlugifyColumn();
79
+ try {
80
+ if (!item.id) {
81
+ throw new Error(
82
+ `${model.singularName || "Item"} id not found.`,
83
+ );
84
+ }
85
+
86
+ const fetchedItem: TBaseModel =
87
+ await ModelImportExportUtil.fetchItemForExport<TBaseModel>({
88
+ modelType: props.modelType,
89
+ modelId: item.id,
90
+ modelAPI: modelAPI,
91
+ });
92
+
93
+ itemsToExport.push(fetchedItem);
94
+ successItems.push(item);
95
+ } catch (err) {
96
+ failedItems.push({
97
+ item: item,
98
+ failedMessage: API.getFriendlyMessage(err),
99
+ });
100
+ }
101
+
102
+ onProgressInfo({
103
+ totalItems: items,
104
+ inProgressItems: [...inProgressItems],
105
+ successItems: [...successItems],
106
+ failed: [...failedItems],
107
+ });
108
+ }
79
109
 
80
- if (slugifyColumn) {
81
- (select as Dictionary<boolean>)[slugifyColumn] = true;
110
+ if (itemsToExport.length > 0) {
111
+ ModelImportExportUtil.downloadExportFile({
112
+ modelType: props.modelType,
113
+ items: itemsToExport,
114
+ });
82
115
  }
83
116
 
84
- return select;
117
+ onBulkActionEnd();
85
118
  },
119
+ };
120
+ };
86
121
 
87
- showCreateEditModal: (data: {
88
- modalType: ModalType;
89
- modelIdToEdit?: ObjectID | undefined;
90
- onBeforeCreate?:
91
- | ((
92
- item: TBaseModel,
93
- miscDataProps: JSONObject,
94
- ) => Promise<TBaseModel>)
95
- | undefined;
96
- onSuccess?: ((item: TBaseModel) => void) | undefined;
97
- onClose?: (() => void) | undefined;
98
- }): ReactElement => {
99
- const {
100
- modalType,
101
- modelIdToEdit,
102
- onBeforeCreate,
103
- onSuccess,
104
- onClose,
105
- } = data;
106
-
107
- return (
108
- <ModelFormModal<TBaseModel>
109
- modelAPI={props.modelAPI}
110
- title={
111
- modalType === ModalType.Create
112
- ? `${props.createVerb || "Create"} New ${
113
- props.singularName || model.singularName
114
- }`
115
- : `Edit ${props.singularName || model.singularName}`
116
- }
117
- formRef={props.createEditFromRef}
118
- modalWidth={props.createEditModalWidth}
119
- name={
120
- modalType === ModalType.Create
121
- ? `${props.name} > ${props.createVerb || "Create"} New ${
122
- props.singularName || model.singularName
123
- }`
124
- : `${props.name} > Edit ${
125
- props.singularName || model.singularName
126
- }`
127
- }
128
- initialValues={
129
- modalType === ModalType.Create
130
- ? props.createInitialValues
131
- : undefined
132
- }
133
- onClose={onClose}
134
- submitButtonText={
135
- modalType === ModalType.Create
136
- ? `${props.createVerb || "Create"} ${
137
- props.singularName || model.singularName
138
- }`
139
- : `Save Changes`
140
- }
141
- onSuccess={onSuccess}
142
- onBeforeCreate={onBeforeCreate}
143
- modelType={props.modelType}
144
- formProps={{
145
- summary: props.formSummary,
146
- name: `create-${props.modelType.name}-from`,
147
- modelType: props.modelType,
148
- id: `create-${props.modelType.name}-from`,
149
- fields:
150
- props.formFields?.filter((field: ModelField<TBaseModel>) => {
151
- // If the field has doNotShowWhenEditing set to true, then don't show it when editing
152
-
153
- if (modelIdToEdit) {
154
- return !field.doNotShowWhenEditing;
155
- }
156
-
157
- // If the field has doNotShowWhenCreating set to true, then don't show it when creating
158
-
159
- return !field.doNotShowWhenCreating;
160
- }) || [],
161
- steps: props.formSteps || [],
162
- formType:
122
+ let bulkActions: BulkActionProps<TBaseModel> | undefined = props.bulkActions;
123
+ let cardProps: CardComponentProps | undefined = props.cardProps;
124
+ let refreshToggle: string | undefined = props.refreshToggle;
125
+
126
+ if (props.enableJsonImportExport) {
127
+ bulkActions = {
128
+ ...(props.bulkActions || {}),
129
+ buttons: [...(props.bulkActions?.buttons || []), getExportBulkAction()],
130
+ };
131
+
132
+ const permissions: Array<Permission> | null =
133
+ PermissionUtil.getAllPermissions();
134
+
135
+ const hasPermissionToCreate: boolean = permissions
136
+ ? model.hasCreatePermissions(permissions) || User.isMasterAdmin()
137
+ : false;
138
+
139
+ if (hasPermissionToCreate) {
140
+ cardProps = {
141
+ ...(props.cardProps || {}),
142
+ buttons: [
143
+ ...(props.cardProps?.buttons || []),
144
+ {
145
+ title: "Import JSON",
146
+ buttonStyle: ButtonStyleType.OUTLINE,
147
+ icon: IconProp.Upload,
148
+ onClick: () => {
149
+ setShowImportModal(true);
150
+ },
151
+ },
152
+ ],
153
+ };
154
+ }
155
+
156
+ refreshToggle = `${props.refreshToggle || ""}-import-${importRefreshCounter}`;
157
+ }
158
+
159
+ return (
160
+ <>
161
+ {showImportModal && (
162
+ <ImportModelsModal<TBaseModel>
163
+ modelType={props.modelType as { new (): TBaseModel }}
164
+ modelAPI={modelAPI}
165
+ onClose={() => {
166
+ setShowImportModal(false);
167
+ }}
168
+ onImportComplete={(result: ImportResult) => {
169
+ if (result.successCount > 0) {
170
+ setImportRefreshCounter((counter: number) => {
171
+ return counter + 1;
172
+ });
173
+ }
174
+ }}
175
+ />
176
+ )}
177
+ <BaseModelTable
178
+ {...props}
179
+ bulkActions={bulkActions}
180
+ cardProps={cardProps}
181
+ refreshToggle={refreshToggle}
182
+ callbacks={{
183
+ getJSONFromModel: (item: TBaseModel): JSONObject => {
184
+ return BaseModel.toJSONObject(item, props.modelType);
185
+ },
186
+
187
+ updateById: async (args: { id: ObjectID; data: JSONObject }) => {
188
+ const { id, data } = args;
189
+
190
+ await modelAPI.updateById({
191
+ modelType: props.modelType,
192
+ id: new ObjectID(id),
193
+ data: data,
194
+ });
195
+ },
196
+
197
+ toJSONArray: (items: TBaseModel[]): JSONObject[] => {
198
+ return BaseModel.toJSONObjectArray(items, props.modelType);
199
+ },
200
+
201
+ getList: async (data: {
202
+ modelType: DatabaseBaseModelType | AnalyticsBaseModelType;
203
+ query: Query<TBaseModel>;
204
+ groupBy?: GroupBy<TBaseModel> | undefined;
205
+ limit: number;
206
+ skip: number;
207
+ sort: Sort<TBaseModel>;
208
+ select: Select<TBaseModel>;
209
+ requestOptions?: RequestOptions | undefined;
210
+ }) => {
211
+ return await modelAPI.getList<TBaseModel>({
212
+ modelType: data.modelType as { new (): TBaseModel },
213
+ query: data.query,
214
+ limit: data.limit,
215
+ groupBy: data.groupBy,
216
+ skip: data.skip,
217
+ sort: data.sort,
218
+ select: data.select,
219
+ requestOptions: data.requestOptions,
220
+ });
221
+ },
222
+
223
+ addSlugToSelect: (select: Select<TBaseModel>): Select<TBaseModel> => {
224
+ const slugifyColumn: string | null = (
225
+ model as BaseModel
226
+ ).getSlugifyColumn();
227
+
228
+ if (slugifyColumn) {
229
+ (select as Dictionary<boolean>)[slugifyColumn] = true;
230
+ }
231
+
232
+ return select;
233
+ },
234
+
235
+ showCreateEditModal: (data: {
236
+ modalType: ModalType;
237
+ modelIdToEdit?: ObjectID | undefined;
238
+ onBeforeCreate?:
239
+ | ((
240
+ item: TBaseModel,
241
+ miscDataProps: JSONObject,
242
+ ) => Promise<TBaseModel>)
243
+ | undefined;
244
+ onSuccess?: ((item: TBaseModel) => void) | undefined;
245
+ onClose?: (() => void) | undefined;
246
+ }): ReactElement => {
247
+ const {
248
+ modalType,
249
+ modelIdToEdit,
250
+ onBeforeCreate,
251
+ onSuccess,
252
+ onClose,
253
+ } = data;
254
+
255
+ return (
256
+ <ModelFormModal<TBaseModel>
257
+ modelAPI={props.modelAPI}
258
+ title={
163
259
  modalType === ModalType.Create
164
- ? FormType.Create
165
- : FormType.Update,
166
- }}
167
- modelIdToEdit={modelIdToEdit}
168
- />
169
- );
170
- },
260
+ ? `${props.createVerb || "Create"} New ${
261
+ props.singularName || model.singularName
262
+ }`
263
+ : `Edit ${props.singularName || model.singularName}`
264
+ }
265
+ formRef={props.createEditFromRef}
266
+ modalWidth={props.createEditModalWidth}
267
+ name={
268
+ modalType === ModalType.Create
269
+ ? `${props.name} > ${props.createVerb || "Create"} New ${
270
+ props.singularName || model.singularName
271
+ }`
272
+ : `${props.name} > Edit ${
273
+ props.singularName || model.singularName
274
+ }`
275
+ }
276
+ initialValues={
277
+ modalType === ModalType.Create
278
+ ? props.createInitialValues
279
+ : undefined
280
+ }
281
+ onClose={onClose}
282
+ submitButtonText={
283
+ modalType === ModalType.Create
284
+ ? `${props.createVerb || "Create"} ${
285
+ props.singularName || model.singularName
286
+ }`
287
+ : `Save Changes`
288
+ }
289
+ onSuccess={onSuccess}
290
+ onBeforeCreate={onBeforeCreate}
291
+ modelType={props.modelType}
292
+ formProps={{
293
+ summary: props.formSummary,
294
+ name: `create-${props.modelType.name}-from`,
295
+ modelType: props.modelType,
296
+ id: `create-${props.modelType.name}-from`,
297
+ fields:
298
+ props.formFields?.filter(
299
+ (field: ModelField<TBaseModel>) => {
300
+ // If the field has doNotShowWhenEditing set to true, then don't show it when editing
171
301
 
172
- getModelFromJSON: (item: JSONObject): TBaseModel => {
173
- return BaseModel.fromJSON(item, props.modelType) as TBaseModel;
174
- },
302
+ if (modelIdToEdit) {
303
+ return !field.doNotShowWhenEditing;
304
+ }
175
305
 
176
- deleteItem: async (item: TBaseModel) => {
177
- await modelAPI.deleteItem({
178
- modelType: props.modelType,
179
- id: item.id as ObjectID,
180
- requestOptions: props.deleteRequestOptions,
181
- });
182
- },
183
- }}
184
- />
306
+ // If the field has doNotShowWhenCreating set to true, then don't show it when creating
307
+
308
+ return !field.doNotShowWhenCreating;
309
+ },
310
+ ) || [],
311
+ steps: props.formSteps || [],
312
+ formType:
313
+ modalType === ModalType.Create
314
+ ? FormType.Create
315
+ : FormType.Update,
316
+ }}
317
+ modelIdToEdit={modelIdToEdit}
318
+ />
319
+ );
320
+ },
321
+
322
+ getModelFromJSON: (item: JSONObject): TBaseModel => {
323
+ return BaseModel.fromJSON(item, props.modelType) as TBaseModel;
324
+ },
325
+
326
+ deleteItem: async (item: TBaseModel) => {
327
+ await modelAPI.deleteItem({
328
+ modelType: props.modelType,
329
+ id: item.id as ObjectID,
330
+ requestOptions: props.deleteRequestOptions,
331
+ });
332
+ },
333
+ }}
334
+ />
335
+ </>
185
336
  );
186
337
  };
187
338
 
@@ -32,10 +32,10 @@ export default class TemplateVariablesCatalog {
32
32
  monitorType: MonitorType;
33
33
  /**
34
34
  * Attribute keys the user has configured on the metric query
35
- * (e.g. ["host.name", "region"]). For metric/kubernetes/docker
36
- * monitors, these become per-series template variables — one
37
- * incident fires per unique value combination, and each incident
38
- * can reference the label values via `{{host.name}}` etc.
35
+ * (e.g. ["host.name", "region"]). For metric/kubernetes/docker/
36
+ * proxmox/ceph monitors, these become per-series template variables
37
+ * — one incident fires per unique value combination, and each
38
+ * incident can reference the label values via `{{host.name}}` etc.
39
39
  */
40
40
  seriesAttributeKeys?: Array<string> | undefined;
41
41
  }): Array<TemplateVariableGroup> {
@@ -52,7 +52,9 @@ export default class TemplateVariablesCatalog {
52
52
  if (
53
53
  input.monitorType === MonitorType.Metrics ||
54
54
  input.monitorType === MonitorType.Kubernetes ||
55
- input.monitorType === MonitorType.Docker
55
+ input.monitorType === MonitorType.Docker ||
56
+ input.monitorType === MonitorType.Proxmox ||
57
+ input.monitorType === MonitorType.Ceph
56
58
  ) {
57
59
  groups.push(
58
60
  TemplateVariablesCatalog.seriesLabelsGroup(input.seriesAttributeKeys),
@@ -485,6 +487,8 @@ export default class TemplateVariablesCatalog {
485
487
  case MonitorType.Metrics:
486
488
  case MonitorType.Kubernetes:
487
489
  case MonitorType.Docker:
490
+ case MonitorType.Proxmox:
491
+ case MonitorType.Ceph:
488
492
  return {
489
493
  title: "Metric",
490
494
  variables: [