// 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 }