@@ -113,11 +113,39 @@ func ComputePodQOS(pod *core.Pod) core.PodQOSClass {
113
113
allContainers = append (allContainers , pod .Spec .InitContainers ... )
114
114
for _ , container := range allContainers {
115
115
// process requests
116
- processResourceList (requests , container .Resources .Requests )
116
+ for name , quantity := range container .Resources .Requests {
117
+ if ! isSupportedQoSComputeResource (name ) {
118
+ continue
119
+ }
120
+ if quantity .Cmp (zeroQuantity ) == 1 {
121
+ delta := quantity .DeepCopy ()
122
+ if _ , exists := requests [name ]; ! exists {
123
+ requests [name ] = delta
124
+ } else {
125
+ delta .Add (requests [name ])
126
+ requests [name ] = delta
127
+ }
128
+ }
129
+ }
117
130
// process limits
118
- processResourceList (limits , container .Resources .Limits )
119
- qosLimitResources := getQOSResources (container .Resources .Limits )
120
- if ! qosLimitResources .HasAll (string (core .ResourceMemory ), string (core .ResourceCPU )) {
131
+ qosLimitsFound := sets .NewString ()
132
+ for name , quantity := range container .Resources .Limits {
133
+ if ! isSupportedQoSComputeResource (name ) {
134
+ continue
135
+ }
136
+ if quantity .Cmp (zeroQuantity ) == 1 {
137
+ qosLimitsFound .Insert (string (name ))
138
+ delta := quantity .DeepCopy ()
139
+ if _ , exists := limits [name ]; ! exists {
140
+ limits [name ] = delta
141
+ } else {
142
+ delta .Add (limits [name ])
143
+ limits [name ] = delta
144
+ }
145
+ }
146
+ }
147
+
148
+ if ! qosLimitsFound .HasAll (string (core .ResourceMemory ), string (core .ResourceCPU )) {
121
149
isGuaranteed = false
122
150
}
123
151
}
0 commit comments