taskcluster-client
Advanced tools
Comparing version
255
apis.json
@@ -21,4 +21,8 @@ { | ||
"scopes": [ | ||
"auth:inspect", | ||
"auth:credentials" | ||
[ | ||
"auth:inspect" | ||
], | ||
[ | ||
"auth:credentials" | ||
] | ||
], | ||
@@ -38,3 +42,5 @@ "output": "http://schemas.taskcluster.net/auth/v1/client-scopes-response.json#" | ||
"scopes": [ | ||
"auth:credentials" | ||
[ | ||
"auth:credentials" | ||
] | ||
], | ||
@@ -52,14 +58,21 @@ "output": "http://schemas.taskcluster.net/auth/v1/client-credentials-response.json#" | ||
"description": "The queue, typically available at `queue.taskcluster.net`, is responsible\nfor accepting tasks and track their state as they are executed by\nworkers. In order ensure they are eventually resolved.\n\nThis document describes the API end-points offered by the queue. These \nend-points targets the following audience:\n * Schedulers, who create tasks to be executed,\n * Workers, who execute tasks, and\n * Tools, that wants to inspect the state of a task.", | ||
"baseUrl": "http://queue.taskcluster.net/v1", | ||
"baseUrl": "https://queue.taskcluster.net/v1", | ||
"entries": [ | ||
{ | ||
"type": "function", | ||
"method": "post", | ||
"route": "/task/new", | ||
"args": [], | ||
"method": "put", | ||
"route": "/task/<taskId>", | ||
"args": [ | ||
"taskId" | ||
], | ||
"name": "createTask", | ||
"title": "Create new task", | ||
"description": "Create a new task, the `status` of the resulting JSON is a task status\nstructure, you can find the `taskId` in this structure, enjoy.", | ||
"description": "Create a new task, this is an **idempotent** operation, so repeat it if\nyou get an internal server error.\nDeadline is at most 7 days into the future", | ||
"scopes": [ | ||
[ | ||
"queue:put:task:<provisionerId>/<workerType>" | ||
] | ||
], | ||
"input": "http://schemas.taskcluster.net/queue/v1/task.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/create-task-response.json#" | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-status-response.json#" | ||
}, | ||
@@ -69,9 +82,10 @@ { | ||
"method": "get", | ||
"route": "/define-tasks", | ||
"args": [], | ||
"name": "defineTasks", | ||
"title": "Define Tasks", | ||
"description": "Request a number of `taskId`s and signed URL to which the tasks can be\nuploaded. The tasks will not be scheduled, to do this you must called the\n`/task/:taskId/schedule` API end-point.\n\nThe purpose of this API end-point is allow schedulers to upload a set of\ntasks to S3 without the tasks becoming _pending_ immediately. This useful\nif you have a set of dependent tasks. Then you can upload all the tasks\nand when the dependencies of a tasks have been resolved, you can schedule\nthe task by calling `/task/:taskId/schedule`. This eliminates the need to\nstore tasks somewhere else while waiting for dependencies to resolve.\n\n**Remark** the queue does not track tasks before they have been \n_scheduled_, hence, you'll not able to call `/task/:taskId/status` with\n`taskId`s assigned here, before they are scheduled with\n`/task/:taskId/schedule`.", | ||
"input": "http://schemas.taskcluster.net/queue/v1/define-tasks-request.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/define-tasks-response.json#" | ||
"route": "/task/<taskId>", | ||
"args": [ | ||
"taskId" | ||
], | ||
"name": "getTask", | ||
"title": "Fetch Task", | ||
"description": "Get task definition from queue.", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task.json#" | ||
}, | ||
@@ -81,2 +95,23 @@ { | ||
"method": "post", | ||
"route": "/task/<taskId>/define", | ||
"args": [ | ||
"taskId" | ||
], | ||
"name": "defineTask", | ||
"title": "Define Task", | ||
"description": "Define a task without scheduling it. This API end-point allows you to\nupload a task definition without having scheduled. The task won't be\nreported as pending until it is scheduled, see the scheduleTask API \nend-point.\n\nThe purpose of this API end-point is allow schedulers to upload task\ndefinitions without the tasks becoming _pending_ immediately. This useful\nif you have a set of dependent tasks. Then you can upload all the tasks\nand when the dependencies of a tasks have been resolved, you can schedule\nthe task by calling `/task/:taskId/schedule`. This eliminates the need to\nstore tasks somewhere else while waiting for dependencies to resolve.\n\n**Note** this operation is **idempotent**, as long as you upload the same\ntask definition as previously defined this operation is safe to retry.", | ||
"scopes": [ | ||
[ | ||
"queue:post:define-task:<provisionerId>/<workerType>" | ||
], | ||
[ | ||
"queue:put:task:<provisionerId>/<workerType>" | ||
] | ||
], | ||
"input": "http://schemas.taskcluster.net/queue/v1/task.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-status-response.json#" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "post", | ||
"route": "/task/<taskId>/schedule", | ||
@@ -88,4 +123,12 @@ "args": [ | ||
"title": "Schedule Defined Task", | ||
"description": "If you've uploaded task definitions to PUT URLs obtained from\n`/define-tasks`, then you can schedule the tasks using this method.\nThis will down fetch and validate the task definition against the\nrequired JSON schema.\n\nThis method has the same response as `/task/new`, using this method in\ncombination with `/define-tasks` is just an efficient way of storing\nand defining a set of tasks you want to schedule later.\n\n**Note** this operation is **idempotent** and will not fail or complain\nif called with `taskId` that is already scheduled, or even resolved.\nTo reschedule a task previously resolved, use `/task/:taskId/rerun`.", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-schedule-response.json#" | ||
"description": "If you have define a task using `defineTask` API end-point, then you\ncan schedule the task to be scheduled using this method.\nThis will announce the task as pending and workers will be allowed, to\nclaim it and resolved the task.\n\n**Note** this operation is **idempotent** and will not fail or complain\nif called with `taskId` that is already scheduled, or even resolved.\nTo reschedule a task previously resolved, use `rerunTask`.", | ||
"scopes": [ | ||
[ | ||
"queue:post:schedule-task:<provisionerId>/<workerType>" | ||
], | ||
[ | ||
"queue:put:task:<provisionerId>/<workerType>" | ||
] | ||
], | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-status-response.json#" | ||
}, | ||
@@ -111,3 +154,3 @@ { | ||
], | ||
"name": "getTaskStatus", | ||
"name": "status", | ||
"title": "Get task status", | ||
@@ -120,9 +163,17 @@ "description": "Get task status structure from `taskId`", | ||
"method": "post", | ||
"route": "/task/<taskId>/claim", | ||
"route": "/task/<taskId>/runs/<runId>/claim", | ||
"args": [ | ||
"taskId" | ||
"taskId", | ||
"runId" | ||
], | ||
"name": "claimTask", | ||
"title": "Claim task", | ||
"description": "Claim task, takes workerGroup, workerId and optionally runId as input\nreturns task status structure, runId, resultPutUrl and logsPutUrl", | ||
"description": "claim a task, more to be added later...", | ||
"scopes": [ | ||
[ | ||
"queue:post:claim-task", | ||
"queue:assume:worker-type:<provisionerId>/<workerType>", | ||
"queue:assume:worker-id:<workerGroup>/<workerId>" | ||
] | ||
], | ||
"input": "http://schemas.taskcluster.net/queue/v1/task-claim-request.json#", | ||
@@ -134,24 +185,17 @@ "output": "http://schemas.taskcluster.net/queue/v1/task-claim-response.json#" | ||
"method": "post", | ||
"route": "/task/<taskId>/artifact-urls", | ||
"route": "/task/<taskId>/runs/<runId>/reclaim", | ||
"args": [ | ||
"taskId" | ||
"taskId", | ||
"runId" | ||
], | ||
"name": "requestArtifactUrls", | ||
"title": "Get artifact urls", | ||
"description": "Get artifact-urls for posted artifact urls...", | ||
"input": "http://schemas.taskcluster.net/queue/v1/artifact-url-request.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/artifact-url-response.json#" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "post", | ||
"route": "/task/<taskId>/completed", | ||
"args": [ | ||
"taskId" | ||
"name": "reclaimTask", | ||
"title": "Reclaim task", | ||
"description": "reclaim a task more to be added later...", | ||
"scopes": [ | ||
[ | ||
"queue:post:claim-task", | ||
"queue:assume:worker-id:<workerGroup>/<workerId>" | ||
] | ||
], | ||
"name": "reportTaskCompleted", | ||
"title": "Report Completed Task", | ||
"description": "Report task completed...", | ||
"input": "http://schemas.taskcluster.net/queue/v1/task-completed-request.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-completed-response.json#" | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-claim-response.json#" | ||
}, | ||
@@ -168,5 +212,12 @@ { | ||
"title": "Claim work for a worker", | ||
"description": "Claim work for a worker, returns information about an appropriate task\nclaimed for the worker. Similar to `/v1/task/:taskId/claim`, which can be\nused to claim a specific task, or reclaim a specific task extending the\n`takenUntil` timeout for the run.\n\n**Note**, that if no tasks are _pending_ this method will not assign a\ntask to you. Instead it will return `204` with a timeout you should wait\nbefore polling the queue again. The response has the following form:\n`{sleep: <seconds to sleep>}`. To avoid this declare a RabbitMQ queue for\nyour `workerType` claim work using `/v1/task/:taskId/claim`.", | ||
"input": "http://schemas.taskcluster.net/queue/v1/claim-work-request.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/claim-work-response.json#" | ||
"description": "Claim work for a worker, returns information about an appropriate task\nclaimed for the worker. Similar to `claimTaskRun`, which can be\nused to claim a specific task, or reclaim a specific task extending the\n`takenUntil` timeout for the run.\n\n**Note**, that if no tasks are _pending_ this method will not assign a\ntask to you. Instead it will return `204` and you should wait a while\nbefore polling the queue again. To avoid polling declare a RabbitMQ queue\nfor your `workerType` claim work using `claimTaskRun`.", | ||
"scopes": [ | ||
[ | ||
"queue:post:claim-task-run", | ||
"queue:assume:worker-type:<provisionerId>/<workerType>", | ||
"queue:assume:worker-id:<workerGroup>/<workerId>" | ||
] | ||
], | ||
"input": "http://schemas.taskcluster.net/queue/v1/task-claim-request.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-claim-response.json#" | ||
}, | ||
@@ -176,2 +227,22 @@ { | ||
"method": "post", | ||
"route": "/task/<taskId>/runs/<runId>/completed", | ||
"args": [ | ||
"taskId", | ||
"runId" | ||
], | ||
"name": "reportCompleted", | ||
"title": "Report Run Completed", | ||
"description": "Report a run completed, resolving the run as `completed`.", | ||
"scopes": [ | ||
[ | ||
"queue:post:task-completed", | ||
"queue:assume:worker-id:<workerGroup>/<workerId>" | ||
] | ||
], | ||
"input": "http://schemas.taskcluster.net/queue/v1/task-completed-request.json#", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-status-response.json#" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "post", | ||
"route": "/task/<taskId>/rerun", | ||
@@ -184,7 +255,91 @@ "args": [ | ||
"description": "This method _reruns_ a previously resolved task, even if it was\n_completed_. This is useful if your task completes unsuccessfully, and\nyou just want to run it from scratch again. This will also reset the\nnumber of `retries` allowed.\n\nRemember that `retries` in the task status counts the number of runs that\nthe queue have started because the worker stopped responding, for example\nbecause a spot node died.\n\n**Remark** this operation is idempotent, if you try to rerun a task that\nisn't either `failed` or `completed`, this operation will just return the\ncurrent task status.", | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-rerun-response.json#" | ||
"scopes": [ | ||
[ | ||
"queue:post:rerun:<provisionerId>/<workerType>" | ||
] | ||
], | ||
"output": "http://schemas.taskcluster.net/queue/v1/task-status-response.json#" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "post", | ||
"route": "/task/<taskId>/runs/<runId>/artifacts/<name>", | ||
"args": [ | ||
"taskId", | ||
"runId", | ||
"name" | ||
], | ||
"name": "createArtifact", | ||
"title": "Create Artifact", | ||
"description": "TODO: document this method", | ||
"scopes": [ | ||
[ | ||
"queue:put:artifact:<name>", | ||
"queue:assume:worker-id:<workerGroup>/<workerId>" | ||
] | ||
], | ||
"input": "http://schemas.taskcluster.net/queue/v1/post-artifact-request.json", | ||
"output": "http://schemas.taskcluster.net/queue/v1/post-artifact-response.json" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "get", | ||
"route": "/task/<taskId>/runs/<runId>/artifacts/<name>", | ||
"args": [ | ||
"taskId", | ||
"runId", | ||
"name" | ||
], | ||
"name": "getArtifactFromRun", | ||
"title": "Get Artifact from Run", | ||
"description": "TODO: document this method", | ||
"scopes": [ | ||
[ | ||
"queue:get:artifact:<name>" | ||
] | ||
] | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "get", | ||
"route": "/task/<taskId>/artifacts/<name>", | ||
"args": [ | ||
"taskId", | ||
"name" | ||
], | ||
"name": "getLatestArtifact", | ||
"title": "Get Artifact from Latest Run", | ||
"description": "TODO: document this method", | ||
"scopes": [ | ||
[ | ||
"queue:get:artifact:<name>" | ||
] | ||
] | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "get", | ||
"route": "/task/<taskId>/runs/<runId>/artifacts", | ||
"args": [ | ||
"taskId", | ||
"runId" | ||
], | ||
"name": "getArtifactsFromRun", | ||
"title": "Get Artifacts from Run", | ||
"description": "TODO: document this method" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "get", | ||
"route": "/task/<taskId>/artifacts", | ||
"args": [ | ||
"taskId" | ||
], | ||
"name": "getLatestArtifacts", | ||
"title": "Get Artifacts from Latest Run", | ||
"description": "TODO: document this method" | ||
}, | ||
{ | ||
"type": "function", | ||
"method": "get", | ||
"route": "/pending-tasks/<provisionerId>", | ||
@@ -237,3 +392,3 @@ "args": [ | ||
"multipleWords": false, | ||
"required": false, | ||
"required": true, | ||
"maxSize": 3 | ||
@@ -297,3 +452,3 @@ }, | ||
"multipleWords": false, | ||
"required": false, | ||
"required": true, | ||
"maxSize": 3 | ||
@@ -357,3 +512,3 @@ }, | ||
"multipleWords": false, | ||
"required": false, | ||
"required": true, | ||
"maxSize": 3 | ||
@@ -417,3 +572,3 @@ }, | ||
"multipleWords": false, | ||
"required": false, | ||
"required": true, | ||
"maxSize": 3 | ||
@@ -836,2 +991,2 @@ }, | ||
} | ||
} | ||
} |
{ | ||
"name": "taskcluster-client", | ||
"version": "0.8.0", | ||
"version": "0.9.0", | ||
"author": "Jonas Finnemann Jensen <jopsen@gmail.com>", | ||
@@ -5,0 +5,0 @@ "description": "Client for interfacing taskcluster components", |
116393
3.97%25
25%2136
8.21%