Skip to content

Commit 237a44c

Browse files
committed
Verify volume details added
1 parent 9bae029 commit 237a44c

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

pkg/driver/controller.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,11 @@ func (d *controllerService) CreateVolume(ctx context.Context, req *csi.CreateVol
127127
diskDetails, _ := d.cloud.GetDiskByName(volName)
128128
if diskDetails != nil {
129129
// wait for volume to be available as the volume already exists
130-
err := d.cloud.WaitForVolumeState(diskDetails.VolumeID, cloud.VolumeAvailableState)
130+
err := verifyVolumeDetails(opts, diskDetails)
131+
if err != nil {
132+
return nil, err
133+
}
134+
err = d.cloud.WaitForVolumeState(diskDetails.VolumeID, cloud.VolumeAvailableState)
131135
if err != nil {
132136
return nil, status.Errorf(codes.Internal, "Disk already exists and not in expected state")
133137
}
@@ -421,3 +425,17 @@ func getVolSizeBytes(req *csi.CreateVolumeRequest) (int64, error) {
421425
}
422426
return volSizeBytes, nil
423427
}
428+
429+
func verifyVolumeDetails(payload *cloud.DiskOptions, diskDetails *cloud.Disk) error {
430+
if payload.Shareable != diskDetails.Shareable {
431+
return status.Errorf(codes.Internal, "shareable in payload and shareable in disk details don't match")
432+
}
433+
if payload.VolumeType != diskDetails.DiskType {
434+
return status.Errorf(codes.Internal, "TYPE in payload and disktype in disk details don't match")
435+
}
436+
capacityGIB := util.BytesToGiB(payload.CapacityBytes)
437+
if capacityGIB != diskDetails.CapacityGiB {
438+
return status.Errorf(codes.Internal, "capacityBytes in payload and capacityGIB in disk details don't match")
439+
}
440+
return nil
441+
}

0 commit comments

Comments
 (0)