From 0c425f2edf0f40a87eb50b94e71d8cf9aa4b8ba9 Mon Sep 17 00:00:00 2001 From: Pavel Tumik Date: Thu, 30 Apr 2020 14:09:24 -0700 Subject: [PATCH] If container doesn't have resources set, in pod view show limits as n/a --- internal/client/metrics.go | 9 +++++++++ internal/render/pod.go | 8 ++++---- internal/render/pod_test.go | 4 ++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/internal/client/metrics.go b/internal/client/metrics.go index 78281bde..9df634e3 100644 --- a/internal/client/metrics.go +++ b/internal/client/metrics.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "math" + "strconv" "time" v1 "k8s.io/api/core/v1" @@ -262,3 +263,11 @@ func ToPercentage(v1, v2 int64) int { } return int(math.Floor((float64(v1) / float64(v2)) * 100)) } + +// ToPercentageStr computes percentage, but if v2 is 0, it will return NAValue instead of 0 +func ToPercentageStr(v1, v2 int64) string { + if v2 == 0 { + return NA + } + return strconv.Itoa(ToPercentage(v1, v2)) +} diff --git a/internal/render/pod.go b/internal/render/pod.go index 028761e5..2186e70c 100644 --- a/internal/render/pod.go +++ b/internal/render/pod.go @@ -160,10 +160,10 @@ func (*Pod) gatherPodMX(pod *v1.Pod, mx *mv1beta1.PodMetrics) (c, p metric) { rc, rm := requestedRes(pod.Spec.Containers) lc, lm := resourceLimits(pod.Spec.Containers) p = metric{ - cpu: IntToStr(client.ToPercentage(cpu.MilliValue(), rc.MilliValue())), - mem: IntToStr(client.ToPercentage(client.ToMB(mem.Value()), client.ToMB(rm.Value()))), - cpuLim: IntToStr(client.ToPercentage(cpu.MilliValue(), lc.MilliValue())), - memLim: IntToStr(client.ToPercentage(client.ToMB(mem.Value()), client.ToMB(lm.Value()))), + cpu: client.ToPercentageStr(cpu.MilliValue(), rc.MilliValue()), + mem: client.ToPercentageStr(client.ToMB(mem.Value()), client.ToMB(rm.Value())), + cpuLim: client.ToPercentageStr(cpu.MilliValue(), lc.MilliValue()), + memLim: client.ToPercentageStr(client.ToMB(mem.Value()), client.ToMB(lm.Value())), } return diff --git a/internal/render/pod_test.go b/internal/render/pod_test.go index b2bff835..6be5b41f 100644 --- a/internal/render/pod_test.go +++ b/internal/render/pod_test.go @@ -159,7 +159,7 @@ func TestPodRender(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "default/nginx", r.ID) - e := render.Fields{"default", "nginx", "1/1", "0", "Running", "10", "10", "10", "14", "0", "5", "172.17.0.6", "minikube", "BE"} + e := render.Fields{"default", "nginx", "1/1", "0", "Running", "10", "10", "10", "14", render.NAValue, "5", "172.17.0.6", "minikube", "BE"} assert.Equal(t, e, r.Fields[:14]) } @@ -190,7 +190,7 @@ func TestPodInitRender(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "default/nginx", r.ID) - e := render.Fields{"default", "nginx", "1/1", "0", "Init:0/1", "10", "10", "10", "14", "0", "5", "172.17.0.6", "minikube", "BE"} + e := render.Fields{"default", "nginx", "1/1", "0", "Init:0/1", "10", "10", "10", "14", render.NAValue, "5", "172.17.0.6", "minikube", "BE"} assert.Equal(t, e, r.Fields[:14]) }