Пример #1
0
func RunJob(job *jobfile.Job, ctx context.Context, shell string, testing bool) *jobfile.RunRec {
	rec := &jobfile.RunRec{Job: job, RunTime: time.Now()}

	// run
	var sudoResult *common.SudoResult
	sudoResult, err := common.Sudo(job.User, job.Cmd, shell, nil)

	if err != nil {
		/* unexpected error while trying to run job */
		rec.Err = err
		return rec
	}

	// update run rec
	rec.Succeeded = sudoResult.Succeeded
	rec.NewStatus = jobfile.JobGood
	rec.Stdout = &sudoResult.Stdout
	rec.Stderr = &sudoResult.Stderr

	if !testing {
		// update job
		if sudoResult.Succeeded {
			/* job succeeded */
			job.Status = jobfile.JobGood
		} else {
			/* job failed: apply error-handler (which sets job.Status) */
			job.ErrorHandler.Apply(job)
		}
		job.LastRunTime = rec.RunTime

		// update rec.NewStatus
		rec.NewStatus = job.Status
	}

	return rec
}