decoders.go 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630
  1. package source
  2. import (
  3. "github.com/opencost/opencost/core/pkg/util"
  4. )
  5. const (
  6. ClusterIDLabel = "cluster_id"
  7. NamespaceLabel = "namespace"
  8. NodeLabel = "node"
  9. InstanceLabel = "instance"
  10. InstanceTypeLabel = "instance_type"
  11. ContainerLabel = "container"
  12. PodLabel = "pod"
  13. PodNameLabel = "pod_name"
  14. ProviderIDLabel = "provider_id"
  15. DeviceLabel = "device"
  16. PVCLabel = "persistentvolumeclaim"
  17. PVLabel = "persistentvolume"
  18. StorageClassLabel = "storageclass"
  19. VolumeNameLabel = "volumename"
  20. ServiceLabel = "service"
  21. ServiceNameLabel = "service_name"
  22. IngressIPLabel = "ingress_ip"
  23. ProvisionerNameLabel = "provisioner_name"
  24. UIDLabel = "uid"
  25. KubernetesNodeLabel = "kubernetes_node"
  26. ModeLabel = "mode"
  27. ModelNameLabel = "modelName"
  28. UUIDLabel = "UUID"
  29. ResourceLabel = "resource"
  30. DeploymentLabel = "deployment"
  31. StatefulSetLabel = "statefulSet"
  32. ReplicaSetLabel = "replicaset"
  33. ResourceQuotaLabel = "resourcequota"
  34. OwnerNameLabel = "owner_name"
  35. OwnerKindLabel = "owner_kind"
  36. UnitLabel = "unit"
  37. InternetLabel = "internet"
  38. SameZoneLabel = "same_zone"
  39. SameRegionLabel = "same_region"
  40. )
  41. const (
  42. NoneLabelValue = "<none>"
  43. )
  44. type PVResult struct {
  45. UID string
  46. Cluster string
  47. PersistentVolume string
  48. }
  49. type PVUsedAvgResult struct {
  50. UID string
  51. Cluster string
  52. Namespace string
  53. PersistentVolumeClaim string
  54. Data []*util.Vector
  55. }
  56. func DecodePVUsedAvgResult(result *QueryResult) *PVUsedAvgResult {
  57. uid, _ := result.GetString(UIDLabel)
  58. cluster, _ := result.GetCluster()
  59. namespace, _ := result.GetNamespace()
  60. pvc, _ := result.GetString(PVCLabel)
  61. return &PVUsedAvgResult{
  62. UID: uid,
  63. Cluster: cluster,
  64. Namespace: namespace,
  65. PersistentVolumeClaim: pvc,
  66. Data: result.Values,
  67. }
  68. }
  69. type PVActiveMinutesResult struct {
  70. UID string
  71. Cluster string
  72. PersistentVolume string
  73. Data []*util.Vector
  74. }
  75. func DecodePVActiveMinutesResult(result *QueryResult) *PVActiveMinutesResult {
  76. uid, _ := result.GetString(UIDLabel)
  77. cluster, _ := result.GetCluster()
  78. pv, _ := result.GetString(PVLabel)
  79. return &PVActiveMinutesResult{
  80. UID: uid,
  81. Cluster: cluster,
  82. PersistentVolume: pv,
  83. Data: result.Values,
  84. }
  85. }
  86. type PVUsedMaxResult struct {
  87. UID string
  88. Cluster string
  89. Namespace string
  90. PersistentVolumeClaim string
  91. Data []*util.Vector
  92. }
  93. func DecodePVUsedMaxResult(result *QueryResult) *PVUsedMaxResult {
  94. uid, _ := result.GetString(UIDLabel)
  95. cluster, _ := result.GetCluster()
  96. namespace, _ := result.GetNamespace()
  97. pvc, _ := result.GetString(PVCLabel)
  98. return &PVUsedMaxResult{
  99. UID: uid,
  100. Cluster: cluster,
  101. Namespace: namespace,
  102. PersistentVolumeClaim: pvc,
  103. Data: result.Values,
  104. }
  105. }
  106. type LocalStorageActiveMinutesResult struct {
  107. UID string
  108. Cluster string
  109. Node string
  110. ProviderID string
  111. Data []*util.Vector
  112. }
  113. func DecodeLocalStorageActiveMinutesResult(result *QueryResult) *LocalStorageActiveMinutesResult {
  114. uid, _ := result.GetString(UIDLabel)
  115. cluster, _ := result.GetCluster()
  116. node, _ := result.GetNode()
  117. if node == "" {
  118. node, _ = result.GetInstance()
  119. }
  120. providerId, _ := result.GetProviderID()
  121. return &LocalStorageActiveMinutesResult{
  122. UID: uid,
  123. Cluster: cluster,
  124. Node: node,
  125. ProviderID: providerId,
  126. Data: result.Values,
  127. }
  128. }
  129. type LocalStorageCostResult struct {
  130. UID string
  131. Cluster string
  132. Instance string
  133. Device string
  134. Data []*util.Vector
  135. }
  136. func DecodeLocalStorageCostResult(result *QueryResult) *LocalStorageCostResult {
  137. uid, _ := result.GetString(UIDLabel)
  138. cluster, _ := result.GetCluster()
  139. instance, _ := result.GetInstance()
  140. device, _ := result.GetDevice()
  141. return &LocalStorageCostResult{
  142. UID: uid,
  143. Cluster: cluster,
  144. Instance: instance,
  145. Device: device,
  146. Data: result.Values,
  147. }
  148. }
  149. type LocalStorageUsedCostResult struct {
  150. UID string
  151. Cluster string
  152. Instance string
  153. Device string
  154. Data []*util.Vector
  155. }
  156. func DecodeLocalStorageUsedCostResult(result *QueryResult) *LocalStorageUsedCostResult {
  157. uid, _ := result.GetString(UIDLabel)
  158. cluster, _ := result.GetCluster()
  159. instance, _ := result.GetInstance()
  160. device, _ := result.GetDevice()
  161. return &LocalStorageUsedCostResult{
  162. UID: uid,
  163. Cluster: cluster,
  164. Instance: instance,
  165. Device: device,
  166. Data: result.Values,
  167. }
  168. }
  169. type LocalStorageUsedAvgResult struct {
  170. UID string
  171. Cluster string
  172. Instance string
  173. Device string
  174. Data []*util.Vector
  175. }
  176. func DecodeLocalStorageUsedAvgResult(result *QueryResult) *LocalStorageUsedAvgResult {
  177. uid, _ := result.GetString(UIDLabel)
  178. cluster, _ := result.GetCluster()
  179. instance, _ := result.GetInstance()
  180. device, _ := result.GetDevice()
  181. return &LocalStorageUsedAvgResult{
  182. UID: uid,
  183. Cluster: cluster,
  184. Instance: instance,
  185. Device: device,
  186. Data: result.Values,
  187. }
  188. }
  189. type LocalStorageUsedMaxResult struct {
  190. UID string
  191. Cluster string
  192. Instance string
  193. Device string
  194. Data []*util.Vector
  195. }
  196. func DecodeLocalStorageUsedMaxResult(result *QueryResult) *LocalStorageUsedMaxResult {
  197. uid, _ := result.GetString(UIDLabel)
  198. cluster, _ := result.GetCluster()
  199. instance, _ := result.GetInstance()
  200. device, _ := result.GetDevice()
  201. return &LocalStorageUsedMaxResult{
  202. UID: uid,
  203. Cluster: cluster,
  204. Instance: instance,
  205. Device: device,
  206. Data: result.Values,
  207. }
  208. }
  209. type LocalStorageBytesResult struct {
  210. UID string
  211. Cluster string
  212. Instance string
  213. Device string
  214. Data []*util.Vector
  215. }
  216. func DecodeLocalStorageBytesResult(result *QueryResult) *LocalStorageBytesResult {
  217. uid, _ := result.GetString(UIDLabel)
  218. cluster, _ := result.GetCluster()
  219. instance, _ := result.GetInstance()
  220. device, _ := result.GetDevice()
  221. return &LocalStorageBytesResult{
  222. UID: uid,
  223. Cluster: cluster,
  224. Instance: instance,
  225. Device: device,
  226. Data: result.Values,
  227. }
  228. }
  229. type NodeActiveMinutesResult struct {
  230. UID string
  231. Cluster string
  232. Node string
  233. ProviderID string
  234. Data []*util.Vector
  235. }
  236. func DecodeNodeActiveMinutesResult(result *QueryResult) *NodeActiveMinutesResult {
  237. uid, _ := result.GetString(UIDLabel)
  238. cluster, _ := result.GetCluster()
  239. node, _ := result.GetNode()
  240. providerId, _ := result.GetProviderID()
  241. return &NodeActiveMinutesResult{
  242. UID: uid,
  243. Cluster: cluster,
  244. Node: node,
  245. ProviderID: providerId,
  246. Data: result.Values,
  247. }
  248. }
  249. type NodeCPUCoresCapacityResult struct {
  250. UID string
  251. Cluster string
  252. Node string
  253. Data []*util.Vector
  254. }
  255. func DecodeNodeCPUCoresCapacityResult(result *QueryResult) *NodeCPUCoresCapacityResult {
  256. uid, _ := result.GetString(UIDLabel)
  257. cluster, _ := result.GetCluster()
  258. node, _ := result.GetNode()
  259. return &NodeCPUCoresCapacityResult{
  260. UID: uid,
  261. Cluster: cluster,
  262. Node: node,
  263. Data: result.Values,
  264. }
  265. }
  266. type NodeCPUCoresAllocatableResult = NodeCPUCoresCapacityResult
  267. func DecodeNodeCPUCoresAllocatableResult(result *QueryResult) *NodeCPUCoresAllocatableResult {
  268. return DecodeNodeCPUCoresCapacityResult(result)
  269. }
  270. type NodeRAMBytesCapacityResult struct {
  271. UID string
  272. Cluster string
  273. Node string
  274. Data []*util.Vector
  275. }
  276. func DecodeNodeRAMBytesCapacityResult(result *QueryResult) *NodeRAMBytesCapacityResult {
  277. uid, _ := result.GetString(UIDLabel)
  278. cluster, _ := result.GetCluster()
  279. node, _ := result.GetNode()
  280. return &NodeRAMBytesCapacityResult{
  281. UID: uid,
  282. Cluster: cluster,
  283. Node: node,
  284. Data: result.Values,
  285. }
  286. }
  287. type NodeRAMBytesAllocatableResult = NodeRAMBytesCapacityResult
  288. func DecodeNodeRAMBytesAllocatableResult(result *QueryResult) *NodeRAMBytesAllocatableResult {
  289. return DecodeNodeRAMBytesCapacityResult(result)
  290. }
  291. type NodeGPUCountResult struct {
  292. UID string
  293. Cluster string
  294. Node string
  295. ProviderID string
  296. Data []*util.Vector
  297. }
  298. func DecodeNodeGPUCountResult(result *QueryResult) *NodeGPUCountResult {
  299. uid, _ := result.GetString(UIDLabel)
  300. cluster, _ := result.GetCluster()
  301. node, _ := result.GetNode()
  302. providerId, _ := result.GetProviderID()
  303. return &NodeGPUCountResult{
  304. UID: uid,
  305. Cluster: cluster,
  306. Node: node,
  307. ProviderID: providerId,
  308. Data: result.Values,
  309. }
  310. }
  311. type NodeCPUModeTotalResult struct {
  312. UID string
  313. Cluster string
  314. Node string
  315. Mode string
  316. Data []*util.Vector
  317. }
  318. func DecodeNodeCPUModeTotalResult(result *QueryResult) *NodeCPUModeTotalResult {
  319. uid, _ := result.GetString(UIDLabel)
  320. cluster, _ := result.GetCluster()
  321. node, _ := result.GetString(KubernetesNodeLabel)
  322. mode, _ := result.GetString(ModeLabel)
  323. return &NodeCPUModeTotalResult{
  324. UID: uid,
  325. Cluster: cluster,
  326. Node: node,
  327. Mode: mode,
  328. Data: result.Values,
  329. }
  330. }
  331. type NodeIsSpotResult struct {
  332. UID string
  333. Cluster string
  334. Node string
  335. ProviderID string
  336. Data []*util.Vector
  337. }
  338. func DecodeNodeIsSpotResult(result *QueryResult) *NodeIsSpotResult {
  339. uid, _ := result.GetString(UIDLabel)
  340. cluster, _ := result.GetCluster()
  341. node, _ := result.GetNode()
  342. providerId, _ := result.GetProviderID()
  343. return &NodeIsSpotResult{
  344. UID: uid,
  345. Cluster: cluster,
  346. Node: node,
  347. ProviderID: providerId,
  348. Data: result.Values,
  349. }
  350. }
  351. type NodeRAMSystemPercentResult struct {
  352. UID string
  353. Cluster string
  354. Instance string
  355. Data []*util.Vector
  356. }
  357. func DecodeNodeRAMSystemPercentResult(result *QueryResult) *NodeRAMSystemPercentResult {
  358. uid, _ := result.GetString(UIDLabel)
  359. cluster, _ := result.GetCluster()
  360. instance, _ := result.GetInstance()
  361. return &NodeRAMSystemPercentResult{
  362. UID: uid,
  363. Cluster: cluster,
  364. Instance: instance,
  365. Data: result.Values,
  366. }
  367. }
  368. type NodeRAMUserPercentResult = NodeRAMSystemPercentResult
  369. func DecodeNodeRAMUserPercentResult(result *QueryResult) *NodeRAMUserPercentResult {
  370. return DecodeNodeRAMSystemPercentResult(result)
  371. }
  372. type LBActiveMinutesResult struct {
  373. UID string
  374. Cluster string
  375. Namespace string
  376. Service string
  377. IngressIP string
  378. Data []*util.Vector
  379. }
  380. func DecodeLBActiveMinutesResult(result *QueryResult) *LBActiveMinutesResult {
  381. uid, _ := result.GetString(UIDLabel)
  382. cluster, _ := result.GetCluster()
  383. namespace, _ := result.GetNamespace()
  384. service, _ := result.GetString(ServiceNameLabel)
  385. ingressIp, _ := result.GetString(IngressIPLabel)
  386. return &LBActiveMinutesResult{
  387. UID: uid,
  388. Cluster: cluster,
  389. Namespace: namespace,
  390. Service: service,
  391. IngressIP: ingressIp,
  392. Data: result.Values,
  393. }
  394. }
  395. type LBPricePerHrResult = LBActiveMinutesResult
  396. func DecodeLBPricePerHrResult(result *QueryResult) *LBPricePerHrResult {
  397. return DecodeLBActiveMinutesResult(result)
  398. }
  399. type ClusterManagementDurationResult struct {
  400. UID string
  401. Cluster string
  402. Provisioner string
  403. Data []*util.Vector
  404. }
  405. func DecodeClusterManagementDurationResult(result *QueryResult) *ClusterManagementDurationResult {
  406. uid, _ := result.GetString(UIDLabel)
  407. cluster, _ := result.GetCluster()
  408. provisioner, _ := result.GetString(ProvisionerNameLabel)
  409. return &ClusterManagementDurationResult{
  410. UID: uid,
  411. Cluster: cluster,
  412. Provisioner: provisioner,
  413. Data: result.Values,
  414. }
  415. }
  416. type ClusterManagementPricePerHrResult = ClusterManagementDurationResult
  417. func DecodeClusterManagementPricePerHrResult(result *QueryResult) *ClusterManagementPricePerHrResult {
  418. return DecodeClusterManagementDurationResult(result)
  419. }
  420. type PodsResult struct {
  421. UID string
  422. Cluster string
  423. Namespace string
  424. Pod string
  425. Data []*util.Vector
  426. }
  427. func DecodePodsResult(result *QueryResult) *PodsResult {
  428. uid, _ := result.GetString(UIDLabel)
  429. cluster, _ := result.GetCluster()
  430. namespace, _ := result.GetNamespace()
  431. pod, _ := result.GetPod()
  432. return &PodsResult{
  433. UID: uid,
  434. Cluster: cluster,
  435. Namespace: namespace,
  436. Pod: pod,
  437. Data: result.Values,
  438. }
  439. }
  440. type ContainerMetricResult struct {
  441. UID string
  442. Cluster string
  443. Node string
  444. Instance string
  445. Namespace string
  446. Pod string
  447. Container string
  448. Data []*util.Vector
  449. }
  450. func DecodeContainerMetricResult(result *QueryResult) *ContainerMetricResult {
  451. uid, _ := result.GetString(UIDLabel)
  452. cluster, _ := result.GetCluster()
  453. node, _ := result.GetNode()
  454. instance, _ := result.GetInstance()
  455. // NOTE: this addresses cases where the node isn't set, but the instance is,
  456. // NOTE: we just inherit the instance as the node
  457. if node == "" {
  458. node = instance
  459. }
  460. namespace, _ := result.GetNamespace()
  461. pod, _ := result.GetPod()
  462. container, _ := result.GetContainer()
  463. return &ContainerMetricResult{
  464. UID: uid,
  465. Cluster: cluster,
  466. Node: node,
  467. Instance: instance,
  468. Namespace: namespace,
  469. Pod: pod,
  470. Container: container,
  471. Data: result.Values,
  472. }
  473. }
  474. type RAMBytesAllocatedResult = ContainerMetricResult
  475. func DecodeRAMBytesAllocatedResult(result *QueryResult) *RAMBytesAllocatedResult {
  476. return DecodeContainerMetricResult(result)
  477. }
  478. type RAMRequestsResult = ContainerMetricResult
  479. func DecodeRAMRequestsResult(result *QueryResult) *RAMRequestsResult {
  480. return DecodeContainerMetricResult(result)
  481. }
  482. type RAMLimitsResult = ContainerMetricResult
  483. func DecodeRAMLimitsResult(result *QueryResult) *RAMLimitsResult {
  484. return DecodeContainerMetricResult(result)
  485. }
  486. type RAMUsageAvgResult = ContainerMetricResult
  487. func DecodeRAMUsageAvgResult(result *QueryResult) *RAMUsageAvgResult {
  488. return DecodeContainerMetricResult(result)
  489. }
  490. type RAMUsageMaxResult = ContainerMetricResult
  491. func DecodeRAMUsageMaxResult(result *QueryResult) *RAMUsageMaxResult {
  492. return DecodeContainerMetricResult(result)
  493. }
  494. type NodeRAMPricePerGiBHrResult struct {
  495. UID string
  496. Cluster string
  497. Node string
  498. InstanceType string
  499. ProviderID string
  500. Data []*util.Vector
  501. }
  502. func DecodeNodeRAMPricePerGiBHrResult(result *QueryResult) *NodeRAMPricePerGiBHrResult {
  503. uid, _ := result.GetString(UIDLabel)
  504. cluster, _ := result.GetCluster()
  505. node, _ := result.GetNode()
  506. instanceType, _ := result.GetInstanceType()
  507. providerId, _ := result.GetProviderID()
  508. return &NodeRAMPricePerGiBHrResult{
  509. UID: uid,
  510. Cluster: cluster,
  511. Node: node,
  512. InstanceType: instanceType,
  513. ProviderID: providerId,
  514. Data: result.Values,
  515. }
  516. }
  517. type CPUCoresAllocatedResult = ContainerMetricResult
  518. func DecodeCPUCoresAllocatedResult(result *QueryResult) *CPUCoresAllocatedResult {
  519. return DecodeContainerMetricResult(result)
  520. }
  521. type CPURequestsResult = ContainerMetricResult
  522. func DecodeCPURequestsResult(result *QueryResult) *CPURequestsResult {
  523. return DecodeContainerMetricResult(result)
  524. }
  525. type CPULimitsResult = ContainerMetricResult
  526. func DecodeCPULimitsResult(result *QueryResult) *CPULimitsResult {
  527. return DecodeContainerMetricResult(result)
  528. }
  529. type CPUUsageAvgResult = ContainerMetricResult
  530. func DecodeCPUUsageAvgResult(result *QueryResult) *CPUUsageAvgResult {
  531. return DecodeContainerMetricResult(result)
  532. }
  533. type CPUUsageMaxResult = ContainerMetricResult
  534. func DecodeCPUUsageMaxResult(result *QueryResult) *CPUUsageMaxResult {
  535. return DecodeContainerMetricResult(result)
  536. }
  537. type NodeCPUPricePerHrResult struct {
  538. UID string
  539. Cluster string
  540. Node string
  541. InstanceType string
  542. ProviderID string
  543. Data []*util.Vector
  544. }
  545. func DecodeNodeCPUPricePerHrResult(result *QueryResult) *NodeCPUPricePerHrResult {
  546. uid, _ := result.GetString(UIDLabel)
  547. cluster, _ := result.GetCluster()
  548. node, _ := result.GetNode()
  549. instanceType, _ := result.GetInstanceType()
  550. providerId, _ := result.GetProviderID()
  551. return &NodeCPUPricePerHrResult{
  552. UID: uid,
  553. Cluster: cluster,
  554. Node: node,
  555. InstanceType: instanceType,
  556. ProviderID: providerId,
  557. Data: result.Values,
  558. }
  559. }
  560. // type alias requested result to allocated result, as you can only request a full GPU
  561. type GPUsRequestedResult = GPUsAllocatedResult
  562. func DecodeGPUsRequestedResult(result *QueryResult) *GPUsRequestedResult {
  563. return DecodeGPUsAllocatedResult(result)
  564. }
  565. type GPUsAllocatedResult struct {
  566. UID string
  567. Cluster string
  568. Namespace string
  569. Pod string
  570. Container string
  571. Data []*util.Vector
  572. }
  573. func DecodeGPUsAllocatedResult(result *QueryResult) *GPUsAllocatedResult {
  574. uid, _ := result.GetString(UIDLabel)
  575. cluster, _ := result.GetCluster()
  576. namespace, _ := result.GetNamespace()
  577. pod, _ := result.GetPod()
  578. container, _ := result.GetContainer()
  579. return &GPUsAllocatedResult{
  580. UID: uid,
  581. Cluster: cluster,
  582. Namespace: namespace,
  583. Pod: pod,
  584. Container: container,
  585. Data: result.Values,
  586. }
  587. }
  588. type GPUsUsageAvgResult struct {
  589. UID string
  590. Cluster string
  591. Namespace string
  592. Pod string
  593. Container string
  594. Data []*util.Vector
  595. }
  596. func DecodeGPUsUsageAvgResult(result *QueryResult) *GPUsUsageAvgResult {
  597. uid, _ := result.GetString(UIDLabel)
  598. cluster, _ := result.GetCluster()
  599. namespace, _ := result.GetNamespace()
  600. pod, _ := result.GetPod()
  601. container, _ := result.GetContainer()
  602. return &GPUsUsageAvgResult{
  603. UID: uid,
  604. Cluster: cluster,
  605. Namespace: namespace,
  606. Pod: pod,
  607. Container: container,
  608. Data: result.Values,
  609. }
  610. }
  611. type GPUsUsageMaxResult struct {
  612. UID string
  613. Cluster string
  614. Namespace string
  615. Pod string
  616. Container string
  617. Data []*util.Vector
  618. }
  619. func DecodeGPUsUsageMaxResult(result *QueryResult) *GPUsUsageMaxResult {
  620. uid, _ := result.GetString(UIDLabel)
  621. cluster, _ := result.GetCluster()
  622. namespace, _ := result.GetNamespace()
  623. pod, _ := result.GetPod()
  624. container, _ := result.GetContainer()
  625. return &GPUsUsageMaxResult{
  626. UID: uid,
  627. Cluster: cluster,
  628. Namespace: namespace,
  629. Pod: pod,
  630. Container: container,
  631. Data: result.Values,
  632. }
  633. }
  634. type NodeGPUPricePerHrResult struct {
  635. UID string
  636. Cluster string
  637. Node string
  638. InstanceType string
  639. ProviderID string
  640. Data []*util.Vector
  641. }
  642. func DecodeNodeGPUPricePerHrResult(result *QueryResult) *NodeGPUPricePerHrResult {
  643. uid, _ := result.GetString(UIDLabel)
  644. cluster, _ := result.GetCluster()
  645. node, _ := result.GetNode()
  646. instanceType, _ := result.GetInstanceType()
  647. providerId, _ := result.GetProviderID()
  648. return &NodeGPUPricePerHrResult{
  649. UID: uid,
  650. Cluster: cluster,
  651. Node: node,
  652. InstanceType: instanceType,
  653. ProviderID: providerId,
  654. Data: result.Values,
  655. }
  656. }
  657. type GPUInfoResult struct {
  658. UID string
  659. Cluster string
  660. Namespace string
  661. Pod string
  662. Container string
  663. Device string
  664. ModelName string
  665. UUID string
  666. Data []*util.Vector
  667. }
  668. func DecodeGPUInfoResult(result *QueryResult) *GPUInfoResult {
  669. uid, _ := result.GetString(UIDLabel)
  670. cluster, _ := result.GetCluster()
  671. namespace, _ := result.GetNamespace()
  672. pod, _ := result.GetPod()
  673. container, _ := result.GetContainer()
  674. device, _ := result.GetString(DeviceLabel)
  675. modelName, _ := result.GetString(ModelNameLabel)
  676. uuid, _ := result.GetString(UUIDLabel)
  677. return &GPUInfoResult{
  678. UID: uid,
  679. Cluster: cluster,
  680. Namespace: namespace,
  681. Pod: pod,
  682. Container: container,
  683. Device: device,
  684. ModelName: modelName,
  685. UUID: uuid,
  686. Data: result.Values,
  687. }
  688. }
  689. type IsGPUSharedResult struct {
  690. UID string
  691. Cluster string
  692. Namespace string
  693. Pod string
  694. Container string
  695. Resource string
  696. Data []*util.Vector
  697. }
  698. func DecodeIsGPUSharedResult(result *QueryResult) *IsGPUSharedResult {
  699. uid, _ := result.GetString(UIDLabel)
  700. cluster, _ := result.GetCluster()
  701. namespace, _ := result.GetNamespace()
  702. pod, _ := result.GetPod()
  703. container, _ := result.GetContainer()
  704. resource, _ := result.GetString(ResourceLabel)
  705. return &IsGPUSharedResult{
  706. UID: uid,
  707. Cluster: cluster,
  708. Namespace: namespace,
  709. Pod: pod,
  710. Container: container,
  711. Resource: resource,
  712. Data: result.Values,
  713. }
  714. }
  715. type PodPVCAllocationResult struct {
  716. UID string
  717. Cluster string
  718. Namespace string
  719. Pod string
  720. PersistentVolume string
  721. PersistentVolumeClaim string
  722. Data []*util.Vector
  723. }
  724. func DecodePodPVCAllocationResult(result *QueryResult) *PodPVCAllocationResult {
  725. uid, _ := result.GetString(UIDLabel)
  726. cluster, _ := result.GetCluster()
  727. namespace, _ := result.GetNamespace()
  728. pod, _ := result.GetPod()
  729. pv, _ := result.GetString(PVLabel)
  730. pvc, _ := result.GetString(PVCLabel)
  731. return &PodPVCAllocationResult{
  732. UID: uid,
  733. Cluster: cluster,
  734. Namespace: namespace,
  735. Pod: pod,
  736. PersistentVolume: pv,
  737. PersistentVolumeClaim: pvc,
  738. Data: result.Values,
  739. }
  740. }
  741. type PVCBytesRequestedResult struct {
  742. UID string
  743. Cluster string
  744. Namespace string
  745. PersistentVolumeClaim string
  746. Data []*util.Vector
  747. }
  748. func DecodePVCBytesRequestedResult(result *QueryResult) *PVCBytesRequestedResult {
  749. uid, _ := result.GetString(UIDLabel)
  750. cluster, _ := result.GetCluster()
  751. namespace, _ := result.GetNamespace()
  752. pvc, _ := result.GetString(PVCLabel)
  753. return &PVCBytesRequestedResult{
  754. UID: uid,
  755. Cluster: cluster,
  756. Namespace: namespace,
  757. PersistentVolumeClaim: pvc,
  758. Data: result.Values,
  759. }
  760. }
  761. type PVCInfoResult struct {
  762. UID string
  763. Cluster string
  764. Namespace string
  765. VolumeName string
  766. PersistentVolumeClaim string
  767. StorageClass string
  768. Data []*util.Vector
  769. }
  770. func DecodePVCInfoResult(result *QueryResult) *PVCInfoResult {
  771. uid, _ := result.GetString(UIDLabel)
  772. cluster, _ := result.GetCluster()
  773. namespace, _ := result.GetNamespace()
  774. volumeName, _ := result.GetString(VolumeNameLabel)
  775. pvc, _ := result.GetString(PVCLabel)
  776. storageClass, _ := result.GetString(StorageClassLabel)
  777. return &PVCInfoResult{
  778. UID: uid,
  779. Cluster: cluster,
  780. Namespace: namespace,
  781. VolumeName: volumeName,
  782. PersistentVolumeClaim: pvc,
  783. StorageClass: storageClass,
  784. Data: result.Values,
  785. }
  786. }
  787. type PVBytesResult struct {
  788. UID string
  789. Cluster string
  790. PersistentVolume string
  791. Data []*util.Vector
  792. }
  793. func DecodePVBytesResult(result *QueryResult) *PVBytesResult {
  794. uid, _ := result.GetString(UIDLabel)
  795. cluster, _ := result.GetCluster()
  796. pv, _ := result.GetString(PVLabel)
  797. return &PVBytesResult{
  798. UID: uid,
  799. Cluster: cluster,
  800. PersistentVolume: pv,
  801. Data: result.Values,
  802. }
  803. }
  804. type PVPricePerGiBHourResult struct {
  805. UID string
  806. Cluster string
  807. VolumeName string
  808. PersistentVolume string
  809. ProviderID string
  810. Data []*util.Vector
  811. }
  812. func DecodePVPricePerGiBHourResult(result *QueryResult) *PVPricePerGiBHourResult {
  813. uid, _ := result.GetString(UIDLabel)
  814. cluster, _ := result.GetCluster()
  815. volumeName, _ := result.GetString(VolumeNameLabel)
  816. pv, _ := result.GetString(PVLabel)
  817. providerId, _ := result.GetProviderID()
  818. return &PVPricePerGiBHourResult{
  819. UID: uid,
  820. Cluster: cluster,
  821. VolumeName: volumeName,
  822. PersistentVolume: pv,
  823. ProviderID: providerId,
  824. Data: result.Values,
  825. }
  826. }
  827. type PVInfoResult struct {
  828. UID string
  829. Cluster string
  830. PersistentVolume string
  831. StorageClass string
  832. ProviderID string
  833. Data []*util.Vector
  834. }
  835. func DecodePVInfoResult(result *QueryResult) *PVInfoResult {
  836. uid, _ := result.GetString(UIDLabel)
  837. cluster, _ := result.GetCluster()
  838. storageClass, _ := result.GetString(StorageClassLabel)
  839. providerId, _ := result.GetProviderID()
  840. pv, _ := result.GetString(PVLabel)
  841. return &PVInfoResult{
  842. UID: uid,
  843. Cluster: cluster,
  844. PersistentVolume: pv,
  845. StorageClass: storageClass,
  846. ProviderID: providerId,
  847. Data: result.Values,
  848. }
  849. }
  850. // Base type for network usage results
  851. type NetworkGiBResult struct {
  852. UID string
  853. Cluster string
  854. Namespace string
  855. Pod string
  856. Service string
  857. Data []*util.Vector
  858. }
  859. func DecodeNetworkGiBResult(result *QueryResult) *NetworkGiBResult {
  860. uid, _ := result.GetString(UIDLabel)
  861. cluster, _ := result.GetCluster()
  862. namespace, _ := result.GetNamespace()
  863. pod, _ := result.GetPod()
  864. service, _ := result.GetString(ServiceLabel)
  865. return &NetworkGiBResult{
  866. UID: uid,
  867. Cluster: cluster,
  868. Namespace: namespace,
  869. Pod: pod,
  870. Service: service,
  871. Data: result.Values,
  872. }
  873. }
  874. // Base type for network price results
  875. type NetworkPricePerGiBResult struct {
  876. UID string
  877. Cluster string
  878. Data []*util.Vector
  879. }
  880. func DecodeNetworkPricePerGiBResult(result *QueryResult) *NetworkPricePerGiBResult {
  881. uid, _ := result.GetString(UIDLabel)
  882. cluster, _ := result.GetCluster()
  883. return &NetworkPricePerGiBResult{
  884. UID: uid,
  885. Cluster: cluster,
  886. Data: result.Values,
  887. }
  888. }
  889. // Type alias the specific network subclassification results AND price results
  890. type NetZoneGiBResult = NetworkGiBResult
  891. type NetZonePricePerGiBResult = NetworkPricePerGiBResult
  892. type NetRegionGiBResult = NetworkGiBResult
  893. type NetRegionPricePerGiBResult = NetworkPricePerGiBResult
  894. type NetInternetGiBResult = NetworkGiBResult
  895. type NetInternetPricePerGiBResult = NetworkPricePerGiBResult
  896. type NetInternetServiceGiBResult = NetworkGiBResult
  897. type NetZoneIngressGiBResult = NetworkGiBResult
  898. type NetRegionIngressGiBResult = NetworkGiBResult
  899. type NetInternetIngressGiBResult = NetworkGiBResult
  900. type NetInternetServiceIngressGiBResult = NetworkGiBResult
  901. func DecodeNetZoneGiBResult(result *QueryResult) *NetZoneGiBResult {
  902. return DecodeNetworkGiBResult(result)
  903. }
  904. func DecodeNetZonePricePerGiBResult(result *QueryResult) *NetZonePricePerGiBResult {
  905. return DecodeNetworkPricePerGiBResult(result)
  906. }
  907. func DecodeNetRegionGiBResult(result *QueryResult) *NetRegionGiBResult {
  908. return DecodeNetworkGiBResult(result)
  909. }
  910. func DecodeNetRegionPricePerGiBResult(result *QueryResult) *NetRegionPricePerGiBResult {
  911. return DecodeNetworkPricePerGiBResult(result)
  912. }
  913. func DecodeNetInternetGiBResult(result *QueryResult) *NetInternetGiBResult {
  914. return DecodeNetworkGiBResult(result)
  915. }
  916. func DecodeNetInternetPricePerGiBResult(result *QueryResult) *NetInternetPricePerGiBResult {
  917. return DecodeNetworkPricePerGiBResult(result)
  918. }
  919. func DecodeNetInternetServiceGiBResult(result *QueryResult) *NetInternetServiceGiBResult {
  920. return DecodeNetworkGiBResult(result)
  921. }
  922. func DecodeNetZoneIngressGiBResult(result *QueryResult) *NetZoneIngressGiBResult {
  923. return DecodeNetworkGiBResult(result)
  924. }
  925. func DecodeNetRegionIngressGiBResult(result *QueryResult) *NetRegionIngressGiBResult {
  926. return DecodeNetworkGiBResult(result)
  927. }
  928. func DecodeNetInternetIngressGiBResult(result *QueryResult) *NetInternetIngressGiBResult {
  929. return DecodeNetworkGiBResult(result)
  930. }
  931. func DecodeNetInternetServiceIngressGiBResult(result *QueryResult) *NetInternetServiceIngressGiBResult {
  932. return DecodeNetworkGiBResult(result)
  933. }
  934. type NetReceiveBytesResult struct {
  935. UID string
  936. Cluster string
  937. Namespace string
  938. Pod string
  939. Container string
  940. Data []*util.Vector
  941. }
  942. func DecodeNetReceiveBytesResult(result *QueryResult) *NetReceiveBytesResult {
  943. uid, _ := result.GetString(UIDLabel)
  944. cluster, _ := result.GetCluster()
  945. namespace, _ := result.GetNamespace()
  946. pod, _ := result.GetPod()
  947. container, _ := result.GetContainer()
  948. return &NetReceiveBytesResult{
  949. UID: uid,
  950. Cluster: cluster,
  951. Namespace: namespace,
  952. Pod: pod,
  953. Container: container,
  954. Data: result.Values,
  955. }
  956. }
  957. type NetTransferBytesResult struct {
  958. UID string
  959. Cluster string
  960. Namespace string
  961. Pod string
  962. Container string
  963. Data []*util.Vector
  964. }
  965. func DecodeNetTransferBytesResult(result *QueryResult) *NetTransferBytesResult {
  966. uid, _ := result.GetString(UIDLabel)
  967. cluster, _ := result.GetCluster()
  968. namespace, _ := result.GetNamespace()
  969. pod, _ := result.GetPod()
  970. container, _ := result.GetContainer()
  971. return &NetTransferBytesResult{
  972. UID: uid,
  973. Cluster: cluster,
  974. Namespace: namespace,
  975. Pod: pod,
  976. Container: container,
  977. Data: result.Values,
  978. }
  979. }
  980. type NamespaceAnnotationsResult struct {
  981. UID string
  982. Cluster string
  983. Namespace string
  984. Annotations map[string]string
  985. Data []*util.Vector
  986. }
  987. func DecodeNamespaceAnnotationsResult(result *QueryResult) *NamespaceAnnotationsResult {
  988. uid, _ := result.GetString(UIDLabel)
  989. cluster, _ := result.GetCluster()
  990. namespace, _ := result.GetNamespace()
  991. annotations := result.GetAnnotations()
  992. return &NamespaceAnnotationsResult{
  993. UID: uid,
  994. Cluster: cluster,
  995. Namespace: namespace,
  996. Annotations: annotations,
  997. Data: result.Values,
  998. }
  999. }
  1000. type PodAnnotationsResult struct {
  1001. UID string
  1002. Cluster string
  1003. Namespace string
  1004. Pod string
  1005. Annotations map[string]string
  1006. Data []*util.Vector
  1007. }
  1008. func DecodePodAnnotationsResult(result *QueryResult) *PodAnnotationsResult {
  1009. uid, _ := result.GetString(UIDLabel)
  1010. cluster, _ := result.GetCluster()
  1011. namespace, _ := result.GetNamespace()
  1012. pod, _ := result.GetPod()
  1013. annotations := result.GetAnnotations()
  1014. return &PodAnnotationsResult{
  1015. UID: uid,
  1016. Cluster: cluster,
  1017. Namespace: namespace,
  1018. Pod: pod,
  1019. Annotations: annotations,
  1020. Data: result.Values,
  1021. }
  1022. }
  1023. type NodeLabelsResult struct {
  1024. UID string
  1025. Cluster string
  1026. Node string
  1027. Labels map[string]string
  1028. Data []*util.Vector
  1029. }
  1030. func DecodeNodeLabelsResult(result *QueryResult) *NodeLabelsResult {
  1031. uid, _ := result.GetString(UIDLabel)
  1032. cluster, _ := result.GetCluster()
  1033. node, _ := result.GetNode()
  1034. labels := result.GetLabels()
  1035. return &NodeLabelsResult{
  1036. UID: uid,
  1037. Cluster: cluster,
  1038. Node: node,
  1039. Labels: labels,
  1040. Data: result.Values,
  1041. }
  1042. }
  1043. type NamespaceLabelsResult struct {
  1044. UID string
  1045. Cluster string
  1046. Namespace string
  1047. Labels map[string]string
  1048. Data []*util.Vector
  1049. }
  1050. func DecodeNamespaceLabelsResult(result *QueryResult) *NamespaceLabelsResult {
  1051. uid, _ := result.GetString(UIDLabel)
  1052. cluster, _ := result.GetCluster()
  1053. namespace, _ := result.GetNamespace()
  1054. labels := result.GetLabels()
  1055. return &NamespaceLabelsResult{
  1056. UID: uid,
  1057. Cluster: cluster,
  1058. Namespace: namespace,
  1059. Labels: labels,
  1060. Data: result.Values,
  1061. }
  1062. }
  1063. type PodLabelsResult struct {
  1064. UID string
  1065. Cluster string
  1066. Namespace string
  1067. Pod string
  1068. Labels map[string]string
  1069. Data []*util.Vector
  1070. }
  1071. func DecodePodLabelsResult(result *QueryResult) *PodLabelsResult {
  1072. uid, _ := result.GetString(UIDLabel)
  1073. cluster, _ := result.GetCluster()
  1074. namespace, _ := result.GetNamespace()
  1075. pod, _ := result.GetPod()
  1076. labels := result.GetLabels()
  1077. return &PodLabelsResult{
  1078. UID: uid,
  1079. Cluster: cluster,
  1080. Namespace: namespace,
  1081. Pod: pod,
  1082. Labels: labels,
  1083. Data: result.Values,
  1084. }
  1085. }
  1086. type ServiceLabelsResult struct {
  1087. UID string
  1088. Cluster string
  1089. Namespace string
  1090. Service string
  1091. Labels map[string]string
  1092. Data []*util.Vector
  1093. }
  1094. func DecodeServiceLabelsResult(result *QueryResult) *ServiceLabelsResult {
  1095. uid, _ := result.GetString(UIDLabel)
  1096. cluster, _ := result.GetCluster()
  1097. namespace, _ := result.GetNamespace()
  1098. service, _ := result.GetString(ServiceLabel)
  1099. labels := result.GetLabels()
  1100. return &ServiceLabelsResult{
  1101. UID: uid,
  1102. Cluster: cluster,
  1103. Namespace: namespace,
  1104. Service: service,
  1105. Labels: labels,
  1106. Data: result.Values,
  1107. }
  1108. }
  1109. type DeploymentLabelsResult struct {
  1110. UID string
  1111. Cluster string
  1112. Namespace string
  1113. Deployment string
  1114. Labels map[string]string
  1115. Data []*util.Vector
  1116. }
  1117. func DecodeDeploymentLabelsResult(result *QueryResult) *DeploymentLabelsResult {
  1118. uid, _ := result.GetString(UIDLabel)
  1119. cluster, _ := result.GetCluster()
  1120. namespace, _ := result.GetNamespace()
  1121. deployment, _ := result.GetString(DeploymentLabel)
  1122. labels := result.GetLabels()
  1123. return &DeploymentLabelsResult{
  1124. UID: uid,
  1125. Cluster: cluster,
  1126. Namespace: namespace,
  1127. Deployment: deployment,
  1128. Labels: labels,
  1129. Data: result.Values,
  1130. }
  1131. }
  1132. type StatefulSetLabelsResult struct {
  1133. UID string
  1134. Cluster string
  1135. Namespace string
  1136. StatefulSet string
  1137. Labels map[string]string
  1138. Data []*util.Vector
  1139. }
  1140. func DecodeStatefulSetLabelsResult(result *QueryResult) *StatefulSetLabelsResult {
  1141. uid, _ := result.GetString(UIDLabel)
  1142. cluster, _ := result.GetCluster()
  1143. namespace, _ := result.GetNamespace()
  1144. statefulSet, _ := result.GetString(StatefulSetLabel)
  1145. labels := result.GetLabels()
  1146. return &StatefulSetLabelsResult{
  1147. UID: uid,
  1148. Cluster: cluster,
  1149. Namespace: namespace,
  1150. StatefulSet: statefulSet,
  1151. Labels: labels,
  1152. Data: result.Values,
  1153. }
  1154. }
  1155. type DaemonSetLabelsResult struct {
  1156. UID string
  1157. Cluster string
  1158. Namespace string
  1159. Pod string
  1160. DaemonSet string
  1161. Labels map[string]string
  1162. Data []*util.Vector
  1163. }
  1164. func DecodeDaemonSetLabelsResult(result *QueryResult) *DaemonSetLabelsResult {
  1165. uid, _ := result.GetString(UIDLabel)
  1166. cluster, _ := result.GetCluster()
  1167. namespace, _ := result.GetNamespace()
  1168. pod, _ := result.GetPod()
  1169. daemonSet, _ := result.GetString(OwnerNameLabel)
  1170. labels := result.GetLabels()
  1171. return &DaemonSetLabelsResult{
  1172. UID: uid,
  1173. Cluster: cluster,
  1174. Namespace: namespace,
  1175. Pod: pod,
  1176. DaemonSet: daemonSet,
  1177. Labels: labels,
  1178. Data: result.Values,
  1179. }
  1180. }
  1181. type JobLabelsResult struct {
  1182. UID string
  1183. Cluster string
  1184. Namespace string
  1185. Pod string
  1186. Job string
  1187. Labels map[string]string
  1188. Data []*util.Vector
  1189. }
  1190. func DecodeJobLabelsResult(result *QueryResult) *JobLabelsResult {
  1191. uid, _ := result.GetString(UIDLabel)
  1192. cluster, _ := result.GetCluster()
  1193. namespace, _ := result.GetNamespace()
  1194. pod, _ := result.GetPod()
  1195. job, _ := result.GetString(OwnerNameLabel)
  1196. labels := result.GetLabels()
  1197. return &JobLabelsResult{
  1198. UID: uid,
  1199. Cluster: cluster,
  1200. Namespace: namespace,
  1201. Pod: pod,
  1202. Job: job,
  1203. Labels: labels,
  1204. Data: result.Values,
  1205. }
  1206. }
  1207. type PodsWithReplicaSetOwnerResult struct {
  1208. UID string
  1209. Cluster string
  1210. Namespace string
  1211. Pod string
  1212. ReplicaSet string
  1213. Data []*util.Vector
  1214. }
  1215. func DecodePodsWithReplicaSetOwnerResult(result *QueryResult) *PodsWithReplicaSetOwnerResult {
  1216. uid, _ := result.GetString(UIDLabel)
  1217. cluster, _ := result.GetCluster()
  1218. namespace, _ := result.GetNamespace()
  1219. replicaSet, _ := result.GetString(OwnerNameLabel)
  1220. pod, _ := result.GetPod()
  1221. return &PodsWithReplicaSetOwnerResult{
  1222. UID: uid,
  1223. Cluster: cluster,
  1224. Namespace: namespace,
  1225. Pod: pod,
  1226. ReplicaSet: replicaSet,
  1227. Data: result.Values,
  1228. }
  1229. }
  1230. type ReplicaSetsWithoutOwnersResult struct {
  1231. UID string
  1232. Cluster string
  1233. Namespace string
  1234. ReplicaSet string
  1235. Data []*util.Vector
  1236. }
  1237. func DecodeReplicaSetsWithoutOwnersResult(result *QueryResult) *ReplicaSetsWithoutOwnersResult {
  1238. uid, _ := result.GetString(UIDLabel)
  1239. return &ReplicaSetsWithoutOwnersResult{
  1240. UID: uid,
  1241. Data: result.Values,
  1242. }
  1243. }
  1244. type ReplicaSetsWithRolloutResult struct {
  1245. UID string
  1246. Cluster string
  1247. Namespace string
  1248. ReplicaSet string
  1249. OwnerName string
  1250. OwnerKind string
  1251. Data []*util.Vector
  1252. }
  1253. func DecodeReplicaSetsWithRolloutResult(result *QueryResult) *ReplicaSetsWithRolloutResult {
  1254. uid, _ := result.GetString(UIDLabel)
  1255. cluster, _ := result.GetCluster()
  1256. namespace, _ := result.GetNamespace()
  1257. replicaSet, _ := result.GetString(ReplicaSetLabel)
  1258. ownerName, _ := result.GetString(OwnerNameLabel)
  1259. ownerKind, _ := result.GetString(OwnerKindLabel)
  1260. return &ReplicaSetsWithRolloutResult{
  1261. UID: uid,
  1262. Cluster: cluster,
  1263. Namespace: namespace,
  1264. ReplicaSet: replicaSet,
  1265. OwnerName: ownerName,
  1266. OwnerKind: ownerKind,
  1267. Data: result.Values,
  1268. }
  1269. }
  1270. type ResourceQuotaMetricResult struct {
  1271. UID string
  1272. Namespace string
  1273. ResourceQuota string
  1274. Resource string
  1275. Unit string
  1276. Data []*util.Vector
  1277. }
  1278. func DecodeResourceQuotaMetricResult(result *QueryResult) *ResourceQuotaMetricResult {
  1279. uid, _ := result.GetString(UIDLabel)
  1280. namespace, _ := result.GetNamespace()
  1281. resourceQuota, _ := result.GetString(ResourceQuotaLabel)
  1282. resource, _ := result.GetString(ResourceLabel)
  1283. unit, _ := result.GetString(UnitLabel)
  1284. return &ResourceQuotaMetricResult{
  1285. UID: uid,
  1286. Namespace: namespace,
  1287. ResourceQuota: resourceQuota,
  1288. Resource: resource,
  1289. Unit: unit,
  1290. Data: result.Values,
  1291. }
  1292. }
  1293. type ResourceQuotaSpecCPURequestAvgResult = ResourceQuotaMetricResult
  1294. func DecodeResourceQuotaSpecCPURequestAvgResult(result *QueryResult) *ResourceQuotaSpecCPURequestAvgResult {
  1295. return DecodeResourceQuotaMetricResult(result)
  1296. }
  1297. type ResourceQuotaSpecCPURequestMaxResult = ResourceQuotaMetricResult
  1298. func DecodeResourceQuotaSpecCPURequestMaxResult(result *QueryResult) *ResourceQuotaSpecCPURequestMaxResult {
  1299. return DecodeResourceQuotaMetricResult(result)
  1300. }
  1301. type ResourceQuotaSpecRAMRequestAvgResult = ResourceQuotaMetricResult
  1302. func DecodeResourceQuotaSpecRAMRequestAvgResult(result *QueryResult) *ResourceQuotaSpecRAMRequestAvgResult {
  1303. return DecodeResourceQuotaMetricResult(result)
  1304. }
  1305. type ResourceQuotaSpecRAMRequestMaxResult = ResourceQuotaMetricResult
  1306. func DecodeResourceQuotaSpecRAMRequestMaxResult(result *QueryResult) *ResourceQuotaSpecRAMRequestMaxResult {
  1307. return DecodeResourceQuotaMetricResult(result)
  1308. }
  1309. type ResourceQuotaSpecCPULimitAvgResult = ResourceQuotaMetricResult
  1310. func DecodeResourceQuotaSpecCPULimitAvgResult(result *QueryResult) *ResourceQuotaSpecCPULimitAvgResult {
  1311. return DecodeResourceQuotaMetricResult(result)
  1312. }
  1313. type ResourceQuotaSpecCPULimitMaxResult = ResourceQuotaMetricResult
  1314. func DecodeResourceQuotaSpecCPULimitMaxResult(result *QueryResult) *ResourceQuotaSpecCPULimitMaxResult {
  1315. return DecodeResourceQuotaMetricResult(result)
  1316. }
  1317. type ResourceQuotaSpecRAMLimitAvgResult = ResourceQuotaMetricResult
  1318. func DecodeResourceQuotaSpecRAMLimitAvgResult(result *QueryResult) *ResourceQuotaSpecRAMLimitAvgResult {
  1319. return DecodeResourceQuotaMetricResult(result)
  1320. }
  1321. type ResourceQuotaSpecRAMLimitMaxResult = ResourceQuotaMetricResult
  1322. func DecodeResourceQuotaSpecRAMLimitMaxResult(result *QueryResult) *ResourceQuotaSpecRAMLimitMaxResult {
  1323. return DecodeResourceQuotaMetricResult(result)
  1324. }
  1325. type ResourceQuotaStatusUsedCPURequestAvgResult = ResourceQuotaMetricResult
  1326. func DecodeResourceQuotaStatusUsedCPURequestAvgResult(result *QueryResult) *ResourceQuotaStatusUsedCPURequestAvgResult {
  1327. return DecodeResourceQuotaMetricResult(result)
  1328. }
  1329. type ResourceQuotaStatusUsedCPURequestMaxResult = ResourceQuotaMetricResult
  1330. func DecodeResourceQuotaStatusUsedCPURequestMaxResult(result *QueryResult) *ResourceQuotaStatusUsedCPURequestMaxResult {
  1331. return DecodeResourceQuotaMetricResult(result)
  1332. }
  1333. type ResourceQuotaStatusUsedRAMRequestAvgResult = ResourceQuotaMetricResult
  1334. func DecodeResourceQuotaStatusUsedRAMRequestAvgResult(result *QueryResult) *ResourceQuotaStatusUsedRAMRequestAvgResult {
  1335. return DecodeResourceQuotaMetricResult(result)
  1336. }
  1337. type ResourceQuotaStatusUsedRAMRequestMaxResult = ResourceQuotaMetricResult
  1338. func DecodeResourceQuotaStatusUsedRAMRequestMaxResult(result *QueryResult) *ResourceQuotaStatusUsedRAMRequestMaxResult {
  1339. return DecodeResourceQuotaMetricResult(result)
  1340. }
  1341. type ResourceQuotaStatusUsedCPULimitAvgResult = ResourceQuotaMetricResult
  1342. func DecodeResourceQuotaStatusUsedCPULimitAvgResult(result *QueryResult) *ResourceQuotaStatusUsedCPULimitAvgResult {
  1343. return DecodeResourceQuotaMetricResult(result)
  1344. }
  1345. type ResourceQuotaStatusUsedCPULimitMaxResult = ResourceQuotaMetricResult
  1346. func DecodeResourceQuotaStatusUsedCPULimitMaxResult(result *QueryResult) *ResourceQuotaStatusUsedCPULimitMaxResult {
  1347. return DecodeResourceQuotaMetricResult(result)
  1348. }
  1349. type ResourceQuotaStatusUsedRAMLimitAvgResult = ResourceQuotaMetricResult
  1350. func DecodeResourceQuotaStatusUsedRAMLimitAvgResult(result *QueryResult) *ResourceQuotaStatusUsedRAMLimitAvgResult {
  1351. return DecodeResourceQuotaMetricResult(result)
  1352. }
  1353. type ResourceQuotaStatusUsedRAMLimitMaxResult = ResourceQuotaMetricResult
  1354. func DecodeResourceQuotaStatusUsedRAMLimitMaxResult(result *QueryResult) *ResourceQuotaStatusUsedRAMLimitMaxResult {
  1355. return DecodeResourceQuotaMetricResult(result)
  1356. }
  1357. func DecodeAll[T any](results []*QueryResult, decode ResultDecoder[T]) []*T {
  1358. decoded := make([]*T, 0, len(results))
  1359. for _, result := range results {
  1360. decoded = append(decoded, decode(result))
  1361. }
  1362. return decoded
  1363. }