Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1056104 - [RFE][ironic]: Aborting node deployment
Summary: [RFE][ironic]: Aborting node deployment
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-ironic
Version: unspecified
Hardware: Unspecified
OS: Unspecified
Target Milestone: ---
: ---
Assignee: Lucas Alvares Gomes
QA Contact: Shai Revivo
Whiteboard: upstream_milestone_none upstream_stat...
Depends On:
TreeView+ depends on / blocked
Reported: 2014-01-21 14:21 UTC by RHOS Integration
Modified: 2018-04-30 12:01 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
Last Closed: 2016-05-20 03:15:11 UTC
Target Upstream Version:

Attachments (Terms of Use)

Description RHOS Integration 2014-01-21 14:21:11 UTC
Cloned from launchpad blueprint


The utility-ramdisk blueprint[1] will make the ramdisk to ask the Ironic API for the next task it has to execute, when the deployment is set to be aborted, in the next iteration with the Ironic API, the API will just tell the node to stop everything it's doing and power-off, the API should also be responsable for cleaning up the target state of that node.

Some deployments can't be aborted, for e.g firmware updates. When the driver is about to start a deployment (after validations) it should mark that deployment as interruptible[2].


API Design:

The provisionment of a node is an asynchronous task that could be trigged via the Ironic API by sending a PUT request to the /nodes/<uuid>/states/provision URI. Each node can only run one provision task per time and the state of the task is traceable by sending a GET to the /nodes/<uuid>/states URI that will return the current and target states of the node.

In order to abort that task, this blueprint proposes the following design on the Ironic API:

* Using the DELETE method to trigger the abortion
* DELETE as an asynchronous task

The client could issue a DELETE to the /nodes/<uuid>/provision URI, HTTP 202 (Accepted) will be returned which would imply that the task has been *marked* for abort. The status of the process is traceable by issuing a GET to the /nodes/<uuid>/states URI and getting the current and target states of the node.

Issuing a DELETE to the /nodes/<uuid>/provision URI on a interruptible deployment will return HTTP 403 (Forbidden) indicating that the deployment can't be aborted and the request should not be repeated.

Issuing a DELETE to the /nodes/<uuid>/provision URI when there's no task running or it's already completed should just return HTTP 404 (NotFound) indicating there's no provision task running in the moment.

Specification URL (additional information):


Note You need to log in before you can comment on or make changes to this bug.