Skip to content
This repository was archived by the owner on Nov 29, 2023. It is now read-only.

Commit d648764

Browse files
author
Brian Lamar
committed
Ensure v1 'limit' query parameter works correctly.
The tests were present but were not asserting list results. page_size was overriding the absolute limit so limits were not working if they were less than the page_size. Fixes bug 1037233 Change-Id: If102824212e3846bc65d3f7928cf7aa2e48aaa63
1 parent a5b8165 commit d648764

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

glanceclient/v1/images.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,18 +123,20 @@ def list(self, **kwargs):
123123
structure of an image object
124124
:rtype: list of :class:`Image`
125125
"""
126-
limit = kwargs.get('limit')
126+
absolute_limit = kwargs.get('limit')
127127

128128
def paginate(qp, seen=0):
129129
url = '/v1/images/detail?%s' % urllib.urlencode(qp)
130130
images = self._list(url, "images")
131131
for image in images:
132132
seen += 1
133+
if absolute_limit is not None and seen > absolute_limit:
134+
return
133135
yield image
134136

135137
page_size = qp.get('limit')
136138
if (page_size and len(images) == page_size and
137-
(limit is None or 0 < seen < limit)):
139+
(absolute_limit is None or 0 < seen < absolute_limit)):
138140
qp['marker'] = image.id
139141
for image in paginate(qp, seen):
140142
yield image

tests/v1/test_images.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,9 @@ def test_paginated_list(self):
223223
self.assertEqual(images[2].id, 'c')
224224

225225
def test_list_with_limit_less_than_page_size(self):
226-
list(self.mgr.list(page_size=20, limit=10))
227-
expect = [('GET', '/v1/images/detail?limit=20', {}, None)]
226+
results = list(self.mgr.list(page_size=2, limit=1))
227+
expect = [('GET', '/v1/images/detail?limit=2', {}, None)]
228+
self.assertEqual(1, len(results))
228229
self.assertEqual(self.api.calls, expect)
229230

230231
def test_list_with_limit_greater_than_page_size(self):

0 commit comments

Comments
 (0)