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-requ...@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 welcome.

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

--

Thanks,

Matt Riedemann


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to