@@ -14,8 +14,10 @@ import (
14
14
)
15
15
16
16
const (
17
+ appCPULimit = `sum by (container) (kube_pod_container_resource_limits{namespace=%q, container=%q, resource="cpu", unit="core"})`
17
18
appCPURequest = `sum by (container) (kube_pod_container_resource_requests{namespace=%q, container=%q, resource="cpu",unit="core"})`
18
19
appCPUUsage = `sum by (container) (rate(container_cpu_usage_seconds_total{namespace=%q, container=%q}[5m]))`
20
+ appMemoryLimit = `sum by (container) (kube_pod_container_resource_limits{namespace=%q, container=%q, resource="memory", unit="byte"})`
19
21
appMemoryRequest = `sum by (container) (kube_pod_container_resource_requests{namespace=%q, container=%q, resource="memory",unit="byte"})`
20
22
appMemoryUsage = `sum by (container) (container_memory_working_set_bytes{namespace=%q, container=%q})`
21
23
teamCPURequest = `sum by (container, owner_kind) (kube_pod_container_resource_requests{namespace=%q, container!~%q, resource="cpu",unit="core"} * on(pod,namespace) group_left(owner_kind) kube_pod_owner{owner_kind="ReplicaSet"})`
@@ -154,6 +156,26 @@ func WorkloadResourceRequest(ctx context.Context, env string, teamSlug slug.Slug
154
156
return ensuredVal (v ), nil
155
157
}
156
158
159
+ func WorkloadResourceLimit (ctx context.Context , env string , teamSlug slug.Slug , workloadName string , resourceType UtilizationResourceType ) (* float64 , error ) {
160
+ q := appMemoryLimit
161
+ if resourceType == UtilizationResourceTypeCPU {
162
+ q = appCPULimit
163
+ }
164
+
165
+ c := fromContext (ctx ).client
166
+
167
+ v , err := c .query (ctx , env , fmt .Sprintf (q , teamSlug , workloadName ))
168
+ if err != nil {
169
+ return nil , err
170
+ }
171
+
172
+ if len (v ) == 0 {
173
+ return nil , nil
174
+ }
175
+
176
+ return (* float64 )(& v [0 ].Value ), nil
177
+ }
178
+
157
179
func WorkloadResourceUsage (ctx context.Context , env string , teamSlug slug.Slug , workloadName string , resourceType UtilizationResourceType ) (float64 , error ) {
158
180
q := appMemoryUsage
159
181
if resourceType == UtilizationResourceTypeCPU {
0 commit comments