decoders.go 36 KB

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