From a6ca935665aef3cf00b8a01ca8d4fb4becf1051f Mon Sep 17 00:00:00 2001 From: Fei Long Wang Date: Wed, 14 Aug 2013 21:40:57 +0800 Subject: [PATCH] Raise error when period with negative value Based on current implement, when use launch below REST API: GET http://10.1.0.175:8777/v2/meters/port/statistics?period=-1 The result will be 200 OK. No any error reports. This query should not allow negative value setting but 400 error, and prompts like this: "Period must be positive.". Just like setting "Limit" to negative. Fixes bug 1212159 Change-Id: I8d547fdf8faae2094b24c81da6b233b432bc99ae --- ceilometer/api/controllers/v2.py | 5 +++++ tests/api/v2/test_statistics_scenarios.py | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/ceilometer/api/controllers/v2.py b/ceilometer/api/controllers/v2.py index 3d1ea0223..2b8eaefaa 100644 --- a/ceilometer/api/controllers/v2.py +++ b/ceilometer/api/controllers/v2.py @@ -567,6 +567,11 @@ class MeterController(rest.RestController): :param period: Returned result will be an array of statistics for a period long of that number of seconds. """ + if period and period < 0: + error = _("Period must be positive.") + pecan.response.translatable_error = error + raise wsme.exc.ClientSideError(error) + kwargs = _query_to_kwargs(q, storage.SampleFilter.__init__) kwargs['meter'] = self._id f = storage.SampleFilter(**kwargs) diff --git a/tests/api/v2/test_statistics_scenarios.py b/tests/api/v2/test_statistics_scenarios.py index 23712db3c..30d3a7696 100644 --- a/tests/api/v2/test_statistics_scenarios.py +++ b/tests/api/v2/test_statistics_scenarios.py @@ -185,6 +185,13 @@ class TestMaxResourceVolume(base.FunctionalTest, u'2012-09-25T11:30:00', u'2012-09-25T12:30:00'])) + def test_period_with_negative_value(self): + resp = self.get_json(self.PATH, expect_errors=True, + q=[{'field': 'resource_id', + 'value': 'resource-id'}], + period=-1) + self.assertEquals(400, resp.status_code) + def test_start_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', 'value': 'resource-id',