Make GCE PD Access Mode reflect readonly status when translating an inline read only volume

This commit is contained in:
David Zhu 2019-11-05 10:41:21 -08:00
parent cbe7c6e3be
commit 631e218c36
2 changed files with 42 additions and 4 deletions

View File

@ -202,7 +202,14 @@ func (g *gcePersistentDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume
partition = strconv.Itoa(int(pdSource.Partition))
}
pv := &v1.PersistentVolume{
var am v1.PersistentVolumeAccessMode
if pdSource.ReadOnly {
am = v1.ReadOnlyMany
} else {
am = v1.ReadWriteOnce
}
return &v1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{
// A.K.A InnerVolumeSpecName required to match for Unmount
Name: volume.Name,
@ -219,10 +226,9 @@ func (g *gcePersistentDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume
},
},
},
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
AccessModes: []v1.PersistentVolumeAccessMode{am},
},
}
return pv, nil
}, nil
}
// TranslateInTreePVToCSI takes a PV with GCEPersistentDisk set from in-tree

View File

@ -369,3 +369,35 @@ func TestBackwardCompatibleAccessModes(t *testing.T) {
}
}
}
func TestInlineReadOnly(t *testing.T) {
g := NewGCEPersistentDiskCSITranslator()
pv, err := g.TranslateInTreeInlineVolumeToCSI(&v1.Volume{
VolumeSource: v1.VolumeSource{
GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
PDName: "foo",
ReadOnly: true,
},
},
})
if err != nil {
t.Fatalf("Failed to translate in tree inline volume to CSI: %v", err)
}
if pv == nil || pv.Spec.PersistentVolumeSource.CSI == nil {
t.Fatal("PV or volume source unexpectedly nil")
}
if !pv.Spec.PersistentVolumeSource.CSI.ReadOnly {
t.Error("PV readonly value not true")
}
ams := pv.Spec.AccessModes
if len(ams) != 1 {
t.Errorf("got am %v, expected length of 1", ams)
}
if ams[0] != v1.ReadOnlyMany {
t.Errorf("got am %v, expected access mode of ReadOnlyMany", ams[0])
}
}