From 8d3e78150fa4d6480796350c91effa4d07a0eb36 Mon Sep 17 00:00:00 2001 From: derailed Date: Fri, 26 Apr 2019 18:31:35 -0600 Subject: [PATCH] cleaning up --- internal/resource/pod.go | 58 ++++++++++++++++++---------------- internal/views/app.go | 4 +-- internal/views/cluster_info.go | 1 + 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/internal/resource/pod.go b/internal/resource/pod.go index 124384a1..d337df45 100644 --- a/internal/resource/pod.go +++ b/internal/resource/pod.go @@ -256,7 +256,7 @@ func isSet(s *string) bool { return s != nil && *s != "" } -func (*Pod) phase(po *v1.Pod) string { +func (p *Pod) phase(po *v1.Pod) string { status := string(po.Status.Phase) if po.Status.Reason != "" { if po.DeletionTimestamp != nil && po.Status.Reason == node.NodeUnreachablePodReason { @@ -266,32 +266,7 @@ func (*Pod) phase(po *v1.Pod) string { } var init bool - for i, cs := range po.Status.InitContainerStatuses { - switch { - case cs.State.Terminated != nil: - if cs.State.Terminated.ExitCode == 0 { - continue - } - if cs.State.Terminated.Reason != "" { - status = "Init:" + cs.State.Terminated.Reason - init = true - break - } - - if cs.State.Terminated.Signal != 0 { - status = fmt.Sprintf("Init:Signal:%d", cs.State.Terminated.Signal) - } else { - status = fmt.Sprintf("Init:ExitCode:%d", cs.State.Terminated.ExitCode) - } - 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)) - } - init = true - break - } - + init, status = p.initPhase(po, status) if init { return status } @@ -325,3 +300,32 @@ func (*Pod) phase(po *v1.Pod) string { return "Terminated" } + +func (*Pod) initPhase(po *v1.Pod, status string) (bool, string) { + var init bool + for i, cs := range po.Status.InitContainerStatuses { + switch { + case cs.State.Terminated != nil: + if cs.State.Terminated.ExitCode == 0 { + continue + } + if cs.State.Terminated.Reason != "" { + status = "Init:" + cs.State.Terminated.Reason + break + } + if cs.State.Terminated.Signal != 0 { + status = fmt.Sprintf("Init:Signal:%d", cs.State.Terminated.Signal) + } else { + status = fmt.Sprintf("Init:ExitCode:%d", cs.State.Terminated.ExitCode) + } + 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)) + } + init = true + break + } + + return init, status +} diff --git a/internal/views/app.go b/internal/views/app.go index 13527e23..645e636f 100644 --- a/internal/views/app.go +++ b/internal/views/app.go @@ -3,8 +3,8 @@ package views import ( "context" "fmt" - "time" "sync" + "time" "github.com/derailed/k9s/internal/config" "github.com/derailed/k9s/internal/k8s" @@ -61,7 +61,7 @@ type ( cmdBuff *cmdBuff cmdView *cmdView actions keyActions - mx sync.Mutex + mx sync.Mutex } ) diff --git a/internal/views/cluster_info.go b/internal/views/cluster_info.go index 06ed8ed4..17548da1 100644 --- a/internal/views/cluster_info.go +++ b/internal/views/cluster_info.go @@ -16,6 +16,7 @@ type clusterInfoView struct { cluster *resource.Cluster } +// ClusterInfo tracks Kubernetes cluster and K9s information. type ClusterInfo interface { ContextName() string ClusterName() string