On 08/13/2013 03:05 AM, Yee, Guang wrote:
Passing the query parameters, whatever they are, into the driver if the
given driver supports pagination and allowing the driver to override the
manager default pagination functionality seem reasonable to me.
Please do use the standards that are supported in other OpenStack
services already: limit, marker, sort_key and sort_dir.
Pagination is meaningless without a sort key and direction, so picking a
sensible default for user/project records is good. I'd go with either
created_at (what Glance/Nova/Cinder use..) or with the user/project UUID.
The Glance DB API pagination is well-documented and clean [1]. I highly
recommend it as a starting point.
Nova uses the same marker/limit/sort_key/sort_dir options for queries
that it allows pagination on. An example is the
instance_get_all_by_filters() call [2].
Cinder uses the same marker/limit/sort_key/sort_dir options for query
pagination as well. [3]
Finally, I'd consider supporting the standard change-since parameter for
listing operations. Both Nova [4] and Glance [5] support the parameter,
which is useful for tools that poll the APIs for "new" events/records.
In short, go with what is already a standard in the other projects...
Best,
-jay
[1]
https://github.com/openstack/glance/blob/master/glance/db/sqlalchemy/api.py#L429
[2]
https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L1709
[3]
https://github.com/openstack/cinder/blob/master/cinder/common/sqlalchemyutils.py#L33
[4]
https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L1766
[5]
https://github.com/openstack/glance/blob/master/glance/db/sqlalchemy/api.py#L618
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev