v1.9.0
This commit is contained in:
@@ -3,6 +3,7 @@ package validators
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strings"
|
||||
@@ -12,7 +13,7 @@ import (
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/multierror"
|
||||
)
|
||||
|
||||
// computeDriverValidator is used to validate Driver field in kvmx86/kvmppc create.
|
||||
// computeDriverValidator is used to validate Driver field in kvmx86 create.
|
||||
func computeDriverValidator(fe validator.FieldLevel) bool {
|
||||
fieldValue := fe.Field().String()
|
||||
|
||||
@@ -270,6 +271,27 @@ func interfaceStateValidator(fe validator.FieldLevel) bool {
|
||||
return IsInSlice(fieldValue, interfaceStateValues)
|
||||
}
|
||||
|
||||
func interfaceTXModelValidator(fe validator.FieldLevel) bool {
|
||||
fieldValue := fe.Field().String()
|
||||
fieldValue = strings.ToLower(fieldValue)
|
||||
|
||||
return IsInSlice(fieldValue, txModelValues)
|
||||
}
|
||||
|
||||
func interfaceIOEventFDValidator(fe validator.FieldLevel) bool {
|
||||
fieldValue := fe.Field().String()
|
||||
fieldValue = strings.ToLower(fieldValue)
|
||||
|
||||
return IsInSlice(fieldValue, ioEventFDValues)
|
||||
}
|
||||
|
||||
func interfaceEventIDxValidator(fe validator.FieldLevel) bool {
|
||||
fieldValue := fe.Field().String()
|
||||
fieldValue = strings.ToLower(fieldValue)
|
||||
|
||||
return IsInSlice(fieldValue, eventIDxValues)
|
||||
}
|
||||
|
||||
func strictLooseValidator(fe validator.FieldLevel) bool {
|
||||
fieldValue := fe.Field().String()
|
||||
fieldValue = strings.ToLower(fieldValue)
|
||||
@@ -304,6 +326,12 @@ func vmActionValidator(fe validator.FieldLevel) bool {
|
||||
return IsInSlice(fieldValue, vmActionValues)
|
||||
}
|
||||
|
||||
func mtuValidator(fe validator.FieldLevel) bool {
|
||||
fieldValue := fe.Field().Uint()
|
||||
|
||||
return fieldValue >= uint64(mtuMin) && fieldValue <= uint64(mtuMax)
|
||||
}
|
||||
|
||||
func computeFeaturesValidator(fe validator.FieldLevel) bool {
|
||||
field := fe.Field()
|
||||
slice, ok := field.Interface().([]string)
|
||||
@@ -337,6 +365,13 @@ func isBoolTypeValidator(fe validator.FieldLevel) bool {
|
||||
return fe.Field().CanConvert(reflect.TypeOf(true))
|
||||
}
|
||||
|
||||
func urlValidartor(fl validator.FieldLevel) bool {
|
||||
fieldValues := fl.Field().String()
|
||||
|
||||
_, err := url.ParseRequestURI(fieldValues)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// ValidateRAM checks if request contains RAM value that is positive integer divisible by divisibility passed.
|
||||
// It is recommended to pass constants.RAM_DIVISIBILITY as divisility arguement
|
||||
func ValidateRAM(r interfaces.RequestWithRAM, divisibility uint64) error {
|
||||
|
||||
@@ -25,6 +25,8 @@ func errorMessage(fe validator.FieldError) string {
|
||||
return fmt.Sprintf("%s %s: unexpected URL format", prefix, fe.Field())
|
||||
case "email":
|
||||
return fmt.Sprintf("%s %s: unexpected E-Mail format", prefix, fe.Field())
|
||||
case "isBool":
|
||||
return fmt.Sprintf("%s %s: must be bool type", prefix, fe.Field())
|
||||
|
||||
case "driver":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
@@ -89,11 +91,8 @@ func errorMessage(fe validator.FieldError) string {
|
||||
fe.Field(),
|
||||
joinValues(computeDiskTypeValues))
|
||||
|
||||
case "computeNetType":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
prefix,
|
||||
fe.Field(),
|
||||
joinValues(computeNetTypeValues))
|
||||
case "mtu":
|
||||
return fmt.Sprint(prefix, fe.Field(), "must be ", mtuMin, "-", mtuMax)
|
||||
|
||||
case "computex86NetType":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
@@ -101,6 +100,12 @@ func errorMessage(fe validator.FieldError) string {
|
||||
fe.Field(),
|
||||
joinValues(computex86NetTypeValues))
|
||||
|
||||
case "computeNetType":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
prefix,
|
||||
fe.Field(),
|
||||
joinValues(computeNetTypeValues))
|
||||
|
||||
case "computeOrder":
|
||||
return fmt.Sprintf("%s %s can contain only the following values: %s",
|
||||
prefix,
|
||||
@@ -139,7 +144,7 @@ func errorMessage(fe validator.FieldError) string {
|
||||
prefix,
|
||||
fe.Field())
|
||||
|
||||
// KVM_X86/KVM_PPC Validators
|
||||
// KVM_X86 Validators
|
||||
case "kvmNetType":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
prefix,
|
||||
@@ -236,6 +241,24 @@ func errorMessage(fe validator.FieldError) string {
|
||||
fe.Field(),
|
||||
joinValues(interfaceStateValues))
|
||||
|
||||
case "interfaceTXModel":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
prefix,
|
||||
fe.Field(),
|
||||
joinValues(txModelValues))
|
||||
|
||||
case "interfaceIOEventFD":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
prefix,
|
||||
fe.Field(),
|
||||
joinValues(ioEventFDValues))
|
||||
|
||||
case "interfaceEventIDx":
|
||||
return fmt.Sprintf("%s %s must be one of the following: %s",
|
||||
prefix,
|
||||
fe.Field(),
|
||||
joinValues(eventIDxValues))
|
||||
|
||||
case "sortBy":
|
||||
return fmt.Sprintf("%s %s must be in format +|-(field)",
|
||||
prefix,
|
||||
|
||||
@@ -186,6 +186,21 @@ func registerAllValidators(validate *validator.Validate) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("interfaceTXModel", interfaceTXModelValidator)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("interfaceIOEventFD", interfaceIOEventFDValidator)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("interfaceEventIDx", interfaceEventIDxValidator)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("workerGroupName", workerGroupNameValidator)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -206,6 +221,11 @@ func registerAllValidators(validate *validator.Validate) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("mtu", mtuValidator)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("computeFeatures", computeFeaturesValidator)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -231,5 +251,10 @@ func registerAllValidators(validate *validator.Validate) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = validate.RegisterValidation("url", urlValidartor)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package validators
|
||||
|
||||
var (
|
||||
driverValues = []string{"KVM_X86", "KVM_PPC"}
|
||||
driverValues = []string{"KVM_X86"}
|
||||
accessTypeValues = []string{"R", "RCX", "ARCXDU"}
|
||||
resTypesValues = []string{"compute", "vins", "k8s", "openshift", "lb", "flipgroup"}
|
||||
protoValues = []string{"tcp", "udp"}
|
||||
@@ -15,7 +15,7 @@ var (
|
||||
computeModeValues = []string{"EQ", "EN", "ANY"}
|
||||
computeDiskTypeValues = []string{"D", "B"}
|
||||
computeNetTypeValues = []string{"EXTNET", "VINS"}
|
||||
computex86NetTypeValues = []string{"EXTNET", "VINS", "VFNIC"}
|
||||
computex86NetTypeValues = []string{"EXTNET", "VINS", "VFNIC", "DPDK"}
|
||||
computeOrderValues = []string{"cdrom", "network", "hd"}
|
||||
computeDataDisksValues = []string{"KEEP", "DETACH", "DESTROY"}
|
||||
computeDriverValues = []string{"KVM_X86", "SVA_KVM_X86"}
|
||||
@@ -25,7 +25,7 @@ var (
|
||||
flipgroupClientTypeValues = []string{"compute", "vins"}
|
||||
|
||||
kvmNetTypeValues = []string{"EXTNET", "VINS", "NONE"}
|
||||
kvmx86NetTypeValues = []string{"EXTNET", "VINS", "NONE", "VFNIC"}
|
||||
kvmx86NetTypeValues = []string{"EXTNET", "VINS", "NONE", "VFNIC", "DPDK"}
|
||||
|
||||
lbAlgorithmValues = []string{"roundrobin", "static-rr", "leastconn"}
|
||||
|
||||
@@ -37,7 +37,7 @@ var (
|
||||
imageBootTypeValues = []string{"uefi", "bios"}
|
||||
imageTypeValues = []string{"windows", "linux", "other"}
|
||||
imageDriversValues = []string{"KVM_X86"}
|
||||
imageArchitectureValues = []string{"X86_64", "PPC64_LE"}
|
||||
imageArchitectureValues = []string{"X86_64"}
|
||||
|
||||
sepFieldTypeValues = []string{"int", "str", "bool", "list", "dict"}
|
||||
|
||||
@@ -56,4 +56,16 @@ var (
|
||||
networkInterfaceNamingValues = []string{"eth", "ens"}
|
||||
|
||||
numaAffinityValues = []string{"none", "strict", "loose"}
|
||||
|
||||
txModelValues = []string{"iothread", "timer", "selected by hypervisor"}
|
||||
|
||||
ioEventFDValues = []string{"on", "off", "selected by hypervisor"}
|
||||
|
||||
eventIDxValues = []string{"on", "off", "selected by hypervisor"}
|
||||
)
|
||||
|
||||
const (
|
||||
mtuMin = 1
|
||||
|
||||
mtuMax = 9216
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user