From 252000d0a41cde6badd132c559a9ab84be389427 Mon Sep 17 00:00:00 2001 From: Jongwoo Han Date: Mon, 26 Feb 2024 12:00:50 +0900 Subject: [PATCH] Add missing columns to `gwctl get policycrds` Signed-off-by: Jongwoo Han --- gwctl/pkg/printer/policies.go | 8 +++++--- gwctl/pkg/printer/policies_test.go | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gwctl/pkg/printer/policies.go b/gwctl/pkg/printer/policies.go index a05187b632..698db5fccf 100644 --- a/gwctl/pkg/printer/policies.go +++ b/gwctl/pkg/printer/policies.go @@ -77,7 +77,7 @@ func (pp *PoliciesPrinter) PrintCRDs(policyCRDs []policymanager.PolicyCRD) { }) tw := tabwriter.NewWriter(pp.Out, 0, 0, 2, ' ', 0) - row := []string{"NAME", "GROUP", "KIND", "POLICY TYPE", "SCOPE"} + row := []string{"NAME", "POLICY TYPE", "SCOPE", "AGE"} tw.Write([]byte(strings.Join(row, "\t") + "\n")) for _, policyCRD := range policyCRDs { @@ -85,12 +85,14 @@ func (pp *PoliciesPrinter) PrintCRDs(policyCRDs []policymanager.PolicyCRD) { if policyCRD.IsInherited() { policyType = "Inherited" } + + age := duration.HumanDuration(pp.Clock.Since(policyCRD.CRD().GetCreationTimestamp().Time)) + row := []string{ policyCRD.CRD().Name, - policyCRD.CRD().Spec.Group, - policyCRD.CRD().Spec.Names.Kind, policyType, string(policyCRD.CRD().Spec.Scope), + age, } tw.Write([]byte(strings.Join(row, "\t") + "\n")) } diff --git a/gwctl/pkg/printer/policies_test.go b/gwctl/pkg/printer/policies_test.go index a1972d0974..4ba2f1c22e 100644 --- a/gwctl/pkg/printer/policies_test.go +++ b/gwctl/pkg/printer/policies_test.go @@ -251,6 +251,7 @@ Spec: } func TestPoliciesPrinter_PrintCRDs(t *testing.T) { + fakeClock := testingclock.NewFakeClock(time.Now()) objects := []runtime.Object{ &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{ @@ -258,6 +259,9 @@ func TestPoliciesPrinter_PrintCRDs(t *testing.T) { Labels: map[string]string{ gatewayv1alpha2.PolicyLabelKey: "inherited", }, + CreationTimestamp: metav1.Time{ + Time: fakeClock.Now().Add(-24 * 24 * time.Hour), + }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Scope: apiextensionsv1.ClusterScoped, @@ -300,6 +304,9 @@ func TestPoliciesPrinter_PrintCRDs(t *testing.T) { Labels: map[string]string{ gatewayv1alpha2.PolicyLabelKey: "direct", }, + CreationTimestamp: metav1.Time{ + Time: fakeClock.Now().Add(-5 * time.Minute), + }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Scope: apiextensionsv1.NamespaceScoped, @@ -332,15 +339,16 @@ func TestPoliciesPrinter_PrintCRDs(t *testing.T) { params := utils.MustParamsForTest(t, common.MustClientsForTest(t, objects...)) pp := &PoliciesPrinter{ - Out: &bytes.Buffer{}, + Out: &bytes.Buffer{}, + Clock: fakeClock, } pp.PrintCRDs(params.PolicyManager.GetCRDs()) got := pp.Out.(*bytes.Buffer).String() want := ` -NAME GROUP KIND POLICY TYPE SCOPE -healthcheckpolicies.foo.com foo.com HealthCheckPolicy Inherited Cluster -timeoutpolicies.bar.com bar.com TimeoutPolicy Direct Namespaced +NAME POLICY TYPE SCOPE AGE +healthcheckpolicies.foo.com Inherited Cluster 24d +timeoutpolicies.bar.com Direct Namespaced 5m ` if diff := cmp.Diff(common.YamlString(want), common.YamlString(got), common.YamlStringTransformer); diff != "" { t.Errorf("Unexpected diff\ngot=\n%v\nwant=\n%v\ndiff (-want +got)=\n%v", got, want, diff)