Expiring Actions
Released in 0.4.9
Action expiration + additional action metadata
Some actions in Singularity now have the concept of expiration (as in, giving up after a certain period of time). Corresponding endpoints have been updated to accept more information about action expiration and action metadata.
Rack and agent operations
/racks/rack/{rackId}/decommission/racks/rack/{rackId}/freeze/racks/rack/{rackId}/activate/slaves/slave/{agentId}/decommission/slaves/slave/{agentId}/freeze/slaves/slave/{agentId}/activate
These URLs accept a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| message | string | optional | A message to show to users about why this action was taken |
Request bounce
/requests/request/{requestId}/bounce
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| skipHealthchecks | boolean | optional | Instruct replacement tasks for this bounce only to skip healthchecks |
| durationMillis | long | optional | The number of milliseconds to wait before reversing the effects of this action (letting it expire) |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
| incremental | boolean | optional | If present and set to true, old tasks will be killed as soon as replacement tasks are available, instead of waiting for all replacement tasks to be healthy |
Scheduling a request to run immediately
/requests/request/{requestId}/run
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| runId | string | optional | An id to associate with this request which will be associated with the corresponding launched tasks |
| skipHealthchecks | boolean | optional | If set to true, healthchecks will be skipped for this task run |
| commandLineArgs | Array[string] | optional | Command line arguments to be passed to the task |
| message | string | optional | A message to show to users about why this action was taken |
Unpausing a request
/requests/request/{requestId}/unpause
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| skipHealthchecks | boolean | optional | If set to true, instructs new tasks that are scheduled immediately while unpausing to skip healthchecks |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
Exit request cooldown
/requests/request/{requestId}/exit-cooldown
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| skipHealthchecks | boolean | optional | Instruct new tasks that are scheduled immediately while executing cooldown to skip healthchecks |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
Deleting a request
/requests/request/{requestId}
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
Killing a task
/tasks/task/{taskId}
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| waitForReplacementTask | boolean | optional | If set to true, treats this task kill as a bounce - launching another task and waiting for it to become healthy |
| override | boolean | optional | If set to true, instructs the executor to attempt to immediately kill the task, rather than waiting gracefully |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
Scaling requests
/requests/request/{requestId}/scale(previously/requests/request/{requestId}/instances)
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| skipHealthchecks | boolean | optional | If set to true, healthchecks will be skipped while scaling this request (only) |
| durationMillis | long | optional | The number of milliseconds to wait before reversing the effects of this action (letting it expire) |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
| instances | int | optional | The number of instances to scale to |
Pausing a request
/requests/request/{requestId}/pause
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| durationMillis | long | optional | The number of milliseconds to wait before reversing the effects of this action (letting it expire) |
| killTasks | boolean | optional | If set to false, tasks will be allowed to finish instead of killed immediately |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
NOTE: The user field has been removed from this object.
Disabling request healthchecks
/requests/request/{requestId}/skip-healthchecks
This URL accepts a JSON object with this format:
| name | type | required | description |
|---|---|---|---|
| skipHealthchecks | boolean | optional | If set to true, healthchecks will be skipped for all tasks for this request until reversed |
| durationMillis | long | optional | The number of milliseconds to wait before reversing the effects of this action (letting it expire) |
| message | string | optional | A message to show to users about why this action was taken |
| actionId | string | optional | An id to associate with this action for metadata purposes |
New endpoints for cancelling actions
These endpoints were added in order to support cancelling certain actions:
DELETE /requests/request/{requestId}/scale-- Cancel an expiring scaleDELETE /requests/request/{requestId}/skip-healthchecks-- Cancel an expiring skip healthchecks overrideDELETE /request/{requestId}/pause-- Cancel (unpause) an expiring pauseDELETE /request/{requestId}/bounce-- Cancel a bounce