diff options
Diffstat (limited to 'internal/server/scheduler.go')
| -rw-r--r-- | internal/server/scheduler.go | 96 |
1 files changed, 47 insertions, 49 deletions
diff --git a/internal/server/scheduler.go b/internal/server/scheduler.go index a1e9e36..cc51b7e 100644 --- a/internal/server/scheduler.go +++ b/internal/server/scheduler.go @@ -10,25 +10,23 @@ import ( "github.com/mimecast/dtail/internal/clients" "github.com/mimecast/dtail/internal/config" - "github.com/mimecast/dtail/internal/io/logger" + "github.com/mimecast/dtail/internal/io/dlog" "github.com/mimecast/dtail/internal/omode" gossh "golang.org/x/crypto/ssh" ) -type scheduler struct { -} +type scheduler struct{} func newScheduler() *scheduler { return &scheduler{} } func (s *scheduler) start(ctx context.Context) { - logger.Info("Starting scheduled job runner after 10s") + dlog.Server.Info("Starting scheduled job runner after 2s") // First run after just 10s! - time.Sleep(time.Second * 10) + time.Sleep(time.Second * 2) s.runJobs(ctx) - for { select { case <-time.After(time.Minute): @@ -42,64 +40,64 @@ func (s *scheduler) start(ctx context.Context) { func (s *scheduler) runJobs(ctx context.Context) { for _, job := range config.Server.Schedule { if !job.Enable { - logger.Debug(job.Name, "Not running job as not enabled") + dlog.Server.Debug(job.Name, "Not running job as not enabled") continue } - hour, err := strconv.Atoi(time.Now().Format("15")) if err != nil { - logger.Error(job.Name, "Unable to create job", err) + dlog.Server.Error(job.Name, "Unable to create job", err) continue } - if hour < job.TimeRange[0] || hour >= job.TimeRange[1] { - logger.Debug(job.Name, "Not running job out of time range") - continue - } - - files := fillDates(job.Files) - outfile := fillDates(job.Outfile) - - _, err = os.Stat(outfile) - if !os.IsNotExist(err) { - logger.Debug(job.Name, "Not running job as outfile already exists", outfile) + dlog.Server.Debug(job.Name, "Not running job out of time range") continue } + s.runJob(ctx, job) + } +} - servers := strings.Join(job.Servers, ",") - if servers == "" { - servers = config.Server.SSHBindAddress - } +func (s *scheduler) runJob(ctx context.Context, job config.Scheduled) { + files := fillDates(job.Files) + outfile := fillDates(job.Outfile) - args := clients.Args{ - ConnectionsPerCPU: 10, - Discovery: job.Discovery, - ServersStr: servers, - What: files, - Mode: omode.MapClient, - UserName: config.ScheduleUser, - } + _, err := os.Stat(outfile) + if !os.IsNotExist(err) { + dlog.Server.Debug(job.Name, "Not running job as outfile already exists", outfile) + return + } - args.SSHAuthMethods = append(args.SSHAuthMethods, gossh.Password(job.Name)) + servers := strings.Join(job.Servers, ",") + if servers == "" { + servers = config.Server.SSHBindAddress + } + args := config.Args{ + ConnectionsPerCPU: config.DefaultConnectionsPerCPU, + Discovery: job.Discovery, + ServersStr: servers, + What: files, + Mode: omode.MapClient, + UserName: config.ScheduleUser, + } - query := fmt.Sprintf("%s outfile %s", job.Query, outfile) - client, err := clients.NewMaprClient(args, query, clients.CumulativeMode) - if err != nil { - logger.Error(fmt.Sprintf("Unable to create job %s", job.Name), err) - continue - } + args.SSHAuthMethods = append(args.SSHAuthMethods, gossh.Password(job.Name)) + args.QueryStr = fmt.Sprintf("%s outfile %s", job.Query, outfile) + client, err := clients.NewMaprClient(args, clients.CumulativeMode) + if err != nil { + dlog.Server.Error(fmt.Sprintf("Unable to create job %s", job.Name), err) + return + } - jobCtx, cancel := context.WithCancel(ctx) - defer cancel() + jobCtx, cancel := context.WithCancel(ctx) + defer cancel() - logger.Info(fmt.Sprintf("Starting job %s", job.Name)) - status := client.Start(jobCtx, make(chan string)) - logMessage := fmt.Sprintf("Job exited with status %d", status) + dlog.Server.Info(fmt.Sprintf("Starting job %s", job.Name)) + status := client.Start(jobCtx, make(chan string)) + logMessage := fmt.Sprintf("Job exited with status %d", status) - if status != 0 { - logger.Warn(logMessage) - continue - } - logger.Info(logMessage) + if status != 0 { + dlog.Server.Warn(logMessage) + return } + + dlog.Server.Info(logMessage) } |
