From 0e187f5542b0118eaee9b31b293772b8b3d347f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Tue, 28 Oct 2025 12:07:10 +0000 Subject: [PATCH] Correctly generate rulesLintConfig when --lint=none is set (#17399) If I run promtool check config --lint=none I get: ``` Checking rules.yml FAILED: rules.yml: unset nameValidationScheme ``` This is becuase passing --lint=none stops newConfigLintConfig from generating rulesLintConfig which is needed for validation. It means that defaults are used then, one of which is unset value for metric name validation, causing this error. Fix this by handling --lint=none case correctly and still generating rulesLintConfig. Fixes #17398. Signed-off-by: Lukasz Mierzwa --- cmd/promtool/main.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/promtool/main.go b/cmd/promtool/main.go index 6357e55cc1..0c64b19736 100644 --- a/cmd/promtool/main.go +++ b/cmd/promtool/main.go @@ -476,13 +476,15 @@ type rulesLintConfig struct { } func newRulesLintConfig(stringVal string, fatal, ignoreUnknownFields bool, nameValidationScheme model.ValidationScheme) rulesLintConfig { - items := strings.Split(stringVal, ",") ls := rulesLintConfig{ fatal: fatal, ignoreUnknownFields: ignoreUnknownFields, nameValidationScheme: nameValidationScheme, } - for _, setting := range items { + if stringVal == "" { + return ls + } + for _, setting := range strings.Split(stringVal, ",") { switch setting { case lintOptionAll: ls.all = true @@ -534,9 +536,7 @@ func newConfigLintConfig(optionsStr string, fatal, ignoreUnknownFields bool, nam rulesOptions = nil } - if len(rulesOptions) > 0 { - c.rulesLintConfig = newRulesLintConfig(strings.Join(rulesOptions, ","), fatal, ignoreUnknownFields, nameValidationScheme) - } + c.rulesLintConfig = newRulesLintConfig(strings.Join(rulesOptions, ","), fatal, ignoreUnknownFields, nameValidationScheme) return c }