1f817b6a50
Track multiple job versions and introduce a stop state for jobs
15 KiB
15 KiB
layout | page_title | sidebar_current | description |
---|---|---|---|
http | HTTP API: /v1/job | docs-http-job- | The '/1/job' endpoint is used for CRUD on a single job. |
/v1/job
The job
endpoint is used for CRUD on a single job. By default, the agent's local
region is used; another region can be specified using the ?region=
query parameter.
GET
- Description
- Query a single job for its specification and status.
- Method
- GET
- URL
- `/v1/job/`
- Parameters
- None
- Blocking Queries
- [Supported](/docs/http/index.html#blocking-queries)
- Returns
-
```javascript { "Region": "global", "ID": "binstore-storagelocker", "Name": "binstore-storagelocker", "Type": "service", "Priority": 50, "AllAtOnce": false, "Datacenters": [ "us2", "eu1" ], "Constraints": [ { "LTarget": "${attr.kernel.os}", "RTarget": "windows", "Operand": "=" } ], "TaskGroups": [ { "Name": "binsl", "Count": 5, "Constraints": [ { "LTarget": "${attr.kernel.os}", "RTarget": "linux", "Operand": "=" } ], "Tasks": [ { "Name": "binstore", "Driver": "docker", "Config": { "image": "hashicorp/binstore" }, "Constraints": null, "Resources": { "CPU": 500, "MemoryMB": 0, "DiskMB": 0, "IOPS": 0, "Networks": [ { "Device": "", "CIDR": "", "IP": "", "MBits": 100, "ReservedPorts": null, "DynamicPorts": null } ] }, "Meta": null }, { "Name": "storagelocker", "Driver": "java", "Config": { "image": "hashicorp/storagelocker" }, "Constraints": [ { "LTarget": "${attr.kernel.arch}", "RTarget": "amd64", "Operand": "=" } ], "Resources": { "CPU": 500, "MemoryMB": 0, "DiskMB": 0, "IOPS": 0, "Networks": null }, "Meta": null } ], "Meta": { "elb_checks": "3", "elb_interval": "10", "elb_mode": "tcp" } } ], "Update": { "Stagger": 0, "MaxParallel": 0 }, "Meta": { "foo": "bar" }, "Status": "", "StatusDescription": "", "Version": 3, "CreateIndex": 14, "ModifyIndex": 14 } ```
- Description
- Query all versions of a single job.
- Method
- GET
- URL
- `/v1/job//versions`
- Parameters
- None
- Blocking Queries
- [Supported](/docs/http/index.html#blocking-queries)
- Returns
-
```javascript [ { "Region": "global", "ID": "binstore-storagelocker", "Version": 2, ... }, { "Region": "global", "ID": "binstore-storagelocker", "Version": 1, ... }, { "Region": "global", "ID": "binstore-storagelocker", "Version": 0, ... } ] ```
- Description
- Query the allocations belonging to a single job.
- Method
- GET
- URL
- `/v1/job//allocations`
- Parameters
-
- all optional Returns all allocations of job with the given ID including those from past instances of the job.
- Blocking Queries
- [Supported](/docs/http/index.html#blocking-queries)
- Returns
-
```javascript [ { "ID": "3575ba9d-7a12-0c96-7b28-add168c67984", "EvalID": "151accaa-1ac6-90fe-d427-313e70ccbb88", "Name": "binstore-storagelocker.binsl[0]", "NodeID": "a703c3ca-5ff8-11e5-9213-970ee8879d1b", "JobID": "binstore-storagelocker", "TaskGroup": "binsl", "DesiredStatus": "run", "DesiredDescription": "", "ClientStatus": "running", "ClientDescription": "", "CreateIndex": 16, "ModifyIndex": 16 }, ... ] ```
- Description
- Query the evaluations belonging to a single job.
- Method
- GET
- URL
- `/v1/job//evaluations`
- Parameters
- None
- Blocking Queries
- [Supported](/docs/http/index.html#blocking-queries)
- Returns
-
```javascript [ { "ID": "151accaa-1ac6-90fe-d427-313e70ccbb88", "Priority": 50, "Type": "service", "TriggeredBy": "job-register", "JobID": "binstore-storagelocker", "JobModifyIndex": 14, "NodeID": "", "NodeModifyIndex": 0, "Status": "complete", "StatusDescription": "", "Wait": 0, "NextEval": "", "PreviousEval": "", "CreateIndex": 15, "ModifyIndex": 17 }, ... ] ```
- Description
- Query the summary of a job.
- Method
- GET
- URL
- `/v1/job//summary`
- Parameters
- None
- Blocking Queries
- [Supported](/docs/http/index.html#blocking-queries)
- Returns
-
```javascript { "JobID": "example", "Children": { "Dead": 0, "Running": 7, "Pending": 2 }, "Summary": { "cache": { "Queued": 0, "Complete": 0, "Failed": 0, "Running": 1, "Starting": 0, "Lost": 0 } }, "CreateIndex": 6, "ModifyIndex": 10 } ```
PUT / POST
- Description
- Registers a new job or updates an existing job
- Method
- PUT or POST
- URL
- `/v1/job/`
- Parameters
-
- Job required The JSON definition of the job.
- EnforceIndex optional If EnforceIndex is set the job will only be registered if the passed JobModifyIndex matches the current job's index. If the index is zero, the register only occurs if the job is new. This paradigm allows check-and-set style job updating.
- JobModifyIndex optional The JobModifyIndex to enforce the current job is at.
- Returns
-
```javascript { "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac", "EvalCreateIndex": 35, "JobModifyIndex": 34, } ```
- Description
- Dispatch a new instance of a parameterized job.
- Method
- PUT or POST
- URL
- `/v1/job//dispatch`
- Parameters
-
- Payload optional A `[]byte` array encoded as a base64 string with a maximum size of 16KiB.
- Meta optional A `map[string]string` of metadata keys to their values.
- Returns
-
```javascript { "Index": 13, "JobCreateIndex": 12, "EvalCreateIndex": 13, "EvalID": "e5f55fac-bc69-119d-528a-1fc7ade5e02c", "DispatchedJobID": "example/dispatch-1485408778-81644024" } ```
- Description
- Creates a new evaluation for the given job. This can be used to force run the scheduling logic if necessary.
- Method
- PUT or POST
- URL
- `/v1/job//evaluate`
- Parameters
- None
- Returns
-
```javascript { "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac", "EvalCreateIndex": 35, "JobModifyIndex": 34, } ```
- Description
- Invoke a dry-run of the scheduler for the job.
- Method
- PUT or POST
- URL
- `/v1/job//plan`
- Parameters
-
- Job required The JSON definition of the job.
- Diff optional Whether the diff structure between the submitted and server side version of the job should be included in the response.
- Returns
-
```javascript { "Index": 0, "NextPeriodicLaunch": "0001-01-01T00:00:00Z", "Diff": { "Type": "Added", "TaskGroups": [ { "Updates": { "create": 1 }, "Type": "Added", "Tasks": [ { "Type": "Added", "Objects": [...], "Name": "redis", "Fields": [ { "Type": "Added", "Old": "", "New": "docker", "Name": "Driver", "Annotations": null }, { "Type": "Added", "Old": "", "New": "5000000000", "Name": "KillTimeout", "Annotations": null } ], "Annotations": [ "forces create" ] } ], "Objects": [...], "Name": "cache", "Fields": [...] } ], "Objects": [ { "Type": "Added", "Objects": null, "Name": "Datacenters", "Fields": [...] }, { "Type": "Added", "Objects": null, "Name": "Constraint", "Fields": [...] }, { "Type": "Added", "Objects": null, "Name": "Update", "Fields": [...] } ], "ID": "example", "Fields": [...], ... ] }, "CreatedEvals": [ { "ModifyIndex": 0, "CreateIndex": 0, "SnapshotIndex": 0, "AnnotatePlan": false, "EscapedComputedClass": false, "NodeModifyIndex": 0, "NodeID": "", "JobModifyIndex": 0, "JobID": "example", "TriggeredBy": "job-register", "Type": "batch", "Priority": 50, "ID": "312e6a6d-8d01-0daf-9105-14919a66dba3", "Status": "blocked", "StatusDescription": "created to place remaining allocations", "Wait": 0, "NextEval": "", "PreviousEval": "80318ae4-7eda-e570-e59d-bc11df134817", "BlockedEval": "", "FailedTGAllocs": null, "ClassEligibility": { "v1:7968290453076422024": true } } ], "JobModifyIndex": 0, "FailedTGAllocs": { "cache": { "CoalescedFailures": 3, "AllocationTime": 46415, "Scores": null, "NodesEvaluated": 1, "NodesFiltered": 0, "NodesAvailable": { "dc1": 1 }, "ClassFiltered": null, "ConstraintFiltered": null, "NodesExhausted": 1, "ClassExhausted": null, "DimensionExhausted": { "cpu exhausted": 1 } } }, "Annotations": { "DesiredTGUpdates": { "cache": { "DestructiveUpdate": 0, "InPlaceUpdate": 0, "Stop": 0, "Migrate": 0, "Place": 11, "Ignore": 0 } } } } ```
- Field Reference
-
- Diff A diff structure between the submitted job and the server side version. The top-level object is a Job Diff which contains Task Group Diffs, which in turn contain Task Diffs. Each of these objects then has Object and Field Diff structures embedded.
- NextPeriodicLaunch If the job being planned is periodic, this field will include the next launch time for the job.
- CreatedEvals A set of evaluations that were created as a result of the dry-run. These evaluations can signify a follow-up rolling update evaluation or a blocked evaluation.
- JobModifyIndex The JobModifyIndex of the server side version of this job.
- FailedTGAllocs A set of metrics to understand any allocation failures that occurred for the Task Group.
- Annotations Annotations include the DesiredTGUpdates, which tracks what the scheduler would do given enough resources for each Task Group.
- Description
- Forces a new instance of the periodic job. A new instance will be created even if it violates the job's [`prohibit_overlap`](/docs/job-specification/periodic.html#prohibit_overlap) settings. As such, this should be only used to immediately run a periodic job.
- Method
- PUT or POST
- URL
- `/v1/job//periodic/force`
- Parameters
- None
- Returns
-
```javascript { "EvalCreateIndex": 7, "EvalID": "57983ddd-7fcf-3e3a-fd24-f699ccfb36f4" } ```
DELETE
- Description
- Deregisters a job, and stops all allocations part of it.
- Method
- DELETE
- URL
- `/v1/job/`
- Parameters
- None
- Returns
-
```javascript { "EvalID": "d092fdc0-e1fd-2536-67d8-43af8ca798ac", "EvalCreateIndex": 35, "JobModifyIndex": 34, } ```