diff --git a/cmd/promtool/main.go b/cmd/promtool/main.go index 184bc9fdb..5c85de54f 100644 --- a/cmd/promtool/main.go +++ b/cmd/promtool/main.go @@ -57,9 +57,10 @@ import ( ) const ( - successExitCode = 0 - failureExitCode = 1 - // exit code 3 is used for "one or more lint issues detected". + successExitCode = 0 + failureExitCode = 1 + configErrExitCode = 2 + // Exit code 3 is used for "one or more lint issues detected". lintErrExitCode = 3 ) diff --git a/cmd/promtool/sd.go b/cmd/promtool/sd.go index f3b2c13b4..2950d3e35 100644 --- a/cmd/promtool/sd.go +++ b/cmd/promtool/sd.go @@ -43,7 +43,7 @@ func CheckSD(sdConfigFiles, sdJobName string, sdTimeout time.Duration) int { cfg, err := config.LoadFile(sdConfigFiles, false, false, logger) if err != nil { fmt.Fprintln(os.Stderr, "Cannot load config", err) - return 2 + return configErrExitCode } var scrapeConfig *config.ScrapeConfig @@ -63,7 +63,7 @@ func CheckSD(sdConfigFiles, sdJobName string, sdTimeout time.Duration) int { for _, job := range jobs { fmt.Fprintf(os.Stderr, "\t%s\n", job) } - return 1 + return failureExitCode } targetGroupChan := make(chan []*targetgroup.Group) @@ -74,7 +74,7 @@ func CheckSD(sdConfigFiles, sdJobName string, sdTimeout time.Duration) int { d, err := cfg.NewDiscoverer(discovery.DiscovererOptions{Logger: logger}) if err != nil { fmt.Fprintln(os.Stderr, "Could not create new discoverer", err) - return 2 + return configErrExitCode } go d.Run(ctx, targetGroupChan) } @@ -100,11 +100,11 @@ outerLoop: res, err := json.MarshalIndent(results, "", " ") if err != nil { fmt.Fprintf(os.Stderr, "Could not marshal result json: %s", err) - return 2 + return configErrExitCode } fmt.Printf("%s", res) - return 0 + return successExitCode } func getSDCheckResult(targetGroups []*targetgroup.Group, scrapeConfig *config.ScrapeConfig) []sdCheckResult { diff --git a/cmd/promtool/unittest.go b/cmd/promtool/unittest.go index 62e2843d4..b8704231d 100644 --- a/cmd/promtool/unittest.go +++ b/cmd/promtool/unittest.go @@ -56,9 +56,9 @@ func RulesUnitTest(queryOpts promql.LazyLoaderOpts, files ...string) int { fmt.Println() } if failed { - return 1 + return failureExitCode } - return 0 + return successExitCode } func ruleUnitTest(filename string, queryOpts promql.LazyLoaderOpts) []error {