Skip to content

Commit

Permalink
Add missing columns to gwctl get policycrds
Browse files Browse the repository at this point in the history
Signed-off-by: Jongwoo Han <jongwooo.han@gmail.com>
  • Loading branch information
jongwooo committed Feb 26, 2024
1 parent 09d3d5c commit 08cec5a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
11 changes: 8 additions & 3 deletions gwctl/pkg/printer/policies.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@ import (
"sort"
"strings"
"text/tabwriter"
"time"

"sigs.k8s.io/yaml"

"sigs.k8s.io/gateway-api/gwctl/pkg/policymanager"

"k8s.io/apimachinery/pkg/util/duration"
)

type PoliciesPrinter struct {
Expand Down Expand Up @@ -68,20 +71,22 @@ 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 {
policyType := "Direct"
if policyCRD.IsInherited() {
policyType = "Inherited"
}

age := duration.HumanDuration(time.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"))
}
Expand Down
13 changes: 9 additions & 4 deletions gwctl/pkg/printer/policies_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ package printer
import (
"bytes"
"testing"
"time"

"github.com/google/go-cmp/cmp"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"

gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
"sigs.k8s.io/gateway-api/gwctl/pkg/cmd/utils"
"sigs.k8s.io/gateway-api/gwctl/pkg/common"
)
Expand Down Expand Up @@ -242,13 +244,15 @@ Spec:
}

func TestPoliciesPrinter_PrintCRDs(t *testing.T) {
creationTimestamp := time.Now().Add(-time.Minute * 5)
objects := []runtime.Object{
&apiextensionsv1.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
Name: "healthcheckpolicies.foo.com",
Labels: map[string]string{
gatewayv1alpha2.PolicyLabelKey: "inherited",
},
CreationTimestamp: metav1.NewTime(creationTimestamp),
},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Scope: apiextensionsv1.ClusterScoped,
Expand Down Expand Up @@ -291,6 +295,7 @@ func TestPoliciesPrinter_PrintCRDs(t *testing.T) {
Labels: map[string]string{
gatewayv1alpha2.PolicyLabelKey: "direct",
},
CreationTimestamp: metav1.NewTime(creationTimestamp),
},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Scope: apiextensionsv1.NamespaceScoped,
Expand Down Expand Up @@ -329,9 +334,9 @@ func TestPoliciesPrinter_PrintCRDs(t *testing.T) {

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 5m
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)
Expand Down

0 comments on commit 08cec5a

Please sign in to comment.