Skip to content

Commit e6188f8

Browse files
authored
Merge pull request kubernetes#76646 from cwdsuzhou/print_volumeMode
Support print volumeMode using kubectl get pv/pvc
2 parents a7a6bf4 + 6872cf2 commit e6188f8

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

pkg/printers/internalversion/printers.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ func AddHandlers(h printers.PrintHandler) {
285285
{Name: "StorageClass", Type: "string", Description: "StorageClass of the pv"},
286286
{Name: "Reason", Type: "string", Description: apiv1.PersistentVolumeStatus{}.SwaggerDoc()["reason"]},
287287
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
288+
{Name: "VolumeMode", Type: "string", Priority: 1, Description: apiv1.PersistentVolumeSpec{}.SwaggerDoc()["volumeMode"]},
288289
}
289290
h.TableHandler(persistentVolumeColumnDefinitions, printPersistentVolume)
290291
h.TableHandler(persistentVolumeColumnDefinitions, printPersistentVolumeList)
@@ -297,6 +298,7 @@ func AddHandlers(h printers.PrintHandler) {
297298
{Name: "Access Modes", Type: "string", Description: apiv1.PersistentVolumeClaimStatus{}.SwaggerDoc()["accessModes"]},
298299
{Name: "StorageClass", Type: "string", Description: "StorageClass of the pvc"},
299300
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
301+
{Name: "VolumeMode", Type: "string", Priority: 1, Description: apiv1.PersistentVolumeClaimSpec{}.SwaggerDoc()["volumeMode"]},
300302
}
301303
h.TableHandler(persistentVolumeClaimColumnDefinitions, printPersistentVolumeClaim)
302304
h.TableHandler(persistentVolumeClaimColumnDefinitions, printPersistentVolumeClaimList)
@@ -1328,11 +1330,14 @@ func printPersistentVolume(obj *api.PersistentVolume, options printers.PrintOpti
13281330
if obj.ObjectMeta.DeletionTimestamp != nil {
13291331
phase = "Terminating"
13301332
}
1333+
volumeMode := "<unset>"
1334+
if obj.Spec.VolumeMode != nil {
1335+
volumeMode = string(*obj.Spec.VolumeMode)
1336+
}
13311337

13321338
row.Cells = append(row.Cells, obj.Name, aSize, modesStr, reclaimPolicyStr,
13331339
string(phase), claimRefUID, helper.GetPersistentVolumeClass(obj),
1334-
obj.Status.Reason,
1335-
translateTimestampSince(obj.CreationTimestamp))
1340+
obj.Status.Reason, translateTimestampSince(obj.CreationTimestamp), volumeMode)
13361341
return []metav1beta1.TableRow{row}, nil
13371342
}
13381343

@@ -1361,13 +1366,19 @@ func printPersistentVolumeClaim(obj *api.PersistentVolumeClaim, options printers
13611366
storage := obj.Spec.Resources.Requests[api.ResourceStorage]
13621367
capacity := ""
13631368
accessModes := ""
1369+
volumeMode := "<unset>"
13641370
if obj.Spec.VolumeName != "" {
13651371
accessModes = helper.GetAccessModesAsString(obj.Status.AccessModes)
13661372
storage = obj.Status.Capacity[api.ResourceStorage]
13671373
capacity = storage.String()
13681374
}
13691375

1370-
row.Cells = append(row.Cells, obj.Name, string(phase), obj.Spec.VolumeName, capacity, accessModes, helper.GetPersistentVolumeClaimClass(obj), translateTimestampSince(obj.CreationTimestamp))
1376+
if obj.Spec.VolumeMode != nil {
1377+
volumeMode = string(*obj.Spec.VolumeMode)
1378+
}
1379+
1380+
row.Cells = append(row.Cells, obj.Name, string(phase), obj.Spec.VolumeName, capacity, accessModes,
1381+
helper.GetPersistentVolumeClaimClass(obj), translateTimestampSince(obj.CreationTimestamp), volumeMode)
13711382
return []metav1beta1.TableRow{row}, nil
13721383
}
13731384

pkg/printers/internalversion/printers_test.go

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929

3030
"sigs.k8s.io/yaml"
3131

32-
v1 "k8s.io/api/core/v1"
32+
"k8s.io/api/core/v1"
3333
"k8s.io/apimachinery/pkg/api/resource"
3434
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3535
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -3246,6 +3246,7 @@ func TestPrintReplicaSet(t *testing.T) {
32463246
}
32473247

32483248
func TestPrintPersistentVolumeClaim(t *testing.T) {
3249+
volumeMode := api.PersistentVolumeFilesystem
32493250
myScn := "my-scn"
32503251
tests := []struct {
32513252
pvc api.PersistentVolumeClaim
@@ -3259,6 +3260,7 @@ func TestPrintPersistentVolumeClaim(t *testing.T) {
32593260
},
32603261
Spec: api.PersistentVolumeClaimSpec{
32613262
VolumeName: "my-volume",
3263+
VolumeMode: &volumeMode,
32623264
},
32633265
Status: api.PersistentVolumeClaimStatus{
32643266
Phase: api.ClaimBound,
@@ -3268,15 +3270,17 @@ func TestPrintPersistentVolumeClaim(t *testing.T) {
32683270
},
32693271
},
32703272
},
3271-
"test1\tBound\tmy-volume\t4Gi\tROX\t\t<unknown>\n",
3273+
"test1\tBound\tmy-volume\t4Gi\tROX\t\t<unknown>\tFilesystem\n",
32723274
},
32733275
{
32743276
// Test name, num of containers, restarts, container ready status
32753277
api.PersistentVolumeClaim{
32763278
ObjectMeta: metav1.ObjectMeta{
32773279
Name: "test2",
32783280
},
3279-
Spec: api.PersistentVolumeClaimSpec{},
3281+
Spec: api.PersistentVolumeClaimSpec{
3282+
VolumeMode: &volumeMode,
3283+
},
32803284
Status: api.PersistentVolumeClaimStatus{
32813285
Phase: api.ClaimLost,
32823286
AccessModes: []api.PersistentVolumeAccessMode{api.ReadOnlyMany},
@@ -3285,7 +3289,7 @@ func TestPrintPersistentVolumeClaim(t *testing.T) {
32853289
},
32863290
},
32873291
},
3288-
"test2\tLost\t\t\t\t\t<unknown>\n",
3292+
"test2\tLost\t\t\t\t\t<unknown>\tFilesystem\n",
32893293
},
32903294
{
32913295
// Test name, num of containers, restarts, container ready status
@@ -3295,6 +3299,7 @@ func TestPrintPersistentVolumeClaim(t *testing.T) {
32953299
},
32963300
Spec: api.PersistentVolumeClaimSpec{
32973301
VolumeName: "my-volume",
3302+
VolumeMode: &volumeMode,
32983303
},
32993304
Status: api.PersistentVolumeClaimStatus{
33003305
Phase: api.ClaimPending,
@@ -3304,14 +3309,35 @@ func TestPrintPersistentVolumeClaim(t *testing.T) {
33043309
},
33053310
},
33063311
},
3307-
"test3\tPending\tmy-volume\t10Gi\tRWX\t\t<unknown>\n",
3312+
"test3\tPending\tmy-volume\t10Gi\tRWX\t\t<unknown>\tFilesystem\n",
33083313
},
33093314
{
33103315
// Test name, num of containers, restarts, container ready status
33113316
api.PersistentVolumeClaim{
33123317
ObjectMeta: metav1.ObjectMeta{
33133318
Name: "test4",
33143319
},
3320+
Spec: api.PersistentVolumeClaimSpec{
3321+
VolumeName: "my-volume",
3322+
StorageClassName: &myScn,
3323+
VolumeMode: &volumeMode,
3324+
},
3325+
Status: api.PersistentVolumeClaimStatus{
3326+
Phase: api.ClaimPending,
3327+
AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
3328+
Capacity: map[api.ResourceName]resource.Quantity{
3329+
api.ResourceStorage: resource.MustParse("10Gi"),
3330+
},
3331+
},
3332+
},
3333+
"test4\tPending\tmy-volume\t10Gi\tRWO\tmy-scn\t<unknown>\tFilesystem\n",
3334+
},
3335+
{
3336+
// Test name, num of containers, restarts, container ready status
3337+
api.PersistentVolumeClaim{
3338+
ObjectMeta: metav1.ObjectMeta{
3339+
Name: "test5",
3340+
},
33153341
Spec: api.PersistentVolumeClaimSpec{
33163342
VolumeName: "my-volume",
33173343
StorageClassName: &myScn,
@@ -3324,17 +3350,17 @@ func TestPrintPersistentVolumeClaim(t *testing.T) {
33243350
},
33253351
},
33263352
},
3327-
"test4\tPending\tmy-volume\t10Gi\tRWO\tmy-scn\t<unknown>\n",
3353+
"test5\tPending\tmy-volume\t10Gi\tRWO\tmy-scn\t<unknown>\t<unset>\n",
33283354
},
33293355
}
33303356
buf := bytes.NewBuffer([]byte{})
33313357
for _, test := range tests {
3332-
table, err := printers.NewTableGenerator().With(AddHandlers).GenerateTable(&test.pvc, printers.PrintOptions{})
3358+
table, err := printers.NewTableGenerator().With(AddHandlers).GenerateTable(&test.pvc, printers.PrintOptions{Wide: true})
33333359
if err != nil {
33343360
t.Fatal(err)
33353361
}
33363362
verifyTable(t, table)
3337-
if err := printers.PrintTable(table, buf, printers.PrintOptions{NoHeaders: true}); err != nil {
3363+
if err := printers.PrintTable(table, buf, printers.PrintOptions{NoHeaders: true, Wide: true}); err != nil {
33383364
t.Fatal(err)
33393365
}
33403366
if buf.String() != test.expect {

0 commit comments

Comments
 (0)