diff options
author | Jared Culp <jared.culp@rackspace.com> | 2013-07-11 14:04:15 -0400 |
---|---|---|
committer | Jared Culp <jared.culp@rackspace.com> | 2013-07-16 11:46:47 -0400 |
commit | 02116565d358a4fa254217779fef82b14b38d8ca (patch) | |
tree | 8f943e1bfb4a247d5115f8aa87afa1b4a96b57b4 | |
parent | 842720801550ff335122b2f2e4837a18aed25081 (diff) | |
download | python-glanceclient-02116565d358a4fa254217779fef82b14b38d8ca.tar.gz |
Increase default page_size value
This is a temporary solution. Increasing the default page size (which is being
used everytime, since the client is ignoring nova's --limit param). This should
decrease the number of queries that glance does when nova requests an image
detail list.
Bug 1200257
Change-Id: I7ed4521698570cbae9c20e69ddca8b11b57c65ad
-rw-r--r-- | glanceclient/v1/images.py | 2 | ||||
-rw-r--r-- | glanceclient/v2/images.py | 2 | ||||
-rw-r--r-- | tests/v1/test_images.py | 76 |
3 files changed, 58 insertions, 22 deletions
diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py index 05d687c..c96d5fa 100644 --- a/glanceclient/v1/images.py +++ b/glanceclient/v1/images.py @@ -33,7 +33,7 @@ UPDATE_PARAMS = ('name', 'disk_format', 'container_format', 'min_disk', CREATE_PARAMS = UPDATE_PARAMS + ('id', 'store') -DEFAULT_PAGE_SIZE = 20 +DEFAULT_PAGE_SIZE = 100 SORT_DIR_VALUES = ('asc', 'desc') SORT_KEY_VALUES = ('name', 'status', 'container_format', 'disk_format', diff --git a/glanceclient/v2/images.py b/glanceclient/v2/images.py index 6060eef..8e42e99 100644 --- a/glanceclient/v2/images.py +++ b/glanceclient/v2/images.py @@ -18,7 +18,7 @@ import urllib from glanceclient.common import utils from glanceclient.openstack.common import strutils -DEFAULT_PAGE_SIZE = 20 +DEFAULT_PAGE_SIZE = 100 class Controller(object): diff --git a/tests/v1/test_images.py b/tests/v1/test_images.py index 708d380..9b93639 100644 --- a/tests/v1/test_images.py +++ b/tests/v1/test_images.py @@ -20,10 +20,10 @@ import sys import testtools import urlparse -import glanceclient.v1.client as client -import glanceclient.v1.images -import glanceclient.v1.shell as shell -import glanceclient.v1.legacy_shell as legacy_shell +from glanceclient.v1 import client +from glanceclient.v1 import images +from glanceclient.v1 import legacy_shell +from glanceclient.v1 import shell from tests import utils @@ -51,7 +51,7 @@ fixtures = { ), ), }, - '/v1/images/detail?limit=20': { + '/v1/images/detail?limit=%d' % images.DEFAULT_PAGE_SIZE: { 'GET': ( {}, {'images': [ @@ -68,7 +68,7 @@ fixtures = { ]}, ), }, - '/v1/images/detail?marker=a&limit=20': { + '/v1/images/detail?marker=a&limit=%d' % images.DEFAULT_PAGE_SIZE: { 'GET': ( {}, {'images': [ @@ -85,6 +85,30 @@ fixtures = { ]}, ), }, + '/v1/images/detail?limit=1': { + 'GET': ( + {}, + {'images': [ + { + 'id': 'a', + 'name': 'image-0', + 'properties': {'arch': 'x86_64'}, + }, + ]}, + ), + }, + '/v1/images/detail?marker=a&limit=1': { + 'GET': ( + {}, + {'images': [ + { + 'id': 'b', + 'name': 'image-1', + 'properties': {'arch': 'x86_64'}, + }, + ]}, + ), + }, '/v1/images/detail?limit=2': { 'GET': ( {}, @@ -114,7 +138,7 @@ fixtures = { ]}, ), }, - '/v1/images/detail?limit=20&name=foo': { + '/v1/images/detail?limit=%d&name=foo' % images.DEFAULT_PAGE_SIZE: { 'GET': ( {}, {'images': [ @@ -131,7 +155,8 @@ fixtures = { ]}, ), }, - '/v1/images/detail?property-ping=pong&limit=20': { + '/v1/images/detail?property-ping=pong&limit=%d' % images.DEFAULT_PAGE_SIZE: + { 'GET': ( {}, {'images': [ @@ -143,7 +168,7 @@ fixtures = { ]}, ), }, - '/v1/images/detail?sort_dir=desc&limit=20': { + '/v1/images/detail?sort_dir=desc&limit=%d' % images.DEFAULT_PAGE_SIZE: { 'GET': ( {}, {'images': [ @@ -160,7 +185,7 @@ fixtures = { ]}, ), }, - '/v1/images/detail?sort_key=name&limit=20': { + '/v1/images/detail?sort_key=name&limit=%d' % images.DEFAULT_PAGE_SIZE: { 'GET': ( {}, {'images': [ @@ -250,7 +275,7 @@ class ImageManagerTest(testtools.TestCase): def setUp(self): super(ImageManagerTest, self).setUp() self.api = utils.FakeAPI(fixtures) - self.mgr = glanceclient.v1.images.ImageManager(self.api) + self.mgr = images.ImageManager(self.api) def test_paginated_list(self): images = list(self.mgr.list(page_size=2)) @@ -271,35 +296,46 @@ class ImageManagerTest(testtools.TestCase): self.assertEqual(self.api.calls, expect) def test_list_with_limit_greater_than_page_size(self): - list(self.mgr.list(page_size=20, limit=30)) - expect = [('GET', '/v1/images/detail?limit=20', {}, None)] + images = list(self.mgr.list(page_size=1, limit=2)) + expect = [ + ('GET', '/v1/images/detail?limit=1', {}, None), + ('GET', '/v1/images/detail?marker=a&limit=1', {}, None), + ] + self.assertEqual(len(images), 2) + self.assertEqual(images[0].id, 'a') + self.assertEqual(images[1].id, 'b') self.assertEqual(self.api.calls, expect) def test_list_with_marker(self): list(self.mgr.list(marker='a')) - expect = [('GET', '/v1/images/detail?marker=a&limit=20', {}, None)] + url = '/v1/images/detail?marker=a&limit=%d' % images.DEFAULT_PAGE_SIZE + expect = [('GET', url, {}, None)] self.assertEqual(self.api.calls, expect) def test_list_with_filter(self): list(self.mgr.list(filters={'name': "foo"})) - expect = [('GET', '/v1/images/detail?limit=20&name=foo', {}, None)] + url = '/v1/images/detail?limit=%d&name=foo' % images.DEFAULT_PAGE_SIZE + expect = [('GET', url, {}, None)] self.assertEqual(self.api.calls, expect) def test_list_with_property_filters(self): list(self.mgr.list(filters={'properties': {'ping': 'pong'}})) - url = '/v1/images/detail?property-ping=pong&limit=20' + url = '/v1/images/detail?property-ping=pong&limit=%d' % \ + images.DEFAULT_PAGE_SIZE expect = [('GET', url, {}, None)] self.assertEqual(self.api.calls, expect) def test_list_with_sort_dir(self): list(self.mgr.list(sort_dir='desc')) - url = '/v1/images/detail?sort_dir=desc&limit=20' + url = '/v1/images/detail?sort_dir=desc&limit=%d' % \ + images.DEFAULT_PAGE_SIZE expect = [('GET', url, {}, None)] self.assertEqual(self.api.calls, expect) def test_list_with_sort_key(self): list(self.mgr.list(sort_key='name')) - url = '/v1/images/detail?sort_key=name&limit=20' + url = '/v1/images/detail?sort_key=name&limit=%d' % \ + images.DEFAULT_PAGE_SIZE expect = [('GET', url, {}, None)] self.assertEqual(self.api.calls, expect) @@ -470,7 +506,7 @@ class ImageTest(testtools.TestCase): def setUp(self): super(ImageTest, self).setUp() self.api = utils.FakeAPI(fixtures) - self.mgr = glanceclient.v1.images.ImageManager(self.api) + self.mgr = images.ImageManager(self.api) def test_delete(self): image = self.mgr.get('1') @@ -579,7 +615,7 @@ class UrlParameterTest(testtools.TestCase): super(UrlParameterTest, self).setUp() self.api = ParameterFakeAPI({}) self.gc = client.Client("http://fakeaddress.com") - self.gc.images = glanceclient.v1.images.ImageManager(self.api) + self.gc.images = images.ImageManager(self.api) def test_is_public_list(self): shell.do_image_list(self.gc, FakeArg({"is_public": "True"})) |