Example #1
0
func (w *worker) MakeAttempt(unit coordinate.WorkUnit, lifetime time.Duration) (coordinate.Attempt, error) {
	req := restdata.AttemptSpecific{
		WorkSpec: unit.WorkSpec().Name(),
		WorkUnit: unit.Name(),
		Lifetime: lifetime,
	}
	var a attempt
	err := w.PostTo(w.Representation.MakeAttemptURL, map[string]interface{}{}, req, &a.Representation)
	if err != nil {
		return nil, err
	}

	a.URL, err = w.URL.Parse(a.Representation.URL)
	if err != nil {
		return nil, err
	}
	aUnit, _ := unit.(*workUnit)
	err = a.fillReferences(aUnit, w)
	if err != nil {
		return nil, err
	}

	return &a, nil
}