Skip to content

Commit fa02b89

Browse files
authored
Merge pull request #198 from verult/block-createvolume
Fail CreateVolume() when Block volume capability is requested
2 parents a7459e1 + 1e304ef commit fa02b89

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

pkg/gce-pd-csi-driver/controller.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,13 @@ func (gceCS *GCEControllerServer) CreateVolume(ctx context.Context, req *csi.Cre
8181
return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("CreateVolume Request Capacity is invalid: %v", err))
8282
}
8383

84-
// TODO(#94): Validate volume capabilities
84+
// TODO(#94): Validate AccessModes in VolumeCapabilities
85+
for _, capability := range volumeCapabilities {
86+
if blk := capability.GetBlock(); blk != nil {
87+
// TODO(#64): Block volume support
88+
return nil, status.Error(codes.Unimplemented, fmt.Sprintf("Block volume support is not yet implemented"))
89+
}
90+
}
8591

8692
// Apply Parameters (case-insensitive). We leave validation of
8793
// the values to the cloud provider.

pkg/gce-pd-csi-driver/controller_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,50 @@ func TestCreateVolumeArguments(t *testing.T) {
602602
},
603603
},
604604
},
605+
{
606+
name: "fail with block volume capability",
607+
req: &csi.CreateVolumeRequest{
608+
Name: name,
609+
CapacityRange: stdCapRange,
610+
VolumeCapabilities: []*csi.VolumeCapability{
611+
{
612+
AccessType: &csi.VolumeCapability_Block{
613+
Block: &csi.VolumeCapability_BlockVolume{},
614+
},
615+
AccessMode: &csi.VolumeCapability_AccessMode{
616+
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
617+
},
618+
},
619+
},
620+
},
621+
expErrCode: codes.Unimplemented,
622+
},
623+
{
624+
name: "fail with both mount and block volume capability",
625+
req: &csi.CreateVolumeRequest{
626+
Name: name,
627+
CapacityRange: stdCapRange,
628+
VolumeCapabilities: []*csi.VolumeCapability{
629+
{
630+
AccessType: &csi.VolumeCapability_Mount{
631+
Mount: &csi.VolumeCapability_MountVolume{},
632+
},
633+
AccessMode: &csi.VolumeCapability_AccessMode{
634+
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
635+
},
636+
},
637+
{
638+
AccessType: &csi.VolumeCapability_Block{
639+
Block: &csi.VolumeCapability_BlockVolume{},
640+
},
641+
AccessMode: &csi.VolumeCapability_AccessMode{
642+
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
643+
},
644+
},
645+
},
646+
},
647+
expErrCode: codes.Unimplemented, // once block support is implemented, this error should be InvalidArgument
648+
},
605649
}
606650

607651
// Run test cases

0 commit comments

Comments
 (0)