2
0

decoders.go 42 KB

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