<div dir="ltr"><div><div>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?</div><div><br></div><div>The current state of affairs is:</div><div>CREATE (volume attach) is documented twice under two different URIs: [1] and [2], but only os-volume_attachments [1] is implemented [3].</div><div>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.</div><div>Is it the future direction to have volume attach and detach done as server actions?</div><div><br></div><div>READ is implemented twice and documented twice under two different URIs: os-volume_attachments [5] and server details [6]</div><div>The two implementations do not return the same information and the only bit of information that is common between them is the volume ID.</div><div>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?</div><div><br></div><div>UPDATE is implemented [4] but not documented.</div><div><br></div><div>DELETE (detach) only appears to be implemented and documented once: [7]</div><div><br></div><div>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.</div><div><br></div><div><br></div><div>[1] <a href="http://developer.openstack.org/api-ref-compute-v2-ext.html#attachVolume">http://developer.openstack.org/api-ref-compute-v2-ext.html#attachVolume</a></div><div>[2] <a href="http://developer.openstack.org/api-ref-compute-v2.1.html#attach">http://developer.openstack.org/api-ref-compute-v2.1.html#attach</a></div><div>[3] <a href="https://ask.openstack.org/en/question/85242/the-api-action-attach-is-missing/">https://ask.openstack.org/en/question/85242/the-api-action-attach-is-missing/</a></div><div>[4] <a href="https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/volumes.py#L318">https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/volumes.py#L318</a></div><div>[5] <a href="http://developer.openstack.org/api-ref-compute-v2-ext.html#attachVolume">http://developer.openstack.org/api-ref-compute-v2-ext.html#attachVolume</a></div><div>[6] <a href="http://developer.openstack.org/api-ref-compute-v2.1.html#listDetailServers">http://developer.openstack.org/api-ref-compute-v2.1.html#listDetailServers</a></div><div>[7] <a href="http://developer.openstack.org/api-ref-compute-v2-ext.html#deleteVolumeAttachment">http://developer.openstack.org/api-ref-compute-v2-ext.html#deleteVolumeAttachment</a></div><div>[8] <a href="https://blueprints.launchpad.net/nova/+spec/delete-on-termination-modification">https://blueprints.launchpad.net/nova/+spec/delete-on-termination-modification</a></div></div><div><br></div></div>