phase refactoring
parent
51184eb2b4
commit
b0f9064fd3
|
|
@ -266,14 +266,28 @@ func (r *Pod) phase(po *v1.Pod) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var init bool
|
var init bool
|
||||||
init, status = r.initPhase(po, status)
|
init, status = r.initContainerPhase(po.Status, len(po.Spec.InitContainers), status)
|
||||||
if init {
|
if init {
|
||||||
return status
|
return status
|
||||||
}
|
}
|
||||||
|
|
||||||
var running bool
|
var running bool
|
||||||
for i := len(po.Status.ContainerStatuses) - 1; i >= 0; i-- {
|
running, status = r.containerPhase(po.Status, status)
|
||||||
cs := po.Status.ContainerStatuses[i]
|
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 {
|
switch {
|
||||||
case cs.State.Waiting != nil && cs.State.Waiting.Reason != "":
|
case cs.State.Waiting != nil && cs.State.Waiting.Reason != "":
|
||||||
status = 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 {
|
return running, status
|
||||||
status = "Running"
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
var init bool
|
||||||
for i, cs := range po.Status.InitContainerStatuses {
|
for i, cs := range st.InitContainerStatuses {
|
||||||
switch {
|
switch {
|
||||||
case cs.State.Terminated != nil:
|
case cs.State.Terminated != nil:
|
||||||
if cs.State.Terminated.ExitCode == 0 {
|
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":
|
case cs.State.Waiting != nil && cs.State.Waiting.Reason != "" && cs.State.Waiting.Reason != "PodInitializing":
|
||||||
status = "Init:" + cs.State.Waiting.Reason
|
status = "Init:" + cs.State.Waiting.Reason
|
||||||
default:
|
default:
|
||||||
status = fmt.Sprintf("Init:%d/%d", i, len(po.Spec.InitContainers))
|
status = fmt.Sprintf("Init:%d/%d", i, initCount)
|
||||||
}
|
}
|
||||||
init = true
|
init = true
|
||||||
break
|
break
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue