MCPcopy Index your code
hub / github.com/devspace-sh/devspace / GetPodStatus

Function GetPodStatus

pkg/devspace/kubectl/util.go:86–158  ·  view source on GitHub ↗

GetPodStatus returns the pod status as a string Taken from https://github.com/kubernetes/kubernetes/pkg/printers/internalversion/printers.go

(pod *corev1.Pod)

Source from the content-addressed store, hash-verified

84// GetPodStatus returns the pod status as a string
85// Taken from https://github.com/kubernetes/kubernetes/pkg/printers/internalversion/printers.go
86func GetPodStatus(pod *corev1.Pod) string {
87 reason := string(pod.Status.Phase)
88
89 if pod.Status.Reason != "" {
90 reason = pod.Status.Reason
91 }
92
93 initializing := false
94
95 for i := range pod.Status.InitContainerStatuses {
96 container := pod.Status.InitContainerStatuses[i]
97
98 switch {
99 case container.State.Terminated != nil && container.State.Terminated.ExitCode == 0:
100 continue
101 case container.State.Running != nil && pod.Spec.InitContainers[i].RestartPolicy != nil:
102 continue
103 case container.State.Terminated != nil:
104 // initialization is failed
105 if len(container.State.Terminated.Reason) == 0 {
106 if container.State.Terminated.Signal != 0 {
107 reason = fmt.Sprintf("Init:Signal:%d", container.State.Terminated.Signal)
108 } else {
109 reason = fmt.Sprintf("Init:ExitCode:%d", container.State.Terminated.ExitCode)
110 }
111 } else {
112 reason = "Init:" + container.State.Terminated.Reason
113 }
114 initializing = true
115 case container.State.Waiting != nil && len(container.State.Waiting.Reason) > 0 && container.State.Waiting.Reason != "PodInitializing":
116 reason = "Init:" + container.State.Waiting.Reason
117 initializing = true
118 default:
119 reason = fmt.Sprintf("Init:%d/%d", i, len(pod.Spec.InitContainers))
120 initializing = true
121 }
122 break
123 }
124 if !initializing {
125 hasRunning := false
126
127 for i := len(pod.Status.ContainerStatuses) - 1; i >= 0; i-- {
128 container := pod.Status.ContainerStatuses[i]
129
130 if container.State.Waiting != nil && container.State.Waiting.Reason != "" {
131 reason = container.State.Waiting.Reason
132 } else if container.State.Terminated != nil && container.State.Terminated.Reason != "" {
133 reason = container.State.Terminated.Reason
134 } else if container.State.Terminated != nil && container.State.Terminated.Reason == "" {
135 if container.State.Terminated.Signal != 0 {
136 reason = fmt.Sprintf("Signal:%d", container.State.Terminated.Signal)
137 } else {
138 reason = fmt.Sprintf("ExitCode:%d", container.State.Terminated.ExitCode)
139 }
140 } else if container.Ready && container.State.Running != nil {
141 hasRunning = true
142 }
143 }

Callers 10

SelectPodMethod · 0.92
PrintPodInfoMethod · 0.92
PrintPodWarningMethod · 0.92
HasPodProblemFunction · 0.92
PrintPodErrorFunction · 0.92
executeMethod · 0.92
SelectPodMethod · 0.92
podsMethod · 0.92
checkPodFunction · 0.92
TestGetPodStatusFunction · 0.70

Calls

no outgoing calls

Tested by 1

TestGetPodStatusFunction · 0.56