summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Saje <nejc.saje@xlab.si>2013-10-24 13:15:01 +0200
committerNejc Saje <nejc.saje@xlab.si>2013-10-28 11:43:47 +0100
commit03a567f9f44843ac146e058a3c9bfc933b375180 (patch)
tree7cddb8c530e1ef1e720bc98bebcb1f14ada04967
parent1b0f94f20580a55bea52ba468bdeeca3dd4552bd (diff)
downloadpython-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.py14
-rw-r--r--ceilometerclient/tests/v2/test_shell.py4
-rw-r--r--ceilometerclient/v2/samples.py5
-rw-r--r--ceilometerclient/v2/shell.py5
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: