github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/taskrunner/runner.go (about)

     1  package taskrunner
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/evergreen-ci/evergreen"
     7  	"github.com/evergreen-ci/evergreen/model"
     8  	"github.com/mongodb/grip"
     9  	"github.com/pkg/errors"
    10  )
    11  
    12  type Runner struct{}
    13  
    14  const (
    15  	RunnerName  = "taskrunner"
    16  	Description = "dispatch agents to free hosts"
    17  )
    18  
    19  func (r *Runner) Name() string {
    20  	return RunnerName
    21  }
    22  
    23  func (r *Runner) Description() string {
    24  	return Description
    25  }
    26  
    27  func (r *Runner) Run(config *evergreen.Settings) error {
    28  	startTime := time.Now()
    29  	grip.Infoln("Starting taskrunner at time", startTime)
    30  
    31  	if err := NewTaskRunner(config).Run(); err != nil {
    32  		err = errors.Wrap(err, "error running taskrunner")
    33  		grip.Error(err)
    34  		return err
    35  	}
    36  
    37  	runtime := time.Since(startTime)
    38  	if err := model.SetProcessRuntimeCompleted(RunnerName, runtime); err != nil {
    39  		grip.Errorln("error updating process status:", err)
    40  	}
    41  
    42  	grip.Infof("Taskrunner took %s to run", runtime)
    43  	return nil
    44  }