Remove pod status.phase check from pod event handlers

pull/58/head
Bobby (Babak) Salamat 2018-10-09 13:39:04 -07:00
parent 830e09cc96
commit 5f2555e3ad
1 changed files with 7 additions and 24 deletions

View File

@ -202,10 +202,10 @@ func NewConfigFactory(args *ConfigFactoryArgs) scheduler.Configurator {
FilterFunc: func(obj interface{}) bool { FilterFunc: func(obj interface{}) bool {
switch t := obj.(type) { switch t := obj.(type) {
case *v1.Pod: case *v1.Pod:
return assignedNonTerminatedPod(t) return assignedPod(t)
case cache.DeletedFinalStateUnknown: case cache.DeletedFinalStateUnknown:
if pod, ok := t.Obj.(*v1.Pod); ok { if pod, ok := t.Obj.(*v1.Pod); ok {
return assignedNonTerminatedPod(pod) return assignedPod(pod)
} }
runtime.HandleError(fmt.Errorf("unable to convert object %T to *v1.Pod in %T", obj, c)) runtime.HandleError(fmt.Errorf("unable to convert object %T to *v1.Pod in %T", obj, c))
return false return false
@ -227,10 +227,10 @@ func NewConfigFactory(args *ConfigFactoryArgs) scheduler.Configurator {
FilterFunc: func(obj interface{}) bool { FilterFunc: func(obj interface{}) bool {
switch t := obj.(type) { switch t := obj.(type) {
case *v1.Pod: case *v1.Pod:
return unassignedNonTerminatedPod(t) && responsibleForPod(t, args.SchedulerName) return !assignedPod(t) && responsibleForPod(t, args.SchedulerName)
case cache.DeletedFinalStateUnknown: case cache.DeletedFinalStateUnknown:
if pod, ok := t.Obj.(*v1.Pod); ok { if pod, ok := t.Obj.(*v1.Pod); ok {
return unassignedNonTerminatedPod(pod) && responsibleForPod(pod, args.SchedulerName) return !assignedPod(pod) && responsibleForPod(pod, args.SchedulerName)
} }
runtime.HandleError(fmt.Errorf("unable to convert object %T to *v1.Pod in %T", obj, c)) runtime.HandleError(fmt.Errorf("unable to convert object %T to *v1.Pod in %T", obj, c))
return false return false
@ -1240,26 +1240,9 @@ func (c *configFactory) getNextPod() *v1.Pod {
return nil return nil
} }
// unassignedNonTerminatedPod selects pods that are unassigned and non-terminal. // assignedPod selects pods that are assigned (scheduled and running).
func unassignedNonTerminatedPod(pod *v1.Pod) bool { func assignedPod(pod *v1.Pod) bool {
if len(pod.Spec.NodeName) != 0 { return len(pod.Spec.NodeName) != 0
return false
}
if pod.Status.Phase == v1.PodSucceeded || pod.Status.Phase == v1.PodFailed {
return false
}
return true
}
// assignedNonTerminatedPod selects pods that are assigned and non-terminal (scheduled and running).
func assignedNonTerminatedPod(pod *v1.Pod) bool {
if len(pod.Spec.NodeName) == 0 {
return false
}
if pod.Status.Phase == v1.PodSucceeded || pod.Status.Phase == v1.PodFailed {
return false
}
return true
} }
// responsibleForPod returns true if the pod has asked to be scheduled by the given scheduler. // responsibleForPod returns true if the pod has asked to be scheduled by the given scheduler.