[openstack-dev] [nova] Volume attachment APIs CRUD inconsistencies

Matt Riedemann mriedem at linux.vnet.ibm.com
Sat Dec 12 01:33:25 UTC 2015

On 12/11/2015 1:48 PM, Sam Matzek wrote:
> The CRUD operations for Nova volume attachments have inconsistencies
> between documentation and implementation.  Additionally, the read/get
> operation is implemented twice under different URIs.  What is Nova's
> direction for volume attachment APIs and how should the following
> discrepancies be resolved?
> The current state of affairs is:
> CREATE (volume attach) is documented twice under two different URIs: [1]
> and [2], but only os-volume_attachments [1] is implemented [3].
> Attach volume as an action on the servers URI appears to have been part
> of the Nova V3 API, but its implementation no longer exists.
> Is it the future direction to have volume attach and detach done as
> server actions?
> READ is implemented twice and documented twice under two different URIs:
> os-volume_attachments [5] and server details [6]
> The two implementations do not return the same information and the only
> bit of information that is common between them is the volume ID.
> Why do we have two implementations and is one preferred over the other?
> Should one be deprecated and eventually removed with all enhancements
> going into the other?
> UPDATE is implemented [4] but not documented.
> DELETE (detach) only appears to be implemented and documented once: [7]
> A blueprint proposal exists [8] to enhance the attach and update APIs to
> set and modify the delete_on_termination flag.  The discrepancies in the
> create and read operations calls into question whether the update change
> should be on the PUT /servers API to match the server's read [6] or if
> the os-volume_attachments update API should be modified to line up with
> os-volume_attachments read.
> [1] http://developer.openstack.org/api-ref-compute-v2-ext.html#attachVolume
> [2] http://developer.openstack.org/api-ref-compute-v2.1.html#attach
> [3]
> https://ask.openstack.org/en/question/85242/the-api-action-attach-is-missing/
> [4]
> https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/volumes.py#L318
> [5] http://developer.openstack.org/api-ref-compute-v2-ext.html#attachVolume
> [6]
> http://developer.openstack.org/api-ref-compute-v2.1.html#listDetailServers
> [7]
> http://developer.openstack.org/api-ref-compute-v2-ext.html#deleteVolumeAttachment
> [8]
> https://blueprints.launchpad.net/nova/+spec/delete-on-termination-modification
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Several of the different paths you're pointing out are v2 legacy (e.g. 
anything with *-v2-ext.html). Anything with v2.1 is, well, the v2.1 API 
and is current.

The code is very similar in most cases between v2 and v2.1. The main 
differences with v2.1 are (1) jsonschema validation on the front-end and 
(2) microversion support. More info is here [1].

As for docs, there are a lot of missing docs or incorrect docs in the 
compute API. There is an etherpad [2] on gaps to fill there, patches are 

[1] http://docs.openstack.org/developer/nova/#compute-api-references
[2] https://etherpad.openstack.org/p/nova-v2.1-api-doc



Matt Riedemann

More information about the OpenStack-dev mailing list