mirror of
https://github.com/kemko/nomad.git
synced 2026-01-03 17:05:43 +03:00
api: support force-eval
This commit is contained in:
10
api/jobs.go
10
api/jobs.go
@@ -82,6 +82,16 @@ func (j *Jobs) Delete(jobID string, q *WriteOptions) (*WriteMeta, error) {
|
||||
return wm, nil
|
||||
}
|
||||
|
||||
// ForceEvaluate is used to force-evaluate an existing job.
|
||||
func (j *Jobs) ForceEvaluate(jobID string, q *WriteOptions) (string, *WriteMeta, error) {
|
||||
var resp registerJobResponse
|
||||
wm, err := j.client.write("/v1/job/"+jobID+"/evaluate", nil, &resp, q)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
return resp.EvalID, wm, nil
|
||||
}
|
||||
|
||||
// Job is used to serialize a job.
|
||||
type Job struct {
|
||||
ID string
|
||||
|
||||
@@ -179,6 +179,45 @@ func TestJobs_Delete(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestJobs_ForceEvaluate(t *testing.T) {
|
||||
c, s := makeClient(t, nil, nil)
|
||||
defer s.Stop()
|
||||
jobs := c.Jobs()
|
||||
|
||||
// Force-eval on a non-existent job fails
|
||||
_, _, err := jobs.ForceEvaluate("job1", nil)
|
||||
if err == nil || !strings.Contains(err.Error(), "not found") {
|
||||
t.Fatalf("expected not found error, got: %#v", err)
|
||||
}
|
||||
|
||||
// Create a new job
|
||||
_, wm, err := jobs.Register(testJob(), nil)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
assertWriteMeta(t, wm)
|
||||
|
||||
// Try force-eval again
|
||||
evalID, wm, err := jobs.ForceEvaluate("job1", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
assertWriteMeta(t, wm)
|
||||
|
||||
// Retrieve the evals and see if we get a matching one
|
||||
evals, qm, err := jobs.Evaluations("job1", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
assertQueryMeta(t, qm)
|
||||
for _, eval := range evals {
|
||||
if eval.ID == evalID {
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Fatalf("evaluation %q missing", evalID)
|
||||
}
|
||||
|
||||
func TestJobs_NewBatchJob(t *testing.T) {
|
||||
job := NewBatchJob("job1", "myjob", 5)
|
||||
expect := &Job{
|
||||
|
||||
Reference in New Issue
Block a user