]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
get volumes with limit and filters does not work
authorSteven Kaufer <kaufer@us.ibm.com>
Fri, 7 Mar 2014 23:01:51 +0000 (23:01 +0000)
committerSteven Kaufer <kaufer@us.ibm.com>
Tue, 11 Mar 2014 19:24:37 +0000 (19:24 +0000)
commit10dcf874ac16e410993d9d929a89bb07305f46da
treef93a8660caf6f699e597ba9e4d2e11b7621c1d22
parent015555acb75ee4d9298915951d2bfaf0d19d2b02
get volumes with limit and filters does not work

The /volumes and /volumes/detail REST APIs support filtering. Currently,
all filtering is done after the volumes are retrieved from the database
in the API.get_all function in /cinder/volume/api.py. Therefore, the usage
combination of filters and limit will only work if all volumes matching
the filters are in the page of data being retrieved from the database.

For example, assume that all of the volumes with a name of "foo" would be
retrieved from the database starting at index 100 and that you query for
all volumes with a name of "foo" while specifying a limit of 50.  In this
case, the query would yield 0 results since the filter did not match any of
the first 50 entries retrieved from the database.

This patch removes all filtering from the volume API layer and moves it
into the DB layer.

Test cases were added to verify filtering at the DB level.

Change-Id: Ia084e1f4cf59ea39bf8a0a36686146a315168cbb
Closes-bug: 1287813
cinder/db/api.py
cinder/db/sqlalchemy/api.py
cinder/tests/api/v1/test_volumes.py
cinder/tests/api/v2/stubs.py
cinder/tests/api/v2/test_volumes.py
cinder/tests/test_db_api.py
cinder/volume/api.py