Add reclaimPolicy,volumeBindMode,allowVolumeExpandsion to kubectl get storage class

This commit is contained in:
caiweidong 2019-10-24 13:48:34 +08:00
parent 31b7e3d905
commit 1488e1e6ef
2 changed files with 80 additions and 3 deletions

View File

@ -410,6 +410,9 @@ func AddHandlers(h printers.PrintHandler) {
storageClassColumnDefinitions := []metav1beta1.TableColumnDefinition{
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
{Name: "Provisioner", Type: "string", Description: storagev1.StorageClass{}.SwaggerDoc()["provisioner"]},
{Name: "ReclaimPolicy", Type: "string", Description: storagev1.StorageClass{}.SwaggerDoc()["reclaimPolicy"]},
{Name: "VolumeBindingMode", Type: "string", Description: storagev1.StorageClass{}.SwaggerDoc()["volumeBindingMode"]},
{Name: "AllowVolumeExpansion", Type: "string", Description: storagev1.StorageClass{}.SwaggerDoc()["allowVolumeExpansion"]},
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
}
@ -1857,7 +1860,23 @@ func printStorageClass(obj *storage.StorageClass, options printers.GenerateOptio
name += " (default)"
}
provtype := obj.Provisioner
row.Cells = append(row.Cells, name, provtype, translateTimestampSince(obj.CreationTimestamp))
reclaimPolicy := string(api.PersistentVolumeReclaimDelete)
if obj.ReclaimPolicy != nil {
reclaimPolicy = string(*obj.ReclaimPolicy)
}
volumeBindingMode := string(storage.VolumeBindingImmediate)
if obj.VolumeBindingMode != nil {
volumeBindingMode = string(*obj.VolumeBindingMode)
}
allowVolumeExpansion := false
if obj.AllowVolumeExpansion != nil {
allowVolumeExpansion = *obj.AllowVolumeExpansion
}
row.Cells = append(row.Cells, name, provtype, reclaimPolicy, volumeBindingMode, allowVolumeExpansion,
translateTimestampSince(obj.CreationTimestamp))
return []metav1beta1.TableRow{row}, nil
}

View File

@ -4366,6 +4366,10 @@ func TestPrintCronJobList(t *testing.T) {
}
func TestPrintStorageClass(t *testing.T) {
policyDelte := api.PersistentVolumeReclaimDelete
policyRetain := api.PersistentVolumeReclaimRetain
bindModeImmediate := storage.VolumeBindingImmediate
bindModeWait := storage.VolumeBindingWaitForFirstConsumer
tests := []struct {
sc storage.StorageClass
expected []metav1beta1.TableRow
@ -4378,7 +4382,8 @@ func TestPrintStorageClass(t *testing.T) {
},
Provisioner: "kubernetes.io/glusterfs",
},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc1", "kubernetes.io/glusterfs", "0s"}}},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc1", "kubernetes.io/glusterfs", "Delete",
"Immediate", false, "0s"}}},
},
{
sc: storage.StorageClass{
@ -4388,7 +4393,60 @@ func TestPrintStorageClass(t *testing.T) {
},
Provisioner: "kubernetes.io/nfs",
},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc2", "kubernetes.io/nfs", "5m"}}},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc2", "kubernetes.io/nfs", "Delete",
"Immediate", false, "5m"}}},
},
{
sc: storage.StorageClass{
ObjectMeta: metav1.ObjectMeta{
Name: "sc3",
CreationTimestamp: metav1.Time{Time: time.Now().Add(-3e11)},
},
Provisioner: "kubernetes.io/nfs",
ReclaimPolicy: &policyDelte,
},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc3", "kubernetes.io/nfs", "Delete",
"Immediate", false, "5m"}}},
},
{
sc: storage.StorageClass{
ObjectMeta: metav1.ObjectMeta{
Name: "sc4",
CreationTimestamp: metav1.Time{Time: time.Now().Add(-3e11)},
},
Provisioner: "kubernetes.io/nfs",
ReclaimPolicy: &policyRetain,
VolumeBindingMode: &bindModeImmediate,
},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc4", "kubernetes.io/nfs", "Retain",
"Immediate", false, "5m"}}},
},
{
sc: storage.StorageClass{
ObjectMeta: metav1.ObjectMeta{
Name: "sc5",
CreationTimestamp: metav1.Time{Time: time.Now().Add(-3e11)},
},
Provisioner: "kubernetes.io/nfs",
ReclaimPolicy: &policyRetain,
VolumeBindingMode: &bindModeWait,
},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc5", "kubernetes.io/nfs", "Retain",
"WaitForFirstConsumer", false, "5m"}}},
},
{
sc: storage.StorageClass{
ObjectMeta: metav1.ObjectMeta{
Name: "sc6",
CreationTimestamp: metav1.Time{Time: time.Now().Add(-3e11)},
},
Provisioner: "kubernetes.io/nfs",
ReclaimPolicy: &policyRetain,
AllowVolumeExpansion: boolP(true),
VolumeBindingMode: &bindModeWait,
},
expected: []metav1beta1.TableRow{{Cells: []interface{}{"sc6", "kubernetes.io/nfs", "Retain",
"WaitForFirstConsumer", true, "5m"}}},
},
}