| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package oncron
- import (
- "github.com/OliveTin/OliveTin/internal/acl"
- "github.com/OliveTin/OliveTin/internal/config"
- "github.com/OliveTin/OliveTin/internal/executor"
- "github.com/robfig/cron/v3"
- log "github.com/sirupsen/logrus"
- )
- func Schedule(cfg *config.Config, ex *executor.Executor) {
- scheduler := cron.New(cron.WithSeconds())
- for _, action := range cfg.Actions {
- for _, cronline := range action.ExecOnCron {
- scheduleAction(cfg, scheduler, cronline, ex, action)
- }
- }
- scheduler.Start()
- }
- func scheduleAction(cfg *config.Config, scheduler *cron.Cron, cronline string, ex *executor.Executor, action config.Action) {
- log.WithFields(log.Fields{
- "action": action.Title,
- "cronline": cronline,
- }).Infof("Scheduling Action for cron")
- _, err := scheduler.AddFunc(cronline, func() {
- req := &executor.ExecutionRequest{
- ActionName: action.Title,
- Cfg: cfg,
- Tags: []string{"cron"},
- AuthenticatedUser: &acl.AuthenticatedUser{
- Username: "cron",
- },
- }
- ex.ExecRequest(req)
- })
- if err != nil {
- log.WithFields(log.Fields{
- "action": action.Title,
- "cronError": err,
- }).Errorf("CRON schedule error")
- return
- }
- }
|