Skip to content

Commit 95cb4a2

Browse files
oliwermjuraga
authored andcommitted
MINOR: add support for HAProxy 3.2 new global keywords
Add support for: - acme.scheduler - stress-level - tune.epoll.mask-events - tune.max-rules-at-once
1 parent 649b975 commit 95cb4a2

15 files changed

Lines changed: 312 additions & 9 deletions

config-parser/section-parsers.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
281281
addParser(parser, &sequence, &simple.Number{Name: "tune.comp.maxlevel"})
282282
addParser(parser, &sequence, &simple.Enabled{Name: "tune.disable-zero-copy-forwarding"})
283283
addParser(parser, &sequence, &simple.Enabled{Name: "tune.disable-fast-forward"})
284+
addParser(parser, &sequence, &simple.Word{Name: "tune.epoll.mask-events"})
284285
addParser(parser, &sequence, &simple.Number{Name: "tune.events.max-events-at-once"})
285286
addParser(parser, &sequence, &simple.Enabled{Name: "tune.fail-alloc"})
286287
addParser(parser, &sequence, &simple.OnOff{Name: "tune.fd.edge-triggered"})
@@ -316,6 +317,7 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
316317
addParser(parser, &sequence, &simple.OnOff{Name: "tune.lua.log.loggers"})
317318
addParser(parser, &sequence, &simple.AutoOnOff{Name: "tune.lua.log.stderr"})
318319
addParser(parser, &sequence, &simple.Number{Name: "tune.max-checks-per-thread"})
320+
addParser(parser, &sequence, &simple.Number{Name: "tune.max-rules-at-once"})
319321
addParser(parser, &sequence, &simple.Number{Name: "tune.maxaccept"})
320322
addParser(parser, &sequence, &simple.Number{Name: "tune.maxpollevents"})
321323
addParser(parser, &sequence, &simple.Number{Name: "tune.maxrewrite"})
@@ -465,6 +467,8 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
465467
addParser(parser, &sequence, &simple.Time{Name: "force-cfg-parser-pause"})
466468
addParser(parser, &sequence, &simple.Time{Name: "warn-blocked-traffic-after"})
467469
addParser(parser, &sequence, &simple.Word{Name: "dns-accept-family"})
470+
addParser(parser, &sequence, &simple.Word{Name: "acme.scheduler"})
471+
addParser(parser, &sequence, &simple.Number{Name: "stress-level"})
468472
// the ConfigSnippet must be at the end to parsers load order to ensure
469473
// the overloading of any option has been declared previously
470474
addParser(parser, &sequence, &parsers.ConfigSnippet{})

configuration/global.go

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,15 @@ func parseSSLOptions(p parser.Parser) (*models.SslOptions, error) { //nolint:goc
562562
options.SslEngines = sslEngines
563563
}
564564

565+
sched, err := parseStringOption(p, "acme.scheduler")
566+
if err != nil {
567+
return nil, err
568+
}
569+
if sched != "" {
570+
isEmpty = false
571+
options.AcmeScheduler = sched
572+
}
573+
565574
caBase, err := parseStringOption(p, "ca-base")
566575
if err != nil {
567576
return nil, err
@@ -812,6 +821,15 @@ func parseDebugOptions(p parser.Parser) (*models.DebugOptions, error) {
812821
options.Anonkey = anonkey
813822
}
814823

824+
stress, err := parseInt64POption(p, "stress-level")
825+
if err != nil {
826+
return nil, err
827+
}
828+
if stress != nil {
829+
isEmpty = false
830+
options.StressLevel = stress
831+
}
832+
815833
quiet, err := parseBoolOption(p, "quiet")
816834
if err != nil {
817835
return nil, err
@@ -1215,6 +1233,17 @@ func parseTuneOptions(p parser.Parser) (*models.TuneOptions, error) { //nolint:g
12151233
options.DisableZeroCopyForwarding = boolOption
12161234
}
12171235

1236+
strOption, err = parseStringOption(p, "tune.epoll.mask-events")
1237+
if err != nil {
1238+
return nil, err
1239+
}
1240+
if strOption != "" {
1241+
if words := strings.Split(strOption, ","); len(words) > 0 && words[0] != "" {
1242+
isEmpty = false
1243+
options.EpollMaskEvents = words
1244+
}
1245+
}
1246+
12181247
intOption, err = parseInt64Option(p, "tune.events.max-events-at-once")
12191248
if err != nil {
12201249
return nil, err
@@ -1341,6 +1370,15 @@ func parseTuneOptions(p parser.Parser) (*models.TuneOptions, error) { //nolint:g
13411370
options.MaxChecksPerThread = intPOption
13421371
}
13431372

1373+
intPOption, err = parseInt64POption(p, "tune.max-rules-at-once")
1374+
if err != nil {
1375+
return nil, err
1376+
}
1377+
if intPOption != nil {
1378+
isEmpty = false
1379+
options.MaxRulesAtOnce = intPOption
1380+
}
1381+
13441382
intOption, err = parseInt64Option(p, "tune.maxaccept")
13451383
if err != nil {
13461384
return nil, err
@@ -2553,6 +2591,9 @@ func serializeDebugOptions(p parser.Parser, options *models.DebugOptions) error
25532591
if err := serializeInt64POption(p, "anonkey", options.Anonkey); err != nil {
25542592
return err
25552593
}
2594+
if err := serializeInt64POption(p, "stress-level", options.StressLevel); err != nil {
2595+
return err
2596+
}
25562597
if err := serializeBoolOption(p, "quiet", options.Quiet); err != nil {
25572598
return err
25582599
}
@@ -2714,6 +2755,10 @@ func serializeSSLOptions(p parser.Parser, options *models.SslOptions) error { //
27142755
return err
27152756
}
27162757

2758+
if err := serializeStringOption(p, "acme.scheduler", options.AcmeScheduler); err != nil {
2759+
return err
2760+
}
2761+
27172762
if err := serializeStringOption(p, "ca-base", options.CaBase); err != nil {
27182763
return err
27192764
}
@@ -3585,7 +3630,7 @@ func serializeTuneZlibOptions(p parser.Parser, options *models.TuneZlibOptions)
35853630
return serializeInt64Option(p, "tune.zlib.windowsize", options.Windowsize)
35863631
}
35873632

3588-
func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOptions *options.ConfigurationOptions) error { //nolint:gocognit,gocyclo,cyclop
3633+
func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOptions *options.ConfigurationOptions) error { //nolint:gocognit,gocyclo,cyclop,maintidx
35893634
if options == nil {
35903635
options = &models.TuneOptions{}
35913636
}
@@ -3601,6 +3646,9 @@ func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOp
36013646
if err := serializeBoolOption(p, "tune.disable-zero-copy-forwarding", options.DisableZeroCopyForwarding); err != nil {
36023647
return err
36033648
}
3649+
if err := serializeStringOption(p, "tune.epoll.mask-events", strings.Join(options.EpollMaskEvents, ",")); err != nil {
3650+
return err
3651+
}
36043652
if err := serializeInt64Option(p, "tune.events.max-events-at-once", options.EventsMaxEventsAtOnce); err != nil {
36053653
return err
36063654
}
@@ -3643,6 +3691,9 @@ func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOp
36433691
if err := serializeInt64POption(p, "tune.max-checks-per-thread", options.MaxChecksPerThread); err != nil {
36443692
return err
36453693
}
3694+
if err := serializeInt64POption(p, "tune.max-rules-at-once", options.MaxRulesAtOnce); err != nil {
3695+
return err
3696+
}
36463697
if err := serializeInt64Option(p, "tune.maxaccept", options.Maxaccept); err != nil {
36473698
return err
36483699
}

models/debug_options.go

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/debug_options_compare.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/debug_options_compare_test.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/ssl_options.go

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/ssl_options_compare.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/ssl_options_compare_test.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)