From 1a1b940ecbf05e7db55ad461bd30d209a2b9f62a Mon Sep 17 00:00:00 2001 From: zhengjiajin Date: Sat, 19 Aug 2017 17:02:58 +0800 Subject: [PATCH] fix issue(#50937)Fix kubectl get pvc lose volume name --- pkg/printers/internalversion/printers.go | 1 + pkg/printers/internalversion/printers_test.go | 100 ++++++++++++++++++ 2 files changed, 101 insertions(+) diff --git a/pkg/printers/internalversion/printers.go b/pkg/printers/internalversion/printers.go index 3da77c4583c..e85228c948c 100644 --- a/pkg/printers/internalversion/printers.go +++ b/pkg/printers/internalversion/printers.go @@ -277,6 +277,7 @@ func AddHandlers(h printers.PrintHandler) { persistentVolumeClaimColumnDefinitions := []metav1alpha1.TableColumnDefinition{ {Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]}, {Name: "Status", Type: "string", Description: apiv1.PersistentVolumeClaimStatus{}.SwaggerDoc()["phase"]}, + {Name: "Volume", Type: "string", Description: apiv1.PersistentVolumeSpec{}.SwaggerDoc()["volumeName"]}, {Name: "Capacity", Type: "string", Description: apiv1.PersistentVolumeClaimStatus{}.SwaggerDoc()["capacity"]}, {Name: "Access Modes", Type: "string", Description: apiv1.PersistentVolumeClaimStatus{}.SwaggerDoc()["accessModes"]}, {Name: "StorageClass", Type: "string", Description: "StorageClass of the pvc"}, diff --git a/pkg/printers/internalversion/printers_test.go b/pkg/printers/internalversion/printers_test.go index 701e9678f2a..5b825eea0c9 100644 --- a/pkg/printers/internalversion/printers_test.go +++ b/pkg/printers/internalversion/printers_test.go @@ -2882,3 +2882,103 @@ func TestPrintReplicaSet(t *testing.T) { buf.Reset() } } + +func TestPrintPersistentVolumeClaim(t *testing.T) { + myScn := "my-scn" + tests := []struct { + pvc api.PersistentVolumeClaim + expect string + }{ + { + // Test name, num of containers, restarts, container ready status + api.PersistentVolumeClaim{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test1", + }, + Spec: api.PersistentVolumeClaimSpec{ + VolumeName: "my-volume", + }, + Status: api.PersistentVolumeClaimStatus{ + Phase: api.ClaimBound, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadOnlyMany}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("4Gi"), + }, + }, + }, + "test1\tBound\tmy-volume\t4Gi\tROX\t\t\n", + }, + { + // Test name, num of containers, restarts, container ready status + api.PersistentVolumeClaim{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test2", + }, + Spec: api.PersistentVolumeClaimSpec{}, + Status: api.PersistentVolumeClaimStatus{ + Phase: api.ClaimLost, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadOnlyMany}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("4Gi"), + }, + }, + }, + "test2\tLost\t\t\t\t\t\n", + }, + { + // Test name, num of containers, restarts, container ready status + api.PersistentVolumeClaim{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test3", + }, + Spec: api.PersistentVolumeClaimSpec{ + VolumeName: "my-volume", + }, + Status: api.PersistentVolumeClaimStatus{ + Phase: api.ClaimPending, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteMany}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("10Gi"), + }, + }, + }, + "test3\tPending\tmy-volume\t10Gi\tRWX\t\t\n", + }, + { + // Test name, num of containers, restarts, container ready status + api.PersistentVolumeClaim{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test4", + }, + Spec: api.PersistentVolumeClaimSpec{ + VolumeName: "my-volume", + StorageClassName: &myScn, + }, + Status: api.PersistentVolumeClaimStatus{ + Phase: api.ClaimPending, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("10Gi"), + }, + }, + }, + "test4\tPending\tmy-volume\t10Gi\tRWO\tmy-scn\t\n", + }, + } + buf := bytes.NewBuffer([]byte{}) + for _, test := range tests { + table, err := printers.NewTablePrinter().With(AddHandlers).PrintTable(&test.pvc, printers.PrintOptions{}) + if err != nil { + t.Fatal(err) + } + if err := printers.PrintTable(table, buf, printers.PrintOptions{NoHeaders: true}); err != nil { + t.Fatal(err) + } + if buf.String() != test.expect { + fmt.Println(buf.String()) + fmt.Println(test.expect) + t.Fatalf("Expected: %s, but got: %s", test.expect, buf.String()) + } + buf.Reset() + } +}