decoders.go 30 KB

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