Skip to content

Commit

Permalink
Merge pull request kubernetes-sigs#1027 from jingxu97/fstype
Browse files Browse the repository at this point in the history
Validate fstype on CreateVolume, but not NodePublishVolume
k8s-ci-robot authored Jun 9, 2023
2 parents 5ed01dc + 47ed8e9 commit 6f34f0c
Showing 4 changed files with 51 additions and 23 deletions.
3 changes: 3 additions & 0 deletions pkg/driver/controller.go
Original file line number Diff line number Diff line change
@@ -76,6 +76,9 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
if err := d.isValidVolumeCapabilities(volCaps); err != nil {
return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("Volume capabilities not supported: %s", err))
}
if err := d.validateFStype(volCaps); err != nil {
return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("Volume fstype not supported: %s", err))
}

var (
azName string
48 changes: 48 additions & 0 deletions pkg/driver/controller_test.go
Original file line number Diff line number Diff line change
@@ -522,6 +522,54 @@ func TestCreateVolume(t *testing.T) {
mockCtl.Finish()
},
},
{
name: "Fail: Volume fsType not supported",
testFunc: func(t *testing.T) {
mockCtl := gomock.NewController(t)
mockCloud := mocks.NewMockCloud(mockCtl)

driver := &Driver{
endpoint: endpoint,
cloud: mockCloud,
gidAllocator: NewGidAllocator(),
tags: parseTagsFromStr(""),
}

req := &csi.CreateVolumeRequest{
Name: volumeName,
VolumeCapabilities: []*csi.VolumeCapability{
{
AccessType: &csi.VolumeCapability_Mount{
Mount: &csi.VolumeCapability_MountVolume{
FsType: "abc",
},
},
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
},
},
},
CapacityRange: &csi.CapacityRange{
RequiredBytes: capacityRange,
},
Parameters: map[string]string{
ProvisioningMode: "efs-ap",
FsId: fsId,
GidMin: "1000",
GidMax: "2000",
DirectoryPerms: "777",
AzName: "us-east-1a",
},
}

ctx := context.Background()
_, err := driver.CreateVolume(ctx, req)
if err == nil {
t.Fatal("CreateVolume did not fail")
}
mockCtl.Finish()
},
},
{
name: "Fail: AccessType is block",
testFunc: func(t *testing.T) {
3 changes: 0 additions & 3 deletions pkg/driver/node.go
Original file line number Diff line number Diff line change
@@ -319,9 +319,6 @@ func (d *Driver) isValidVolumeCapabilities(volCaps []*csi.VolumeCapability) erro
return err
}

if err := d.validateFStype(volCaps); err != nil {
return err
}
return nil
}

20 changes: 0 additions & 20 deletions pkg/driver/node_test.go
Original file line number Diff line number Diff line change
@@ -435,26 +435,6 @@ func TestNodePublishVolume(t *testing.T) {
message: "Volume capability not supported: only filesystem volumes are supported",
},
},
{
name: "fail: unsupported volume fstype capability",
req: &csi.NodePublishVolumeRequest{
VolumeId: volumeId,
VolumeCapability: &csi.VolumeCapability{
AccessType: &csi.VolumeCapability_Mount{
Mount: &csi.VolumeCapability_MountVolume{FsType: "abc"},
},
AccessMode: &csi.VolumeCapability_AccessMode{
Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
},
},
TargetPath: targetPath,
},
expectMakeDir: false,
expectError: errtyp{
code: "InvalidArgument",
message: "Volume capability not supported: invalid fstype: abc",
},
},
{
name: "fail: multiple unsupported volume capabilities",
req: &csi.NodePublishVolumeRequest{

0 comments on commit 6f34f0c

Please sign in to comment.