decoders.go 41 KB

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