Fixed creation of ControllerCreateVolumeRequest. (#11238)

This commit is contained in:
Florian Apolloner 2021-10-06 16:17:39 +02:00 committed by GitHub
parent 0fa60dae9d
commit 709c1a2947
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 5 deletions

3
.changelog/11238.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
csi: Fixed a bug where the client would incorrectly set an empty capacity range for CSI volume creation requests.
```

View File

@ -229,11 +229,7 @@ type ClientCSIControllerCreateVolumeRequest struct {
func (req *ClientCSIControllerCreateVolumeRequest) ToCSIRequest() (*csi.ControllerCreateVolumeRequest, error) {
creq := &csi.ControllerCreateVolumeRequest{
Name: req.Name,
CapacityRange: &csi.CapacityRange{
RequiredBytes: req.CapacityMin,
LimitBytes: req.CapacityMax,
},
Name: req.Name,
VolumeCapabilities: []*csi.VolumeCapability{},
Parameters: req.Parameters,
Secrets: req.Secrets,
@ -244,6 +240,17 @@ func (req *ClientCSIControllerCreateVolumeRequest) ToCSIRequest() (*csi.Controll
// TODO: topology is not yet supported
AccessibilityRequirements: &csi.TopologyRequirement{},
}
// The CSI spec requires that at least one of the fields in CapacityRange
// must be defined. Fields set to 0 are considered unspecified and the
// CreateVolumeRequest should not send an invalid value.
if req.CapacityMin != 0 || req.CapacityMax != 0 {
creq.CapacityRange = &csi.CapacityRange{
RequiredBytes: req.CapacityMin,
LimitBytes: req.CapacityMax,
}
}
for _, cap := range req.VolumeCapabilities {
ccap, err := csi.VolumeCapabilityFromStructs(cap.AttachmentMode, cap.AccessMode, req.MountOptions)
if err != nil {