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 }