[openstack-dev] [keystone] Pagination

Lyle, David (Cloud Services) david.lyle at hp.com
Tue Aug 13 16:55:16 UTC 2013


The marker/limit pagination scheme is inferior.  The use of page/page_size allows access to arbitrary pages, whereas limit/marker only allows forward progress.   In Horizon's use case, with page/page_size we can provide the user access to any page they have already visited, rather than just the previous page (using prev/next links returned in the response).  

-David

On 08/13/2013 10:29 AM, Pipes, Jay wrote:

>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 at lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



More information about the OpenStack-dev mailing list