]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Fix deleting qos specs key
authorZhiteng Huang <zhithuang@ebaysf.com>
Tue, 10 Sep 2013 08:39:52 +0000 (16:39 +0800)
committerZhiteng Huang <zhithuang@ebaysf.com>
Wed, 11 Sep 2013 06:36:53 +0000 (14:36 +0800)
commitca85d237e236f46881dc2c57a589a33e4605917d
treedc42ab45e7be08d6061d199aeee8fad5787188ca
parent6ae44d99fe1d1a8355ea3e5400be5ba894c82361
Fix deleting qos specs key

Previously deleting a key in certain qos specs was accomplished via
'update' API. Unfortunately, 'update' isn't able to tell the
difference between setting a key with no value and deleting a key (and
its value).
This change adds an new API 'delete_keys' to qos_specs API extension.
'delete_keys' API allows client to specify a list of to-be-deleted keys
in one single request (batch mode!), which can be handy when removing
multiple keys in a qos specs.

Example URL and request body for 'delete_keys' API:
 PUT to http://127.0.0.1:8776/v2/qos-specs/QOS_SPECS_UUID/delete_keys
 with body: {'keys': ['foo', 'bar', 'zoo']}

Above example request will result in 'foo', 'bar', 'zoo' key/value
pairs of QOS_SPECS_UUID be marked as deleted in DB.  If QOS_SPECS_UUID
doesn't exist, a 404 error will return; if any key in 'foo', 'bar',
'zoo' couldn't be found in QOS_SPECS_UUID, a 400 error will return with
error message telling which key couldn't be found. Note that Cinder
will puke 400 and stop trying the rest once it encounters a
non-existing (or deleted) key amoung the given list of keys.

This change also fixes 'list'/'show' API includes deleted keys in
result.

Fix bug: # 1223660
Fix bug: # 1223677

Change-Id: Ia3cb07e204d655a9b837b317ce7117feb3c86a2d
cinder/api/contrib/qos_specs_manage.py
cinder/db/api.py
cinder/db/sqlalchemy/api.py
cinder/tests/api/contrib/test_qos_specs_manage.py
cinder/tests/db/test_qos_specs.py
cinder/tests/test_qos_specs.py
cinder/volume/qos_specs.py