diff --git a/ceilometerclient/common/base.py b/ceilometerclient/common/base.py index c29ac183..02ecdaeb 100644 --- a/ceilometerclient/common/base.py +++ b/ceilometerclient/common/base.py @@ -56,7 +56,10 @@ class Manager(object): obj_class = self.resource_class if response_key: - data = body[response_key] + try: + data = body[response_key] + except KeyError: + return [] else: data = body return [obj_class(self, res, loaded=True) for res in data if res] diff --git a/tests/v1/test_samples.py b/tests/v1/test_samples.py index ab7dc085..88da9539 100644 --- a/tests/v1/test_samples.py +++ b/tests/v1/test_samples.py @@ -111,6 +111,12 @@ fixtures = { ]}, ), }, + '/v1/meters': { + 'GET': ( + {}, + {'meters': []}, + ), + }, } @@ -120,6 +126,14 @@ class SampleManagerTest(unittest.TestCase): self.api = utils.FakeAPI(fixtures) self.mgr = ceilometerclient.v1.meters.SampleManager(self.api) + def test_list_all(self): + samples = list(self.mgr.list(counter_name=None)) + expect = [ + ('GET', '/v1/meters', {}, None), + ] + self.assertEqual(self.api.calls, expect) + self.assertEqual(len(samples), 0) + def test_list_by_source(self): samples = list(self.mgr.list(source='openstack', counter_name='this'))