Merge pull request #101116 from jsafrane/vsphere-validate-parameters

vSphere: Return useful errors from parameter validation
This commit is contained in:
Kubernetes Prow Robot 2021-04-23 05:04:01 -07:00 committed by GitHub
commit 6e3a873674
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 19 deletions

View File

@ -24,7 +24,6 @@ const (
NoDiskUUIDFoundErrMsg = "No disk UUID found" NoDiskUUIDFoundErrMsg = "No disk UUID found"
NoDevicesFoundErrMsg = "No devices found" NoDevicesFoundErrMsg = "No devices found"
DiskNotFoundErrMsg = "No vSphere disk ID found" DiskNotFoundErrMsg = "No vSphere disk ID found"
InvalidVolumeOptionsErrMsg = "VolumeOptions verification failed"
NoVMFoundErrMsg = "No VM found" NoVMFoundErrMsg = "No VM found"
) )
@ -34,6 +33,5 @@ var (
ErrNoDiskUUIDFound = errors.New(NoDiskUUIDFoundErrMsg) ErrNoDiskUUIDFound = errors.New(NoDiskUUIDFoundErrMsg)
ErrNoDevicesFound = errors.New(NoDevicesFoundErrMsg) ErrNoDevicesFound = errors.New(NoDevicesFoundErrMsg)
ErrNoDiskIDFound = errors.New(DiskNotFoundErrMsg) ErrNoDiskIDFound = errors.New(DiskNotFoundErrMsg)
ErrInvalidVolumeOptions = errors.New(InvalidVolumeOptionsErrMsg)
ErrNoVMFound = errors.New(NoVMFoundErrMsg) ErrNoVMFound = errors.New(NoVMFoundErrMsg)
) )

View File

@ -64,9 +64,9 @@ func (virtualDisk *VirtualDisk) Create(ctx context.Context, datastore *vclib.Dat
if virtualDisk.VolumeOptions.DiskFormat == "" { if virtualDisk.VolumeOptions.DiskFormat == "" {
virtualDisk.VolumeOptions.DiskFormat = vclib.ThinDiskType virtualDisk.VolumeOptions.DiskFormat = vclib.ThinDiskType
} }
if !virtualDisk.VolumeOptions.VerifyVolumeOptions() { if err := virtualDisk.VolumeOptions.VerifyVolumeOptions(); err != nil {
klog.Error("VolumeOptions verification failed. volumeOptions: ", virtualDisk.VolumeOptions) klog.Errorf("VolumeOptions verification failed: %s (options: %+v)", err, virtualDisk.VolumeOptions)
return "", vclib.ErrInvalidVolumeOptions return "", fmt.Errorf("validation of parameters failed: %s", err)
} }
if virtualDisk.VolumeOptions.StoragePolicyID != "" && virtualDisk.VolumeOptions.StoragePolicyName != "" { if virtualDisk.VolumeOptions.StoragePolicyID != "" && virtualDisk.VolumeOptions.StoragePolicyName != "" {
return "", fmt.Errorf("Storage Policy ID and Storage Policy Name both set, Please set only one parameter") return "", fmt.Errorf("Storage Policy ID and Storage Policy Name both set, Please set only one parameter")

View File

@ -17,6 +17,7 @@ limitations under the License.
package vclib package vclib
import ( import (
"fmt"
"strings" "strings"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
@ -90,21 +91,21 @@ func CheckControllerSupported(ctrlType string) bool {
} }
// VerifyVolumeOptions checks if volumeOptions.SCIControllerType is valid controller type // VerifyVolumeOptions checks if volumeOptions.SCIControllerType is valid controller type
func (volumeOptions VolumeOptions) VerifyVolumeOptions() bool { func (volumeOptions VolumeOptions) VerifyVolumeOptions() error {
// Validate only if SCSIControllerType is set by user. // Validate only if SCSIControllerType is set by user.
// Default value is set later in virtualDiskManager.Create and vmDiskManager.Create // Default value is set later in virtualDiskManager.Create and vmDiskManager.Create
if volumeOptions.SCSIControllerType != "" { if volumeOptions.SCSIControllerType != "" {
isValid := CheckControllerSupported(volumeOptions.SCSIControllerType) isValid := CheckControllerSupported(volumeOptions.SCSIControllerType)
if !isValid { if !isValid {
return false return fmt.Errorf("invalid scsiControllerType: %s", volumeOptions.SCSIControllerType)
} }
} }
// ThinDiskType is the default, so skip the validation. // ThinDiskType is the default, so skip the validation.
if volumeOptions.DiskFormat != ThinDiskType { if volumeOptions.DiskFormat != ThinDiskType {
isValid := CheckDiskFormatSupported(volumeOptions.DiskFormat) isValid := CheckDiskFormatSupported(volumeOptions.DiskFormat)
if !isValid { if !isValid {
return false return fmt.Errorf("invalid diskFormat: %s", volumeOptions.DiskFormat)
} }
} }
return true return nil
} }