diff options
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/kaze/main.go | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/cmd/kaze/main.go b/cmd/kaze/main.go index a71c03e..f4f61ac 100644 --- a/cmd/kaze/main.go +++ b/cmd/kaze/main.go @@ -131,20 +131,21 @@ func main() { logger.Info("kaze is running", "address", fmt.Sprintf("http://%s:%d", cfg.Server.Host, cfg.Server.Port)) - // Reload function - reloadConfig := func() { + // Reload function (returns error for API endpoint) + var reloadConfig func() error + reloadConfig = func() error { logger.Info("reloading configuration...") newCfg, err := config.Load(*configPath) if err != nil { logger.Error("failed to reload configuration", "error", err) - return + return fmt.Errorf("failed to load configuration: %w", err) } // Validate the new configuration if len(newCfg.Groups) == 0 { logger.Error("invalid configuration: no monitor groups defined") - return + return fmt.Errorf("invalid configuration: no monitor groups defined") } // Stop current scheduler @@ -160,7 +161,7 @@ func main() { logger.Error("failed to create new scheduler", "error", err) // Restart old scheduler sched.Start() - return + return fmt.Errorf("failed to create new scheduler: %w", err) } // Replace scheduler @@ -184,11 +185,12 @@ func main() { logger.Error("server error", "error", err) } }() - return + return fmt.Errorf("failed to create new server: %w", err) } - // Replace server + // Replace server and set reload func on new server srv = newSrv + srv.SetReloadFunc(reloadConfig) // Start new server go func() { @@ -201,8 +203,13 @@ func main() { logger.Info("configuration reloaded successfully", "groups", len(cfg.Groups), "incidents", len(cfg.Incidents)) + + return nil } + // Set reload function on server for API endpoint + srv.SetReloadFunc(reloadConfig) + // Wait for shutdown signal or config changes for { select { |