Skip to content

Commit

Permalink
fix: check access mode on stage step
Browse files Browse the repository at this point in the history
  • Loading branch information
antonmyagkov committed Oct 4, 2024
1 parent 4b7f91f commit bde916d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
13 changes: 13 additions & 0 deletions cloud/blockstore/tools/csi_driver/internal/driver/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,20 @@ func (s *nodeService) NodeStageVolume(
"VolumeCapability is missing in NodeStageVolumeRequest")
}

accessMode := req.VolumeCapability.AccessMode
if accessMode == nil {
return nil, s.statusError(
codes.InvalidArgument,
"AccessMode is missing in NodePublishVolumeRequest")
}

nfsBackend := (req.VolumeContext[backendVolumeContextKey] == "nfs")
if !nfsBackend && accessMode.GetMode() ==
csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER {
return nil, s.statusError(
codes.InvalidArgument,
"ReadWriteMany access mode is supported only with nfs backend")
}

var err error
switch req.VolumeCapability.GetAccessType().(type) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -839,9 +839,13 @@ func TestPublishDeviceWithReadWriteManyModeIsNotSupportedWithNBS(t *testing.T) {
_, err = nodeService.NodeStageVolume(ctx, &csi.NodeStageVolumeRequest{
VolumeId: diskID,
StagingTargetPath: "testStagingTargetPath",
VolumeCapability: &csi.VolumeCapability{},
VolumeCapability: &csi.VolumeCapability{
AccessType: &csi.VolumeCapability_Block{
Block: &csi.VolumeCapability_BlockVolume{},
},
},
})
require.NoError(t, err)
require.Error(t, err)

// NodePublishVolume without access mode should fail
_, err = nodeService.NodePublishVolume(ctx, &csi.NodePublishVolumeRequest{
Expand Down

0 comments on commit bde916d

Please sign in to comment.