From 1c26c91ee7feaf5461f3641bc79ef42dc3fc2ee9 Mon Sep 17 00:00:00 2001 From: atiratree Date: Thu, 20 May 2021 15:36:04 +0200 Subject: [PATCH] kubectl: show consistent unit format in quota describe API returns unit format in a non deterministic manner; ie it chooses a unit format according to a resource that gets counted first Kubernetes-commit: 3f0b64ec9597488be6365f89cc82338bcb7a9feb --- pkg/describe/describe.go | 11 +++++++---- pkg/describe/describe_test.go | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/pkg/describe/describe.go b/pkg/describe/describe.go index b366c044..94c7ddd9 100644 --- a/pkg/describe/describe.go +++ b/pkg/describe/describe.go @@ -672,10 +672,13 @@ func describeQuota(resourceQuota *corev1.ResourceQuota) (string, error) { msg := "%v\t%v\t%v\n" for i := range resources { - resource := resources[i] - hardQuantity := resourceQuota.Status.Hard[resource] - usedQuantity := resourceQuota.Status.Used[resource] - w.Write(LEVEL_0, msg, resource, usedQuantity.String(), hardQuantity.String()) + resourceName := resources[i] + hardQuantity := resourceQuota.Status.Hard[resourceName] + usedQuantity := resourceQuota.Status.Used[resourceName] + if hardQuantity.Format != usedQuantity.Format { + usedQuantity = *resource.NewQuantity(usedQuantity.Value(), hardQuantity.Format) + } + w.Write(LEVEL_0, msg, resourceName, usedQuantity.String(), hardQuantity.String()) } return nil }) diff --git a/pkg/describe/describe_test.go b/pkg/describe/describe_test.go index 0d046cda..c990cc96 100644 --- a/pkg/describe/describe_test.go +++ b/pkg/describe/describe_test.go @@ -4066,7 +4066,7 @@ func TestDescribeResourceQuota(t *testing.T) { corev1.ResourceName(corev1.ResourceLimitsMemory): resource.MustParse("0G"), corev1.ResourceName(corev1.ResourceMemory): resource.MustParse("0G"), corev1.ResourceName(corev1.ResourceRequestsCPU): resource.MustParse("0"), - corev1.ResourceName(corev1.ResourceRequestsMemory): resource.MustParse("0G"), + corev1.ResourceName(corev1.ResourceRequestsMemory): resource.MustParse("1000Ki"), }, }, }) @@ -4076,7 +4076,7 @@ func TestDescribeResourceQuota(t *testing.T) { if err != nil { t.Errorf("unexpected error: %v", err) } - expectedOut := []string{"bar", "foo", "limits.cpu", "2", "limits.memory", "2G", "requests.cpu", "1", "requests.memory", "1G"} + expectedOut := []string{"bar", "foo", "limits.cpu", "2", "limits.memory", "2G", "requests.cpu", "1", "requests.memory", "1024k", "1G"} for _, expected := range expectedOut { if !strings.Contains(out, expected) { t.Errorf("expected to find %q in output: %q", expected, out)