From 2861952ef7acd0d7cff8f039ee14105f12bea717 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Wed, 27 Jun 2012 11:00:14 -0700 Subject: Remove GlanceImageService.index in favor of detail Since there is no difference in index vs detail in the v2 API, let's drop that as a requirement in the GlanceImageService. Related to bp integrate-python-glanceclient Change-Id: If98cf68e7e18fa78a2f9c09526ca9e80d2e27c1b --- nova/api/openstack/compute/images.py | 4 +- nova/image/glance.py | 15 - nova/image/s3.py | 6 - nova/tests/api/openstack/compute/test_images.py | 400 +----------------------- nova/tests/image/fake.py | 9 - nova/tests/image/test_fake.py | 18 +- nova/tests/image/test_glance.py | 122 ++------ 7 files changed, 41 insertions(+), 533 deletions(-) diff --git a/nova/api/openstack/compute/images.py b/nova/api/openstack/compute/images.py index 9879c7d25..35d21da60 100644 --- a/nova/api/openstack/compute/images.py +++ b/nova/api/openstack/compute/images.py @@ -177,8 +177,8 @@ class Controller(wsgi.Controller): params[key] = val try: - images = self._image_service.index(context, filters=filters, - **page_params) + images = self._image_service.detail(context, filters=filters, + **page_params) except exception.Invalid as e: raise webob.exc.HTTPBadRequest(explanation=str(e)) return self._view_builder.index(req, images) diff --git a/nova/image/glance.py b/nova/image/glance.py index 3a4099338..c01a7b957 100644 --- a/nova/image/glance.py +++ b/nova/image/glance.py @@ -156,21 +156,6 @@ class GlanceImageService(object): raise exception.GlanceConnectionFailed( reason=_('Maximum attempts reached')) - def index(self, context, **kwargs): - """Calls out to Glance for a list of images available.""" - params = self._extract_query_params(kwargs) - image_metas = self._get_images(context, **params) - - images = [] - for image_meta in image_metas: - # NOTE(sirp): We need to use `get_images_detailed` and not - # `get_images` here because we need `is_public` and `properties` - # included so we can filter by user - if self._is_image_available(context, image_meta): - meta_subset = utils.subset_dict(image_meta, ('id', 'name')) - images.append(meta_subset) - return images - def detail(self, context, **kwargs): """Calls out to Glance for a list of detailed image information.""" params = self._extract_query_params(kwargs) diff --git a/nova/image/s3.py b/nova/image/s3.py index 318847791..df2758b3a 100644 --- a/nova/image/s3.py +++ b/nova/image/s3.py @@ -136,12 +136,6 @@ class S3ImageService(object): image = self.service.update(context, image_uuid, metadata, data) return self._translate_uuid_to_id(context, image) - def index(self, context): - #NOTE(bcwaldon): sort asc to make sure we assign lower ids - # to older images - images = self.service.index(context, sort_dir='asc') - return self._translate_uuids_to_ids(context, images) - def detail(self, context, **kwargs): #NOTE(bcwaldon): sort asc to make sure we assign lower ids # to older images diff --git a/nova/tests/api/openstack/compute/test_images.py b/nova/tests/api/openstack/compute/test_images.py index 3b100f3f7..af1dee30b 100644 --- a/nova/tests/api/openstack/compute/test_images.py +++ b/nova/tests/api/openstack/compute/test_images.py @@ -173,276 +173,6 @@ class ImagesControllerTest(test.TestCase): self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, fake_req, 'unknown') - def test_get_image_index(self): - fake_req = fakes.HTTPRequest.blank('/v2/fake/images') - response_list = self.controller.index(fake_req)['images'] - - expected_images = [ - { - "id": "123", - "name": "public image", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/123", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/123", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/123" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "124", - "name": "queued snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/124", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/124", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/124" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "125", - "name": "saving snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/125", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/125", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/125" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "126", - "name": "active snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/126", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/126", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/126" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "127", - "name": "killed snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/127", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/127", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/127" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "128", - "name": "deleted snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/128", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/128", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/128" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "129", - "name": "pending_delete snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/129", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/129", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/129" % - utils.generate_glance_url() - }, - ], - }, - { - "id": "130", - "name": None, - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/130", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/130", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": "%s/fake/images/130" % - utils.generate_glance_url() - }, - ], - }, - ] - - self.assertDictListMatch(response_list, expected_images) - - def test_get_image_index_with_limit(self): - request = fakes.HTTPRequest.blank('/v2/fake/images?limit=3') - response = self.controller.index(request) - response_list = response["images"] - response_links = response["images_links"] - - alternate = "%s/fake/images/%s" - - expected_images = [ - { - "id": "123", - "name": "public image", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/123", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/123", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": alternate % (utils.generate_glance_url(), 123), - }, - ], - }, - { - "id": "124", - "name": "queued snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/124", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/124", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": alternate % (utils.generate_glance_url(), 124), - }, - ], - }, - { - "id": "125", - "name": "saving snapshot", - "links": [ - { - "rel": "self", - "href": "http://localhost/v2/fake/images/125", - }, - { - "rel": "bookmark", - "href": "http://localhost/fake/images/125", - }, - { - "rel": "alternate", - "type": "application/vnd.openstack.image", - "href": alternate % (utils.generate_glance_url(), 125), - }, - ], - }, - ] - - self.assertDictListMatch(response_list, expected_images) - self.assertEqual(response_links[0]['rel'], 'next') - - href_parts = urlparse.urlparse(response_links[0]['href']) - self.assertEqual('/v2/fake/images', href_parts.path) - params = urlparse.parse_qs(href_parts.query) - self.assertDictMatch({'limit': ['3'], 'marker': ['125']}, params) - - def test_get_image_index_with_limit_and_extra_params(self): - request = fakes.HTTPRequest.blank('/v2/fake/images?limit=3&extra=bo') - response = self.controller.index(request) - response_links = response["images_links"] - - self.assertEqual(response_links[0]['rel'], 'next') - - href_parts = urlparse.urlparse(response_links[0]['href']) - self.assertEqual('/v2/fake/images', href_parts.path) - params = urlparse.parse_qs(href_parts.query) - self.assertDictMatch( - {'limit': ['3'], 'marker': ['125'], 'extra': ['bo']}, - params) - - def test_get_image_index_with_big_limit(self): - """ - Make sure we don't get images_links if limit is set - and the number of images returned is < limit - """ - request = fakes.HTTPRequest.blank('/v2/fake/images?limit=30') - response = self.controller.index(request) - - self.assertEqual(response.keys(), ['images']) - self.assertEqual(len(response['images']), 8) - def test_get_image_details(self): request = fakes.HTTPRequest.blank('/v2/fake/images/detail') response = self.controller.detail(request) @@ -815,120 +545,6 @@ class ImagesControllerTest(test.TestCase): self.assertDictMatch({'limit': ['2'], 'marker': ['124']}, params) - def test_image_filter_with_name(self): - image_service = self.mox.CreateMockAnything() - filters = {'name': 'testname'} - request = fakes.HTTPRequest.blank('/v2/images?name=testname') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_with_min_ram(self): - image_service = self.mox.CreateMockAnything() - filters = {'min_ram': '0'} - request = fakes.HTTPRequest.blank('/v2/images?minRam=0') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_with_min_disk(self): - image_service = self.mox.CreateMockAnything() - filters = {'min_disk': '7'} - request = fakes.HTTPRequest.blank('/v2/images?minDisk=7') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_with_status(self): - image_service = self.mox.CreateMockAnything() - filters = {'status': 'active'} - request = fakes.HTTPRequest.blank('/v2/images?status=ACTIVE') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_with_property(self): - image_service = self.mox.CreateMockAnything() - filters = {'property-test': '3'} - request = fakes.HTTPRequest.blank('/v2/images?property-test=3') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_server(self): - image_service = self.mox.CreateMockAnything() - uuid = 'fa95aaf5-ab3b-4cd8-88c0-2be7dd051aaf' - ref = 'http://localhost:8774/servers/' + uuid - filters = {'property-instance_uuid': uuid} - request = fakes.HTTPRequest.blank('/v2/images?server=' + ref) - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_changes_since(self): - image_service = self.mox.CreateMockAnything() - filters = {'changes-since': '2011-01-24T17:08Z'} - request = fakes.HTTPRequest.blank('/v2/images?changes-since=' - '2011-01-24T17:08Z') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_with_type(self): - image_service = self.mox.CreateMockAnything() - filters = {'property-image_type': 'BASE'} - request = fakes.HTTPRequest.blank('/v2/images?type=BASE') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_filter_not_supported(self): - image_service = self.mox.CreateMockAnything() - filters = {'status': 'active'} - request = fakes.HTTPRequest.blank('/v2/images?status=ACTIVE&' - 'UNSUPPORTEDFILTER=testname') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_no_filters(self): - image_service = self.mox.CreateMockAnything() - filters = {} - request = fakes.HTTPRequest.blank('/v2/images') - context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) - self.mox.ReplayAll() - controller = images.Controller(image_service=image_service) - controller.index(request) - - def test_image_invalid_marker(self): - class InvalidImageService(object): - - def index(self, *args, **kwargs): - raise exception.Invalid('meow') - - request = fakes.HTTPRequest.blank('/v2/images?marker=invalid') - controller = images.Controller(image_service=InvalidImageService()) - self.assertRaises(webob.exc.HTTPBadRequest, controller.index, request) - def test_image_detail_filter_with_name(self): image_service = self.mox.CreateMockAnything() filters = {'name': 'testname'} @@ -970,10 +586,10 @@ class ImagesControllerTest(test.TestCase): filters = {'property-instance_uuid': uuid} request = fakes.HTTPRequest.blank(url) context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) + image_service.detail(context, filters=filters).AndReturn([]) self.mox.ReplayAll() controller = images.Controller(image_service=image_service) - controller.index(request) + controller.detail(request) def test_image_detail_filter_server_uuid(self): image_service = self.mox.CreateMockAnything() @@ -982,10 +598,10 @@ class ImagesControllerTest(test.TestCase): filters = {'property-instance_uuid': uuid} request = fakes.HTTPRequest.blank(url) context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) + image_service.detail(context, filters=filters).AndReturn([]) self.mox.ReplayAll() controller = images.Controller(image_service=image_service) - controller.index(request) + controller.detail(request) def test_image_detail_filter_changes_since(self): image_service = self.mox.CreateMockAnything() @@ -993,20 +609,20 @@ class ImagesControllerTest(test.TestCase): request = fakes.HTTPRequest.blank('/v2/fake/images/detail' '?changes-since=2011-01-24T17:08Z') context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) + image_service.detail(context, filters=filters).AndReturn([]) self.mox.ReplayAll() controller = images.Controller(image_service=image_service) - controller.index(request) + controller.detail(request) def test_image_detail_filter_with_type(self): image_service = self.mox.CreateMockAnything() filters = {'property-image_type': 'BASE'} request = fakes.HTTPRequest.blank('/v2/fake/images/detail?type=BASE') context = request.environ['nova.context'] - image_service.index(context, filters=filters).AndReturn([]) + image_service.detail(context, filters=filters).AndReturn([]) self.mox.ReplayAll() controller = images.Controller(image_service=image_service) - controller.index(request) + controller.detail(request) def test_image_detail_filter_not_supported(self): image_service = self.mox.CreateMockAnything() diff --git a/nova/tests/image/fake.py b/nova/tests/image/fake.py index 4a3e0b931..ffb2e050b 100644 --- a/nova/tests/image/fake.py +++ b/nova/tests/image/fake.py @@ -150,15 +150,6 @@ class _FakeImageService(object): self._imagedata = {} super(_FakeImageService, self).__init__() - #TODO(bcwaldon): implement optional kwargs such as limit, sort_dir - def index(self, context, **kwargs): - """Returns list of images.""" - retval = [] - for img in self.images.values(): - retval += [dict([(k, v) for k, v in img.iteritems() - if k in ['id', 'name']])] - return retval - #TODO(bcwaldon): implement optional kwargs such as limit, sort_dir def detail(self, context, **kwargs): """Return list of detailed image information.""" diff --git a/nova/tests/image/test_fake.py b/nova/tests/image/test_fake.py index e1925557e..1361b984c 100644 --- a/nova/tests/image/test_fake.py +++ b/nova/tests/image/test_fake.py @@ -34,11 +34,6 @@ class FakeImageServiceTestCase(test.TestCase): super(FakeImageServiceTestCase, self).setUp() nova.tests.image.fake.FakeImageService_reset() - def test_index(self): - res = self.image_service.index(self.context) - for image in res: - self.assertEquals(set(image.keys()), set(['id', 'name'])) - def test_detail(self): res = self.image_service.detail(self.context) for image in res: @@ -64,13 +59,6 @@ class FakeImageServiceTestCase(test.TestCase): check_is_bool(image, 'deleted') check_is_bool(image, 'is_public') - def test_index_and_detail_have_same_results(self): - index = self.image_service.index(self.context) - detail = self.image_service.detail(self.context) - index_set = set([(i['id'], i['name']) for i in index]) - detail_set = set([(i['id'], i['name']) for i in detail]) - self.assertEqual(index_set, detail_set) - def test_show_raises_imagenotfound_for_invalid_id(self): self.assertRaises(exception.ImageNotFound, self.image_service.show, @@ -78,12 +66,12 @@ class FakeImageServiceTestCase(test.TestCase): 'this image does not exist') def test_create_adds_id(self): - index = self.image_service.index(self.context) + index = self.image_service.detail(self.context) image_count = len(index) self.image_service.create(self.context, {}) - index = self.image_service.index(self.context) + index = self.image_service.detail(self.context) self.assertEquals(len(index), image_count + 1) self.assertTrue(index[0]['id']) @@ -125,7 +113,7 @@ class FakeImageServiceTestCase(test.TestCase): self.image_service.create(self.context, {'id': '33', 'foo': 'bar'}) self.image_service.create(self.context, {'id': '34', 'foo': 'bar'}) self.image_service.delete_all() - index = self.image_service.index(self.context) + index = self.image_service.detail(self.context) self.assertEquals(len(index), 0) def test_create_then_get(self): diff --git a/nova/tests/image/test_glance.py b/nova/tests/image/test_glance.py index 29c867667..f8d2c2d9d 100644 --- a/nova/tests/image/test_glance.py +++ b/nova/tests/image/test_glance.py @@ -173,12 +173,12 @@ class TestGlanceImageService(test.TestCase): def test_create(self): fixture = self._make_fixture(name='test image') - num_images = len(self.service.index(self.context)) + num_images = len(self.service.detail(self.context)) image_id = self.service.create(self.context, fixture)['id'] self.assertNotEquals(None, image_id) self.assertEquals(num_images + 1, - len(self.service.index(self.context))) + len(self.service.detail(self.context))) def test_create_and_show_non_existing_image(self): fixture = self._make_fixture(name='test image') @@ -190,102 +190,24 @@ class TestGlanceImageService(test.TestCase): self.context, 'bad image id') - def test_index(self): - fixture = self._make_fixture(name='test image') - image_id = self.service.create(self.context, fixture)['id'] - image_metas = self.service.index(self.context) - expected = [{'id': image_id, 'name': 'test image'}] - self.assertDictListMatch(image_metas, expected) - - def test_index_default_limit(self): - fixtures = [] - ids = [] - for i in range(10): - fixture = self._make_fixture(name='TestImage %d' % (i)) - fixtures.append(fixture) - ids.append(self.service.create(self.context, fixture)['id']) - - image_metas = self.service.index(self.context) - i = 0 - for meta in image_metas: - expected = {'id': 'DONTCARE', - 'name': 'TestImage %d' % (i)} - self.assertDictMatch(meta, expected) - i = i + 1 - - def test_index_marker(self): - fixtures = [] - ids = [] - for i in range(10): - fixture = self._make_fixture(name='TestImage %d' % (i)) - fixtures.append(fixture) - ids.append(self.service.create(self.context, fixture)['id']) - - image_metas = self.service.index(self.context, marker=ids[1]) - self.assertEquals(len(image_metas), 8) - i = 2 - for meta in image_metas: - expected = {'id': 'DONTCARE', - 'name': 'TestImage %d' % (i)} - self.assertDictMatch(meta, expected) - i = i + 1 - - def test_index_limit(self): - fixtures = [] - ids = [] - for i in range(10): - fixture = self._make_fixture(name='TestImage %d' % (i)) - fixtures.append(fixture) - ids.append(self.service.create(self.context, fixture)['id']) - - image_metas = self.service.index(self.context, limit=5) - self.assertEquals(len(image_metas), 5) - - def test_index_marker_and_limit(self): - fixtures = [] - ids = [] - for i in range(10): - fixture = self._make_fixture(name='TestImage %d' % (i)) - fixtures.append(fixture) - ids.append(self.service.create(self.context, fixture)['id']) - - image_metas = self.service.index(self.context, marker=ids[3], limit=1) - self.assertEquals(len(image_metas), 1) - i = 4 - for meta in image_metas: - expected = {'id': ids[i], - 'name': 'TestImage %d' % (i)} - self.assertDictMatch(meta, expected) - i = i + 1 - - def test_index_invalid_marker(self): - fixtures = [] - ids = [] - for i in range(10): - fixture = self._make_fixture(name='TestImage %d' % (i)) - fixtures.append(fixture) - ids.append(self.service.create(self.context, fixture)['id']) - - self.assertRaises(exception.Invalid, self.service.index, - self.context, marker='invalidmarker') - - def test_index_private_image(self): + def test_detail_private_image(self): fixture = self._make_fixture(name='test image') fixture['is_public'] = False properties = {'owner_id': 'proj1'} fixture['properties'] = properties - image_id = self.service.create(self.context, fixture)['id'] + self.service.create(self.context, fixture)['id'] proj = self.context.project_id self.context.project_id = 'proj1' - image_metas = self.service.index(self.context) + image_metas = self.service.detail(self.context) self.context.project_id = proj - expected = [{'id': 'DONTCARE', 'name': 'test image'}] - self.assertDictListMatch(image_metas, expected) + self.assertEqual(1, len(image_metas)) + self.assertEqual(image_metas[0]['name'], 'test image') + self.assertEqual(image_metas[0]['is_public'], False) def test_detail_marker(self): fixtures = [] @@ -332,6 +254,18 @@ class TestGlanceImageService(test.TestCase): image_metas = self.service.detail(self.context, limit=5) self.assertEquals(len(image_metas), 5) + def test_detail_default_limit(self): + fixtures = [] + ids = [] + for i in range(10): + fixture = self._make_fixture(name='TestImage %d' % (i)) + fixtures.append(fixture) + ids.append(self.service.create(self.context, fixture)['id']) + + image_metas = self.service.detail(self.context) + for i, meta in enumerate(image_metas): + self.assertEqual(meta['name'], 'TestImage %d' % (i)) + def test_detail_marker_and_limit(self): fixtures = [] ids = [] @@ -390,20 +324,20 @@ class TestGlanceImageService(test.TestCase): fixture2 = self._make_fixture(name='test image 2') fixtures = [fixture1, fixture2] - num_images = len(self.service.index(self.context)) - self.assertEquals(0, num_images, str(self.service.index(self.context))) + num_images = len(self.service.detail(self.context)) + self.assertEquals(0, num_images) ids = [] for fixture in fixtures: new_id = self.service.create(self.context, fixture)['id'] ids.append(new_id) - num_images = len(self.service.index(self.context)) - self.assertEquals(2, num_images, str(self.service.index(self.context))) + num_images = len(self.service.detail(self.context)) + self.assertEquals(2, num_images) self.service.delete(self.context, ids[0]) - num_images = len(self.service.index(self.context)) + num_images = len(self.service.detail(self.context)) self.assertEquals(1, num_images) def test_delete_not_by_owner(self): @@ -414,11 +348,11 @@ class TestGlanceImageService(test.TestCase): properties = {'project_id': 'proj1'} fixture['properties'] = properties - num_images = len(self.service.index(self.context)) + num_images = len(self.service.detail(self.context)) self.assertEquals(0, num_images) image_id = self.service.create(self.context, fixture)['id'] - num_images = len(self.service.index(self.context)) + num_images = len(self.service.detail(self.context)) self.assertEquals(1, num_images) proj_id = self.context.project_id @@ -429,7 +363,7 @@ class TestGlanceImageService(test.TestCase): self.context.project_id = proj_id - num_images = len(self.service.index(self.context)) + num_images = len(self.service.detail(self.context)) self.assertEquals(1, num_images) def test_show_passes_through_to_client(self): -- cgit