decoders.go 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389
  1. package source
  2. import (
  3. "github.com/opencost/opencost/core/pkg/util"
  4. )
  5. type PVResult struct {
  6. Cluster string
  7. PersistentVolume string
  8. }
  9. type PVUsedAvgResult struct {
  10. Cluster string
  11. Namespace string
  12. PersistentVolumeClaim string
  13. Data []*util.Vector
  14. }
  15. func DecodePVUsedAvgResult(result *QueryResult) *PVUsedAvgResult {
  16. cluster, _ := result.GetCluster()
  17. namespace, _ := result.GetNamespace()
  18. pvc, _ := result.GetString("persistentvolumeclaim")
  19. return &PVUsedAvgResult{
  20. Cluster: cluster,
  21. Namespace: namespace,
  22. PersistentVolumeClaim: pvc,
  23. Data: result.Values,
  24. }
  25. }
  26. type PVActiveMinutesResult struct {
  27. Cluster string
  28. PersistentVolume string
  29. Data []*util.Vector
  30. }
  31. func DecodePVActiveMinutesResult(result *QueryResult) *PVActiveMinutesResult {
  32. cluster, _ := result.GetCluster()
  33. pv, _ := result.GetString("persistentvolume")
  34. return &PVActiveMinutesResult{
  35. Cluster: cluster,
  36. PersistentVolume: pv,
  37. Data: result.Values,
  38. }
  39. }
  40. type PVUsedMaxResult struct {
  41. Cluster string
  42. Namespace string
  43. PersistentVolumeClaim string
  44. Data []*util.Vector
  45. }
  46. func DecodePVUsedMaxResult(result *QueryResult) *PVUsedMaxResult {
  47. cluster, _ := result.GetCluster()
  48. namespace, _ := result.GetNamespace()
  49. pvc, _ := result.GetString("persistentvolumeclaim")
  50. return &PVUsedMaxResult{
  51. Cluster: cluster,
  52. Namespace: namespace,
  53. PersistentVolumeClaim: pvc,
  54. Data: result.Values,
  55. }
  56. }
  57. type LocalStorageActiveMinutesResult struct {
  58. Cluster string
  59. Node string
  60. ProviderID string
  61. Data []*util.Vector
  62. }
  63. func DecodeLocalStorageActiveMinutesResult(result *QueryResult) *LocalStorageActiveMinutesResult {
  64. cluster, _ := result.GetCluster()
  65. node, _ := result.GetNode()
  66. providerId, _ := result.GetProviderID()
  67. return &LocalStorageActiveMinutesResult{
  68. Cluster: cluster,
  69. Node: node,
  70. ProviderID: providerId,
  71. Data: result.Values,
  72. }
  73. }
  74. type LocalStorageCostResult struct {
  75. Cluster string
  76. Instance string
  77. Device string
  78. Data []*util.Vector
  79. }
  80. func DecodeLocalStorageCostResult(result *QueryResult) *LocalStorageCostResult {
  81. cluster, _ := result.GetCluster()
  82. instance, _ := result.GetInstance()
  83. device, _ := result.GetDevice()
  84. return &LocalStorageCostResult{
  85. Cluster: cluster,
  86. Instance: instance,
  87. Device: device,
  88. Data: result.Values,
  89. }
  90. }
  91. type LocalStorageUsedCostResult struct {
  92. Cluster string
  93. Instance string
  94. Device string
  95. Data []*util.Vector
  96. }
  97. func DecodeLocalStorageUsedCostResult(result *QueryResult) *LocalStorageUsedCostResult {
  98. cluster, _ := result.GetCluster()
  99. instance, _ := result.GetInstance()
  100. device, _ := result.GetDevice()
  101. return &LocalStorageUsedCostResult{
  102. Cluster: cluster,
  103. Instance: instance,
  104. Device: device,
  105. Data: result.Values,
  106. }
  107. }
  108. type LocalStorageUsedAvgResult struct {
  109. Cluster string
  110. Instance string
  111. Device string
  112. Data []*util.Vector
  113. }
  114. func DecodeLocalStorageUsedAvgResult(result *QueryResult) *LocalStorageUsedAvgResult {
  115. cluster, _ := result.GetCluster()
  116. instance, _ := result.GetInstance()
  117. device, _ := result.GetDevice()
  118. return &LocalStorageUsedAvgResult{
  119. Cluster: cluster,
  120. Instance: instance,
  121. Device: device,
  122. Data: result.Values,
  123. }
  124. }
  125. type LocalStorageUsedMaxResult struct {
  126. Cluster string
  127. Instance string
  128. Device string
  129. Data []*util.Vector
  130. }
  131. func DecodeLocalStorageUsedMaxResult(result *QueryResult) *LocalStorageUsedMaxResult {
  132. cluster, _ := result.GetCluster()
  133. instance, _ := result.GetInstance()
  134. device, _ := result.GetDevice()
  135. return &LocalStorageUsedMaxResult{
  136. Cluster: cluster,
  137. Instance: instance,
  138. Device: device,
  139. Data: result.Values,
  140. }
  141. }
  142. type LocalStorageBytesResult struct {
  143. Cluster string
  144. Instance string
  145. Device string
  146. Data []*util.Vector
  147. }
  148. func DecodeLocalStorageBytesResult(result *QueryResult) *LocalStorageBytesResult {
  149. cluster, _ := result.GetCluster()
  150. instance, _ := result.GetInstance()
  151. device, _ := result.GetDevice()
  152. return &LocalStorageBytesResult{
  153. Cluster: cluster,
  154. Instance: instance,
  155. Device: device,
  156. Data: result.Values,
  157. }
  158. }
  159. type LocalStorageBytesByProviderResult = TotalStorageResult
  160. func DecodeLocalStorageBytesByProviderResult(result *QueryResult) *LocalStorageBytesByProviderResult {
  161. return DecodeTotalStorageResult(result)
  162. }
  163. type LocalStorageUsedByProviderResult = TotalStorageResult
  164. func DecodeLocalStorageUsedByProviderResult(result *QueryResult) *LocalStorageUsedByProviderResult {
  165. return DecodeTotalStorageResult(result)
  166. }
  167. type NodeActiveMinutesResult struct {
  168. Cluster string
  169. Node string
  170. ProviderID string
  171. Data []*util.Vector
  172. }
  173. func DecodeNodeActiveMinutesResult(result *QueryResult) *NodeActiveMinutesResult {
  174. cluster, _ := result.GetCluster()
  175. node, _ := result.GetNode()
  176. providerId, _ := result.GetProviderID()
  177. return &NodeActiveMinutesResult{
  178. Cluster: cluster,
  179. Node: node,
  180. ProviderID: providerId,
  181. Data: result.Values,
  182. }
  183. }
  184. type NodeCPUCoresCapacityResult struct {
  185. Cluster string
  186. Node string
  187. Data []*util.Vector
  188. }
  189. func DecodeNodeCPUCoresCapacityResult(result *QueryResult) *NodeCPUCoresCapacityResult {
  190. cluster, _ := result.GetCluster()
  191. node, _ := result.GetNode()
  192. return &NodeCPUCoresCapacityResult{
  193. Cluster: cluster,
  194. Node: node,
  195. Data: result.Values,
  196. }
  197. }
  198. type NodeCPUCoresAllocatableResult = NodeCPUCoresCapacityResult
  199. func DecodeNodeCPUCoresAllocatableResult(result *QueryResult) *NodeCPUCoresAllocatableResult {
  200. return DecodeNodeCPUCoresCapacityResult(result)
  201. }
  202. type NodeRAMBytesCapacityResult struct {
  203. Cluster string
  204. Node string
  205. Data []*util.Vector
  206. }
  207. func DecodeNodeRAMBytesCapacityResult(result *QueryResult) *NodeRAMBytesCapacityResult {
  208. cluster, _ := result.GetCluster()
  209. node, _ := result.GetNode()
  210. return &NodeRAMBytesCapacityResult{
  211. Cluster: cluster,
  212. Node: node,
  213. Data: result.Values,
  214. }
  215. }
  216. type NodeRAMBytesAllocatableResult = NodeRAMBytesCapacityResult
  217. func DecodeNodeRAMBytesAllocatableResult(result *QueryResult) *NodeRAMBytesAllocatableResult {
  218. return DecodeNodeRAMBytesCapacityResult(result)
  219. }
  220. type NodeGPUCountResult struct {
  221. Cluster string
  222. Node string
  223. ProviderID string
  224. Data []*util.Vector
  225. }
  226. func DecodeNodeGPUCountResult(result *QueryResult) *NodeGPUCountResult {
  227. cluster, _ := result.GetCluster()
  228. node, _ := result.GetNode()
  229. providerId, _ := result.GetProviderID()
  230. return &NodeGPUCountResult{
  231. Cluster: cluster,
  232. Node: node,
  233. ProviderID: providerId,
  234. Data: result.Values,
  235. }
  236. }
  237. type NodeCPUModeTotalResult struct {
  238. Cluster string
  239. Node string
  240. Mode string
  241. Data []*util.Vector
  242. }
  243. func DecodeNodeCPUModeTotalResult(result *QueryResult) *NodeCPUModeTotalResult {
  244. cluster, _ := result.GetCluster()
  245. node, _ := result.GetString("kubernetes_node")
  246. mode, _ := result.GetString("mode")
  247. return &NodeCPUModeTotalResult{
  248. Cluster: cluster,
  249. Node: node,
  250. Mode: mode,
  251. Data: result.Values,
  252. }
  253. }
  254. type NodeIsSpotResult struct {
  255. Cluster string
  256. Node string
  257. ProviderID string
  258. Data []*util.Vector
  259. }
  260. func DecodeNodeIsSpotResult(result *QueryResult) *NodeIsSpotResult {
  261. cluster, _ := result.GetCluster()
  262. node, _ := result.GetNode()
  263. providerId, _ := result.GetProviderID()
  264. return &NodeIsSpotResult{
  265. Cluster: cluster,
  266. Node: node,
  267. ProviderID: providerId,
  268. Data: result.Values,
  269. }
  270. }
  271. type NodeCPUModePercentResult struct {
  272. Cluster string
  273. Node string
  274. Mode string
  275. Data []*util.Vector
  276. }
  277. func DecodeNodeCPUModePercentResult(result *QueryResult) *NodeCPUModePercentResult {
  278. cluster, _ := result.GetCluster()
  279. node, _ := result.GetString("kubernetes_node")
  280. mode, _ := result.GetString("mode")
  281. return &NodeCPUModePercentResult{
  282. Cluster: cluster,
  283. Node: node,
  284. Mode: mode,
  285. Data: result.Values,
  286. }
  287. }
  288. type NodeRAMSystemPercentResult struct {
  289. Cluster string
  290. Instance string
  291. Data []*util.Vector
  292. }
  293. func DecodeNodeRAMSystemPercentResult(result *QueryResult) *NodeRAMSystemPercentResult {
  294. cluster, _ := result.GetCluster()
  295. instance, _ := result.GetInstance()
  296. return &NodeRAMSystemPercentResult{
  297. Cluster: cluster,
  298. Instance: instance,
  299. Data: result.Values,
  300. }
  301. }
  302. type NodeRAMUserPercentResult = NodeRAMSystemPercentResult
  303. func DecodeNodeRAMUserPercentResult(result *QueryResult) *NodeRAMUserPercentResult {
  304. return DecodeNodeRAMSystemPercentResult(result)
  305. }
  306. type LBActiveMinutesResult struct {
  307. Cluster string
  308. Namespace string
  309. Service string
  310. IngressIP string
  311. Data []*util.Vector
  312. }
  313. func DecodeLBActiveMinutesResult(result *QueryResult) *LBActiveMinutesResult {
  314. cluster, _ := result.GetCluster()
  315. namespace, _ := result.GetNamespace()
  316. service, _ := result.GetString("service_name")
  317. ingressIp, _ := result.GetString("ingress_ip")
  318. return &LBActiveMinutesResult{
  319. Cluster: cluster,
  320. Namespace: namespace,
  321. Service: service,
  322. IngressIP: ingressIp,
  323. Data: result.Values,
  324. }
  325. }
  326. type LBPricePerHrResult = LBActiveMinutesResult
  327. func DecodeLBPricePerHrResult(result *QueryResult) *LBPricePerHrResult {
  328. return DecodeLBActiveMinutesResult(result)
  329. }
  330. type ClusterManagementDurationResult struct {
  331. Cluster string
  332. Provisioner string
  333. Data []*util.Vector
  334. }
  335. func DecodeClusterManagementDurationResult(result *QueryResult) *ClusterManagementDurationResult {
  336. cluster, _ := result.GetCluster()
  337. provisioner, _ := result.GetString("provisioner_name")
  338. return &ClusterManagementDurationResult{
  339. Cluster: cluster,
  340. Provisioner: provisioner,
  341. Data: result.Values,
  342. }
  343. }
  344. type ClusterManagementPricePerHrResult = ClusterManagementDurationResult
  345. func DecodeClusterManagementPricePerHrResult(result *QueryResult) *ClusterManagementPricePerHrResult {
  346. return DecodeClusterManagementDurationResult(result)
  347. }
  348. type DataCountResult struct {
  349. Cluster string
  350. Data []*util.Vector
  351. }
  352. func DecodeDataCountResult(result *QueryResult) *DataCountResult {
  353. cluster, _ := result.GetCluster()
  354. return &DataCountResult{
  355. Cluster: cluster,
  356. Data: result.Values,
  357. }
  358. }
  359. type TotalResult struct {
  360. Cluster string
  361. Data []*util.Vector
  362. }
  363. func DecodeTotalResult(result *QueryResult) *TotalResult {
  364. cluster, _ := result.GetCluster()
  365. return &TotalResult{
  366. Cluster: cluster,
  367. Data: result.Values,
  368. }
  369. }
  370. type TotalCPUResult = TotalResult
  371. func DecodeTotalCPUResult(result *QueryResult) *TotalCPUResult {
  372. return DecodeTotalResult(result)
  373. }
  374. type TotalRAMResult = TotalResult
  375. func DecodeTotalRAMResult(result *QueryResult) *TotalRAMResult {
  376. return DecodeTotalResult(result)
  377. }
  378. type TotalGPUResult = TotalResult
  379. func DecodeTotalGPUResult(result *QueryResult) *TotalGPUResult {
  380. return DecodeTotalResult(result)
  381. }
  382. type TotalStorageResult = TotalResult
  383. func DecodeTotalStorageResult(result *QueryResult) *TotalStorageResult {
  384. return DecodeTotalResult(result)
  385. }
  386. type ClusterResult struct {
  387. Data []*util.Vector
  388. }
  389. func DecodeClusterResult(result *QueryResult) *ClusterResult {
  390. return &ClusterResult{
  391. Data: result.Values,
  392. }
  393. }
  394. type ClusterCoresResult = ClusterResult
  395. func DecodeClusterCoresResult(result *QueryResult) *ClusterCoresResult {
  396. return DecodeClusterResult(result)
  397. }
  398. type ClusterRAMResult = ClusterResult
  399. func DecodeClusterRAMResult(result *QueryResult) *ClusterRAMResult {
  400. return DecodeClusterResult(result)
  401. }
  402. type ClusterStorageResult = ClusterResult
  403. func DecodeClusterStorageResult(result *QueryResult) *ClusterStorageResult {
  404. return DecodeClusterResult(result)
  405. }
  406. type ClusterTotalResult = ClusterResult
  407. func DecodeClusterTotalResult(result *QueryResult) *ClusterTotalResult {
  408. return DecodeClusterResult(result)
  409. }
  410. type ClusterNodesResult = ClusterResult
  411. func DecodeClusterNodesResult(result *QueryResult) *ClusterNodesResult {
  412. return DecodeClusterResult(result)
  413. }
  414. type ClusterNodesByProviderResult struct {
  415. Data []*util.Vector
  416. }
  417. func DecodeClusterNodesByProviderResult(result *QueryResult) *ClusterNodesByProviderResult {
  418. return &ClusterNodesByProviderResult{
  419. Data: result.Values,
  420. }
  421. }
  422. type PodsResult struct {
  423. UID string
  424. Cluster string
  425. Namespace string
  426. Pod string
  427. Data []*util.Vector
  428. }
  429. func DecodePodsResult(result *QueryResult) *PodsResult {
  430. uid, _ := result.GetString("uid")
  431. cluster, _ := result.GetCluster()
  432. namespace, _ := result.GetNamespace()
  433. pod, _ := result.GetPod()
  434. return &PodsResult{
  435. UID: uid,
  436. Cluster: cluster,
  437. Namespace: namespace,
  438. Pod: pod,
  439. Data: result.Values,
  440. }
  441. }
  442. type ContainerMetricResult struct {
  443. Cluster string
  444. Node string
  445. Namespace string
  446. Pod string
  447. Container string
  448. Data []*util.Vector
  449. }
  450. func DecodeContainerMetricResult(result *QueryResult) *ContainerMetricResult {
  451. cluster, _ := result.GetCluster()
  452. node, _ := result.GetNode()
  453. namespace, _ := result.GetNamespace()
  454. pod, _ := result.GetPod()
  455. container, _ := result.GetContainer()
  456. return &ContainerMetricResult{
  457. Cluster: cluster,
  458. Node: node,
  459. Namespace: namespace,
  460. Pod: pod,
  461. Container: container,
  462. Data: result.Values,
  463. }
  464. }
  465. type RAMBytesAllocatedResult = ContainerMetricResult
  466. func DecodeRAMBytesAllocatedResult(result *QueryResult) *RAMBytesAllocatedResult {
  467. return DecodeContainerMetricResult(result)
  468. }
  469. type RAMRequestsResult = ContainerMetricResult
  470. func DecodeRAMRequestsResult(result *QueryResult) *RAMRequestsResult {
  471. return DecodeContainerMetricResult(result)
  472. }
  473. type RAMUsageAvgResult = ContainerMetricResult
  474. func DecodeRAMUsageAvgResult(result *QueryResult) *RAMUsageAvgResult {
  475. return DecodeContainerMetricResult(result)
  476. }
  477. type RAMUsageMaxResult = ContainerMetricResult
  478. func DecodeRAMUsageMaxResult(result *QueryResult) *RAMUsageMaxResult {
  479. return DecodeContainerMetricResult(result)
  480. }
  481. type NodeRAMPricePerGiBHrResult struct {
  482. Cluster string
  483. Node string
  484. InstanceType string
  485. ProviderID string
  486. Data []*util.Vector
  487. }
  488. func DecodeNodeRAMPricePerGiBHrResult(result *QueryResult) *NodeRAMPricePerGiBHrResult {
  489. cluster, _ := result.GetCluster()
  490. node, _ := result.GetNode()
  491. instanceType, _ := result.GetInstanceType()
  492. providerId, _ := result.GetProviderID()
  493. return &NodeRAMPricePerGiBHrResult{
  494. Cluster: cluster,
  495. Node: node,
  496. InstanceType: instanceType,
  497. ProviderID: providerId,
  498. Data: result.Values,
  499. }
  500. }
  501. type CPUCoresAllocatedResult = ContainerMetricResult
  502. func DecodeCPUCoresAllocatedResult(result *QueryResult) *CPUCoresAllocatedResult {
  503. return DecodeContainerMetricResult(result)
  504. }
  505. type CPURequestsResult = ContainerMetricResult
  506. func DecodeCPURequestsResult(result *QueryResult) *CPURequestsResult {
  507. return DecodeContainerMetricResult(result)
  508. }
  509. type CPUUsageAvgResult = ContainerMetricResult
  510. func DecodeCPUUsageAvgResult(result *QueryResult) *CPUUsageAvgResult {
  511. return DecodeContainerMetricResult(result)
  512. }
  513. type CPUUsageMaxResult = ContainerMetricResult
  514. func DecodeCPUUsageMaxResult(result *QueryResult) *CPUUsageMaxResult {
  515. return DecodeContainerMetricResult(result)
  516. }
  517. type NodeCPUPricePerHrResult struct {
  518. Cluster string
  519. Node string
  520. InstanceType string
  521. ProviderID string
  522. Data []*util.Vector
  523. }
  524. func DecodeNodeCPUPricePerHrResult(result *QueryResult) *NodeCPUPricePerHrResult {
  525. cluster, _ := result.GetCluster()
  526. node, _ := result.GetNode()
  527. instanceType, _ := result.GetInstanceType()
  528. providerId, _ := result.GetProviderID()
  529. return &NodeCPUPricePerHrResult{
  530. Cluster: cluster,
  531. Node: node,
  532. InstanceType: instanceType,
  533. ProviderID: providerId,
  534. Data: result.Values,
  535. }
  536. }
  537. // type alias requested result to allocated result, as you can only request a full GPU
  538. type GPUsRequestedResult = GPUsAllocatedResult
  539. func DecodeGPUsRequestedResult(result *QueryResult) *GPUsRequestedResult {
  540. return DecodeGPUsAllocatedResult(result)
  541. }
  542. type GPUsAllocatedResult struct {
  543. Cluster string
  544. Namespace string
  545. Pod string
  546. Container string
  547. Data []*util.Vector
  548. }
  549. func DecodeGPUsAllocatedResult(result *QueryResult) *GPUsAllocatedResult {
  550. cluster, _ := result.GetCluster()
  551. namespace, _ := result.GetNamespace()
  552. pod, _ := result.GetPod()
  553. container, _ := result.GetContainer()
  554. return &GPUsAllocatedResult{
  555. Cluster: cluster,
  556. Namespace: namespace,
  557. Pod: pod,
  558. Container: container,
  559. Data: result.Values,
  560. }
  561. }
  562. type GPUsUsageAvgResult struct {
  563. Cluster string
  564. Namespace string
  565. Pod string
  566. Container string
  567. Data []*util.Vector
  568. }
  569. func DecodeGPUsUsageAvgResult(result *QueryResult) *GPUsUsageAvgResult {
  570. cluster, _ := result.GetCluster()
  571. namespace, _ := result.GetNamespace()
  572. pod, _ := result.GetPod()
  573. container, _ := result.GetContainer()
  574. return &GPUsUsageAvgResult{
  575. Cluster: cluster,
  576. Namespace: namespace,
  577. Pod: pod,
  578. Container: container,
  579. Data: result.Values,
  580. }
  581. }
  582. type GPUsUsageMaxResult struct {
  583. Cluster string
  584. Namespace string
  585. Pod string
  586. Container string
  587. Data []*util.Vector
  588. }
  589. func DecodeGPUsUsageMaxResult(result *QueryResult) *GPUsUsageMaxResult {
  590. cluster, _ := result.GetCluster()
  591. namespace, _ := result.GetNamespace()
  592. pod, _ := result.GetPod()
  593. container, _ := result.GetContainer()
  594. return &GPUsUsageMaxResult{
  595. Cluster: cluster,
  596. Namespace: namespace,
  597. Pod: pod,
  598. Container: container,
  599. Data: result.Values,
  600. }
  601. }
  602. type NodeGPUPricePerHrResult struct {
  603. Cluster string
  604. Node string
  605. InstanceType string
  606. ProviderID string
  607. Data []*util.Vector
  608. }
  609. func DecodeNodeGPUPricePerHrResult(result *QueryResult) *NodeGPUPricePerHrResult {
  610. cluster, _ := result.GetCluster()
  611. node, _ := result.GetNode()
  612. instanceType, _ := result.GetInstanceType()
  613. providerId, _ := result.GetProviderID()
  614. return &NodeGPUPricePerHrResult{
  615. Cluster: cluster,
  616. Node: node,
  617. InstanceType: instanceType,
  618. ProviderID: providerId,
  619. Data: result.Values,
  620. }
  621. }
  622. type GPUInfoResult struct {
  623. Cluster string
  624. Namespace string
  625. Pod string
  626. Container string
  627. Device string
  628. ModelName string
  629. UUID string
  630. Data []*util.Vector
  631. }
  632. func DecodeGPUInfoResult(result *QueryResult) *GPUInfoResult {
  633. cluster, _ := result.GetCluster()
  634. namespace, _ := result.GetNamespace()
  635. pod, _ := result.GetPod()
  636. container, _ := result.GetContainer()
  637. device, _ := result.GetString("device")
  638. modelName, _ := result.GetString("modelName")
  639. uuid, _ := result.GetString("UUID")
  640. return &GPUInfoResult{
  641. Cluster: cluster,
  642. Namespace: namespace,
  643. Pod: pod,
  644. Container: container,
  645. Device: device,
  646. ModelName: modelName,
  647. UUID: uuid,
  648. Data: result.Values,
  649. }
  650. }
  651. type IsGPUSharedResult struct {
  652. Cluster string
  653. Namespace string
  654. Pod string
  655. Container string
  656. Resource string
  657. Data []*util.Vector
  658. }
  659. func DecodeIsGPUSharedResult(result *QueryResult) *IsGPUSharedResult {
  660. cluster, _ := result.GetCluster()
  661. namespace, _ := result.GetNamespace()
  662. pod, _ := result.GetPod()
  663. container, _ := result.GetContainer()
  664. resource, _ := result.GetString("resource")
  665. return &IsGPUSharedResult{
  666. Cluster: cluster,
  667. Namespace: namespace,
  668. Pod: pod,
  669. Container: container,
  670. Resource: resource,
  671. Data: result.Values,
  672. }
  673. }
  674. type PodPVCAllocationResult struct {
  675. Cluster string
  676. Namespace string
  677. Pod string
  678. PersistentVolume string
  679. PersistentVolumeClaim string
  680. Data []*util.Vector
  681. }
  682. func DecodePodPVCAllocationResult(result *QueryResult) *PodPVCAllocationResult {
  683. cluster, _ := result.GetCluster()
  684. namespace, _ := result.GetNamespace()
  685. pod, _ := result.GetPod()
  686. pv, _ := result.GetString("persistentvolume")
  687. pvc, _ := result.GetString("persistentvolumeclaim")
  688. return &PodPVCAllocationResult{
  689. Cluster: cluster,
  690. Namespace: namespace,
  691. Pod: pod,
  692. PersistentVolume: pv,
  693. PersistentVolumeClaim: pvc,
  694. Data: result.Values,
  695. }
  696. }
  697. type PVCBytesRequestedResult struct {
  698. Cluster string
  699. Namespace string
  700. PersistentVolumeClaim string
  701. Data []*util.Vector
  702. }
  703. func DecodePVCBytesRequestedResult(result *QueryResult) *PVCBytesRequestedResult {
  704. cluster, _ := result.GetCluster()
  705. namespace, _ := result.GetNamespace()
  706. pvc, _ := result.GetString("persistentvolumeclaim")
  707. return &PVCBytesRequestedResult{
  708. Cluster: cluster,
  709. Namespace: namespace,
  710. PersistentVolumeClaim: pvc,
  711. Data: result.Values,
  712. }
  713. }
  714. type PVCInfoResult struct {
  715. Cluster string
  716. Namespace string
  717. VolumeName string
  718. PersistentVolumeClaim string
  719. StorageClass string
  720. Data []*util.Vector
  721. }
  722. func DecodePVCInfoResult(result *QueryResult) *PVCInfoResult {
  723. cluster, _ := result.GetCluster()
  724. namespace, _ := result.GetNamespace()
  725. volumeName, _ := result.GetString("volumename")
  726. pvc, _ := result.GetString("persistentvolumeclaim")
  727. storageClass, _ := result.GetString("storageclass")
  728. return &PVCInfoResult{
  729. Cluster: cluster,
  730. Namespace: namespace,
  731. VolumeName: volumeName,
  732. PersistentVolumeClaim: pvc,
  733. StorageClass: storageClass,
  734. Data: result.Values,
  735. }
  736. }
  737. type PVBytesResult struct {
  738. Cluster string
  739. PersistentVolume string
  740. Data []*util.Vector
  741. }
  742. func DecodePVBytesResult(result *QueryResult) *PVBytesResult {
  743. cluster, _ := result.GetCluster()
  744. pv, _ := result.GetString("persistentvolume")
  745. return &PVBytesResult{
  746. Cluster: cluster,
  747. PersistentVolume: pv,
  748. Data: result.Values,
  749. }
  750. }
  751. type PVPricePerGiBHourResult struct {
  752. Cluster string
  753. VolumeName string
  754. PersistentVolume string
  755. ProviderID string
  756. Data []*util.Vector
  757. }
  758. func DecodePVPricePerGiBHourResult(result *QueryResult) *PVPricePerGiBHourResult {
  759. cluster, _ := result.GetCluster()
  760. volumeName, _ := result.GetString("volumename")
  761. pv, _ := result.GetString("persistentvolume")
  762. providerId, _ := result.GetProviderID()
  763. return &PVPricePerGiBHourResult{
  764. Cluster: cluster,
  765. VolumeName: volumeName,
  766. PersistentVolume: pv,
  767. ProviderID: providerId,
  768. Data: result.Values,
  769. }
  770. }
  771. type PVInfoResult struct {
  772. Cluster string
  773. PersistentVolume string
  774. StorageClass string
  775. ProviderID string
  776. Data []*util.Vector
  777. }
  778. func DecodePVInfoResult(result *QueryResult) *PVInfoResult {
  779. cluster, _ := result.GetCluster()
  780. storageClass, _ := result.GetString("storageclass")
  781. providerId, _ := result.GetProviderID()
  782. pv, _ := result.GetString("persistentvolume")
  783. return &PVInfoResult{
  784. Cluster: cluster,
  785. PersistentVolume: pv,
  786. StorageClass: storageClass,
  787. ProviderID: providerId,
  788. Data: result.Values,
  789. }
  790. }
  791. // Base type for network usage results
  792. type NetworkGiBResult struct {
  793. Cluster string
  794. Namespace string
  795. Pod string
  796. Data []*util.Vector
  797. }
  798. func DecodeNetworkGiBResult(result *QueryResult) *NetworkGiBResult {
  799. cluster, _ := result.GetCluster()
  800. namespace, _ := result.GetNamespace()
  801. pod, _ := result.GetPod()
  802. return &NetworkGiBResult{
  803. Cluster: cluster,
  804. Namespace: namespace,
  805. Pod: pod,
  806. Data: result.Values,
  807. }
  808. }
  809. // Base type for network price results
  810. type NetworkPricePerGiBResult struct {
  811. Cluster string
  812. Data []*util.Vector
  813. }
  814. func DecodeNetworkPricePerGiBResult(result *QueryResult) *NetworkPricePerGiBResult {
  815. cluster, _ := result.GetCluster()
  816. return &NetworkPricePerGiBResult{
  817. Cluster: cluster,
  818. Data: result.Values,
  819. }
  820. }
  821. // Type alias the specific network subclassification results AND price results
  822. type NetZoneGiBResult = NetworkGiBResult
  823. type NetZonePricePerGiBResult = NetworkPricePerGiBResult
  824. type NetRegionGiBResult = NetworkGiBResult
  825. type NetRegionPricePerGiBResult = NetworkPricePerGiBResult
  826. type NetInternetGiBResult = NetworkGiBResult
  827. type NetInternetPricePerGiBResult = NetworkPricePerGiBResult
  828. func DecodeNetZoneGiBResult(result *QueryResult) *NetZoneGiBResult {
  829. return DecodeNetworkGiBResult(result)
  830. }
  831. func DecodeNetZonePricePerGiBResult(result *QueryResult) *NetZonePricePerGiBResult {
  832. return DecodeNetworkPricePerGiBResult(result)
  833. }
  834. func DecodeNetRegionGiBResult(result *QueryResult) *NetRegionGiBResult {
  835. return DecodeNetworkGiBResult(result)
  836. }
  837. func DecodeNetRegionPricePerGiBResult(result *QueryResult) *NetRegionPricePerGiBResult {
  838. return DecodeNetworkPricePerGiBResult(result)
  839. }
  840. func DecodeNetInternetGiBResult(result *QueryResult) *NetInternetGiBResult {
  841. return DecodeNetworkGiBResult(result)
  842. }
  843. func DecodeNetInternetPricePerGiBResult(result *QueryResult) *NetInternetPricePerGiBResult {
  844. return DecodeNetworkPricePerGiBResult(result)
  845. }
  846. type NetReceiveBytesResult struct {
  847. Cluster string
  848. Namespace string
  849. Pod string
  850. Container string
  851. Data []*util.Vector
  852. }
  853. func DecodeNetReceiveBytesResult(result *QueryResult) *NetReceiveBytesResult {
  854. cluster, _ := result.GetCluster()
  855. namespace, _ := result.GetNamespace()
  856. pod, _ := result.GetPod()
  857. container, _ := result.GetContainer()
  858. return &NetReceiveBytesResult{
  859. Cluster: cluster,
  860. Namespace: namespace,
  861. Pod: pod,
  862. Container: container,
  863. Data: result.Values,
  864. }
  865. }
  866. type NetTransferBytesResult struct {
  867. Cluster string
  868. Namespace string
  869. Pod string
  870. Container string
  871. Data []*util.Vector
  872. }
  873. func DecodeNetTransferBytesResult(result *QueryResult) *NetTransferBytesResult {
  874. cluster, _ := result.GetCluster()
  875. namespace, _ := result.GetNamespace()
  876. pod, _ := result.GetPod()
  877. container, _ := result.GetContainer()
  878. return &NetTransferBytesResult{
  879. Cluster: cluster,
  880. Namespace: namespace,
  881. Pod: pod,
  882. Container: container,
  883. Data: result.Values,
  884. }
  885. }
  886. type NamespaceAnnotationsResult struct {
  887. Namespace string
  888. Annotations map[string]string
  889. Data []*util.Vector
  890. }
  891. func DecodeNamespaceAnnotationsResult(result *QueryResult) *NamespaceAnnotationsResult {
  892. namespace, _ := result.GetNamespace()
  893. annotations := result.GetAnnotations()
  894. return &NamespaceAnnotationsResult{
  895. Namespace: namespace,
  896. Annotations: annotations,
  897. Data: result.Values,
  898. }
  899. }
  900. type PodAnnotationsResult struct {
  901. Cluster string
  902. Namespace string
  903. Pod string
  904. Annotations map[string]string
  905. Data []*util.Vector
  906. }
  907. func DecodePodAnnotationsResult(result *QueryResult) *PodAnnotationsResult {
  908. cluster, _ := result.GetCluster()
  909. namespace, _ := result.GetNamespace()
  910. pod, _ := result.GetPod()
  911. annotations := result.GetAnnotations()
  912. return &PodAnnotationsResult{
  913. Cluster: cluster,
  914. Namespace: namespace,
  915. Pod: pod,
  916. Annotations: annotations,
  917. Data: result.Values,
  918. }
  919. }
  920. type NodeLabelsResult struct {
  921. Cluster string
  922. Node string
  923. Labels map[string]string
  924. Data []*util.Vector
  925. }
  926. func DecodeNodeLabelsResult(result *QueryResult) *NodeLabelsResult {
  927. cluster, _ := result.GetCluster()
  928. node, _ := result.GetNode()
  929. labels := result.GetLabels()
  930. return &NodeLabelsResult{
  931. Cluster: cluster,
  932. Node: node,
  933. Labels: labels,
  934. Data: result.Values,
  935. }
  936. }
  937. type NamespaceLabelsResult struct {
  938. Cluster string
  939. Namespace string
  940. Labels map[string]string
  941. Data []*util.Vector
  942. }
  943. func DecodeNamespaceLabelsResult(result *QueryResult) *NamespaceLabelsResult {
  944. cluster, _ := result.GetCluster()
  945. namespace, _ := result.GetNamespace()
  946. labels := result.GetLabels()
  947. return &NamespaceLabelsResult{
  948. Cluster: cluster,
  949. Namespace: namespace,
  950. Labels: labels,
  951. Data: result.Values,
  952. }
  953. }
  954. type PodLabelsResult struct {
  955. Cluster string
  956. Namespace string
  957. Pod string
  958. Labels map[string]string
  959. Data []*util.Vector
  960. }
  961. func DecodePodLabelsResult(result *QueryResult) *PodLabelsResult {
  962. cluster, _ := result.GetCluster()
  963. namespace, _ := result.GetNamespace()
  964. pod, _ := result.GetPod()
  965. labels := result.GetLabels()
  966. return &PodLabelsResult{
  967. Cluster: cluster,
  968. Namespace: namespace,
  969. Pod: pod,
  970. Labels: labels,
  971. Data: result.Values,
  972. }
  973. }
  974. type ServiceLabelsResult struct {
  975. Cluster string
  976. Namespace string
  977. Service string
  978. Labels map[string]string
  979. Data []*util.Vector
  980. }
  981. func DecodeServiceLabelsResult(result *QueryResult) *ServiceLabelsResult {
  982. cluster, _ := result.GetCluster()
  983. namespace, _ := result.GetNamespace()
  984. service, _ := result.GetString("service")
  985. labels := result.GetLabels()
  986. return &ServiceLabelsResult{
  987. Cluster: cluster,
  988. Namespace: namespace,
  989. Service: service,
  990. Labels: labels,
  991. Data: result.Values,
  992. }
  993. }
  994. type DeploymentLabelsResult struct {
  995. Cluster string
  996. Namespace string
  997. Deployment string
  998. Labels map[string]string
  999. Data []*util.Vector
  1000. }
  1001. func DecodeDeploymentLabelsResult(result *QueryResult) *DeploymentLabelsResult {
  1002. cluster, _ := result.GetCluster()
  1003. namespace, _ := result.GetNamespace()
  1004. deployment, _ := result.GetString("deployment")
  1005. labels := result.GetLabels()
  1006. return &DeploymentLabelsResult{
  1007. Cluster: cluster,
  1008. Namespace: namespace,
  1009. Deployment: deployment,
  1010. Labels: labels,
  1011. Data: result.Values,
  1012. }
  1013. }
  1014. type StatefulSetLabelsResult struct {
  1015. Cluster string
  1016. Namespace string
  1017. StatefulSet string
  1018. Labels map[string]string
  1019. Data []*util.Vector
  1020. }
  1021. func DecodeStatefulSetLabelsResult(result *QueryResult) *StatefulSetLabelsResult {
  1022. cluster, _ := result.GetCluster()
  1023. namespace, _ := result.GetNamespace()
  1024. statefulSet, _ := result.GetString("statefulSet")
  1025. labels := result.GetLabels()
  1026. return &StatefulSetLabelsResult{
  1027. Cluster: cluster,
  1028. Namespace: namespace,
  1029. StatefulSet: statefulSet,
  1030. Labels: labels,
  1031. Data: result.Values,
  1032. }
  1033. }
  1034. type DaemonSetLabelsResult struct {
  1035. Cluster string
  1036. Namespace string
  1037. Pod string
  1038. DaemonSet string
  1039. Labels map[string]string
  1040. Data []*util.Vector
  1041. }
  1042. func DecodeDaemonSetLabelsResult(result *QueryResult) *DaemonSetLabelsResult {
  1043. cluster, _ := result.GetCluster()
  1044. namespace, _ := result.GetNamespace()
  1045. daemonSet, _ := result.GetString("owner_name")
  1046. labels := result.GetLabels()
  1047. return &DaemonSetLabelsResult{
  1048. Cluster: cluster,
  1049. Namespace: namespace,
  1050. DaemonSet: daemonSet,
  1051. Labels: labels,
  1052. Data: result.Values,
  1053. }
  1054. }
  1055. type JobLabelsResult struct {
  1056. Cluster string
  1057. Namespace string
  1058. Pod string
  1059. Job string
  1060. Labels map[string]string
  1061. Data []*util.Vector
  1062. }
  1063. func DecodeJobLabelsResult(result *QueryResult) *JobLabelsResult {
  1064. cluster, _ := result.GetCluster()
  1065. namespace, _ := result.GetNamespace()
  1066. pod, _ := result.GetPod()
  1067. job, _ := result.GetString("owner_name")
  1068. labels := result.GetLabels()
  1069. return &JobLabelsResult{
  1070. Cluster: cluster,
  1071. Namespace: namespace,
  1072. Pod: pod,
  1073. Job: job,
  1074. Labels: labels,
  1075. Data: result.Values,
  1076. }
  1077. }
  1078. type PodsWithReplicaSetOwnerResult struct {
  1079. Cluster string
  1080. Namespace string
  1081. Pod string
  1082. ReplicaSet string
  1083. Data []*util.Vector
  1084. }
  1085. func DecodePodsWithReplicaSetOwnerResult(result *QueryResult) *PodsWithReplicaSetOwnerResult {
  1086. cluster, _ := result.GetCluster()
  1087. namespace, _ := result.GetNamespace()
  1088. replicaSet, _ := result.GetString("owner_name")
  1089. pod, _ := result.GetPod()
  1090. return &PodsWithReplicaSetOwnerResult{
  1091. Cluster: cluster,
  1092. Namespace: namespace,
  1093. Pod: pod,
  1094. ReplicaSet: replicaSet,
  1095. Data: result.Values,
  1096. }
  1097. }
  1098. type ReplicaSetsWithoutOwnersResult struct {
  1099. Cluster string
  1100. Namespace string
  1101. ReplicaSet string
  1102. Data []*util.Vector
  1103. }
  1104. func DecodeReplicaSetsWithoutOwnersResult(result *QueryResult) *ReplicaSetsWithoutOwnersResult {
  1105. return &ReplicaSetsWithoutOwnersResult{
  1106. Data: result.Values,
  1107. }
  1108. }
  1109. type ReplicaSetsWithRolloutResult struct {
  1110. Cluster string
  1111. Namespace string
  1112. ReplicaSet string
  1113. OwnerName string
  1114. OwnerKind string
  1115. Data []*util.Vector
  1116. }
  1117. func DecodeReplicaSetsWithRolloutResult(result *QueryResult) *ReplicaSetsWithRolloutResult {
  1118. cluster, _ := result.GetCluster()
  1119. namespace, _ := result.GetNamespace()
  1120. replicaSet, _ := result.GetString("replicaset")
  1121. ownerName, _ := result.GetString("owner_name")
  1122. ownerKind, _ := result.GetString("owner_kind")
  1123. return &ReplicaSetsWithRolloutResult{
  1124. Cluster: cluster,
  1125. Namespace: namespace,
  1126. ReplicaSet: replicaSet,
  1127. OwnerName: ownerName,
  1128. OwnerKind: ownerKind,
  1129. Data: result.Values,
  1130. }
  1131. }
  1132. func DecodeAll[T any](results []*QueryResult, decode ResultDecoder[T]) []*T {
  1133. decoded := make([]*T, 0, len(results))
  1134. for _, result := range results {
  1135. decoded = append(decoded, decode(result))
  1136. }
  1137. return decoded
  1138. }