// attemptMap turns a single attempt into the map returned by // GetChildWorkUnits(). func attemptMap(attempt coordinate.Attempt) (map[string]interface{}, error) { // First try to swap out attempt for its work unit's actual // active attempt. workUnit := attempt.WorkUnit() activeAttempt, err := workUnit.ActiveAttempt() if err != nil { return nil, err } if activeAttempt != nil { attempt = activeAttempt } // Collect extra data we need and build the result data, err := attempt.Data() if err != nil { return nil, err } expires, err := attempt.ExpirationTime() if err != nil { return nil, err } result := map[string]interface{}{ "work_spec_name": workUnit.WorkSpec().Name(), "work_unit_key": []byte(workUnit.Name()), "work_unit_data": data, "worker_id": attempt.Worker().Name(), "expires": expires.Unix(), } return result, nil }
func getWorkTuple(attempt coordinate.Attempt) (cborrpc.PythonTuple, error) { data, err := attempt.Data() if err != nil { return cborrpc.PythonTuple{}, err } workUnit := attempt.WorkUnit() return cborrpc.PythonTuple{Items: []interface{}{ workUnit.WorkSpec().Name(), []byte(workUnit.Name()), data, }}, nil }
func (api *restAPI) fillAttempt(namespace coordinate.Namespace, attempt coordinate.Attempt, repr *restdata.Attempt) error { err := api.fillAttemptShort(namespace, attempt, &repr.AttemptShort) if err == nil { repr.Status, err = attempt.Status() } if err == nil { repr.Data, err = attempt.Data() } if err == nil { repr.EndTime, err = attempt.EndTime() } if err == nil { repr.ExpirationTime, err = attempt.ExpirationTime() } builder := api.attemptURLBuilder(namespace, attempt, repr.StartTime, err) builder.URL(&repr.RenewURL, "attemptRenew") builder.URL(&repr.ExpireURL, "attemptExpire") builder.URL(&repr.FinishURL, "attemptFinish") builder.URL(&repr.FailURL, "attemptFail") builder.URL(&repr.RetryURL, "attemptRetry") return builder.Error }