From 71da766638390f582d2639bc7537725e681100bc Mon Sep 17 00:00:00 2001 From: Yuriy Nesenenko Date: Thu, 11 Feb 2016 19:19:07 +0200 Subject: [PATCH] Deleting volume metadata keys with a single request Deleting multiple volume metadata keys with a single request to improve performance. Related blueprint: delete-multiple-metadata-keys Change-Id: Iddff8ff3ee4d8690f6ec9d3f45181f1f6e7c1ff1 --- .../newton/delete-multiple-metadata-keys.rst | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 specs/newton/delete-multiple-metadata-keys.rst diff --git a/specs/newton/delete-multiple-metadata-keys.rst b/specs/newton/delete-multiple-metadata-keys.rst new file mode 100644 index 00000000..4d86cb4f --- /dev/null +++ b/specs/newton/delete-multiple-metadata-keys.rst @@ -0,0 +1,111 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + + +==================================== +Delete multiple volume metadata keys +==================================== + +https://blueprints.launchpad.net/cinder/+spec/delete-multiple-metadata-keys + +Problem description +==================== +The current implementation of Cinder API functionality supports deleting of +multiple volume metadata as multiple requests for deleting only one metadata +key with a request. The more keys are necessary to remove, the more API +requests and DB queries are needed. It would be more efficient to delete +multiple metadata keys with a single request at a time. + +Use Cases +========= + +Deleting multiple volume metadata keys with a single request. + +Proposed change +================ +To delete multiple metadata items without affecting the remaining ones, +just update the metadata items with the updated complete list of ones +(without items to delete) in the body of the request. On success, the +server responds with a 200 status code. + +.. note:: A PUT request should use etags to avoid the lost update problem. + +Alternatives +------------ +Have a request that deletes all keys rather than a specified list as an +option. + +Data model impact +----------------- +None + +REST API impact +--------------- +The existing API for update metadata will be used in this case. The API +call will fail in the case some of the items that are specified to delete +does not exist. The API call will send the set of keys that are supposed +to be updated and ignore missing keys. + +Security impact +--------------- +None + +Notifications impact +-------------------- +One delete notification will be emitted per metadata item deleted as today. + +Other end user impact +--------------------- +A user will have new API. + +Performance Impact +------------------ +The deleting of a volume metadata keys with a single request allows to +improve performance by reducing DB calls. It's very important in case with +many keys. Better performance due to fewer request round trips. + +Other deployer impact +--------------------- +None + +Developer impact +---------------- +None + +Implementation +============== + +Assignee(s) +----------- +Primary assignee: +Yuriy Nesenenko(ynesenenko@mirantis.com) + +Work Items +---------- +* Extend python-cinderclient to support new API. +* Add unit and tempest tests. + +Dependencies +============ + +Depends on Cinder API microversion. +Depends on API WG patch https://review.openstack.org/281511/ +Depends on API WG patch https://review.openstack.org/301846/ + +Testing +======= + +Unit and functional tests are needed to ensure response is working correctly. + +Documentation Impact +==================== + +Documents concerning the API will need to reflect these changes. + +References +========== + +None