Add support for mount options to CSI drivers

This commit is contained in:
Ben Swartzlander 2018-08-24 15:09:30 -04:00
parent 539bdbc355
commit 65d3beb820
5 changed files with 14 additions and 3 deletions

View File

@ -276,6 +276,7 @@ func (m *csiBlockMapper) MapDevice(devicePath, globalMapPath, volumeMapPath, vol
csiSource.VolumeAttributes,
nodePublishSecrets,
fsTypeBlockName,
[]string{},
)
if err != nil {

View File

@ -48,6 +48,7 @@ type csiClient interface {
volumeAttribs map[string]string,
nodePublishSecrets map[string]string,
fsType string,
mountOptions []string,
) error
NodeUnpublishVolume(
ctx context.Context,
@ -113,6 +114,7 @@ func (c *csiDriverClient) NodePublishVolume(
volumeAttribs map[string]string,
nodePublishSecrets map[string]string,
fsType string,
mountOptions []string,
) error {
glog.V(4).Info(log("calling NodePublishVolume rpc [volid=%s,target_path=%s]", volID, targetPath))
if volID == "" {
@ -153,7 +155,8 @@ func (c *csiDriverClient) NodePublishVolume(
} else {
req.VolumeCapability.AccessType = &csipb.VolumeCapability_Mount{
Mount: &csipb.VolumeCapability_MountVolume{
FsType: fsType,
FsType: fsType,
MountFlags: mountOptions,
},
}
}

View File

@ -59,6 +59,7 @@ func (c *fakeCsiDriverClient) NodePublishVolume(
volumeAttribs map[string]string,
nodePublishSecrets map[string]string,
fsType string,
mountOptions []string,
) error {
c.t.Log("calling fake.NodePublishVolume...")
req := &csipb.NodePublishVolumeRequest{
@ -74,7 +75,8 @@ func (c *fakeCsiDriverClient) NodePublishVolume(
},
AccessType: &csipb.VolumeCapability_Mount{
Mount: &csipb.VolumeCapability_MountVolume{
FsType: fsType,
FsType: fsType,
MountFlags: mountOptions,
},
},
},
@ -237,6 +239,7 @@ func TestClientNodePublishVolume(t *testing.T) {
map[string]string{"attr0": "val0"},
map[string]string{},
tc.fsType,
[]string{},
)
if tc.mustFail && err == nil {

View File

@ -195,6 +195,7 @@ func (c *csiMountMgr) SetUpAt(dir string, fsGroup *int64) error {
attribs,
nodePublishSecrets,
fsType,
c.spec.PersistentVolume.Spec.MountOptions,
)
if err != nil {

View File

@ -333,7 +333,10 @@ func (p *csiPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.S
func (p *csiPlugin) SupportsMountOption() bool {
// TODO (vladimirvivien) use CSI VolumeCapability.MountVolume.mount_flags
// to probe for the result for this method
return false
// (bswartz) Until the CSI spec supports probing, our only option is to
// make plugins register their support for mount options or lack thereof
// directly with kubernetes.
return true
}
func (p *csiPlugin) SupportsBulkVolumeVerification() bool {