diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-09-07 20:50:03 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-09-07 20:50:03 +0000 |
| commit | 770df0cef238860ff311a49c83dff48d7374b7ac (patch) | |
| tree | 402a528cc1393eb3f09f7b50315090f5567272c9 /nova/api | |
| parent | 16c965a66a3b2c21a35dc37a34d6331890ff3ca5 (diff) | |
| parent | 75ca5dfa4a740c1f73750394722687cbdf3155e5 (diff) | |
| download | nova-770df0cef238860ff311a49c83dff48d7374b7ac.tar.gz nova-770df0cef238860ff311a49c83dff48d7374b7ac.tar.xz nova-770df0cef238860ff311a49c83dff48d7374b7ac.zip | |
Merge "Implement paginate query use marker in nova-api"
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/common.py | 13 | ||||
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 16 |
2 files changed, 17 insertions, 12 deletions
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py index b1e31b0c7..ccc70cd1f 100644 --- a/nova/api/openstack/common.py +++ b/nova/api/openstack/common.py @@ -185,13 +185,20 @@ def limited(items, request, max_limit=FLAGS.osapi_max_limit): return items[offset:range_end] -def limited_by_marker(items, request, max_limit=FLAGS.osapi_max_limit): - """Return a slice of items according to the requested marker and limit.""" +def get_limit_and_marker(request, max_limit=FLAGS.osapi_max_limit): + """get limited parameter from request""" params = get_pagination_params(request) - limit = params.get('limit', max_limit) + limit = min(max_limit, limit) marker = params.get('marker') + return limit, marker + + +def limited_by_marker(items, request, max_limit=FLAGS.osapi_max_limit): + """Return a slice of items according to the requested marker and limit.""" + limit, marker = get_limit_and_marker(request, max_limit) + limit = min(max_limit, limit) start_index = 0 if marker: diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 229c3b5aa..9f462c565 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -446,16 +446,17 @@ class Controller(wsgi.Controller): else: search_opts['user_id'] = context.user_id + limit, marker = common.get_limit_and_marker(req) instance_list = self.compute_api.get_all(context, - search_opts=search_opts) + search_opts=search_opts, + limit=limit, marker=marker) - limited_list = self._limit_items(instance_list, req) if is_detail: - self._add_instance_faults(context, limited_list) - response = self._view_builder.detail(req, limited_list) + self._add_instance_faults(context, instance_list) + response = self._view_builder.detail(req, instance_list) else: - response = self._view_builder.index(req, limited_list) - req.cache_db_instances(limited_list) + response = self._view_builder.index(req, instance_list) + req.cache_db_instances(instance_list) return response def _get_server(self, context, req, instance_uuid): @@ -1021,9 +1022,6 @@ class Controller(wsgi.Controller): self.compute_api.set_admin_password(context, server, password) return webob.Response(status_int=202) - def _limit_items(self, items, req): - return common.limited_by_marker(items, req) - def _validate_metadata(self, metadata): """Ensure that we can work with the metadata given.""" try: |
