@@ -20,7 +20,6 @@ import (
2020 "bytes"
2121 "context"
2222 "regexp"
23- "strings"
2423 "time"
2524
2625 "github.com/cortexlabs/cortex/pkg/lib/errors"
@@ -38,7 +37,12 @@ var _podTypeMeta = kmeta.TypeMeta{
3837 Kind : "Pod" ,
3938}
4039
41- const ReasonEvicted = "Evicted"
40+ // pod termination reasons
41+ // https://github.com/kubernetes/kube-state-metrics/blob/master/docs/pod-metrics.md
42+ const (
43+ ReasonEvicted = "Evicted"
44+ ReasonOOMKilled = "OOMKilled"
45+ )
4246
4347type PodStatus string
4448
@@ -148,22 +152,14 @@ func WasPodOOMKilled(pod *kcore.Pod) bool {
148152 return true
149153 }
150154 for _ , containerStatus := range pod .Status .ContainerStatuses {
155+ var reason string
151156 if containerStatus .LastTerminationState .Terminated != nil {
152- exitCode := containerStatus .LastTerminationState .Terminated .ExitCode
153- reason := strings .ToLower (containerStatus .LastTerminationState .Terminated .Reason )
154- if _killStatuses [exitCode ] {
155- if strings .Contains (reason , "oom" ) {
156- return true
157- }
158- }
157+ reason = containerStatus .LastTerminationState .Terminated .Reason
159158 } else if containerStatus .State .Terminated != nil {
160- exitCode := containerStatus .State .Terminated .ExitCode
161- reason := strings .ToLower (containerStatus .State .Terminated .Reason )
162- if _killStatuses [exitCode ] {
163- if strings .Contains (reason , "oom" ) {
164- return true
165- }
166- }
159+ reason = containerStatus .State .Terminated .Reason
160+ }
161+ if reason == ReasonOOMKilled {
162+ return true
167163 }
168164 }
169165
@@ -194,25 +190,21 @@ func GetPodStatus(pod *kcore.Pod) PodStatus {
194190 }
195191
196192 for _ , containerStatus := range pod .Status .ContainerStatuses {
193+ var reason string
194+ var exitCode int32
197195 if containerStatus .LastTerminationState .Terminated != nil {
198- exitCode := containerStatus .LastTerminationState .Terminated .ExitCode
199- reason := strings .ToLower (containerStatus .LastTerminationState .Terminated .Reason )
200- if _killStatuses [exitCode ] {
201- if strings .Contains (reason , "oom" ) {
202- return PodStatusKilledOOM
203- }
204- return PodStatusKilled
205- }
196+ reason = containerStatus .LastTerminationState .Terminated .Reason
197+ exitCode = containerStatus .LastTerminationState .Terminated .ExitCode
206198 } else if containerStatus .State .Terminated != nil {
207- exitCode := containerStatus .State .Terminated .ExitCode
208- reason := strings .ToLower (containerStatus .State .Terminated .Reason )
209- if _killStatuses [exitCode ] {
210- if strings .Contains (reason , "oom" ) {
211- return PodStatusKilledOOM
212- }
213- return PodStatusKilled
214- }
199+ reason = containerStatus .State .Terminated .Reason
200+ exitCode = containerStatus .State .Terminated .ExitCode
215201 }
202+ if reason == ReasonOOMKilled {
203+ return PodStatusKilledOOM
204+ } else if _killStatuses [exitCode ] {
205+ return PodStatusKilled
206+ }
207+
216208 }
217209 return PodStatusFailed
218210 case kcore .PodRunning :
@@ -245,29 +237,25 @@ func PodStatusFromContainerStatuses(containerStatuses []kcore.ContainerStatus) P
245237 numRunning ++
246238 } else if containerStatus .State .Terminated != nil {
247239 exitCode := containerStatus .State .Terminated .ExitCode
248- reason := strings .ToLower (containerStatus .State .Terminated .Reason )
249- if exitCode == 0 {
240+ reason := containerStatus .State .Terminated .Reason
241+ if reason == ReasonOOMKilled {
242+ numKilledOOM ++
243+ } else if exitCode == 0 {
250244 numSucceeded ++
251245 } else if _killStatuses [exitCode ] {
252- if strings .Contains (reason , "oom" ) {
253- numKilledOOM ++
254- } else {
255- numKilled ++
256- }
246+ numKilled ++
257247 } else {
258248 numFailed ++
259249 }
260250 } else if containerStatus .LastTerminationState .Terminated != nil {
261251 exitCode := containerStatus .LastTerminationState .Terminated .ExitCode
262- reason := strings .ToLower (containerStatus .LastTerminationState .Terminated .Reason )
263- if exitCode == 0 {
252+ reason := containerStatus .LastTerminationState .Terminated .Reason
253+ if reason == ReasonOOMKilled {
254+ numKilledOOM ++
255+ } else if exitCode == 0 {
264256 numSucceeded ++
265257 } else if _killStatuses [exitCode ] {
266- if strings .Contains (reason , "oom" ) {
267- numKilledOOM ++
268- } else {
269- numKilled ++
270- }
258+ numKilled ++
271259 } else {
272260 numFailed ++
273261 }
0 commit comments