diff --git a/ceilometer/api/controllers/v2.py b/ceilometer/api/controllers/v2.py index 27be25ebf..aba336bf9 100644 --- a/ceilometer/api/controllers/v2.py +++ b/ceilometer/api/controllers/v2.py @@ -486,7 +486,7 @@ class ResourcesController(RestController): :param resource_id: The UUID of the resource. """ - r = request.storage_conn.get_resources(resource=resource_id)[0] + r = list(request.storage_conn.get_resources(resource=resource_id))[0] return Resource(**r) @wsme_pecan.wsexpose([Resource], [Query]) diff --git a/tests/api/v2/test_list_resources.py b/tests/api/v2/test_list_resources.py index 0131575eb..4f8057d76 100644 --- a/tests/api/v2/test_list_resources.py +++ b/tests/api/v2/test_list_resources.py @@ -80,6 +80,48 @@ class TestListResources(FunctionalTest): data = self.get_json('/resources') self.assertEquals(2, len(data)) + def test_instances_one(self): + counter1 = counter.Counter( + 'instance', + 'cumulative', + '', + 1, + 'user-id', + 'project-id', + 'resource-id', + timestamp=datetime.datetime(2012, 7, 2, 10, 40), + resource_metadata={'display_name': 'test-server', + 'tag': 'self.counter', + } + ) + msg = meter.meter_message_from_counter(counter1, + cfg.CONF.metering_secret, + 'test', + ) + self.conn.record_metering_data(msg) + + counter2 = counter.Counter( + 'instance', + 'cumulative', + '', + 1, + 'user-id', + 'project-id', + 'resource-id-alternate', + timestamp=datetime.datetime(2012, 7, 2, 10, 41), + resource_metadata={'display_name': 'test-server', + 'tag': 'self.counter2', + } + ) + msg2 = meter.meter_message_from_counter(counter2, + cfg.CONF.metering_secret, + 'test', + ) + self.conn.record_metering_data(msg2) + + data = self.get_json('/resources/resource-id') + self.assertEquals('resource-id', data['resource_id']) + def test_with_source(self): counter1 = counter.Counter( 'instance',