Manager: better logging of schedule changes

Log more details of schedule changes, from within the sleep scheduler
(instead of the API implementation).
This commit is contained in:
Sybren A. Stüvel 2023-07-18 15:55:51 +02:00
parent 3def3d2260
commit 5eb57427fc
2 changed files with 24 additions and 3 deletions

View File

@ -65,11 +65,11 @@ func (f *Flamenco) SetWorkerSleepSchedule(e echo.Context, workerUUID string) err
DaysOfWeek: schedule.DaysOfWeek, DaysOfWeek: schedule.DaysOfWeek,
} }
if err := dbSchedule.StartTime.Scan(schedule.StartTime); err != nil { if err := dbSchedule.StartTime.Scan(schedule.StartTime); err != nil {
logger.Warn().Err(err).Msg("bad request received, cannot parse schedule start time") logger.Warn().Interface("schedule", schedule).Err(err).Msg("bad request received, cannot parse schedule start time")
return sendAPIError(e, http.StatusBadRequest, "invalid format for schedule start time") return sendAPIError(e, http.StatusBadRequest, "invalid format for schedule start time")
} }
if err := dbSchedule.EndTime.Scan(schedule.EndTime); err != nil { if err := dbSchedule.EndTime.Scan(schedule.EndTime); err != nil {
logger.Warn().Err(err).Msg("bad request received, cannot parse schedule end time") logger.Warn().Interface("schedule", schedule).Err(err).Msg("bad request received, cannot parse schedule end time")
return sendAPIError(e, http.StatusBadRequest, "invalid format for schedule end time") return sendAPIError(e, http.StatusBadRequest, "invalid format for schedule end time")
} }
@ -84,6 +84,5 @@ func (f *Flamenco) SetWorkerSleepSchedule(e echo.Context, workerUUID string) err
return sendAPIError(e, http.StatusInternalServerError, "error fetching sleep schedule: %v", err) return sendAPIError(e, http.StatusInternalServerError, "error fetching sleep schedule: %v", err)
} }
logger.Info().Interface("schedule", schedule).Msg("worker sleep schedule updated")
return e.NoContent(http.StatusNoContent) return e.NoContent(http.StatusNoContent)
} }

View File

@ -9,6 +9,7 @@ import (
"time" "time"
"github.com/benbjohnson/clock" "github.com/benbjohnson/clock"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"git.blender.org/flamenco/internal/manager/persistence" "git.blender.org/flamenco/internal/manager/persistence"
@ -80,6 +81,11 @@ func (ss *SleepScheduler) SetSchedule(ctx context.Context, workerUUID string, sc
return fmt.Errorf("persisting sleep schedule of worker %s: %w", workerUUID, err) return fmt.Errorf("persisting sleep schedule of worker %s: %w", workerUUID, err)
} }
logger := addLoggerFields(zerolog.Ctx(ctx), schedule)
logger.Info().
Str("worker", schedule.Worker.Identifier()).
Msg("sleep scheduler: new schedule for worker")
return ss.ApplySleepSchedule(ctx, schedule) return ss.ApplySleepSchedule(ctx, schedule)
} }
@ -239,3 +245,19 @@ func (ss *SleepScheduler) mayUpdateWorker(worker *persistence.Worker) bool {
shouldSkip := skipWorkersInStatus[worker.Status] shouldSkip := skipWorkersInStatus[worker.Status]
return !shouldSkip return !shouldSkip
} }
func addLoggerFields(logger *zerolog.Logger, schedule *persistence.SleepSchedule) zerolog.Logger {
logCtx := logger.With()
if schedule.Worker != nil {
logCtx = logCtx.Str("worker", schedule.Worker.Identifier())
}
logCtx = logCtx.
Bool("isActive", schedule.IsActive).
Str("daysOfWeek", schedule.DaysOfWeek).
Stringer("startTime", schedule.StartTime).
Stringer("endTime", schedule.EndTime)
return logCtx.Logger()
}