From df8f78bea9bbcf59fb9f1a8b0c859c50202ebfc4 Mon Sep 17 00:00:00 2001 From: Helene Durand Date: Mon, 13 Jan 2025 09:33:08 +0100 Subject: [PATCH] MEDIUM: adapt kubebuilder_marker_generator to v6 models Also adds convert function from client native v5 to v6 models --- cmd/kubebuilder_marker_generator/main.go | 29 ++- configuration/convert/v2v3/convert_global.go | 220 +++++++++++++++++++ configuration/convert/v2v3/convert_v2_v3.go | 153 +++++++++++++ go.mod | 1 + go.sum | 2 + models/aws_region.go | 4 +- models/backend_base.go | 68 +++--- models/backend_switching_rule.go | 2 +- models/balance.go | 2 +- models/bind_params.go | 14 +- models/capture.go | 2 +- models/cluster_settings.go | 6 +- models/compression.go | 4 +- models/config_stick_table.go | 4 +- models/consul.go | 6 +- models/cookie.go | 2 +- models/crt_load.go | 2 +- models/defaults_base.go | 86 ++++---- models/email_alert.go | 2 +- models/errorfile.go | 2 +- models/errorloc.go | 2 +- models/fcgi_app_base.go | 6 +- models/fcgi_pass_header.go | 2 +- models/fcgi_set_param.go | 2 +- models/filter.go | 2 +- models/forwardfor.go | 2 +- models/frontend_base.go | 54 ++--- models/global_base.go | 10 +- models/hash_type.go | 6 +- models/health.go | 2 +- models/http_after_response_rule.go | 8 +- models/http_check.go | 12 +- models/http_client_options.go | 6 +- models/http_error_rule.go | 6 +- models/http_request_rule.go | 20 +- models/http_response_rule.go | 16 +- models/httpchk_params.go | 2 +- models/log_target.go | 8 +- models/lua_options.go | 2 +- models/monitor_fail.go | 2 +- models/mysql_check_params.go | 2 +- models/native_stat.go | 2 +- models/native_stat_stats.go | 8 +- models/ocsp_update_options.go | 2 +- models/originalto.go | 2 +- models/performance_options.go | 4 +- models/persist_rule.go | 2 +- models/program.go | 2 +- models/redispatch.go | 2 +- models/reload.go | 2 +- models/ring_base.go | 2 +- models/runtime_add_server.go | 66 +++--- models/runtime_server.go | 4 +- models/server.go | 3 +- models/server_params.go | 74 +++---- models/server_switching_rule.go | 2 +- models/site.go | 10 +- models/source.go | 2 +- models/spoe_agent.go | 12 +- models/spoe_message.go | 4 +- models/spoe_transaction.go | 2 +- models/ssl_options.go | 4 +- models/stats_http_request.go | 2 +- models/stats_options.go | 2 +- models/stick_rule.go | 4 +- models/stick_table.go | 6 +- models/table.go | 2 +- models/tcp_check.go | 10 +- models/tcp_request_rule.go | 10 +- models/tcp_response_rule.go | 8 +- models/transaction.go | 2 +- models/tune_lua_options.go | 4 +- models/tune_options.go | 20 +- models/tune_quic_options.go | 4 +- models/tune_ssl_options.go | 2 +- runtime/runtime_client.go | 10 +- 76 files changed, 743 insertions(+), 337 deletions(-) create mode 100644 configuration/convert/v2v3/convert_global.go create mode 100644 configuration/convert/v2v3/convert_v2_v3.go diff --git a/cmd/kubebuilder_marker_generator/main.go b/cmd/kubebuilder_marker_generator/main.go index 3510336d..d154bd87 100644 --- a/cmd/kubebuilder_marker_generator/main.go +++ b/cmd/kubebuilder_marker_generator/main.go @@ -58,7 +58,8 @@ func generate(fileName string) error { //nolint:gocognit // We must keep empty strings: // For example in Globals HttpclientSslVerify: // Enum: [ none required] // from swagger: enum: ["", "none", "required"] - for _, enum := range strings.Split(comment, " ") { + for _, enum := range strings.Split(comment, ",") { + enum = strings.Trim(enum, "\"") if enum == "" { newComment += `""` } @@ -86,6 +87,21 @@ func generate(fileName string) error { //nolint:gocognit field.Decorations().Start.Append("// +kubebuilder:validation:Optional") } } + if strings.HasPrefix(comment, "// metadata") { + decorations := field.Decorations().Start + preserveField := "// +kubebuilder:pruning:PreserveUnknownFields" + schemalessField := "// +kubebuilder:validation:Schemaless" + updatedDecorations := make([]string, 0) + copy(updatedDecorations, decorations) + if !containsDecoration(updatedDecorations, preserveField) { + updatedDecorations = append(updatedDecorations, preserveField) + } + if !containsDecoration(updatedDecorations, schemalessField) { + updatedDecorations = append(updatedDecorations, schemalessField) + } + field.Decorations().Start = updatedDecorations + field.Decorations().Before = dst.NewLine + } } // if len(field.Names) > 0 { // log.Printf("Comments before the field %s: %v\n", field.Names[0].Name, comments) @@ -152,3 +168,14 @@ func cleanup(comments []string, prefixToRemove string) []string { } return res } + +// Helper function to check if a decoration exists +func containsDecoration(decorations []string, decoration string) bool { + for _, d := range decorations { + // Normalize whitespace to prevent mismatch + if strings.TrimSpace(d) == strings.TrimSpace(decoration) { + return true + } + } + return false +} diff --git a/configuration/convert/v2v3/convert_global.go b/configuration/convert/v2v3/convert_global.go new file mode 100644 index 00000000..d329e0ac --- /dev/null +++ b/configuration/convert/v2v3/convert_global.go @@ -0,0 +1,220 @@ +package v2v3 + +import ( + v2 "github.com/haproxytech/client-native/v5/models" + v3 "github.com/haproxytech/client-native/v6/models" +) + +func GlobalV2ToV3(v2g *v2.Global) (*v3.GlobalBase, error) { //nolint:maintidx + var v3g *v3.GlobalBase + // Global + daemon := false + if v2g.Daemon == "enabled" { + daemon = true + } + v3t, err := V2Tov3[v2.Global, v3.GlobalBase](v2g, "daemon") + if err != nil { + return nil, err + } + v3g = v3t + + // Fields restructured + // PerformanceOptions + performanceOptions, err := V2Tov3[v2.Global, v3.PerformanceOptions](v2g) + if err != nil { + return nil, err + } + if !performanceOptions.Equal(v3.PerformanceOptions{}) { + v3g.PerformanceOptions = performanceOptions + } + + // HTTPClientOptions + httpClientOptions := &v3.HTTPClientOptions{ + ResolversDisabled: v2g.HttpclientResolversDisabled, + ResolversID: v2g.HttpclientResolversID, + ResolversPrefer: v2g.HttpclientResolversPrefer, + Retries: v2g.HttpclientRetries, + SslCaFile: v2g.HttpclientSslCaFile, + SslVerify: v2g.HttpclientSslVerify, + TimeoutConnect: v2g.HttpclientTimeoutConnect, + } + if !httpClientOptions.Equal(v3.HTTPClientOptions{}) { + v3g.HTTPClientOptions = httpClientOptions + } + + // TuneQuicOptions + tuneQuicOptions := &v3.TuneQuicOptions{ + FrontendConnTxBuffersLimit: v2g.TuneOptions.QuicFrontendConnTxBuffersLimit, + FrontendMaxIdleTimeout: v2g.TuneOptions.QuicFrontendMaxIdleTimeout, + FrontendMaxStreamsBidi: v2g.TuneOptions.QuicFrontendMaxStreamsBidi, + MaxFrameLoss: v2g.TuneOptions.QuicMaxFrameLoss, + RetryThreshold: v2g.TuneOptions.QuicRetryThreshold, + SocketOwner: v2g.TuneOptions.QuicSocketOwner, + // ReorderRatio: not present in v2 + // ZeroCopyFwdSend: not present in v2 + } + if !tuneQuicOptions.Equal(v3.TuneQuicOptions{}) { + v3g.TuneQuicOptions = tuneQuicOptions + } + + // TuneVarsOptions + tuneVarsOptions := &v3.TuneVarsOptions{ + GlobalMaxSize: v2g.TuneOptions.VarsGlobalMaxSize, + ProcMaxSize: v2g.TuneOptions.VarsProcMaxSize, + ReqresMaxSize: v2g.TuneOptions.VarsReqresMaxSize, + SessMaxSize: v2g.TuneOptions.VarsSessMaxSize, + TxnMaxSize: v2g.TuneOptions.VarsTxnMaxSize, + } + if !tuneVarsOptions.Equal(v3.TuneVarsOptions{}) { + v3g.TuneVarsOptions = tuneVarsOptions + } + + // TuneZlibOptions + tuneZlibOptions := &v3.TuneZlibOptions{ + Memlevel: v2g.TuneOptions.ZlibMemlevel, + Windowsize: v2g.TuneOptions.ZlibWindowsize, + } + if !tuneZlibOptions.Equal(v3.TuneZlibOptions{}) { + v3g.TuneZlibOptions = tuneZlibOptions + } + + // TuneSslOptions + tuneSslOptions := &v3.TuneSslOptions{ + Cachesize: v2g.TuneOptions.SslCachesize, + CtxCacheSize: v2g.TuneOptions.SslCtxCacheSize, + CaptureBufferSize: v2g.TuneOptions.SslCaptureBufferSize, + DefaultDhParam: v2g.TuneOptions.SslDefaultDhParam, + ForcePrivateCache: v2g.TuneOptions.SslForcePrivateCache, + Keylog: v2g.TuneOptions.SslKeylog, + Lifetime: v2g.TuneOptions.SslLifetime, + Maxrecord: v2g.TuneOptions.SslMaxrecord, + OcspUpdateMaxDelay: v2g.TuneOptions.SslOcspUpdateMaxDelay, + OcspUpdateMinDelay: v2g.TuneOptions.SslOcspUpdateMinDelay, + } + if !tuneSslOptions.Equal(v3.TuneSslOptions{}) { + v3g.TuneSslOptions = tuneSslOptions + } + + // TuneLuaOptions + tuneLuaOptions := &v3.TuneLuaOptions{ + BurstTimeout: v2g.TuneOptions.LuaBurstTimeout, + ForcedYield: v2g.TuneOptions.LuaForcedYield, + LogLoggers: v2g.TuneOptions.LuaLogLoggers, + LogStderr: v2g.TuneOptions.LuaLogStderr, + // Maxmem: was a boolean + ServiceTimeout: v2g.TuneOptions.LuaServiceTimeout, + SessionTimeout: v2g.TuneOptions.LuaSessionTimeout, + TaskTimeout: v2g.TuneOptions.LuaTaskTimeout, + } + if !tuneLuaOptions.Equal(v3.TuneLuaOptions{}) { + v3g.TuneLuaOptions = tuneLuaOptions + } + + // TuneBufOptions + tuneBufferOptions := &v3.TuneBufferOptions{ + BuffersLimit: v2g.TuneOptions.BuffersLimit, + BuffersReserve: v2g.TuneOptions.BuffersReserve, + Bufsize: v2g.TuneOptions.Bufsize, + Pipesize: v2g.TuneOptions.Pipesize, + RcvbufBackend: v2g.TuneOptions.RcvbufBackend, + RcvbufClient: v2g.TuneOptions.RcvbufClient, + RcvbufFrontend: v2g.TuneOptions.RcvbufFrontend, + RcvbufServer: v2g.TuneOptions.RcvbufServer, + RecvEnough: v2g.TuneOptions.RecvEnough, + SndbufBackend: v2g.TuneOptions.SndbufBackend, + SndbufClient: v2g.TuneOptions.SndbufClient, + SndbufFrontend: v2g.TuneOptions.SndbufFrontend, + SndbufServer: v2g.TuneOptions.SndbufServer, + } + if !tuneBufferOptions.Equal(v3.TuneBufferOptions{}) { + v3g.TuneBufferOptions = tuneBufferOptions + } + + // SslOptions + v3engines, err := ListV2ToV3[v2.SslEngine, v3.SslEngine](v2g.SslEngines) + if err != nil { + return nil, err + } + sslOptions := &v3.SslOptions{ + SslEngines: v3engines, + CaBase: v2g.CaBase, + CrtBase: v2g.CrtBase, + DefaultBindCiphers: v2g.SslDefaultBindCiphers, + DefaultBindCiphersuites: v2g.SslDefaultBindCiphersuites, + DefaultBindClientSigalgs: v2g.SslDefaultBindClientSigalgs, + DefaultBindCurves: v2g.SslDefaultBindCurves, + DefaultBindOptions: v2g.SslDefaultBindOptions, + DefaultBindSigalgs: v2g.SslDefaultBindSigalgs, + DefaultServerCiphers: v2g.SslDefaultServerCiphers, + DefaultServerCiphersuites: v2g.SslDefaultServerCiphersuites, + DefaultServerClientSigalgs: v2g.SslDefaultServerClientSigalgs, + DefaultServerCurves: v2g.SslDefaultServerCurves, + DefaultServerOptions: v2g.SslDefaultServerOptions, + DefaultServerSigalgs: v2g.SslDefaultServerSigalgs, + DhParamFile: v2g.SslDhParamFile, + IssuersChainPath: v2g.IssuersChainPath, + LoadExtraFiles: v2g.SslLoadExtraFiles, + Maxsslconn: v2g.Maxsslconn, + Maxsslrate: v2g.Maxsslrate, + ModeAsync: v2g.SslModeAsync, + Propquery: v2g.SslPropquery, + Provider: v2g.SslProvider, + ProviderPath: v2g.SslProviderPath, + // SecurityLevel: not present in v2 + ServerVerify: v2g.SslServerVerify, + SkipSelfIssuedCa: v2g.SslSkipSelfIssuedCa, + } + if !sslOptions.Equal(v3.SslOptions{}) { + v3g.SslOptions = sslOptions + } + + // EnvironmentOptions + v3preset, err := ListV2ToV3[v2.PresetEnv, v3.PresetEnv](v2g.PresetEnvs) + if err != nil { + return nil, err + } + v3set, err := ListV2ToV3[v2.SetEnv, v3.SetEnv](v2g.SetEnvs) + if err != nil { + return nil, err + } + envOptions := &v3.EnvironmentOptions{ + PresetEnvs: v3preset, + SetEnvs: v3set, + Resetenv: v2g.Resetenv, + Unsetenv: v2g.Unsetenv, + } + if !envOptions.Equal(v3.EnvironmentOptions{}) { + v3g.EnvironmentOptions = envOptions + } + + // DebugOptions + debugOptions := &v3.DebugOptions{ + Anonkey: v2g.Anonkey, + Quiet: v2g.Quiet, + ZeroWarning: v2g.ZeroWarning, + } + if !debugOptions.Equal(v3.DebugOptions{}) { + v3g.DebugOptions = debugOptions + } + + // LuaOptions + luaLoad, err := ListV2ToV3[v2.LuaLoad, v3.LuaLoad](v2g.LuaLoads) + if err != nil { + return nil, err + } + luaPrependPath, err := ListV2ToV3[v2.LuaPrependPath, v3.LuaPrependPath](v2g.LuaPrependPath) + if err != nil { + return nil, err + } + luaOptions := &v3.LuaOptions{ + LoadPerThread: v2g.LuaLoadPerThread, + Loads: luaLoad, + PrependPath: luaPrependPath, + } + if !luaOptions.Equal(v3.LuaOptions{}) { + v3g.LuaOptions = luaOptions + } + + v3g.Daemon = daemon + return v3g, nil +} diff --git a/configuration/convert/v2v3/convert_v2_v3.go b/configuration/convert/v2v3/convert_v2_v3.go new file mode 100644 index 00000000..e6de5df6 --- /dev/null +++ b/configuration/convert/v2v3/convert_v2_v3.go @@ -0,0 +1,153 @@ +package v2v3 + +import ( + "cmp" + "encoding/json" + "errors" + "reflect" + "slices" + + "github.com/haproxytech/client-native/v6/misc" +) + +// V2Tov3 converts a Structured type from v2 to v3 +// For example +// v3f, err := V2Tov3[v2.Frontend, models.Frontend](&v2s.Frontend) +// The conversion allows to have an evolving type v3: +// - extra fields would be ignored in the conversion, keeping the v2 fields converted +func V2Tov3[TV2, TV3 any](resource *TV2, skip ...string) (*TV3, error) { + original, err := json.Marshal(resource) + if err != nil { + return nil, err + } + originalMap := make(map[string]interface{}) + err = json.Unmarshal(original, &originalMap) + if err != nil { + return nil, err + } + for _, s := range skip { + delete(originalMap, s) + } + versionj, err := json.Marshal(originalMap) + if err != nil { + return nil, err + } + var otherversion TV3 + err = json.Unmarshal(versionj, &otherversion) + if err != nil { + return nil, err + } + return &otherversion, nil +} + +func ListV2ToV3[TV2, TV3 any](listV2 []*TV2) ([]*TV3, error) { + SortListByIndex(listV2) + listV3 := make([]*TV3, len(listV2)) + for i, v := range listV2 { + resourceV3, err := V2Tov3[TV2, TV3](v) + if err != nil { + return nil, err + } + listV3[i] = resourceV3 + } + return listV3, nil +} + +func NamedResourceArrayToMap[T any](namedResource []*T) (map[string]T, error) { + return NamedResourceArrayToMapWithKey[T](namedResource, "Name") +} + +//nolint:nilnil +func NamedResourceArrayToMapWithKey[T any](namedResource []*T, key string) (map[string]T, error) { + if len(namedResource) == 0 { + return nil, nil + } + res := make(map[string]T) + for _, r := range namedResource { + name, err := getKey(r, key) + if err != nil { + return nil, err + } + res[name] = *r + } + return res, nil +} + +// getKey returns the value of the 'Name' field from any struct or pointer to struct using reflection. +// Constraint: the struct must have an exportable 'Name' field +func getKey(obj interface{}, keyName string) (string, error) { + value := reflect.ValueOf(obj) + // If Pointer, first get the pointed value + if value.Kind() == reflect.Ptr { + value = value.Elem() + } + if value.Kind() != reflect.Struct { + return "", errors.New("object is not a struct") + } + nameField := value.FieldByName(keyName) + if !nameField.IsValid() || !nameField.CanInterface() { + return "", errors.New("object does not have an exportable 'Name' field") + } + name := nameField.Interface().(string) + return name, nil +} + +func SortListByIndex[T any](list []*T) { + slices.SortFunc(list, + func(a, b *T) int { + ia, _ := getIndex(a) + ib, _ := getIndex(b) + if ia == nil || ib == nil { + return -1 + } + return cmp.Compare(*ia, *ib) + }) +} + +func getIndex(obj interface{}) (*int64, error) { + value := reflect.ValueOf(obj) + // If Pointer, first get the pointed value + if value.Kind() == reflect.Ptr { + value = value.Elem() + } + if value.Kind() != reflect.Struct { + return misc.Ptr[int64](-1), errors.New("object is not a struct") + } + nameField := value.FieldByName("Index") + if !nameField.IsValid() || !nameField.CanInterface() { + return misc.Ptr[int64](-1), errors.New("object does not have an exportable 'Index' field") + } + index := nameField.Interface().(*int64) + return index, nil +} + +func NamedResourceArrayV2ToMapV3[TV2, TV3 any](namedResource []*TV2, options ...optionV2ToV3) (map[string]TV3, error) { + var res map[string]TV3 + if len(namedResource) == 0 { + return res, nil + } + keyName := "Name" + if len(options) > 0 { + keyName = options[0].keyName + } + res = make(map[string]TV3) + for _, r := range namedResource { + name, err := getKey(r, keyName) + if err != nil { + return nil, err + } + + // version change + otherversion, err := V2Tov3[TV2, TV3](r) + if err != nil { + return nil, err + } + + res[name] = *otherversion + } + return res, nil +} + +type optionV2ToV3 struct { + keyName string +} diff --git a/go.mod b/go.mod index 5c843307..ae6df3f0 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/google/go-cmp v0.6.0 github.com/google/renameio v1.0.1 github.com/google/uuid v1.6.0 + github.com/haproxytech/client-native/v5 v5.1.9 github.com/haproxytech/go-logger v1.1.0 github.com/json-iterator/go v1.1.12 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 diff --git a/go.sum b/go.sum index 3ed1ab46..db6811c5 100644 --- a/go.sum +++ b/go.sum @@ -32,6 +32,8 @@ github.com/google/renameio v1.0.1 h1:Lh/jXZmvZxb0BBeSY5VKEfidcbcbenKjZFzM/q0fSeU github.com/google/renameio v1.0.1/go.mod h1:t/HQoYBZSsWSNK35C6CO/TpPLDVWvxOHboWUAweKUpk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/haproxytech/client-native/v5 v5.1.9 h1:D+JvMsRHCewn+r+FJpzf3QUu2yHwGuV+s6IuJlajxYE= +github.com/haproxytech/client-native/v5 v5.1.9/go.mod h1:rSJ7gT0vpZqNYdZQwzttLC4doOyoTL+B68F7cDjELNQ= github.com/haproxytech/go-logger v1.1.0 h1:HgGtYaI1ApkvbQdsm7f9AzQQoxTB7w37criTflh7IQE= github.com/haproxytech/go-logger v1.1.0/go.mod h1:OekUd8HCb7ubxMplzHUPBTHNxZmddOWfOjWclZsqIeM= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= diff --git a/models/aws_region.go b/models/aws_region.go index 1a1afbac..7597cf8b 100644 --- a/models/aws_region.go +++ b/models/aws_region.go @@ -64,7 +64,7 @@ type AwsRegion struct { // Select which IPv4 address the Service Discovery has to use for the backend server entry // Required: true // Enum: ["private","public"] - // +kubebuilder:validation:Enum="private","public"; + // +kubebuilder:validation:Enum=private;public; IPV4Address *string `json:"ipv4_address"` // name @@ -92,7 +92,7 @@ type AwsRegion struct { // server slots growth type // Enum: ["linear","exponential"] - // +kubebuilder:validation:Enum="linear","exponential"; + // +kubebuilder:validation:Enum=linear;exponential; ServerSlotsGrowthType *string `json:"server_slots_growth_type,omitempty"` } diff --git a/models/backend_base.go b/models/backend_base.go index 7967aa10..b4950796 100644 --- a/models/backend_base.go +++ b/models/backend_base.go @@ -53,22 +53,22 @@ type BackendBase struct { // abortonclose // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Abortonclose string `json:"abortonclose,omitempty"` // accept invalid http response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AcceptInvalidHTTPResponse string `json:"accept_invalid_http_response,omitempty"` // adv check // Enum: ["httpchk","ldap-check","mysql-check","pgsql-check","redis-check","smtpchk","ssl-hello-chk","tcp-check"] - // +kubebuilder:validation:Enum="httpchk","ldap-check","mysql-check","pgsql-check","redis-check","smtpchk","ssl-hello-chk","tcp-check"; + // +kubebuilder:validation:Enum=httpchk;ldap-check;mysql-check;pgsql-check;redis-check;smtpchk;ssl-hello-chk;tcp-check; AdvCheck string `json:"adv_check,omitempty"` // allbackups // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Allbackups string `json:"allbackups,omitempty"` // balance @@ -79,7 +79,7 @@ type BackendBase struct { // checkcache // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Checkcache string `json:"checkcache,omitempty"` // compression @@ -121,7 +121,7 @@ type BackendBase struct { // external check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ExternalCheck string `json:"external_check,omitempty"` // external check command @@ -155,7 +155,7 @@ type BackendBase struct { // h1 case adjust bogus server // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H1CaseAdjustBogusServer string `json:"h1_case_adjust_bogus_server,omitempty"` // hash balance factor @@ -166,24 +166,24 @@ type BackendBase struct { // http buffer request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPBufferRequest string `json:"http-buffer-request,omitempty"` // http no delay // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPNoDelay string `json:"http-no-delay,omitempty"` // http use htx // Pattern: ^[^\s]+$ // Enum: ["enabled","disabled"] // +kubebuilder:validation:Pattern=`^[^\s]+$` - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPUseHtx string `json:"http-use-htx,omitempty"` // http connection mode // Enum: ["httpclose","http-server-close","http-keep-alive"] - // +kubebuilder:validation:Enum="httpclose","http-server-close","http-keep-alive"; + // +kubebuilder:validation:Enum=httpclose;http-server-close;http-keep-alive; HTTPConnectionMode string `json:"http_connection_mode,omitempty"` // http keep alive timeout @@ -193,12 +193,12 @@ type BackendBase struct { // http pretend keepalive // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPPretendKeepalive string `json:"http_pretend_keepalive,omitempty"` // http proxy // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPProxy string `json:"http_proxy,omitempty"` // http request timeout @@ -208,12 +208,12 @@ type BackendBase struct { // http restrict req hdr names // Enum: ["preserve","delete","reject"] - // +kubebuilder:validation:Enum="preserve","delete","reject"; + // +kubebuilder:validation:Enum=preserve;delete;reject; HTTPRestrictReqHdrNames string `json:"http_restrict_req_hdr_names,omitempty"` // http reuse // Enum: ["aggressive","always","never","safe"] - // +kubebuilder:validation:Enum="aggressive","always","never","safe"; + // +kubebuilder:validation:Enum=aggressive;always;never;safe; HTTPReuse string `json:"http_reuse,omitempty"` // http send name header @@ -230,17 +230,17 @@ type BackendBase struct { // independent streams // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; IndependentStreams string `json:"independent_streams,omitempty"` // load server state from file // Enum: ["global","local","none"] - // +kubebuilder:validation:Enum="global","local","none"; + // +kubebuilder:validation:Enum=global;local;none; LoadServerStateFromFile string `json:"load_server_state_from_file,omitempty"` // log health checks // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; LogHealthChecks string `json:"log_health_checks,omitempty"` // log tag @@ -253,7 +253,7 @@ type BackendBase struct { // mode // Enum: ["http","tcp","log"] - // +kubebuilder:validation:Enum="http","tcp","log"; + // +kubebuilder:validation:Enum=http;tcp;log; Mode string `json:"mode,omitempty"` // mysql check params @@ -267,7 +267,7 @@ type BackendBase struct { // nolinger // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Nolinger string `json:"nolinger,omitempty"` // originalto @@ -275,7 +275,7 @@ type BackendBase struct { // persist // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Persist string `json:"persist,omitempty"` // persist rule @@ -286,7 +286,7 @@ type BackendBase struct { // prefer last server // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; PreferLastServer string `json:"prefer_last_server,omitempty"` // queue timeout @@ -324,27 +324,27 @@ type BackendBase struct { // splice auto // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceAuto string `json:"splice_auto,omitempty"` // splice request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceRequest string `json:"splice_request,omitempty"` // splice response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceResponse string `json:"splice_response,omitempty"` // spop check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpopCheck string `json:"spop_check,omitempty"` // srvtcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Srvtcpka string `json:"srvtcpka,omitempty"` // srvtcpka cnt @@ -369,17 +369,17 @@ type BackendBase struct { // tcp smart connect // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TCPSmartConnect string `json:"tcp_smart_connect,omitempty"` // tcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Tcpka string `json:"tcpka,omitempty"` // transparent // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Transparent string `json:"transparent,omitempty"` // tunnel timeout @@ -3341,7 +3341,7 @@ type BackendForcePersist struct { // cond // Required: true // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond *string `json:"cond"` // cond test @@ -3449,7 +3449,7 @@ type ForcePersist struct { // cond // Required: true // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond *string `json:"cond"` // cond test @@ -3557,7 +3557,7 @@ type BackendIgnorePersist struct { // cond // Required: true // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond *string `json:"cond"` // cond test @@ -3665,7 +3665,7 @@ type IgnorePersist struct { // cond // Required: true // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond *string `json:"cond"` // cond test diff --git a/models/backend_switching_rule.go b/models/backend_switching_rule.go index 6cac6b47..b44a289f 100644 --- a/models/backend_switching_rule.go +++ b/models/backend_switching_rule.go @@ -39,7 +39,7 @@ import ( type BackendSwitchingRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test diff --git a/models/balance.go b/models/balance.go index f04e3f23..4387bb4c 100644 --- a/models/balance.go +++ b/models/balance.go @@ -37,7 +37,7 @@ type Balance struct { // algorithm // Required: true // Enum: ["first","hash","hdr","leastconn","random","rdp-cookie","roundrobin","source","static-rr","uri","url_param"] - // +kubebuilder:validation:Enum="first","hash","hdr","leastconn","random","rdp-cookie","roundrobin","source","static-rr","uri","url_param"; + // +kubebuilder:validation:Enum=first;hash;hdr;leastconn;random;rdp-cookie;roundrobin;source;static-rr;uri;url_param; Algorithm *string `json:"algorithm"` // hash expression diff --git a/models/bind_params.go b/models/bind_params.go index 6cc92eee..76699080 100644 --- a/models/bind_params.go +++ b/models/bind_params.go @@ -136,7 +136,7 @@ type BindParams struct { // level // Example: user // Enum: ["user","operator","admin"] - // +kubebuilder:validation:Enum="user","operator","admin"; + // +kubebuilder:validation:Enum=user;operator;admin; Level string `json:"level,omitempty"` // maxconn @@ -200,7 +200,7 @@ type BindParams struct { // quic cc algo // Enum: ["cubic","newreno"] - // +kubebuilder:validation:Enum="cubic","newreno"; + // +kubebuilder:validation:Enum=cubic;newreno; QuicCcAlgo string `json:"quic-cc-algo,omitempty"` // quic force retry @@ -208,13 +208,13 @@ type BindParams struct { // quic socket // Enum: ["connection","listener"] - // +kubebuilder:validation:Enum="connection","listener"; + // +kubebuilder:validation:Enum=connection;listener; QuicSocket string `json:"quic-socket,omitempty"` // severity output // Example: none // Enum: ["none","number","string"] - // +kubebuilder:validation:Enum="none","number","string"; + // +kubebuilder:validation:Enum=none;number;string; SeverityOutput string `json:"severity_output,omitempty"` // sigalgs @@ -235,12 +235,12 @@ type BindParams struct { // ssl max ver // Enum: ["SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"] - // +kubebuilder:validation:Enum="SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"; + // +kubebuilder:validation:Enum=SSLv3;TLSv1.0;TLSv1.1;TLSv1.2;TLSv1.3; SslMaxVer string `json:"ssl_max_ver,omitempty"` // ssl min ver // Enum: ["SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"] - // +kubebuilder:validation:Enum="SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"; + // +kubebuilder:validation:Enum=SSLv3;TLSv1.0;TLSv1.1;TLSv1.2;TLSv1.3; SslMinVer string `json:"ssl_min_ver,omitempty"` // strict sni @@ -276,7 +276,7 @@ type BindParams struct { // verify // Example: none // Enum: ["none","optional","required"] - // +kubebuilder:validation:Enum="none","optional","required"; + // +kubebuilder:validation:Enum=none;optional;required; Verify string `json:"verify,omitempty"` } diff --git a/models/capture.go b/models/capture.go index 59a2e77c..d12a8d8d 100644 --- a/models/capture.go +++ b/models/capture.go @@ -42,7 +42,7 @@ type Capture struct { // type // Required: true // Enum: ["request","response"] - // +kubebuilder:validation:Enum="request","response"; + // +kubebuilder:validation:Enum=request;response; Type string `json:"type"` } diff --git a/models/cluster_settings.go b/models/cluster_settings.go index ff1ef691..c5e7b896 100644 --- a/models/cluster_settings.go +++ b/models/cluster_settings.go @@ -46,13 +46,13 @@ type ClusterSettings struct { // mode // Enum: ["single","cluster"] - // +kubebuilder:validation:Enum="single","cluster"; + // +kubebuilder:validation:Enum=single;cluster; Mode string `json:"mode,omitempty"` // status // Read Only: true // Enum: ["active","unreachable","waiting_approval"] - // +kubebuilder:validation:Enum="active","unreachable","waiting_approval"; + // +kubebuilder:validation:Enum=active;unreachable;waiting_approval; Status string `json:"status,omitempty"` } @@ -509,7 +509,7 @@ type ClusterLogTarget struct { // protocol // Required: true // Enum: ["tcp","udp"] - // +kubebuilder:validation:Enum="tcp","udp"; + // +kubebuilder:validation:Enum=tcp;udp; Protocol *string `json:"protocol"` } diff --git a/models/compression.go b/models/compression.go index 51f18179..5655300e 100644 --- a/models/compression.go +++ b/models/compression.go @@ -37,7 +37,7 @@ import ( type Compression struct { // algo req // Enum: ["identity","gzip","deflate","raw-deflate"] - // +kubebuilder:validation:Enum="identity","gzip","deflate","raw-deflate"; + // +kubebuilder:validation:Enum=identity;gzip;deflate;raw-deflate; AlgoReq string `json:"algo-req,omitempty"` // algorithms @@ -48,7 +48,7 @@ type Compression struct { // direction // Enum: ["request","response","both"] - // +kubebuilder:validation:Enum="request","response","both"; + // +kubebuilder:validation:Enum=request;response;both; Direction string `json:"direction,omitempty"` // offload diff --git a/models/config_stick_table.go b/models/config_stick_table.go index dc756ef0..82b8f9da 100644 --- a/models/config_stick_table.go +++ b/models/config_stick_table.go @@ -57,7 +57,7 @@ type ConfigStickTable struct { // srvkey // Enum: ["addr","name"] - // +kubebuilder:validation:Enum="addr","name"; + // +kubebuilder:validation:Enum=addr;name; Srvkey *string `json:"srvkey,omitempty"` // store @@ -67,7 +67,7 @@ type ConfigStickTable struct { // type // Enum: ["ip","ipv6","integer","string","binary"] - // +kubebuilder:validation:Enum="ip","ipv6","integer","string","binary"; + // +kubebuilder:validation:Enum=ip;ipv6;integer;string;binary; Type string `json:"type,omitempty"` // write to diff --git a/models/consul.go b/models/consul.go index 9e44e265..7a79e2c6 100644 --- a/models/consul.go +++ b/models/consul.go @@ -61,7 +61,7 @@ type Consul struct { // min: a node is considered valid if the number of 'passing' checks is greater or equal to the 'health_check_policy_min' value. // If the node has less health checks configured then 'health_check_policy_min' it is considered invalid. // Enum: ["none","any","all","min"] - // +kubebuilder:validation:Enum="none","any","all","min"; + // +kubebuilder:validation:Enum=none;any;all;min; HealthCheckPolicy *string `json:"health_check_policy,omitempty"` // health check policy min @@ -74,7 +74,7 @@ type Consul struct { // mode // Enum: ["http","https"] - // +kubebuilder:validation:Enum="http","https"; + // +kubebuilder:validation:Enum=http;https; Mode *string `json:"mode,omitempty"` // name @@ -105,7 +105,7 @@ type Consul struct { // server slots growth type // Enum: ["linear","exponential"] - // +kubebuilder:validation:Enum="linear","exponential"; + // +kubebuilder:validation:Enum=linear;exponential; ServerSlotsGrowthType *string `json:"server_slots_growth_type,omitempty"` // service allowlist diff --git a/models/cookie.go b/models/cookie.go index 64a1fc6e..4f7407a3 100644 --- a/models/cookie.go +++ b/models/cookie.go @@ -77,7 +77,7 @@ type Cookie struct { // type // Enum: ["rewrite","insert","prefix"] - // +kubebuilder:validation:Enum="rewrite","insert","prefix"; + // +kubebuilder:validation:Enum=rewrite;insert;prefix; Type string `json:"type,omitempty"` } diff --git a/models/crt_load.go b/models/crt_load.go index 82c443fe..ae70f482 100644 --- a/models/crt_load.go +++ b/models/crt_load.go @@ -55,7 +55,7 @@ type CrtLoad struct { // Automatic OCSP response update // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; OcspUpdate string `json:"ocsp_update,omitempty"` // Signed Certificate Timestamp List filename diff --git a/models/defaults_base.go b/models/defaults_base.go index 14911602..ce0cb074 100644 --- a/models/defaults_base.go +++ b/models/defaults_base.go @@ -46,27 +46,27 @@ type DefaultsBase struct { // abortonclose // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Abortonclose string `json:"abortonclose,omitempty"` // accept invalid http request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AcceptInvalidHTTPRequest string `json:"accept_invalid_http_request,omitempty"` // accept invalid http response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AcceptInvalidHTTPResponse string `json:"accept_invalid_http_response,omitempty"` // adv check // Enum: ["httpchk","ldap-check","mysql-check","pgsql-check","redis-check","smtpchk","ssl-hello-chk","tcp-check"] - // +kubebuilder:validation:Enum="httpchk","ldap-check","mysql-check","pgsql-check","redis-check","smtpchk","ssl-hello-chk","tcp-check"; + // +kubebuilder:validation:Enum=httpchk;ldap-check;mysql-check;pgsql-check;redis-check;smtpchk;ssl-hello-chk;tcp-check; AdvCheck string `json:"adv_check,omitempty"` // allbackups // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Allbackups string `json:"allbackups,omitempty"` // backlog @@ -80,7 +80,7 @@ type DefaultsBase struct { // checkcache // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Checkcache string `json:"checkcache,omitempty"` // clflog @@ -98,7 +98,7 @@ type DefaultsBase struct { // clitcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Clitcpka string `json:"clitcpka,omitempty"` // clitcpka cnt @@ -120,7 +120,7 @@ type DefaultsBase struct { // contstats // Enum: ["enabled"] - // +kubebuilder:validation:Enum="enabled"; + // +kubebuilder:validation:Enum=enabled; Contstats string `json:"contstats,omitempty"` // cookie @@ -136,7 +136,7 @@ type DefaultsBase struct { // disable h2 upgrade // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; DisableH2Upgrade string `json:"disable_h2_upgrade,omitempty"` // disabled @@ -144,12 +144,12 @@ type DefaultsBase struct { // dontlog normal // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; DontlogNormal string `json:"dontlog_normal,omitempty"` // dontlognull // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Dontlognull string `json:"dontlognull,omitempty"` // dynamic cookie key @@ -174,7 +174,7 @@ type DefaultsBase struct { // external check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ExternalCheck string `json:"external_check,omitempty"` // external check command @@ -200,12 +200,12 @@ type DefaultsBase struct { // h1 case adjust bogus client // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H1CaseAdjustBogusClient string `json:"h1_case_adjust_bogus_client,omitempty"` // h1 case adjust bogus server // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H1CaseAdjustBogusServer string `json:"h1_case_adjust_bogus_server,omitempty"` // hash balance factor @@ -216,22 +216,22 @@ type DefaultsBase struct { // http buffer request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPBufferRequest string `json:"http-buffer-request,omitempty"` // http use htx // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPUseHtx string `json:"http-use-htx,omitempty"` // http connection mode // Enum: ["httpclose","http-server-close","http-keep-alive"] - // +kubebuilder:validation:Enum="httpclose","http-server-close","http-keep-alive"; + // +kubebuilder:validation:Enum=httpclose;http-server-close;http-keep-alive; HTTPConnectionMode string `json:"http_connection_mode,omitempty"` // http ignore probes // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPIgnoreProbes string `json:"http_ignore_probes,omitempty"` // http keep alive timeout @@ -241,12 +241,12 @@ type DefaultsBase struct { // http no delay // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPNoDelay string `json:"http_no_delay,omitempty"` // http pretend keepalive // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPPretendKeepalive string `json:"http_pretend_keepalive,omitempty"` // http request timeout @@ -256,12 +256,12 @@ type DefaultsBase struct { // http restrict req hdr names // Enum: ["preserve","delete","reject"] - // +kubebuilder:validation:Enum="preserve","delete","reject"; + // +kubebuilder:validation:Enum=preserve;delete;reject; HTTPRestrictReqHdrNames string `json:"http_restrict_req_hdr_names,omitempty"` // http reuse // Enum: ["aggressive","always","never","safe"] - // +kubebuilder:validation:Enum="aggressive","always","never","safe"; + // +kubebuilder:validation:Enum=aggressive;always;never;safe; HTTPReuse string `json:"http_reuse,omitempty"` // http send name header @@ -269,7 +269,7 @@ type DefaultsBase struct { // http use proxy header // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPUseProxyHeader string `json:"http_use_proxy_header,omitempty"` // httpchk params @@ -280,22 +280,22 @@ type DefaultsBase struct { // httpslog // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Httpslog string `json:"httpslog,omitempty"` // idle close on response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; IdleCloseOnResponse string `json:"idle_close_on_response,omitempty"` // independent streams // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; IndependentStreams string `json:"independent_streams,omitempty"` // load server state from file // Enum: ["global","local","none"] - // +kubebuilder:validation:Enum="global","local","none"; + // +kubebuilder:validation:Enum=global;local;none; LoadServerStateFromFile string `json:"load_server_state_from_file,omitempty"` // log format @@ -306,12 +306,12 @@ type DefaultsBase struct { // log health checks // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; LogHealthChecks string `json:"log_health_checks,omitempty"` // log separate errors // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; LogSeparateErrors string `json:"log_separate_errors,omitempty"` // log tag @@ -321,7 +321,7 @@ type DefaultsBase struct { // logasap // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Logasap string `json:"logasap,omitempty"` // max keep alive queue @@ -332,7 +332,7 @@ type DefaultsBase struct { // mode // Enum: ["tcp","http","log"] - // +kubebuilder:validation:Enum="tcp","http","log"; + // +kubebuilder:validation:Enum=tcp;http;log; Mode string `json:"mode,omitempty"` // monitor uri @@ -348,7 +348,7 @@ type DefaultsBase struct { // nolinger // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Nolinger string `json:"nolinger,omitempty"` // originalto @@ -356,7 +356,7 @@ type DefaultsBase struct { // persist // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Persist string `json:"persist,omitempty"` // persist rule @@ -367,7 +367,7 @@ type DefaultsBase struct { // prefer last server // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; PreferLastServer string `json:"prefer_last_server,omitempty"` // queue timeout @@ -399,7 +399,7 @@ type DefaultsBase struct { // socket stats // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SocketStats string `json:"socket_stats,omitempty"` // source @@ -407,22 +407,22 @@ type DefaultsBase struct { // splice auto // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceAuto string `json:"splice_auto,omitempty"` // splice request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceRequest string `json:"splice_request,omitempty"` // splice response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceResponse string `json:"splice_response,omitempty"` // srvtcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Srvtcpka string `json:"srvtcpka,omitempty"` // srvtcpka cnt @@ -444,17 +444,17 @@ type DefaultsBase struct { // tcp smart accept // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TCPSmartAccept string `json:"tcp_smart_accept,omitempty"` // tcp smart connect // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TCPSmartConnect string `json:"tcp_smart_connect,omitempty"` // tcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Tcpka string `json:"tcpka,omitempty"` // tcplog @@ -462,7 +462,7 @@ type DefaultsBase struct { // transparent // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Transparent string `json:"transparent,omitempty"` // tunnel timeout diff --git a/models/email_alert.go b/models/email_alert.go index ff6a3c3d..ff064171 100644 --- a/models/email_alert.go +++ b/models/email_alert.go @@ -44,7 +44,7 @@ type EmailAlert struct { // level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug; Level string `json:"level,omitempty"` // mailers diff --git a/models/errorfile.go b/models/errorfile.go index 5d9d2d76..24840562 100644 --- a/models/errorfile.go +++ b/models/errorfile.go @@ -36,7 +36,7 @@ import ( type Errorfile struct { // code // Enum: [200,400,401,403,404,405,407,408,410,413,425,429,500,501,502,503,504] - // +kubebuilder:validation:Enum=200,400,401,403,404,405,407,408,410,413,425,429,500,501,502,503,504; + // +kubebuilder:validation:Enum=200;400;401;403;404;405;407;408;410;413;425;429;500;501;502;503;504; Code int64 `json:"code,omitempty"` // file diff --git a/models/errorloc.go b/models/errorloc.go index c6cb69ad..62df9587 100644 --- a/models/errorloc.go +++ b/models/errorloc.go @@ -37,7 +37,7 @@ type Errorloc struct { // code // Required: true // Enum: [200,400,401,403,404,405,407,408,410,413,425,429,500,501,502,503,504] - // +kubebuilder:validation:Enum=200,400,401,403,404,405,407,408,410,413,425,429,500,501,502,503,504; + // +kubebuilder:validation:Enum=200;400;401;403;404;405;407;408;410;413;425;429;500;501;502;503;504; Code *int64 `json:"code"` // url diff --git a/models/fcgi_app_base.go b/models/fcgi_app_base.go index bb2167bb..bc6b4efe 100644 --- a/models/fcgi_app_base.go +++ b/models/fcgi_app_base.go @@ -44,7 +44,7 @@ type FCGIAppBase struct { // Enables or disables the retrieval of variables related to connection management. // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; GetValues string `json:"get_values,omitempty"` // Defines the script name to append after a URI that ends with a slash ("/") to set the default value for the FastCGI parameter SCRIPT_NAME. It is an optional setting. @@ -52,7 +52,7 @@ type FCGIAppBase struct { // Tells the FastCGI application whether or not to keep the connection open after it sends a response. If disabled, the FastCGI application closes the connection after responding to this request. // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; KeepConn string `json:"keep_conn,omitempty"` // log stderrs @@ -65,7 +65,7 @@ type FCGIAppBase struct { // Enables or disables the support of connection multiplexing. If the FastCGI application retrieves the variable FCGI_MPXS_CONNS during connection establishment, it can override this option. // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; MpxsConns string `json:"mpxs_conns,omitempty"` // Declares a FastCGI application diff --git a/models/fcgi_pass_header.go b/models/fcgi_pass_header.go index bd26b180..109d5dd1 100644 --- a/models/fcgi_pass_header.go +++ b/models/fcgi_pass_header.go @@ -41,7 +41,7 @@ import ( type FCGIPassHeader struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test diff --git a/models/fcgi_set_param.go b/models/fcgi_set_param.go index faa9f720..253076fc 100644 --- a/models/fcgi_set_param.go +++ b/models/fcgi_set_param.go @@ -38,7 +38,7 @@ import ( type FCGISetParam struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test diff --git a/models/filter.go b/models/filter.go index b8b136fb..80023498 100644 --- a/models/filter.go +++ b/models/filter.go @@ -108,7 +108,7 @@ type Filter struct { // type // Required: true // Enum: ["bwlim-in","bwlim-out","cache","compression","fcgi-app","spoe","trace"] - // +kubebuilder:validation:Enum="bwlim-in","bwlim-out","cache","compression","fcgi-app","spoe","trace"; + // +kubebuilder:validation:Enum=bwlim-in;bwlim-out;cache;compression;fcgi-app;spoe;trace; Type string `json:"type"` } diff --git a/models/forwardfor.go b/models/forwardfor.go index f775fef9..68da0124 100644 --- a/models/forwardfor.go +++ b/models/forwardfor.go @@ -37,7 +37,7 @@ type Forwardfor struct { // enabled // Required: true // Enum: ["enabled"] - // +kubebuilder:validation:Enum="enabled"; + // +kubebuilder:validation:Enum=enabled; Enabled *string `json:"enabled"` // except diff --git a/models/frontend_base.go b/models/frontend_base.go index 364d88d3..3e05a596 100644 --- a/models/frontend_base.go +++ b/models/frontend_base.go @@ -47,7 +47,7 @@ type FrontendBase struct { // accept invalid http request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AcceptInvalidHTTPRequest string `json:"accept_invalid_http_request,omitempty"` // backlog @@ -68,7 +68,7 @@ type FrontendBase struct { // clitcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Clitcpka string `json:"clitcpka,omitempty"` // clitcpka cnt @@ -85,7 +85,7 @@ type FrontendBase struct { // contstats // Enum: ["enabled"] - // +kubebuilder:validation:Enum="enabled"; + // +kubebuilder:validation:Enum=enabled; Contstats string `json:"contstats,omitempty"` // default backend @@ -98,7 +98,7 @@ type FrontendBase struct { // disable h2 upgrade // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; DisableH2Upgrade string `json:"disable_h2_upgrade,omitempty"` // disabled @@ -106,12 +106,12 @@ type FrontendBase struct { // dontlog normal // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; DontlogNormal string `json:"dontlog_normal,omitempty"` // dontlognull // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Dontlognull string `json:"dontlognull,omitempty"` // email alert @@ -144,27 +144,27 @@ type FrontendBase struct { // h1 case adjust bogus client // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H1CaseAdjustBogusClient string `json:"h1_case_adjust_bogus_client,omitempty"` // http buffer request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPBufferRequest string `json:"http-buffer-request,omitempty"` // http use htx // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPUseHtx string `json:"http-use-htx,omitempty"` // http connection mode // Enum: ["httpclose","http-server-close","http-keep-alive"] - // +kubebuilder:validation:Enum="httpclose","http-server-close","http-keep-alive"; + // +kubebuilder:validation:Enum=httpclose;http-server-close;http-keep-alive; HTTPConnectionMode string `json:"http_connection_mode,omitempty"` // http ignore probes // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPIgnoreProbes string `json:"http_ignore_probes,omitempty"` // http keep alive timeout @@ -174,7 +174,7 @@ type FrontendBase struct { // http no delay // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPNoDelay string `json:"http_no_delay,omitempty"` // http request timeout @@ -184,12 +184,12 @@ type FrontendBase struct { // http restrict req hdr names // Enum: ["preserve","delete","reject"] - // +kubebuilder:validation:Enum="preserve","delete","reject"; + // +kubebuilder:validation:Enum=preserve;delete;reject; HTTPRestrictReqHdrNames string `json:"http_restrict_req_hdr_names,omitempty"` // http use proxy header // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; HTTPUseProxyHeader string `json:"http_use_proxy_header,omitempty"` // httplog @@ -197,7 +197,7 @@ type FrontendBase struct { // httpslog // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Httpslog string `json:"httpslog,omitempty"` // id @@ -205,12 +205,12 @@ type FrontendBase struct { // idle close on response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; IdleCloseOnResponse string `json:"idle_close_on_response,omitempty"` // independent streams // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; IndependentStreams string `json:"independent_streams,omitempty"` // log format @@ -221,7 +221,7 @@ type FrontendBase struct { // log separate errors // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; LogSeparateErrors string `json:"log_separate_errors,omitempty"` // log tag @@ -231,7 +231,7 @@ type FrontendBase struct { // logasap // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Logasap string `json:"logasap,omitempty"` // maxconn @@ -239,7 +239,7 @@ type FrontendBase struct { // mode // Enum: ["http","tcp"] - // +kubebuilder:validation:Enum="http","tcp"; + // +kubebuilder:validation:Enum=http;tcp; Mode string `json:"mode,omitempty"` // monitor fail @@ -256,7 +256,7 @@ type FrontendBase struct { // nolinger // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Nolinger string `json:"nolinger,omitempty"` // originalto @@ -264,22 +264,22 @@ type FrontendBase struct { // socket stats // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SocketStats string `json:"socket_stats,omitempty"` // splice auto // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceAuto string `json:"splice_auto,omitempty"` // splice request // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceRequest string `json:"splice_request,omitempty"` // splice response // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SpliceResponse string `json:"splice_response,omitempty"` // stats options @@ -295,12 +295,12 @@ type FrontendBase struct { // tcp smart accept // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TCPSmartAccept string `json:"tcp_smart_accept,omitempty"` // tcpka // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Tcpka string `json:"tcpka,omitempty"` // tcplog diff --git a/models/global_base.go b/models/global_base.go index a134165b..aa5ea180 100644 --- a/models/global_base.go +++ b/models/global_base.go @@ -177,7 +177,7 @@ type GlobalBase struct { // numa cpu mapping // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NumaCPUMapping string `json:"numa_cpu_mapping,omitempty"` // ocsp update options @@ -2020,7 +2020,7 @@ type GlobalDefaultPath struct { // type // Required: true // Enum: ["current","config","parent","origin"] - // +kubebuilder:validation:Enum="current","config","parent","origin"; + // +kubebuilder:validation:Enum=current;config;parent;origin; Type string `json:"type"` } @@ -2300,12 +2300,12 @@ func (m *GlobalHarden) UnmarshalBinary(b []byte) error { type GlobalHardenRejectPrivilegedPorts struct { // quic // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Quic string `json:"quic,omitempty"` // tcp // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TCP string `json:"tcp,omitempty"` } @@ -2441,7 +2441,7 @@ type GlobalLogSendHostname struct { // enabled // Required: true // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Enabled *string `json:"enabled"` // param diff --git a/models/hash_type.go b/models/hash_type.go index 58ad8a63..947cb6ec 100644 --- a/models/hash_type.go +++ b/models/hash_type.go @@ -36,17 +36,17 @@ import ( type HashType struct { // function // Enum: ["sdbm","djb2","wt6","crc32","none"] - // +kubebuilder:validation:Enum="sdbm","djb2","wt6","crc32","none"; + // +kubebuilder:validation:Enum=sdbm;djb2;wt6;crc32;none; Function string `json:"function,omitempty"` // method // Enum: ["map-based","consistent"] - // +kubebuilder:validation:Enum="map-based","consistent"; + // +kubebuilder:validation:Enum=map-based;consistent; Method string `json:"method,omitempty"` // modifier // Enum: ["avalanche"] - // +kubebuilder:validation:Enum="avalanche"; + // +kubebuilder:validation:Enum=avalanche; Modifier string `json:"modifier,omitempty"` } diff --git a/models/health.go b/models/health.go index 51079cb5..5ed0fd62 100644 --- a/models/health.go +++ b/models/health.go @@ -36,7 +36,7 @@ import ( type Health struct { // haproxy // Enum: ["up","down","unknown"] - // +kubebuilder:validation:Enum="up","down","unknown"; + // +kubebuilder:validation:Enum=up;down;unknown; Haproxy string `json:"haproxy,omitempty"` } diff --git a/models/http_after_response_rule.go b/models/http_after_response_rule.go index 7ddf6141..dd1495f3 100644 --- a/models/http_after_response_rule.go +++ b/models/http_after_response_rule.go @@ -60,7 +60,7 @@ type HTTPAfterResponseRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -80,7 +80,7 @@ type HTTPAfterResponseRule struct { // log level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug","silent"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug","silent"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug;silent; LogLevel string `json:"log_level,omitempty"` // map file @@ -122,13 +122,13 @@ type HTTPAfterResponseRule struct { // strict mode // Enum: ["on","off"] - // +kubebuilder:validation:Enum="on","off"; + // +kubebuilder:validation:Enum=on;off; StrictMode string `json:"strict_mode,omitempty"` // type // Required: true // Enum: ["add-header","allow","capture","del-acl","del-header","del-map","replace-header","replace-value","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","set-header","set-log-level","set-map","set-status","set-var","set-var-fmt","strict-mode","unset-var"] - // +kubebuilder:validation:Enum="add-header","allow","capture","del-acl","del-header","del-map","replace-header","replace-value","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","set-header","set-log-level","set-map","set-status","set-var","set-var-fmt","strict-mode","unset-var"; + // +kubebuilder:validation:Enum=add-header;allow;capture;del-acl;del-header;del-map;replace-header;replace-value;sc-add-gpc;sc-inc-gpc;sc-inc-gpc0;sc-inc-gpc1;sc-set-gpt;sc-set-gpt0;set-header;set-log-level;set-map;set-status;set-var;set-var-fmt;strict-mode;unset-var; Type string `json:"type"` // var expr diff --git a/models/http_check.go b/models/http_check.go index 68077890..50128b23 100644 --- a/models/http_check.go +++ b/models/http_check.go @@ -63,7 +63,7 @@ type HTTPCheck struct { // error status // Enum: ["L7OKC","L7RSP","L7STS","L6RSP","L4CON"] - // +kubebuilder:validation:Enum="L7OKC","L7RSP","L7STS","L6RSP","L4CON"; + // +kubebuilder:validation:Enum=L7OKC;L7RSP;L7STS;L6RSP;L4CON; ErrorStatus string `json:"error_status,omitempty"` // exclamation mark @@ -76,12 +76,12 @@ type HTTPCheck struct { // Pattern: ^[^\s]+$ // Enum: ["status","rstatus","hdr","fhdr","string","rstring"] // +kubebuilder:validation:Pattern=`^[^\s]+$` - // +kubebuilder:validation:Enum="status","rstatus","hdr","fhdr","string","rstring"; + // +kubebuilder:validation:Enum=status;rstatus;hdr;fhdr;string;rstring; Match string `json:"match,omitempty"` // method // Enum: ["HEAD","PUT","POST","GET","TRACE","PATCH","DELETE","CONNECT","OPTIONS"] - // +kubebuilder:validation:Enum="HEAD","PUT","POST","GET","TRACE","PATCH","DELETE","CONNECT","OPTIONS"; + // +kubebuilder:validation:Enum=HEAD;PUT;POST;GET;TRACE;PATCH;DELETE;CONNECT;OPTIONS; Method string `json:"method,omitempty"` // min recv @@ -89,7 +89,7 @@ type HTTPCheck struct { // ok status // Enum: ["L7OK","L7OKC","L6OK","L4OK"] - // +kubebuilder:validation:Enum="L7OK","L7OKC","L6OK","L4OK"; + // +kubebuilder:validation:Enum=L7OK;L7OKC;L6OK;L4OK; OkStatus string `json:"ok_status,omitempty"` // on error @@ -128,13 +128,13 @@ type HTTPCheck struct { // tout status // Enum: ["L7TOUT","L6TOUT","L4TOUT"] - // +kubebuilder:validation:Enum="L7TOUT","L6TOUT","L4TOUT"; + // +kubebuilder:validation:Enum=L7TOUT;L6TOUT;L4TOUT; ToutStatus string `json:"tout_status,omitempty"` // type // Required: true // Enum: ["comment","connect","disable-on-404","expect","send","send-state","set-var","set-var-fmt","unset-var"] - // +kubebuilder:validation:Enum="comment","connect","disable-on-404","expect","send","send-state","set-var","set-var-fmt","unset-var"; + // +kubebuilder:validation:Enum=comment;connect;disable-on-404;expect;send;send-state;set-var;set-var-fmt;unset-var; Type string `json:"type"` // uri diff --git a/models/http_client_options.go b/models/http_client_options.go index 86a96bb0..99c00bd3 100644 --- a/models/http_client_options.go +++ b/models/http_client_options.go @@ -36,7 +36,7 @@ import ( type HTTPClientOptions struct { // resolvers disabled // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ResolversDisabled string `json:"resolvers_disabled,omitempty"` // resolvers id @@ -44,7 +44,7 @@ type HTTPClientOptions struct { // resolvers prefer // Enum: ["ipv4","ipv6"] - // +kubebuilder:validation:Enum="ipv4","ipv6"; + // +kubebuilder:validation:Enum=ipv4;ipv6; ResolversPrefer string `json:"resolvers_prefer,omitempty"` // retries @@ -55,7 +55,7 @@ type HTTPClientOptions struct { // ssl verify // Enum: ["","none","required"] - // +kubebuilder:validation:Enum="","none","required"; + // +kubebuilder:validation:Enum="";none;required; SslVerify *string `json:"ssl_verify,omitempty"` // timeout connect diff --git a/models/http_error_rule.go b/models/http_error_rule.go index c8107a4b..c424ff13 100644 --- a/models/http_error_rule.go +++ b/models/http_error_rule.go @@ -47,7 +47,7 @@ type HTTPErrorRule struct { // return content format // Enum: ["default-errorfiles","errorfile","errorfiles","file","lf-file","string","lf-string"] - // +kubebuilder:validation:Enum="default-errorfiles","errorfile","errorfiles","file","lf-file","string","lf-string"; + // +kubebuilder:validation:Enum=default-errorfiles;errorfile;errorfiles;file;lf-file;string;lf-string; ReturnContentFormat string `json:"return_content_format,omitempty"` // return content type @@ -56,13 +56,13 @@ type HTTPErrorRule struct { // status // Required: true // Enum: [200,400,401,403,404,405,407,408,410,413,425,429,500,501,502,503,504] - // +kubebuilder:validation:Enum=200,400,401,403,404,405,407,408,410,413,425,429,500,501,502,503,504; + // +kubebuilder:validation:Enum=200;400;401;403;404;405;407;408;410;413;425;429;500;501;502;503;504; Status int64 `json:"status"` // type // Required: true // Enum: ["status"] - // +kubebuilder:validation:Enum="status"; + // +kubebuilder:validation:Enum=status; Type string `json:"type"` } diff --git a/models/http_request_rule.go b/models/http_request_rule.go index f7ce1f68..6aa76b56 100644 --- a/models/http_request_rule.go +++ b/models/http_request_rule.go @@ -84,7 +84,7 @@ type HTTPRequestRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -124,7 +124,7 @@ type HTTPRequestRule struct { // log level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug","silent"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug","silent"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug;silent; LogLevel string `json:"log_level,omitempty"` // lua action @@ -169,7 +169,7 @@ type HTTPRequestRule struct { // normalizer // Enum: ["fragment-encode","fragment-strip","path-merge-slashes","path-strip-dot","path-strip-dotdot","percent-decode-unreserved","percent-to-uppercase","query-sort-by-name"] - // +kubebuilder:validation:Enum="fragment-encode","fragment-strip","path-merge-slashes","path-strip-dot","path-strip-dotdot","percent-decode-unreserved","percent-to-uppercase","query-sort-by-name"; + // +kubebuilder:validation:Enum=fragment-encode;fragment-strip;path-merge-slashes;path-strip-dot;path-strip-dotdot;percent-decode-unreserved;percent-to-uppercase;query-sort-by-name; Normalizer string `json:"normalizer,omitempty"` // normalizer full @@ -190,7 +190,7 @@ type HTTPRequestRule struct { // protocol // Enum: ["ipv4","ipv6"] - // +kubebuilder:validation:Enum="ipv4","ipv6"; + // +kubebuilder:validation:Enum=ipv4;ipv6; Protocol string `json:"protocol,omitempty"` // query fmt @@ -198,7 +198,7 @@ type HTTPRequestRule struct { // redir code // Enum: [301,302,303,307,308] - // +kubebuilder:validation:Enum=301,302,303,307,308; + // +kubebuilder:validation:Enum=301;302;303;307;308; RedirCode *int64 `json:"redir_code,omitempty"` // redir option @@ -206,7 +206,7 @@ type HTTPRequestRule struct { // redir type // Enum: ["location","prefix","scheme"] - // +kubebuilder:validation:Enum="location","prefix","scheme"; + // +kubebuilder:validation:Enum=location;prefix;scheme; RedirType string `json:"redir_type,omitempty"` // redir value @@ -222,7 +222,7 @@ type HTTPRequestRule struct { // return content format // Enum: ["default-errorfiles","errorfile","errorfiles","file","lf-file","string","lf-string"] - // +kubebuilder:validation:Enum="default-errorfiles","errorfile","errorfiles","file","lf-file","string","lf-string"; + // +kubebuilder:validation:Enum=default-errorfiles;errorfile;errorfiles;file;lf-file;string;lf-string; ReturnContentFormat string `json:"return_content_format,omitempty"` // return content type @@ -265,7 +265,7 @@ type HTTPRequestRule struct { // strict mode // Enum: ["on","off"] - // +kubebuilder:validation:Enum="on","off"; + // +kubebuilder:validation:Enum=on;off; StrictMode string `json:"strict_mode,omitempty"` // timeout @@ -273,7 +273,7 @@ type HTTPRequestRule struct { // timeout type // Enum: ["server","tunnel","client"] - // +kubebuilder:validation:Enum="server","tunnel","client"; + // +kubebuilder:validation:Enum=server;tunnel;client; TimeoutType string `json:"timeout_type,omitempty"` // tos value @@ -297,7 +297,7 @@ type HTTPRequestRule struct { // type // Required: true // Enum: ["add-acl","add-header","allow","auth","cache-use","capture","del-acl","del-header","del-map","deny","disable-l7-retry","do-resolve","early-hint","lua","normalize-uri","redirect","reject","replace-header","replace-path","replace-pathq","replace-uri","replace-value","return","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-bc-mark","set-bc-tos","set-dst","set-dst-port","set-fc-mark","set-fc-tos","set-header","set-log-level","set-map","set-mark","set-method","set-nice","set-path","set-pathq","set-priority-class","set-priority-offset","set-query","set-src","set-src-port","set-timeout","set-tos","set-uri","set-var","silent-drop","strict-mode","tarpit","track-sc","unset-var","use-service","wait-for-body","wait-for-handshake","set-bandwidth-limit"] - // +kubebuilder:validation:Enum="add-acl","add-header","allow","auth","cache-use","capture","del-acl","del-header","del-map","deny","disable-l7-retry","do-resolve","early-hint","lua","normalize-uri","redirect","reject","replace-header","replace-path","replace-pathq","replace-uri","replace-value","return","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-bc-mark","set-bc-tos","set-dst","set-dst-port","set-fc-mark","set-fc-tos","set-header","set-log-level","set-map","set-mark","set-method","set-nice","set-path","set-pathq","set-priority-class","set-priority-offset","set-query","set-src","set-src-port","set-timeout","set-tos","set-uri","set-var","silent-drop","strict-mode","tarpit","track-sc","unset-var","use-service","wait-for-body","wait-for-handshake","set-bandwidth-limit"; + // +kubebuilder:validation:Enum=add-acl;add-header;allow;auth;cache-use;capture;del-acl;del-header;del-map;deny;disable-l7-retry;do-resolve;early-hint;lua;normalize-uri;redirect;reject;replace-header;replace-path;replace-pathq;replace-uri;replace-value;return;sc-add-gpc;sc-inc-gpc;sc-inc-gpc0;sc-inc-gpc1;sc-set-gpt;sc-set-gpt0;send-spoe-group;set-bc-mark;set-bc-tos;set-dst;set-dst-port;set-fc-mark;set-fc-tos;set-header;set-log-level;set-map;set-mark;set-method;set-nice;set-path;set-pathq;set-priority-class;set-priority-offset;set-query;set-src;set-src-port;set-timeout;set-tos;set-uri;set-var;silent-drop;strict-mode;tarpit;track-sc;unset-var;use-service;wait-for-body;wait-for-handshake;set-bandwidth-limit; Type string `json:"type"` // uri fmt diff --git a/models/http_response_rule.go b/models/http_response_rule.go index 89119b2e..4deccd57 100644 --- a/models/http_response_rule.go +++ b/models/http_response_rule.go @@ -76,7 +76,7 @@ type HTTPResponseRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -106,7 +106,7 @@ type HTTPResponseRule struct { // log level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug","silent"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug","silent"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug;silent; LogLevel string `json:"log_level,omitempty"` // lua action @@ -146,7 +146,7 @@ type HTTPResponseRule struct { // redir code // Enum: [301,302,303,307,308] - // +kubebuilder:validation:Enum=301,302,303,307,308; + // +kubebuilder:validation:Enum=301;302;303;307;308; RedirCode *int64 `json:"redir_code,omitempty"` // redir option @@ -154,7 +154,7 @@ type HTTPResponseRule struct { // redir type // Enum: ["location","prefix","scheme"] - // +kubebuilder:validation:Enum="location","prefix","scheme"; + // +kubebuilder:validation:Enum=location;prefix;scheme; RedirType string `json:"redir_type,omitempty"` // redir value @@ -167,7 +167,7 @@ type HTTPResponseRule struct { // return content format // Enum: ["default-errorfiles","errorfile","errorfiles","file","lf-file","string","lf-string"] - // +kubebuilder:validation:Enum="default-errorfiles","errorfile","errorfiles","file","lf-file","string","lf-string"; + // +kubebuilder:validation:Enum=default-errorfiles;errorfile;errorfiles;file;lf-file;string;lf-string; ReturnContentFormat string `json:"return_content_format,omitempty"` // return content type @@ -217,7 +217,7 @@ type HTTPResponseRule struct { // strict mode // Enum: ["on","off"] - // +kubebuilder:validation:Enum="on","off"; + // +kubebuilder:validation:Enum=on;off; StrictMode string `json:"strict_mode,omitempty"` // timeout @@ -225,7 +225,7 @@ type HTTPResponseRule struct { // timeout type // Enum: ["server","tunnel","client"] - // +kubebuilder:validation:Enum="server","tunnel","client"; + // +kubebuilder:validation:Enum=server;tunnel;client; TimeoutType string `json:"timeout_type,omitempty"` // tos value @@ -249,7 +249,7 @@ type HTTPResponseRule struct { // type // Required: true // Enum: ["add-acl","add-header","allow","cache-store","capture","del-acl","del-header","del-map","deny","lua","redirect","replace-header","replace-value","return","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-fc-mark","set-fc-tos","set-header","set-log-level","set-map","set-mark","set-nice","set-status","set-timeout","set-tos","set-var","set-var-fmt","silent-drop","strict-mode","track-sc","unset-var","wait-for-body","set-bandwidth-limit"] - // +kubebuilder:validation:Enum="add-acl","add-header","allow","cache-store","capture","del-acl","del-header","del-map","deny","lua","redirect","replace-header","replace-value","return","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-fc-mark","set-fc-tos","set-header","set-log-level","set-map","set-mark","set-nice","set-status","set-timeout","set-tos","set-var","set-var-fmt","silent-drop","strict-mode","track-sc","unset-var","wait-for-body","set-bandwidth-limit"; + // +kubebuilder:validation:Enum=add-acl;add-header;allow;cache-store;capture;del-acl;del-header;del-map;deny;lua;redirect;replace-header;replace-value;return;sc-add-gpc;sc-inc-gpc;sc-inc-gpc0;sc-inc-gpc1;sc-set-gpt;sc-set-gpt0;send-spoe-group;set-fc-mark;set-fc-tos;set-header;set-log-level;set-map;set-mark;set-nice;set-status;set-timeout;set-tos;set-var;set-var-fmt;silent-drop;strict-mode;track-sc;unset-var;wait-for-body;set-bandwidth-limit; Type string `json:"type"` // var expr diff --git a/models/httpchk_params.go b/models/httpchk_params.go index 4499f0cc..724da90a 100644 --- a/models/httpchk_params.go +++ b/models/httpchk_params.go @@ -36,7 +36,7 @@ import ( type HttpchkParams struct { // method // Enum: ["HEAD","PUT","POST","GET","TRACE","PATCH","DELETE","CONNECT","OPTIONS"] - // +kubebuilder:validation:Enum="HEAD","PUT","POST","GET","TRACE","PATCH","DELETE","CONNECT","OPTIONS"; + // +kubebuilder:validation:Enum=HEAD;PUT;POST;GET;TRACE;PATCH;DELETE;CONNECT;OPTIONS; Method string `json:"method,omitempty"` // uri diff --git a/models/log_target.go b/models/log_target.go index 6ea44583..e962a04b 100644 --- a/models/log_target.go +++ b/models/log_target.go @@ -43,12 +43,12 @@ type LogTarget struct { // facility // Enum: ["kern","user","mail","daemon","auth","syslog","lpr","news","uucp","cron","auth2","ftp","ntp","audit","alert","cron2","local0","local1","local2","local3","local4","local5","local6","local7"] - // +kubebuilder:validation:Enum="kern","user","mail","daemon","auth","syslog","lpr","news","uucp","cron","auth2","ftp","ntp","audit","alert","cron2","local0","local1","local2","local3","local4","local5","local6","local7"; + // +kubebuilder:validation:Enum=kern;user;mail;daemon;auth;syslog;lpr;news;uucp;cron;auth2;ftp;ntp;audit;alert;cron2;local0;local1;local2;local3;local4;local5;local6;local7; Facility string `json:"facility,omitempty"` // format // Enum: ["local","rfc3164","rfc5424","priority","short","timed","iso","raw"] - // +kubebuilder:validation:Enum="local","rfc3164","rfc5424","priority","short","timed","iso","raw"; + // +kubebuilder:validation:Enum=local;rfc3164;rfc5424;priority;short;timed;iso;raw; Format string `json:"format,omitempty"` // global @@ -59,12 +59,12 @@ type LogTarget struct { // level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug; Level string `json:"level,omitempty"` // minlevel // Enum: ["emerg","alert","crit","err","warning","notice","info","debug"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug; Minlevel string `json:"minlevel,omitempty"` // nolog diff --git a/models/lua_options.go b/models/lua_options.go index bf92ec8f..507b1e78 100644 --- a/models/lua_options.go +++ b/models/lua_options.go @@ -275,7 +275,7 @@ type LuaPrependPath struct { // type // Enum: ["path","cpath"] - // +kubebuilder:validation:Enum="path","cpath"; + // +kubebuilder:validation:Enum=path;cpath; Type string `json:"type,omitempty"` } diff --git a/models/monitor_fail.go b/models/monitor_fail.go index fd52bb18..bb03845c 100644 --- a/models/monitor_fail.go +++ b/models/monitor_fail.go @@ -37,7 +37,7 @@ type MonitorFail struct { // cond // Required: true // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond *string `json:"cond"` // cond test diff --git a/models/mysql_check_params.go b/models/mysql_check_params.go index 13c6e1e2..64984b46 100644 --- a/models/mysql_check_params.go +++ b/models/mysql_check_params.go @@ -36,7 +36,7 @@ import ( type MysqlCheckParams struct { // client version // Enum: ["pre-41","post-41"] - // +kubebuilder:validation:Enum="pre-41","post-41"; + // +kubebuilder:validation:Enum=pre-41;post-41; ClientVersion string `json:"client_version,omitempty"` // username diff --git a/models/native_stat.go b/models/native_stat.go index fb117f1f..bc86212e 100644 --- a/models/native_stat.go +++ b/models/native_stat.go @@ -48,7 +48,7 @@ type NativeStat struct { // type // Enum: ["backend","server","frontend"] - // +kubebuilder:validation:Enum="backend","server","frontend"; + // +kubebuilder:validation:Enum=backend;server;frontend; Type string `json:"type,omitempty"` } diff --git a/models/native_stat_stats.go b/models/native_stat_stats.go index 1464e86a..f22bd4ee 100644 --- a/models/native_stat_stats.go +++ b/models/native_stat_stats.go @@ -62,7 +62,7 @@ type NativeStatStats struct { // agent status // Enum: ["UNK","INI","SOCKERR","L4OK","L4TOUT","L4CON","L7OK","L7STS"] - // +kubebuilder:validation:Enum="UNK","INI","SOCKERR","L4OK","L4TOUT","L4CON","L7OK","L7STS"; + // +kubebuilder:validation:Enum=UNK;INI;SOCKERR;L4OK;L4TOUT;L4CON;L7OK;L7STS; AgentStatus string `json:"agent_status,omitempty"` // algo @@ -97,7 +97,7 @@ type NativeStatStats struct { // check status // Enum: ["UNK","INI","SOCKERR","L4OK","L4TOUT","L4CON","L6OK","L6TOUT","L6RSP","L7OK","L7OKC","L7TOUT","L7RSP","L7STS"] - // +kubebuilder:validation:Enum="UNK","INI","SOCKERR","L4OK","L4TOUT","L4CON","L6OK","L6TOUT","L6RSP","L7OK","L7OKC","L7TOUT","L7RSP","L7STS"; + // +kubebuilder:validation:Enum=UNK;INI;SOCKERR;L4OK;L4TOUT;L4CON;L6OK;L6TOUT;L6RSP;L7OK;L7OKC;L7TOUT;L7RSP;L7STS; CheckStatus string `json:"check_status,omitempty"` // chkdown @@ -204,7 +204,7 @@ type NativeStatStats struct { // mode // Enum: ["tcp","http","health","unknown"] - // +kubebuilder:validation:Enum="tcp","http","health","unknown"; + // +kubebuilder:validation:Enum=tcp;http;health;unknown; Mode string `json:"mode,omitempty"` // pid @@ -260,7 +260,7 @@ type NativeStatStats struct { // status // Enum: ["UP","DOWN","NOLB","MAINT","no check"] - // +kubebuilder:validation:Enum="UP","DOWN","NOLB","MAINT","no;check"; + // +kubebuilder:validation:Enum=UP;DOWN;NOLB;MAINT;no check; Status string `json:"status,omitempty"` // stot diff --git a/models/ocsp_update_options.go b/models/ocsp_update_options.go index 89196e57..0a8645a2 100644 --- a/models/ocsp_update_options.go +++ b/models/ocsp_update_options.go @@ -49,7 +49,7 @@ type OcspUpdateOptions struct { // mode // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Mode string `json:"mode,omitempty"` } diff --git a/models/originalto.go b/models/originalto.go index 3339abcd..739d5945 100644 --- a/models/originalto.go +++ b/models/originalto.go @@ -37,7 +37,7 @@ type Originalto struct { // enabled // Required: true // Enum: ["enabled"] - // +kubebuilder:validation:Enum="enabled"; + // +kubebuilder:validation:Enum=enabled; Enabled *string `json:"enabled"` // except diff --git a/models/performance_options.go b/models/performance_options.go index c10960f0..b381d15a 100644 --- a/models/performance_options.go +++ b/models/performance_options.go @@ -87,12 +87,12 @@ type PerformanceOptions struct { // profiling memory // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ProfilingMemory string `json:"profiling_memory,omitempty"` // profiling tasks // Enum: ["auto","enabled","disabled"] - // +kubebuilder:validation:Enum="auto","enabled","disabled"; + // +kubebuilder:validation:Enum=auto;enabled;disabled; ProfilingTasks string `json:"profiling_tasks,omitempty"` // server state base diff --git a/models/persist_rule.go b/models/persist_rule.go index 342694f2..b1000792 100644 --- a/models/persist_rule.go +++ b/models/persist_rule.go @@ -42,7 +42,7 @@ type PersistRule struct { // type // Required: true // Enum: ["rdp-cookie"] - // +kubebuilder:validation:Enum="rdp-cookie"; + // +kubebuilder:validation:Enum=rdp-cookie; Type *string `json:"type"` } diff --git a/models/program.go b/models/program.go index 3f7c5e37..ae5552aa 100644 --- a/models/program.go +++ b/models/program.go @@ -53,7 +53,7 @@ type Program struct { // HAProxy stops and recreates child programs at reload. // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; StartOnReload string `json:"start-on-reload,omitempty"` // The user to run the command as, if different than the HAProxy user. diff --git a/models/redispatch.go b/models/redispatch.go index ca297d98..5c4796b6 100644 --- a/models/redispatch.go +++ b/models/redispatch.go @@ -37,7 +37,7 @@ type Redispatch struct { // enabled // Required: true // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Enabled *string `json:"enabled"` // interval diff --git a/models/reload.go b/models/reload.go index ed107684..858d9150 100644 --- a/models/reload.go +++ b/models/reload.go @@ -50,7 +50,7 @@ type Reload struct { // status // Enum: ["failed","in_progress","succeeded"] - // +kubebuilder:validation:Enum="failed","in_progress","succeeded"; + // +kubebuilder:validation:Enum=failed;in_progress;succeeded; Status string `json:"status,omitempty"` } diff --git a/models/ring_base.go b/models/ring_base.go index 9acbb381..4c9637c3 100644 --- a/models/ring_base.go +++ b/models/ring_base.go @@ -42,7 +42,7 @@ type RingBase struct { // format // Enum: ["iso","local","raw","rfc3164","rfc5424","short","priority","timed"] - // +kubebuilder:validation:Enum="iso","local","raw","rfc3164","rfc5424","short","priority","timed"; + // +kubebuilder:validation:Enum=iso;local;raw;rfc3164;rfc5424;short;priority;timed; Format string `json:"format,omitempty"` // maxlen diff --git a/models/runtime_add_server.go b/models/runtime_add_server.go index a385a1eb..32ed4da1 100644 --- a/models/runtime_add_server.go +++ b/models/runtime_add_server.go @@ -50,7 +50,7 @@ type RuntimeAddServer struct { // agent check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AgentCheck string `json:"agent-check,omitempty"` // agent inter @@ -78,17 +78,17 @@ type RuntimeAddServer struct { // backup // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Backup string `json:"backup,omitempty"` // check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Check string `json:"check,omitempty"` // check send proxy // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; CheckSendProxy string `json:"check-send-proxy,omitempty"` // check sni @@ -98,7 +98,7 @@ type RuntimeAddServer struct { // check ssl // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; CheckSsl string `json:"check-ssl,omitempty"` // check alpn @@ -113,7 +113,7 @@ type RuntimeAddServer struct { // check via socks4 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; CheckViaSocks4 string `json:"check_via_socks4,omitempty"` // ciphers @@ -143,27 +143,27 @@ type RuntimeAddServer struct { // force sslv3 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceSslv3 string `json:"force_sslv3,omitempty"` // force tlsv10 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv10 string `json:"force_tlsv10,omitempty"` // force tlsv11 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv11 string `json:"force_tlsv11,omitempty"` // force tlsv12 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv12 string `json:"force_tlsv12,omitempty"` // force tlsv13 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv13 string `json:"force_tlsv13,omitempty"` // health check address @@ -189,7 +189,7 @@ type RuntimeAddServer struct { // maintenance // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Maintenance string `json:"maintenance,omitempty"` // maxconn @@ -207,27 +207,27 @@ type RuntimeAddServer struct { // no sslv3 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoSslv3 string `json:"no_sslv3,omitempty"` // no tlsv10 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv10 string `json:"no_tlsv10,omitempty"` // no tlsv11 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv11 string `json:"no_tlsv11,omitempty"` // no tlsv12 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv12 string `json:"no_tlsv12,omitempty"` // no tlsv13 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv13 string `json:"no_tlsv13,omitempty"` // npn @@ -235,22 +235,22 @@ type RuntimeAddServer struct { // observe // Enum: ["layer4","layer7"] - // +kubebuilder:validation:Enum="layer4","layer7"; + // +kubebuilder:validation:Enum=layer4;layer7; Observe string `json:"observe,omitempty"` // on error // Enum: ["fastinter","fail-check","sudden-death","mark-down"] - // +kubebuilder:validation:Enum="fastinter","fail-check","sudden-death","mark-down"; + // +kubebuilder:validation:Enum=fastinter;fail-check;sudden-death;mark-down; OnError string `json:"on-error,omitempty"` // on marked down // Enum: ["shutdown-sessions"] - // +kubebuilder:validation:Enum="shutdown-sessions"; + // +kubebuilder:validation:Enum=shutdown-sessions; OnMarkedDown string `json:"on-marked-down,omitempty"` // on marked up // Enum: ["shutdown-backup-sessions"] - // +kubebuilder:validation:Enum="shutdown-backup-sessions"; + // +kubebuilder:validation:Enum=shutdown-backup-sessions; OnMarkedUp string `json:"on-marked-up,omitempty"` // pool low conn @@ -285,22 +285,22 @@ type RuntimeAddServer struct { // send proxy // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxy string `json:"send-proxy,omitempty"` // send proxy v2 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxyV2 string `json:"send-proxy-v2,omitempty"` // send proxy v2 ssl // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxyV2Ssl string `json:"send_proxy_v2_ssl,omitempty"` // send proxy v2 ssl cn // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxyV2SslCn string `json:"send_proxy_v2_ssl_cn,omitempty"` // slowstart @@ -318,7 +318,7 @@ type RuntimeAddServer struct { // ssl // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Ssl string `json:"ssl,omitempty"` // ssl cafile @@ -333,27 +333,27 @@ type RuntimeAddServer struct { // ssl max ver // Enum: ["SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"] - // +kubebuilder:validation:Enum="SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"; + // +kubebuilder:validation:Enum=SSLv3;TLSv1.0;TLSv1.1;TLSv1.2;TLSv1.3; SslMaxVer string `json:"ssl_max_ver,omitempty"` // ssl min ver // Enum: ["SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"] - // +kubebuilder:validation:Enum="SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"; + // +kubebuilder:validation:Enum=SSLv3;TLSv1.0;TLSv1.1;TLSv1.2;TLSv1.3; SslMinVer string `json:"ssl_min_ver,omitempty"` // ssl reuse // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SslReuse string `json:"ssl_reuse,omitempty"` // tfo // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Tfo string `json:"tfo,omitempty"` // tls tickets // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TLSTickets string `json:"tls_tickets,omitempty"` // track @@ -361,7 +361,7 @@ type RuntimeAddServer struct { // verify // Enum: ["none","required"] - // +kubebuilder:validation:Enum="none","required"; + // +kubebuilder:validation:Enum=none;required; Verify string `json:"verify,omitempty"` // verifyhost @@ -372,7 +372,7 @@ type RuntimeAddServer struct { // ws // Enum: ["auto","h1","h2"] - // +kubebuilder:validation:Enum="auto","h1","h2"; + // +kubebuilder:validation:Enum=auto;h1;h2; Ws string `json:"ws,omitempty"` } diff --git a/models/runtime_server.go b/models/runtime_server.go index 6defe6db..8afd71b3 100644 --- a/models/runtime_server.go +++ b/models/runtime_server.go @@ -45,7 +45,7 @@ type RuntimeServer struct { // admin state // Enum: ["ready","maint","drain"] - // +kubebuilder:validation:Enum="ready","maint","drain"; + // +kubebuilder:validation:Enum=ready;maint;drain; AdminState string `json:"admin_state,omitempty"` // id @@ -58,7 +58,7 @@ type RuntimeServer struct { // operational state // Enum: ["up","down","stopping"] - // +kubebuilder:validation:Enum="up","down","stopping"; + // +kubebuilder:validation:Enum=up;down;stopping; OperationalState string `json:"operational_state,omitempty"` // port diff --git a/models/server.go b/models/server.go index cddb3fb4..bc7f6029 100644 --- a/models/server.go +++ b/models/server.go @@ -47,7 +47,8 @@ type Server struct { // id ID *int64 `json:"id,omitempty"` - // metadata + // +kubebuilder:pruning:PreserveUnknownFields + // +kubebuilder:validation:Schemaless Metadata map[string]interface{} `json:"metadata,omitempty"` // name diff --git a/models/server_params.go b/models/server_params.go index 2c1a3ba2..fed9c898 100644 --- a/models/server_params.go +++ b/models/server_params.go @@ -42,7 +42,7 @@ type ServerParams struct { // agent check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AgentCheck string `json:"agent-check,omitempty"` // agent inter @@ -70,17 +70,17 @@ type ServerParams struct { // backup // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Backup string `json:"backup,omitempty"` // check // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Check string `json:"check,omitempty"` // check send proxy // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; CheckSendProxy string `json:"check-send-proxy,omitempty"` // check sni @@ -90,7 +90,7 @@ type ServerParams struct { // check ssl // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; CheckSsl string `json:"check-ssl,omitempty"` // check alpn @@ -105,7 +105,7 @@ type ServerParams struct { // check via socks4 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; CheckViaSocks4 string `json:"check_via_socks4,omitempty"` // ciphers @@ -146,27 +146,27 @@ type ServerParams struct { // force sslv3 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceSslv3 string `json:"force_sslv3,omitempty"` // force tlsv10 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv10 string `json:"force_tlsv10,omitempty"` // force tlsv11 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv11 string `json:"force_tlsv11,omitempty"` // force tlsv12 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv12 string `json:"force_tlsv12,omitempty"` // force tlsv13 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ForceTlsv13 string `json:"force_tlsv13,omitempty"` // guid @@ -206,12 +206,12 @@ type ServerParams struct { // log proto // Enum: ["legacy","octet-count"] - // +kubebuilder:validation:Enum="legacy","octet-count"; + // +kubebuilder:validation:Enum=legacy;octet-count; LogProto string `json:"log_proto,omitempty"` // maintenance // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Maintenance string `json:"maintenance,omitempty"` // max reuse @@ -231,32 +231,32 @@ type ServerParams struct { // no sslv3 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoSslv3 string `json:"no_sslv3,omitempty"` // no tlsv10 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv10 string `json:"no_tlsv10,omitempty"` // no tlsv11 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv11 string `json:"no_tlsv11,omitempty"` // no tlsv12 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv12 string `json:"no_tlsv12,omitempty"` // no tlsv13 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoTlsv13 string `json:"no_tlsv13,omitempty"` // no verifyhost // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; NoVerifyhost string `json:"no_verifyhost,omitempty"` // npn @@ -264,22 +264,22 @@ type ServerParams struct { // observe // Enum: ["layer4","layer7"] - // +kubebuilder:validation:Enum="layer4","layer7"; + // +kubebuilder:validation:Enum=layer4;layer7; Observe string `json:"observe,omitempty"` // on error // Enum: ["fastinter","fail-check","sudden-death","mark-down"] - // +kubebuilder:validation:Enum="fastinter","fail-check","sudden-death","mark-down"; + // +kubebuilder:validation:Enum=fastinter;fail-check;sudden-death;mark-down; OnError string `json:"on-error,omitempty"` // on marked down // Enum: ["shutdown-sessions"] - // +kubebuilder:validation:Enum="shutdown-sessions"; + // +kubebuilder:validation:Enum=shutdown-sessions; OnMarkedDown string `json:"on-marked-down,omitempty"` // on marked up // Enum: ["shutdown-backup-sessions"] - // +kubebuilder:validation:Enum="shutdown-backup-sessions"; + // +kubebuilder:validation:Enum=shutdown-backup-sessions; OnMarkedUp string `json:"on-marked-up,omitempty"` // pool conn name @@ -316,7 +316,7 @@ type ServerParams struct { // resolve prefer // Enum: ["ipv4","ipv6"] - // +kubebuilder:validation:Enum="ipv4","ipv6"; + // +kubebuilder:validation:Enum=ipv4;ipv6; ResolvePrefer string `json:"resolve-prefer,omitempty"` // resolve opts @@ -334,22 +334,22 @@ type ServerParams struct { // send proxy // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxy string `json:"send-proxy,omitempty"` // send proxy v2 // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxyV2 string `json:"send-proxy-v2,omitempty"` // send proxy v2 ssl // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxyV2Ssl string `json:"send_proxy_v2_ssl,omitempty"` // send proxy v2 ssl cn // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendProxyV2SslCn string `json:"send_proxy_v2_ssl_cn,omitempty"` // set proxy v2 tlv fmt @@ -381,7 +381,7 @@ type ServerParams struct { // ssl // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Ssl string `json:"ssl,omitempty"` // ssl cafile @@ -396,22 +396,22 @@ type ServerParams struct { // ssl max ver // Enum: ["SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"] - // +kubebuilder:validation:Enum="SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"; + // +kubebuilder:validation:Enum=SSLv3;TLSv1.0;TLSv1.1;TLSv1.2;TLSv1.3; SslMaxVer string `json:"ssl_max_ver,omitempty"` // ssl min ver // Enum: ["SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"] - // +kubebuilder:validation:Enum="SSLv3","TLSv1.0","TLSv1.1","TLSv1.2","TLSv1.3"; + // +kubebuilder:validation:Enum=SSLv3;TLSv1.0;TLSv1.1;TLSv1.2;TLSv1.3; SslMinVer string `json:"ssl_min_ver,omitempty"` // ssl reuse // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SslReuse string `json:"ssl_reuse,omitempty"` // stick // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Stick string `json:"stick,omitempty"` // tcp ut @@ -421,12 +421,12 @@ type ServerParams struct { // tfo // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Tfo string `json:"tfo,omitempty"` // tls tickets // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; TLSTickets string `json:"tls_tickets,omitempty"` // track @@ -434,7 +434,7 @@ type ServerParams struct { // verify // Enum: ["none","required"] - // +kubebuilder:validation:Enum="none","required"; + // +kubebuilder:validation:Enum=none;required; Verify string `json:"verify,omitempty"` // verifyhost @@ -445,7 +445,7 @@ type ServerParams struct { // ws // Enum: ["auto","h1","h2"] - // +kubebuilder:validation:Enum="auto","h1","h2"; + // +kubebuilder:validation:Enum=auto;h1;h2; Ws string `json:"ws,omitempty"` } diff --git a/models/server_switching_rule.go b/models/server_switching_rule.go index ab79b29b..b1e35abf 100644 --- a/models/server_switching_rule.go +++ b/models/server_switching_rule.go @@ -39,7 +39,7 @@ import ( type ServerSwitchingRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test diff --git a/models/site.go b/models/site.go index e5658d55..458d6272 100644 --- a/models/site.go +++ b/models/site.go @@ -228,7 +228,7 @@ type SiteFarm struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -239,7 +239,7 @@ type SiteFarm struct { // mode // Enum: ["http","tcp"] - // +kubebuilder:validation:Enum="http","tcp"; + // +kubebuilder:validation:Enum=http;tcp; Mode string `json:"mode,omitempty"` // name @@ -254,7 +254,7 @@ type SiteFarm struct { // use as // Required: true // Enum: ["default","conditional"] - // +kubebuilder:validation:Enum="default","conditional"; + // +kubebuilder:validation:Enum=default;conditional; UseAs string `json:"use_as"` } @@ -613,7 +613,7 @@ func (m *SiteFarm) UnmarshalBinary(b []byte) error { type SiteService struct { // http connection mode // Enum: ["http-tunnel","httpclose","forced-close","http-server-close","http-keep-alive"] - // +kubebuilder:validation:Enum="http-tunnel","httpclose","forced-close","http-server-close","http-keep-alive"; + // +kubebuilder:validation:Enum=http-tunnel;httpclose;forced-close;http-server-close;http-keep-alive; HTTPConnectionMode string `json:"http_connection_mode,omitempty"` // listeners @@ -624,7 +624,7 @@ type SiteService struct { // mode // Enum: ["http","tcp"] - // +kubebuilder:validation:Enum="http","tcp"; + // +kubebuilder:validation:Enum=http;tcp; Mode string `json:"mode,omitempty"` } diff --git a/models/source.go b/models/source.go index 9942c288..e7eae1dc 100644 --- a/models/source.go +++ b/models/source.go @@ -67,7 +67,7 @@ type Source struct { // usesrc // Enum: ["address","client","clientip","hdr_ip"] - // +kubebuilder:validation:Enum="address","client","clientip","hdr_ip"; + // +kubebuilder:validation:Enum=address;client;clientip;hdr_ip; Usesrc string `json:"usesrc,omitempty"` } diff --git a/models/spoe_agent.go b/models/spoe_agent.go index ad6fda69..fc43d5db 100644 --- a/models/spoe_agent.go +++ b/models/spoe_agent.go @@ -38,17 +38,17 @@ import ( type SpoeAgent struct { // async // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Async string `json:"async,omitempty"` // continue on error // Enum: ["enabled"] - // +kubebuilder:validation:Enum="enabled"; + // +kubebuilder:validation:Enum=enabled; ContinueOnError string `json:"continue-on-error,omitempty"` // dontlog normal // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; DontlogNormal string `json:"dontlog-normal,omitempty"` // engine name @@ -56,7 +56,7 @@ type SpoeAgent struct { // force set var // Enum: ["enabled"] - // +kubebuilder:validation:Enum="enabled"; + // +kubebuilder:validation:Enum=enabled; ForceSetVar string `json:"force-set-var,omitempty"` // groups @@ -112,7 +112,7 @@ type SpoeAgent struct { // pipelining // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Pipelining string `json:"pipelining,omitempty"` // processing timeout @@ -123,7 +123,7 @@ type SpoeAgent struct { // send frag payload // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SendFragPayload string `json:"send-frag-payload,omitempty"` // use backend diff --git a/models/spoe_message.go b/models/spoe_message.go index a778c596..bda0a1ef 100644 --- a/models/spoe_message.go +++ b/models/spoe_message.go @@ -195,7 +195,7 @@ func (m *SpoeMessage) UnmarshalBinary(b []byte) error { type SpoeMessageEvent struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -204,7 +204,7 @@ type SpoeMessageEvent struct { // name // Required: true // Enum: ["on-backend-http-request","on-backend-tcp-request","on-client-session","on-frontend-http-request","on-frontend-tcp-request","on-http-response","on-server-session","on-tcp-response"] - // +kubebuilder:validation:Enum="on-backend-http-request","on-backend-tcp-request","on-client-session","on-frontend-http-request","on-frontend-tcp-request","on-http-response","on-server-session","on-tcp-response"; + // +kubebuilder:validation:Enum=on-backend-http-request;on-backend-tcp-request;on-client-session;on-frontend-http-request;on-frontend-tcp-request;on-http-response;on-server-session;on-tcp-response; Name *string `json:"name"` } diff --git a/models/spoe_transaction.go b/models/spoe_transaction.go index ce1313c0..7c4644d7 100644 --- a/models/spoe_transaction.go +++ b/models/spoe_transaction.go @@ -48,7 +48,7 @@ type SpoeTransaction struct { // status // Enum: ["failed","in_progress","success"] - // +kubebuilder:validation:Enum="failed","in_progress","success"; + // +kubebuilder:validation:Enum=failed;in_progress;success; Status string `json:"status,omitempty"` } diff --git a/models/ssl_options.go b/models/ssl_options.go index 8039dd3d..868ac9b8 100644 --- a/models/ssl_options.go +++ b/models/ssl_options.go @@ -98,7 +98,7 @@ type SslOptions struct { // mode async // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ModeAsync string `json:"mode_async,omitempty"` // propquery @@ -119,7 +119,7 @@ type SslOptions struct { // server verify // Enum: ["none","required"] - // +kubebuilder:validation:Enum="none","required"; + // +kubebuilder:validation:Enum=none;required; ServerVerify string `json:"server_verify,omitempty"` // skip self issued ca diff --git a/models/stats_http_request.go b/models/stats_http_request.go index b3991b99..6e68a987 100644 --- a/models/stats_http_request.go +++ b/models/stats_http_request.go @@ -47,7 +47,7 @@ type StatsHTTPRequest struct { // type // Required: true // Enum: ["allow","deny","auth"] - // +kubebuilder:validation:Enum="allow","deny","auth"; + // +kubebuilder:validation:Enum=allow;deny;auth; Type *string `json:"type"` } diff --git a/models/stats_options.go b/models/stats_options.go index ac086e23..6d065c41 100644 --- a/models/stats_options.go +++ b/models/stats_options.go @@ -41,7 +41,7 @@ type StatsOptions struct { // stats admin cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; StatsAdminCond string `json:"stats_admin_cond,omitempty"` // stats admin cond test diff --git a/models/stick_rule.go b/models/stick_rule.go index 86567091..68e710e4 100644 --- a/models/stick_rule.go +++ b/models/stick_rule.go @@ -39,7 +39,7 @@ import ( type StickRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -59,7 +59,7 @@ type StickRule struct { // type // Required: true // Enum: ["match","on","store-request","store-response"] - // +kubebuilder:validation:Enum="match","on","store-request","store-response"; + // +kubebuilder:validation:Enum=match;on;store-request;store-response; Type string `json:"type"` } diff --git a/models/stick_table.go b/models/stick_table.go index 701ad56a..1d233d37 100644 --- a/models/stick_table.go +++ b/models/stick_table.go @@ -49,7 +49,7 @@ type StickTable struct { // type // Enum: ["ip","ipv6","integer","string","binary"] - // +kubebuilder:validation:Enum="ip","ipv6","integer","string","binary"; + // +kubebuilder:validation:Enum=ip;ipv6;integer;string;binary; Type string `json:"type,omitempty"` // used @@ -214,7 +214,7 @@ func (m *StickTable) UnmarshalBinary(b []byte) error { type StickTableField struct { // field // Enum: ["bytes_in_cnt","bytes_in_rate","bytes_out_cnt","bytes_out_rate","conn_cnt","conn_cur","conn_rate","gpc0","gpc0_rate","gpc1","gpc1_rate","gpt0","http_req_cnt","http_req_rate","http_err_cnt","http_err_rate","server_id","sess_cnt","sess_rate"] - // +kubebuilder:validation:Enum="bytes_in_cnt","bytes_in_rate","bytes_out_cnt","bytes_out_rate","conn_cnt","conn_cur","conn_rate","gpc0","gpc0_rate","gpc1","gpc1_rate","gpt0","http_req_cnt","http_req_rate","http_err_cnt","http_err_rate","server_id","sess_cnt","sess_rate"; + // +kubebuilder:validation:Enum=bytes_in_cnt;bytes_in_rate;bytes_out_cnt;bytes_out_rate;conn_cnt;conn_cur;conn_rate;gpc0;gpc0_rate;gpc1;gpc1_rate;gpt0;http_req_cnt;http_req_rate;http_err_cnt;http_err_rate;server_id;sess_cnt;sess_rate; Field string `json:"field,omitempty"` // period @@ -222,7 +222,7 @@ type StickTableField struct { // type // Enum: ["rate","counter"] - // +kubebuilder:validation:Enum="rate","counter"; + // +kubebuilder:validation:Enum=rate;counter; Type string `json:"type,omitempty"` } diff --git a/models/table.go b/models/table.go index 61da819b..0449cdf3 100644 --- a/models/table.go +++ b/models/table.go @@ -55,7 +55,7 @@ type Table struct { // type // Enum: ["ip","integer","string","binary"] - // +kubebuilder:validation:Enum="ip","integer","string","binary"; + // +kubebuilder:validation:Enum=ip;integer;string;binary; Type string `json:"type,omitempty"` // type len diff --git a/models/tcp_check.go b/models/tcp_check.go index fa2ee572..8542f4aa 100644 --- a/models/tcp_check.go +++ b/models/tcp_check.go @@ -37,7 +37,7 @@ type TCPCheck struct { // action // Required: true // Enum: ["comment","connect","expect","send","send-lf","send-binary","send-binary-lf","set-var","set-var-fmt","unset-var"] - // +kubebuilder:validation:Enum="comment","connect","expect","send","send-lf","send-binary","send-binary-lf","set-var","set-var-fmt","unset-var"; + // +kubebuilder:validation:Enum=comment;connect;expect;send;send-lf;send-binary;send-binary-lf;set-var;set-var-fmt;unset-var; Action string `json:"action"` // addr @@ -61,7 +61,7 @@ type TCPCheck struct { // error status // Enum: ["L7OKC","L7RSP","L7STS","L6RSP","L4CON"] - // +kubebuilder:validation:Enum="L7OKC","L7RSP","L7STS","L6RSP","L4CON"; + // +kubebuilder:validation:Enum=L7OKC;L7RSP;L7STS;L6RSP;L4CON; ErrorStatus string `json:"error_status,omitempty"` // exclamation mark @@ -83,7 +83,7 @@ type TCPCheck struct { // Pattern: ^[^\s]+$ // Enum: ["string","rstring","string-lf","binary","rbinary","binary-lf"] // +kubebuilder:validation:Pattern=`^[^\s]+$` - // +kubebuilder:validation:Enum="string","rstring","string-lf","binary","rbinary","binary-lf"; + // +kubebuilder:validation:Enum=string;rstring;string-lf;binary;rbinary;binary-lf; Match string `json:"match,omitempty"` // min recv @@ -91,7 +91,7 @@ type TCPCheck struct { // ok status // Enum: ["L7OK","L7OKC","L6OK","L4OK"] - // +kubebuilder:validation:Enum="L7OK","L7OKC","L6OK","L4OK"; + // +kubebuilder:validation:Enum=L7OK;L7OKC;L6OK;L4OK; OkStatus string `json:"ok_status,omitempty"` // on error @@ -130,7 +130,7 @@ type TCPCheck struct { // tout status // Enum: ["L7TOUT","L6TOUT","L4TOUT"] - // +kubebuilder:validation:Enum="L7TOUT","L6TOUT","L4TOUT"; + // +kubebuilder:validation:Enum=L7TOUT;L6TOUT;L4TOUT; ToutStatus string `json:"tout_status,omitempty"` // var expr diff --git a/models/tcp_request_rule.go b/models/tcp_request_rule.go index 68a56a50..d8487ed6 100644 --- a/models/tcp_request_rule.go +++ b/models/tcp_request_rule.go @@ -39,7 +39,7 @@ import ( type TCPRequestRule struct { // action // Enum: ["accept","attach-srv","capture","do-resolve","expect-netscaler-cip","expect-proxy","lua","reject","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-bandwidth-limit","set-bc-mark","set-bc-tos","set-dst-port","set-dst","set-fc-mark","set-fc-tos","set-log-level","set-mark","set-nice","set-priority-class","set-priority-offset","set-src","set-src-port","set-tos","set-var","set-var-fmt","silent-drop","switch-mode","track-sc","unset-var","use-service"] - // +kubebuilder:validation:Enum="accept","attach-srv","capture","do-resolve","expect-netscaler-cip","expect-proxy","lua","reject","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-bandwidth-limit","set-bc-mark","set-bc-tos","set-dst-port","set-dst","set-fc-mark","set-fc-tos","set-log-level","set-mark","set-nice","set-priority-class","set-priority-offset","set-src","set-src-port","set-tos","set-var","set-var-fmt","silent-drop","switch-mode","track-sc","unset-var","use-service"; + // +kubebuilder:validation:Enum=accept;attach-srv;capture;do-resolve;expect-netscaler-cip;expect-proxy;lua;reject;sc-add-gpc;sc-inc-gpc;sc-inc-gpc0;sc-inc-gpc1;sc-set-gpt;sc-set-gpt0;send-spoe-group;set-bandwidth-limit;set-bc-mark;set-bc-tos;set-dst-port;set-dst;set-fc-mark;set-fc-tos;set-log-level;set-mark;set-nice;set-priority-class;set-priority-offset;set-src;set-src-port;set-tos;set-var;set-var-fmt;silent-drop;switch-mode;track-sc;unset-var;use-service; Action string `json:"action,omitempty"` // bandwidth limit limit @@ -61,7 +61,7 @@ type TCPRequestRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -75,7 +75,7 @@ type TCPRequestRule struct { // log level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug","silent"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug","silent"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug;silent; LogLevel string `json:"log_level,omitempty"` // lua action @@ -100,7 +100,7 @@ type TCPRequestRule struct { // resolve protocol // Enum: ["ipv4","ipv6"] - // +kubebuilder:validation:Enum="ipv4","ipv6"; + // +kubebuilder:validation:Enum=ipv4;ipv6; ResolveProtocol string `json:"resolve_protocol,omitempty"` // resolve resolvers @@ -156,7 +156,7 @@ type TCPRequestRule struct { // type // Required: true // Enum: ["connection","content","inspect-delay","session"] - // +kubebuilder:validation:Enum="connection","content","inspect-delay","session"; + // +kubebuilder:validation:Enum=connection;content;inspect-delay;session; Type string `json:"type"` // var format diff --git a/models/tcp_response_rule.go b/models/tcp_response_rule.go index 258be7bf..46d39a3d 100644 --- a/models/tcp_response_rule.go +++ b/models/tcp_response_rule.go @@ -39,7 +39,7 @@ import ( type TCPResponseRule struct { // action // Enum: ["accept","close","lua","reject","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-bandwidth-limit","set-fc-mark","set-fc-tos","set-log-level","set-mark","set-nice","set-tos","set-var","set-var-fmt","silent-drop","unset-var"] - // +kubebuilder:validation:Enum="accept","close","lua","reject","sc-add-gpc","sc-inc-gpc","sc-inc-gpc0","sc-inc-gpc1","sc-set-gpt","sc-set-gpt0","send-spoe-group","set-bandwidth-limit","set-fc-mark","set-fc-tos","set-log-level","set-mark","set-nice","set-tos","set-var","set-var-fmt","silent-drop","unset-var"; + // +kubebuilder:validation:Enum=accept;close;lua;reject;sc-add-gpc;sc-inc-gpc;sc-inc-gpc0;sc-inc-gpc1;sc-set-gpt;sc-set-gpt0;send-spoe-group;set-bandwidth-limit;set-fc-mark;set-fc-tos;set-log-level;set-mark;set-nice;set-tos;set-var;set-var-fmt;silent-drop;unset-var; Action string `json:"action,omitempty"` // bandwidth limit limit @@ -53,7 +53,7 @@ type TCPResponseRule struct { // cond // Enum: ["if","unless"] - // +kubebuilder:validation:Enum="if","unless"; + // +kubebuilder:validation:Enum=if;unless; Cond string `json:"cond,omitempty"` // cond test @@ -64,7 +64,7 @@ type TCPResponseRule struct { // log level // Enum: ["emerg","alert","crit","err","warning","notice","info","debug","silent"] - // +kubebuilder:validation:Enum="emerg","alert","crit","err","warning","notice","info","debug","silent"; + // +kubebuilder:validation:Enum=emerg;alert;crit;err;warning;notice;info;debug;silent; LogLevel string `json:"log_level,omitempty"` // lua action @@ -123,7 +123,7 @@ type TCPResponseRule struct { // type // Required: true // Enum: ["content","inspect-delay"] - // +kubebuilder:validation:Enum="content","inspect-delay"; + // +kubebuilder:validation:Enum=content;inspect-delay; Type string `json:"type"` // var format diff --git a/models/transaction.go b/models/transaction.go index e6f5fc60..327e3445 100644 --- a/models/transaction.go +++ b/models/transaction.go @@ -48,7 +48,7 @@ type Transaction struct { // status // Enum: ["failed","outdated","in_progress","success"] - // +kubebuilder:validation:Enum="failed","outdated","in_progress","success"; + // +kubebuilder:validation:Enum=failed;outdated;in_progress;success; Status string `json:"status,omitempty"` } diff --git a/models/tune_lua_options.go b/models/tune_lua_options.go index 24e97d2f..735ddb62 100644 --- a/models/tune_lua_options.go +++ b/models/tune_lua_options.go @@ -44,12 +44,12 @@ type TuneLuaOptions struct { // log loggers // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; LogLoggers string `json:"log_loggers,omitempty"` // log stderr // Enum: ["auto","enabled","disabled"] - // +kubebuilder:validation:Enum="auto","enabled","disabled"; + // +kubebuilder:validation:Enum=auto;enabled;disabled; LogStderr string `json:"log_stderr,omitempty"` // maxmem diff --git a/models/tune_options.go b/models/tune_options.go index 665091a7..e4821fc9 100644 --- a/models/tune_options.go +++ b/models/tune_options.go @@ -36,7 +36,7 @@ import ( type TuneOptions struct { // applet zero copy forwarding // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; AppletZeroCopyForwarding string `json:"applet_zero_copy_forwarding,omitempty"` // comp maxlevel @@ -57,17 +57,17 @@ type TuneOptions struct { // fd edge triggered // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; FdEdgeTriggered string `json:"fd_edge_triggered,omitempty"` // h1 zero copy fwd recv // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H1ZeroCopyFwdRecv string `json:"h1_zero_copy_fwd_recv,omitempty"` // h1 zero copy fwd send // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H1ZeroCopyFwdSend string `json:"h1_zero_copy_fwd_send,omitempty"` // h2 be glitches threshold @@ -107,7 +107,7 @@ type TuneOptions struct { // h2 zero copy fwd send // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; H2ZeroCopyFwdSend string `json:"h2_zero_copy_fwd_send,omitempty"` // http cookielen @@ -125,7 +125,7 @@ type TuneOptions struct { // idle pool shared // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; IdlePoolShared string `json:"idle_pool_shared,omitempty"` // idletimer @@ -137,12 +137,12 @@ type TuneOptions struct { // listener default shards // Enum: ["by-process","by-thread","by-group"] - // +kubebuilder:validation:Enum="by-process","by-thread","by-group"; + // +kubebuilder:validation:Enum=by-process;by-thread;by-group; ListenerDefaultShards string `json:"listener_default_shards,omitempty"` // listener multi queue // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ListenerMultiQueue string `json:"listener_multi_queue,omitempty"` // max checks per thread @@ -174,7 +174,7 @@ type TuneOptions struct { // pt zero copy forwarding // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; PtZeroCopyForwarding string `json:"pt_zero_copy_forwarding,omitempty"` // ring queues @@ -185,7 +185,7 @@ type TuneOptions struct { // sched low latency // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; SchedLowLatency string `json:"sched_low_latency,omitempty"` // stick counters diff --git a/models/tune_quic_options.go b/models/tune_quic_options.go index 861674e9..dc0f0fa5 100644 --- a/models/tune_quic_options.go +++ b/models/tune_quic_options.go @@ -61,12 +61,12 @@ type TuneQuicOptions struct { // socket owner // Enum: ["listener","connection"] - // +kubebuilder:validation:Enum="listener","connection"; + // +kubebuilder:validation:Enum=listener;connection; SocketOwner string `json:"socket_owner,omitempty"` // zero copy fwd send // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; ZeroCopyFwdSend string `json:"zero_copy_fwd_send,omitempty"` } diff --git a/models/tune_ssl_options.go b/models/tune_ssl_options.go index a63b4188..fe6cbda4 100644 --- a/models/tune_ssl_options.go +++ b/models/tune_ssl_options.go @@ -52,7 +52,7 @@ type TuneSslOptions struct { // keylog // Enum: ["enabled","disabled"] - // +kubebuilder:validation:Enum="enabled","disabled"; + // +kubebuilder:validation:Enum=enabled;disabled; Keylog string `json:"keylog,omitempty"` // lifetime diff --git a/runtime/runtime_client.go b/runtime/runtime_client.go index d870e42a..bb324087 100644 --- a/runtime/runtime_client.go +++ b/runtime/runtime_client.go @@ -50,11 +50,13 @@ func (c *client) initWithSockets(opt options.RuntimeOptions) error { runtime := &SingleRuntime{} masterWorkerMode := false - err := runtime.Init(socketPath, masterWorkerMode, opt) - if err != nil { - return err + if socketPath != "" { + err := runtime.Init(socketPath, masterWorkerMode, opt) + if err != nil { + return err + } + c.runtime = runtime } - c.runtime = runtime _, _ = c.GetVersion() return nil }