Skip to content

Commit f7ae08f

Browse files
committed
fix: return error for block volumeMode
test: fix integration test failure fix fix fix
1 parent 0fb2adf commit f7ae08f

File tree

3 files changed

+68
-7
lines changed

3 files changed

+68
-7
lines changed

pkg/blob/controllerserver.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,20 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
4646
return nil, err
4747
}
4848

49-
volumeCapabilities := req.GetVolumeCapabilities()
5049
volName := req.GetName()
5150
if len(volName) == 0 {
5251
return nil, status.Error(codes.InvalidArgument, "CreateVolume Name must be provided")
5352
}
53+
54+
volumeCapabilities := req.GetVolumeCapabilities()
5455
if len(volumeCapabilities) == 0 {
5556
return nil, status.Error(codes.InvalidArgument, "CreateVolume Volume capabilities must be provided")
5657
}
58+
for _, c := range volumeCapabilities {
59+
if c.GetBlock() != nil {
60+
return nil, status.Error(codes.InvalidArgument, "Block volume capability not supported")
61+
}
62+
}
5763

5864
if acquired := d.volumeLocks.TryAcquire(volName); !acquired {
5965
return nil, status.Errorf(codes.Aborted, volumeOperationAlreadyExistsFmt, volName)
@@ -402,9 +408,15 @@ func (d *Driver) ValidateVolumeCapabilities(ctx context.Context, req *csi.Valida
402408
if len(volumeID) == 0 {
403409
return nil, status.Error(codes.InvalidArgument, "Volume ID missing in request")
404410
}
405-
if req.GetVolumeCapabilities() == nil {
411+
volumeCapabilities := req.GetVolumeCapabilities()
412+
if len(volumeCapabilities) == 0 {
406413
return nil, status.Error(codes.InvalidArgument, "Volume capabilities missing in request")
407414
}
415+
for _, c := range volumeCapabilities {
416+
if c.GetBlock() != nil {
417+
return nil, status.Error(codes.InvalidArgument, "Block volume capability not supported")
418+
}
419+
}
408420

409421
resourceGroupName, accountName, containerName, err := GetContainerInfo(volumeID)
410422
if err != nil {

pkg/blob/controllerserver_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ func TestCreateVolume(t *testing.T) {
6060
stdVolumeCapabilities := []*csi.VolumeCapability{
6161
stdVolumeCapability,
6262
}
63+
blockVolumeCapability := &csi.VolumeCapability{
64+
AccessType: &csi.VolumeCapability_Block{
65+
Block: &csi.VolumeCapability_BlockVolume{},
66+
},
67+
}
68+
blockVolumeCapabilities := []*csi.VolumeCapability{
69+
blockVolumeCapability,
70+
}
6371
controllerservicecapabilityRPC := &csi.ControllerServiceCapability_RPC{
6472
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
6573
}
@@ -116,6 +124,24 @@ func TestCreateVolume(t *testing.T) {
116124
}
117125
},
118126
},
127+
{
128+
name: "block volume capability not supported",
129+
testFunc: func(t *testing.T) {
130+
d := NewFakeDriver()
131+
req := &csi.CreateVolumeRequest{
132+
Name: "unit-test",
133+
VolumeCapabilities: blockVolumeCapabilities,
134+
}
135+
d.Cap = []*csi.ControllerServiceCapability{
136+
controllerServiceCapability,
137+
}
138+
_, err := d.CreateVolume(context.Background(), req)
139+
expectedErr := status.Error(codes.InvalidArgument, "Block volume capability not supported")
140+
if !reflect.DeepEqual(err, expectedErr) {
141+
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
142+
}
143+
},
144+
},
119145
{
120146
name: "invalid protocol",
121147
testFunc: func(t *testing.T) {
@@ -393,6 +419,14 @@ func TestValidateVolumeCapabilities(t *testing.T) {
393419
stdVolumeCapabilities := []*csi.VolumeCapability{
394420
stdVolumeCapability,
395421
}
422+
blockVolumeCapability := &csi.VolumeCapability{
423+
AccessType: &csi.VolumeCapability_Block{
424+
Block: &csi.VolumeCapability_BlockVolume{},
425+
},
426+
}
427+
blockVolumeCapabilities := []*csi.VolumeCapability{
428+
blockVolumeCapability,
429+
}
396430
controllerservicecapabilityRPC := &csi.ControllerServiceCapability_RPC{
397431
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
398432
}
@@ -431,6 +465,21 @@ func TestValidateVolumeCapabilities(t *testing.T) {
431465
}
432466
},
433467
},
468+
{
469+
name: "block volume capability not supported",
470+
testFunc: func(t *testing.T) {
471+
d := NewFakeDriver()
472+
req := &csi.ValidateVolumeCapabilitiesRequest{
473+
VolumeId: "unit-test",
474+
VolumeCapabilities: blockVolumeCapabilities,
475+
}
476+
_, err := d.ValidateVolumeCapabilities(context.Background(), req)
477+
expectedErr := status.Error(codes.InvalidArgument, "Block volume capability not supported")
478+
if !reflect.DeepEqual(err, expectedErr) {
479+
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
480+
}
481+
},
482+
},
434483
{
435484
name: "invalid volume Id",
436485
testFunc: func(t *testing.T) {

test/integration/run-test.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,21 @@ fi
4646

4747
# Begin to run CSI functions one by one
4848
echo "Create volume test:"
49-
value="$(csc controller new --endpoint "$endpoint" --cap 1,block "$volname" --req-bytes "$volsize" --params skuname=Standard_LRS)"
49+
value="$(csc controller new --endpoint "$endpoint" --cap MULTI_NODE_MULTI_WRITER,mount,xfs "$volname" --req-bytes "$volsize" --params skuname=Standard_LRS)"
5050
sleep 15
5151

5252
volumeid="$(echo "$value" | awk '{print $1}' | sed 's/"//g')"
5353
echo "Got volume id: $volumeid"
5454
storage_account_name="$(echo "$volumeid" | awk -F# '{print $2}')"
5555

56-
csc controller validate-volume-capabilities --endpoint "$endpoint" --cap 1,block "$volumeid"
56+
csc controller validate-volume-capabilities --endpoint "$endpoint" --cap MULTI_NODE_MULTI_WRITER,mount,xfs "$volumeid"
5757

5858
if [[ "$cloud" != "AzureChinaCloud" ]]; then
5959
echo "stage volume test:"
60-
csc node stage --endpoint "$endpoint" --cap 1,block --staging-target-path "$staging_target_path" "$volumeid"
60+
csc node stage --endpoint "$endpoint" --cap MULTI_NODE_MULTI_WRITER,mount,xfs --staging-target-path "$staging_target_path" "$volumeid"
6161

6262
echo "publish volume test:"
63-
csc node publish --endpoint "$endpoint" --cap 1,block --staging-target-path "$staging_target_path" --target-path "$target_path" "$volumeid"
63+
csc node publish --endpoint "$endpoint" --cap MULTI_NODE_MULTI_WRITER,mount,xfs --staging-target-path "$staging_target_path" --target-path "$target_path" "$volumeid"
6464
sleep 2
6565

6666
echo "node stats test:"
@@ -84,7 +84,7 @@ csc controller del --endpoint "$endpoint" "$volumeid"
8484
sleep 15
8585

8686
echo "Create volume in storage account($storage_account_name) under resource group($resource_group):"
87-
value="$(csc controller new --endpoint "$endpoint" --cap 1,block "$volname" --req-bytes "$volsize" --params skuname=Standard_LRS,storageAccount=$storage_account_name,resourceGroup=$resource_group)"
87+
value="$(csc controller new --endpoint "$endpoint" --cap MULTI_NODE_MULTI_WRITER,mount,xfs "$volname" --req-bytes "$volsize" --params skuname=Standard_LRS,storageAccount=$storage_account_name,resourceGroup=$resource_group)"
8888
sleep 15
8989

9090
volumeid="$(echo "$value" | awk '{print $1}' | sed 's/"//g')"

0 commit comments

Comments
 (0)