2023-03-17 12:54:34 +03:00
|
|
|
package validators
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"sync"
|
|
|
|
|
|
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
2023-05-18 13:37:48 +03:00
|
|
|
once sync.Once
|
|
|
|
|
decortValidator = validator.New()
|
2023-03-17 12:54:34 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// getDecortValidator returns singleton instance of DecortValidator.
|
|
|
|
|
func getDecortValidator() *validator.Validate {
|
2023-05-18 13:37:48 +03:00
|
|
|
once.Do(func() {
|
|
|
|
|
err := registerAllValidators(decortValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return decortValidator
|
2023-03-17 12:54:34 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// registerAllValidators registers all custom validators in DecortValidator.
|
|
|
|
|
func registerAllValidators(validate *validator.Validate) error {
|
2024-04-16 14:26:06 +03:00
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err := validate.RegisterValidation("proto", protoValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-09 11:21:07 +03:00
|
|
|
err = validate.RegisterValidation("apiGroup", apiGroupValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err = validate.RegisterValidation("accessType", accessTypeValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err = validate.RegisterValidation("resTypes", resTypesValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err = validate.RegisterValidation("imageBootType", imageBootTypeValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err = validate.RegisterValidation("imageType", imageTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("imageArchitecture", imageArchitectureValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err = validate.RegisterValidation("accountCUType", accountCUTypeValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("bserviceMode", bserviceModeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("computeTopology", computeTopologyValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("computePolicy", computePolicyValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("computeMode", computeModeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("computeDiskType", computeDiskTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("computeNetType", computeNetTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-31 13:35:39 +03:00
|
|
|
err = validate.RegisterValidation("computex86NetType", computex86NetTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-24 17:09:30 +03:00
|
|
|
err = validate.RegisterValidation("computeOrder", computeOrderValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("computeDataDisks", computeDataDisksValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("diskType", diskTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("flipgroupClientType", flipgroupClientTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-14 17:38:59 +03:00
|
|
|
err = validate.RegisterValidation("massCreateNetType", massCreateTypeValidator)
|
2023-03-24 17:09:30 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("lbAlgorithm", lbAlgorithmValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("rgDefNet", rgDefNetValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("rgNetType", rgNetTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("vinsType", vinsTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("sepFieldType", sepFieldTypeValidator)
|
2023-03-17 12:54:34 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-20 11:17:35 +03:00
|
|
|
err = validate.RegisterValidation("hwPath", hwPathValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-28 11:46:58 +03:00
|
|
|
err = validate.RegisterValidation("networkPlugin", networkPluginValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("networkPlugins", networkPluginsValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("strict_loose", strictLooseValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("interfaceState", interfaceStateValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-12 12:51:21 +03:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-09 19:33:50 +03:00
|
|
|
err = validate.RegisterValidation("workerGroupName", workerGroupNameValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-16 14:26:06 +03:00
|
|
|
err = validate.RegisterValidation("sortBy", sortByValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("action", actionValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("vmaction", vmActionValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-12 12:51:21 +03:00
|
|
|
err = validate.RegisterValidation("mtu", mtuValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-16 14:26:06 +03:00
|
|
|
err = validate.RegisterValidation("computeFeatures", computeFeaturesValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("networkInterfaceNaming", networkInterfaceNamingValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-31 13:35:39 +03:00
|
|
|
err = validate.RegisterValidation("numaAffinity", numaAffinityValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("kvmx86NetType", kvmx86NetTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("isBool", isBoolTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-12 12:51:21 +03:00
|
|
|
err = validate.RegisterValidation("url", urlValidartor)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-22 12:09:50 +03:00
|
|
|
err = validate.RegisterValidation("chipset", chipsetValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-07 11:11:43 +03:00
|
|
|
err = validate.RegisterValidation("preferredCPU", preferredCPUValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-18 11:42:00 +03:00
|
|
|
err = validate.RegisterValidation("loaderType", loaderTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-09 11:21:07 +03:00
|
|
|
err = validate.RegisterValidation("language", languageValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-15 17:39:18 +03:00
|
|
|
err = validate.RegisterValidation("userProvider", userProviderValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-09 11:21:07 +03:00
|
|
|
err = validate.RegisterValidation("sepType", sepTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-15 17:39:18 +03:00
|
|
|
err = validate.RegisterValidation("device", deviceValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("trunkTags", trunkTagsValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-29 12:51:25 +03:00
|
|
|
err = validate.RegisterValidation("securityGroupDirection", securityGroupDirectionValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("securityGroupEthertype", securityGroupEthertypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("securityGroupProtocol", securityGroupProtocolValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-14 17:38:59 +03:00
|
|
|
err = validate.RegisterValidation("addressPoolNetTypeValidator", addressPoolNetTypeValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = validate.RegisterValidation("ipTypes", ipTypesValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-23 17:39:58 +03:00
|
|
|
err = validate.RegisterValidation("sepTechStatus", sepTechStatusValidator)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-17 12:54:34 +03:00
|
|
|
return nil
|
|
|
|
|
}
|