diff options
| author | Nejc Saje <nejc.saje@xlab.si> | 2013-10-24 13:15:01 +0200 |
|---|---|---|
| committer | Nejc Saje <nejc.saje@xlab.si> | 2013-10-28 11:43:47 +0100 |
| commit | 03a567f9f44843ac146e058a3c9bfc933b375180 (patch) | |
| tree | 7cddb8c530e1ef1e720bc98bebcb1f14ada04967 | |
| parent | 1b0f94f20580a55bea52ba468bdeeca3dd4552bd (diff) | |
| download | python-ceilometerclient-03a567f9f44843ac146e058a3c9bfc933b375180.tar.gz | |
Adds the 'limit' parameter to sample list command in V2 API
Change-Id: I338590fcd75f39c3419e7e138023f6918f206ae2
Fixes: bug #1244172
| -rw-r--r-- | ceilometerclient/tests/v2/test_samples.py | 14 | ||||
| -rw-r--r-- | ceilometerclient/tests/v2/test_shell.py | 4 | ||||
| -rw-r--r-- | ceilometerclient/v2/samples.py | 5 | ||||
| -rw-r--r-- | ceilometerclient/v2/shell.py | 5 |
4 files changed, 24 insertions, 4 deletions
diff --git a/ceilometerclient/tests/v2/test_samples.py b/ceilometerclient/tests/v2/test_samples.py index a6eff4f..c279f35 100644 --- a/ceilometerclient/tests/v2/test_samples.py +++ b/ceilometerclient/tests/v2/test_samples.py @@ -36,6 +36,7 @@ del CREATE_SAMPLE['source'] base_url = '/v2/meters/instance' args = 'q.field=resource_id&q.field=source&q.op=&q.op=&q.value=foo&q.value=bar' +args_limit = 'limit=1' fixtures = { base_url: { @@ -54,6 +55,13 @@ fixtures = { {}, [], ), + }, + '%s?%s' % (base_url, args_limit): + { + 'GET': ( + {}, + [GET_SAMPLE] + ), } } @@ -93,3 +101,9 @@ class SampleManagerTest(utils.BaseTestCase): ] self.assertEqual(self.api.calls, expect) self.assertTrue(sample) + + def test_limit(self): + samples = list(self.mgr.list(meter_name='instance', limit=1)) + expect = [('GET', '/v2/meters/instance?limit=1', {}, None)] + self.assertEqual(self.api.calls, expect) + self.assertEqual(len(samples), 1) diff --git a/ceilometerclient/tests/v2/test_shell.py b/ceilometerclient/tests/v2/test_shell.py index 1c5a0dc..0b471a3 100644 --- a/ceilometerclient/tests/v2/test_shell.py +++ b/ceilometerclient/tests/v2/test_shell.py @@ -173,6 +173,7 @@ class ShellSampleListCommandTest(utils.BaseTestCase): self.args = mock.Mock() self.args.meter = self.METER self.args.query = None + self.args.limit = None def test_sample_list(self): @@ -186,7 +187,8 @@ class ShellSampleListCommandTest(utils.BaseTestCase): ceilometer_shell.do_sample_list(self.cc, self.args) self.cc.samples.list.assert_called_once_with( meter_name=self.METER, - q=None) + q=None, + limit=None) finally: sys.stdout = org_stdout diff --git a/ceilometerclient/v2/samples.py b/ceilometerclient/v2/samples.py index 20ddbe7..cd0c3c2 100644 --- a/ceilometerclient/v2/samples.py +++ b/ceilometerclient/v2/samples.py @@ -38,9 +38,10 @@ class SampleManager(base.Manager): def _path(counter_name=None): return '/v2/meters/%s' % counter_name if counter_name else '/v2/meters' - def list(self, meter_name=None, q=None): + def list(self, meter_name=None, q=None, limit=None): path = self._path(counter_name=meter_name) - return self._list(options.build_url(path, q)) + params = ['limit=%s' % str(limit)] if limit else None + return self._list(options.build_url(path, q, params)) def create(self, **kwargs): new = dict((key, value) for (key, value) in kwargs.items() diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py index c5b3f07..cfdf392 100644 --- a/ceilometerclient/v2/shell.py +++ b/ceilometerclient/v2/shell.py @@ -63,10 +63,13 @@ def do_statistics(cc, args): help='key[op]value; list.') @utils.arg('-m', '--meter', metavar='<NAME>', required=True, help='Name of meter to show samples for.') +@utils.arg('-l', '--limit', metavar='<NUMBER>', + help='Maximum number of samples to return.') def do_sample_list(cc, args): '''List the samples for this meters.''' fields = {'meter_name': args.meter, - 'q': options.cli_to_array(args.query)} + 'q': options.cli_to_array(args.query), + 'limit': args.limit} try: samples = cc.samples.list(**fields) except exc.HTTPNotFound: |
