Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions internal/driver/capabilities.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ func ControllerServiceCapabilities() []*csi.ControllerServiceCapability {
csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
csi.ControllerServiceCapability_RPC_LIST_VOLUMES_PUBLISHED_NODES,
csi.ControllerServiceCapability_RPC_VOLUME_CONDITION,
csi.ControllerServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER,
csi.ControllerServiceCapability_RPC_GET_VOLUME,
}

Expand All @@ -38,6 +39,7 @@ func NodeServiceCapabilities() []*csi.NodeServiceCapability {
csi.NodeServiceCapability_RPC_EXPAND_VOLUME,
csi.NodeServiceCapability_RPC_GET_VOLUME_STATS,
csi.NodeServiceCapability_RPC_VOLUME_CONDITION,
csi.NodeServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER,
}

cc := make([]*csi.NodeServiceCapability, 0, len(capabilities))
Expand All @@ -58,6 +60,8 @@ func NodeServiceCapabilities() []*csi.NodeServiceCapability {
func VolumeCapabilityAccessModes() []*csi.VolumeCapability_AccessMode {
modes := []csi.VolumeCapability_AccessMode_Mode{
csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
csi.VolumeCapability_AccessMode_SINGLE_NODE_SINGLE_WRITER,
csi.VolumeCapability_AccessMode_SINGLE_NODE_MULTI_WRITER,
}

mm := make([]*csi.VolumeCapability_AccessMode, 0, len(modes))
Expand Down
9 changes: 7 additions & 2 deletions internal/driver/controllerserver_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -421,8 +421,13 @@ func validVolumeCapabilities(caps []*csi.VolumeCapability) bool {
return false
}

// Ensure the access mode is SINGLE_NODE_WRITER; if not, return false
if accMode.GetMode() != csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER {
// Ensure the access mode
switch accMode.GetMode() { //nolint:exhaustive // Only some modes are supported
case csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER:
case csi.VolumeCapability_AccessMode_SINGLE_NODE_SINGLE_WRITER:
case csi.VolumeCapability_AccessMode_SINGLE_NODE_MULTI_WRITER:
continue
default:
return false
}
}
Expand Down
30 changes: 29 additions & 1 deletion internal/driver/controllerserver_helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,7 @@ func TestValidateCreateVolumeRequest(t *testing.T) {
wantErr error
}{
{
name: "Valid request",
name: "Valid request SINGLE_NODE_WRITER",
req: &csi.CreateVolumeRequest{
Name: "test-volume",
VolumeCapabilities: []*csi.VolumeCapability{
Expand All @@ -623,6 +623,34 @@ func TestValidateCreateVolumeRequest(t *testing.T) {
},
wantErr: nil,
},
{
name: "Valid request SINGLE_NODE_MULTI_WRITER",
req: &csi.CreateVolumeRequest{
Name: "test-volume",
VolumeCapabilities: []*csi.VolumeCapability{
{
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_MULTI_WRITER,
},
},
},
},
wantErr: nil,
},
{
name: "Valid request SINGLE_NODE_SINGLE_WRITER",
req: &csi.CreateVolumeRequest{
Name: "test-volume",
VolumeCapabilities: []*csi.VolumeCapability{
{
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_SINGLE_WRITER,
},
},
},
},
wantErr: nil,
},
{
name: "Empty volume name",
req: &csi.CreateVolumeRequest{
Expand Down
Loading