phase refactoring

mine
derailed 2019-04-26 18:38:22 -06:00
parent 51184eb2b4
commit b0f9064fd3
1 changed files with 21 additions and 15 deletions

View File

@ -266,14 +266,28 @@ func (r *Pod) phase(po *v1.Pod) string {
}
var init bool
init, status = r.initPhase(po, status)
init, status = r.initContainerPhase(po.Status, len(po.Spec.InitContainers), status)
if init {
return status
}
var running bool
for i := len(po.Status.ContainerStatuses) - 1; i >= 0; i-- {
cs := po.Status.ContainerStatuses[i]
running, status = r.containerPhase(po.Status, status)
if status == "Completed" && running {
status = "Running"
}
if po.DeletionTimestamp == nil {
return status
}
return "Terminated"
}
func (*Pod) containerPhase(st v1.PodStatus, status string) (bool, string) {
var running bool
for i := len(st.ContainerStatuses) - 1; i >= 0; i-- {
cs := st.ContainerStatuses[i]
switch {
case cs.State.Waiting != nil && cs.State.Waiting.Reason != "":
status = cs.State.Waiting.Reason
@ -290,20 +304,12 @@ func (r *Pod) phase(po *v1.Pod) string {
}
}
if status == "Completed" && running {
status = "Running"
return running, status
}
if po.DeletionTimestamp == nil {
return status
}
return "Terminated"
}
func (*Pod) initPhase(po *v1.Pod, status string) (bool, string) {
func (*Pod) initContainerPhase(st v1.PodStatus, initCount int, status string) (bool, string) {
var init bool
for i, cs := range po.Status.InitContainerStatuses {
for i, cs := range st.InitContainerStatuses {
switch {
case cs.State.Terminated != nil:
if cs.State.Terminated.ExitCode == 0 {
@ -321,7 +327,7 @@ func (*Pod) initPhase(po *v1.Pod, status string) (bool, string) {
case cs.State.Waiting != nil && cs.State.Waiting.Reason != "" && cs.State.Waiting.Reason != "PodInitializing":
status = "Init:" + cs.State.Waiting.Reason
default:
status = fmt.Sprintf("Init:%d/%d", i, len(po.Spec.InitContainers))
status = fmt.Sprintf("Init:%d/%d", i, initCount)
}
init = true
break