diff --git a/api/jobs.go b/api/jobs.go index 90ba82061..db46c263e 100644 --- a/api/jobs.go +++ b/api/jobs.go @@ -81,12 +81,13 @@ func (j *Jobs) Evaluations(jobID string, q *QueryOptions) ([]*Evaluation, *Query } // Delete is used to remove an existing job. -func (j *Jobs) Delete(jobID string, q *WriteOptions) (*WriteMeta, error) { - wm, err := j.client.delete("/v1/job/"+jobID, nil, q) +func (j *Jobs) Delete(jobID string, q *WriteOptions) (string, *WriteMeta, error) { + var resp deregisterJobResponse + wm, err := j.client.delete("/v1/job/"+jobID, &resp, q) if err != nil { - return nil, err + return "", nil, err } - return wm, nil + return resp.EvalID, wm, nil } // ForceEvaluate is used to force-evaluate an existing job. @@ -206,3 +207,8 @@ type registerJobRequest struct { type registerJobResponse struct { EvalID string } + +// deregisterJobResponse is used to decode a deregister response +type deregisterJobResponse struct { + EvalID string +} diff --git a/api/jobs_test.go b/api/jobs_test.go index d421dde67..fa8c5a843 100644 --- a/api/jobs_test.go +++ b/api/jobs_test.go @@ -155,18 +155,21 @@ func TestJobs_Delete(t *testing.T) { assertWriteMeta(t, wm) // Attempting delete on non-existing job does not error - wm2, err := jobs.Delete("nope", nil) + _, wm2, err := jobs.Delete("nope", nil) if err != nil { t.Fatalf("err: %s", err) } assertWriteMeta(t, wm2) // Deleting an existing job works - wm3, err := jobs.Delete("job1", nil) + evalID, wm3, err := jobs.Delete("job1", nil) if err != nil { t.Fatalf("err: %s", err) } assertWriteMeta(t, wm3) + if evalID == "" { + t.Fatalf("missing eval ID") + } // Check that the job is really gone result, qm, err := jobs.List(nil)