You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

211 lines
4.8 KiB

4 months ago
package validators
import (
"sync"
"github.com/go-playground/validator/v10"
)
var (
once sync.Once
VControlValidator = validator.New()
)
// getVControlValidator returns singleton instance of VControlValidator.
func getVControlValidator() *validator.Validate {
once.Do(func() {
err := registerAllValidators(VControlValidator)
if err != nil {
panic(err)
}
})
return VControlValidator
}
// registerAllValidators registers all custom validators in VControlValidator.
func registerAllValidators(validate *validator.Validate) error {
// Register virt_type validator
err := validate.RegisterValidation("virt_type", virtTypeValidator)
if err != nil {
return err
}
// Register vm status validator
err = validate.RegisterValidation("vm_status", vmStatusValidator)
if err != nil {
return err
}
// Register cpu_units validator
err = validate.RegisterValidation("cpu_units", cpuUnitsValidator)
if err != nil {
return err
}
// Register cpu_limit validator
err = validate.RegisterValidation("cpu_limit", cpuLimitValidator)
if err != nil {
return err
}
// Register mem_guarantee_size validator
err = validate.RegisterValidation("mem_guarantee_size", memGuaranteeSizeValidator)
if err != nil {
return err
}
// Register video_ram validator
err = validate.RegisterValidation("video_ram", videoRamValidator)
if err != nil {
return err
}
// Register mem_guarantee_size validator
err = validate.RegisterValidation("metrics_period", metricsPeriodValidator)
if err != nil {
return err
}
// Register ha_status validator
err = validate.RegisterValidation("ha_status", haStatusValidator)
if err != nil {
return err
}
// Register visibility validator
err = validate.RegisterValidation("visibility", visibilityValidator)
if err != nil {
return err
}
// Register visibility validator
err = validate.RegisterValidation("image_type", imageTypeValidator)
if err != nil {
return err
}
// Register visibility validator
err = validate.RegisterValidation("image_status", imageStatusValidator)
if err != nil {
return err
}
// Register bool validator
err = validate.RegisterValidation("is_bool", isBoolTypeValidator)
if err != nil {
return err
}
// Register network_type validator
err = validate.RegisterValidation("network_type", networkTypeValidator)
if err != nil {
return err
}
// Register external storage status validator
err = validate.RegisterValidation("extstorage_status", extStorageStatusValidator)
if err != nil {
return err
}
// Register external storage type validator
err = validate.RegisterValidation("extstorage_type", extStorageTypeValidator)
if err != nil {
return err
}
// Register node maintenance status validator
err = validate.RegisterValidation("maintenance_status", nodeMaintenanceStatusValidator)
if err != nil {
return err
}
// Register node maintenance status validator
err = validate.RegisterValidation("agent_update_status", nodeAgentStatusValidator)
if err != nil {
return err
}
// Register multi choose ha status validator
err = validate.RegisterValidation("ha_multi_status", haMultiStatusValidator)
if err != nil {
return err
}
// Register node status on ha cluster validator
err = validate.RegisterValidation("node_status_in_ha_cluster", nodeStatusInHaClusterValidator)
if err != nil {
return err
}
// Register affinity rule validator
err = validate.RegisterValidation("affinity", affinityRuleValidator)
if err != nil {
return err
}
// Register guest os validator
err = validate.RegisterValidation("guest_os", guestOSValidator)
if err != nil {
return err
}
// Register guest os version validator
err = validate.RegisterValidation("guest_os_version", guestOSVersionValidator)
if err != nil {
return err
}
// Register io priority validator
err = validate.RegisterValidation("io_priority", ioPriorityValidator)
if err != nil {
return err
}
// Register auto start validator
err = validate.RegisterValidation("auto_start", autoStartValidator)
if err != nil {
return err
}
// Register auto stop validator
err = validate.RegisterValidation("auto_stop", autoStopValidator)
if err != nil {
return err
}
// Register vnc mode validator
err = validate.RegisterValidation("vnc_mode", vncModeValidator)
if err != nil {
return err
}
// Register chipset validator
err = validate.RegisterValidation("chipset", chipsetValidator)
if err != nil {
return err
}
// Register clock offset validator
err = validate.RegisterValidation("clock_offset", clockOffsetValidator)
if err != nil {
return err
}
// Register template status validator
err = validate.RegisterValidation("template_status", templateStatusValidator)
if err != nil {
return err
}
// Register url validator
err = validate.RegisterValidation("url", urlValidartor)
if err != nil {
return err
}
return nil
}