diff options
author | Stéphane Albert <stephane.albert@objectif-libre.com> | 2014-03-13 12:42:06 +0100 |
---|---|---|
committer | Stéphane Albert <stephane.albert@objectif-libre.com> | 2014-03-28 13:46:30 +0100 |
commit | f032b7ef848d248f5917ea30a2caaa7f6d4e6822 (patch) | |
tree | c3bc4a822acd9f5bf1d140b91749fccf48ef4174 | |
parent | fcfffacd3b13ca295a7f2ba42176f4212c1c96fb (diff) | |
download | python-ceilometerclient-f032b7ef848d248f5917ea30a2caaa7f6d4e6822.tar.gz |
Statistics groupby handling improvement
The groupby parameter for statistics now handle single string as a
parameter. It fixes the bug where every characters of the string where
interpreted as a groupby value.
Change-Id: Ia763741d7ad5717be381b0ac2f0acb57e9f46cac
Closes-Bug: #1291935
-rw-r--r-- | ceilometerclient/tests/v2/test_statistics.py | 20 | ||||
-rw-r--r-- | ceilometerclient/v2/statistics.py | 4 |
2 files changed, 24 insertions, 0 deletions
diff --git a/ceilometerclient/tests/v2/test_statistics.py b/ceilometerclient/tests/v2/test_statistics.py index 68a2672..6caedf2 100644 --- a/ceilometerclient/tests/v2/test_statistics.py +++ b/ceilometerclient/tests/v2/test_statistics.py @@ -179,6 +179,26 @@ class StatisticsManagerTest(utils.BaseTestCase): self.assertEqual(stats[0].groupby.get('resource_id'), 'foo') self.assertEqual(stats[1].groupby.get('resource_id'), 'bar') + def test_list_by_meter_name_with_groupby_as_str(self): + stats = list(self.mgr.list(meter_name='instance', + q=[ + {"field": "resource_id", + "value": "foo"}, + {"field": "source", + "value": "bar"}, + ], + groupby='resource_id')) + expect = [ + ('GET', + '%s?%s%s' % (base_url, qry, groupby), {}, None), + ] + self.assertEqual(expect, self.api.calls) + self.assertEqual(2, len(stats)) + self.assertEqual(135, stats[0].count) + self.assertEqual(12, stats[1].count) + self.assertEqual('foo', stats[0].groupby.get('resource_id')) + self.assertEqual('bar', stats[1].groupby.get('resource_id')) + def test_list_by_meter_name_with_aggregates(self): aggregates = [ { diff --git a/ceilometerclient/v2/statistics.py b/ceilometerclient/v2/statistics.py index 689992c..0d6a6d7 100644 --- a/ceilometerclient/v2/statistics.py +++ b/ceilometerclient/v2/statistics.py @@ -11,6 +11,8 @@ # License for the specific language governing permissions and limitations # under the License. +import six + from ceilometerclient.common import base from ceilometerclient.v2 import options @@ -37,6 +39,8 @@ class StatisticsManager(base.Manager): def list(self, meter_name, q=None, period=None, groupby=[], aggregates=[]): p = ['period=%s' % period] if period else [] + if isinstance(groupby, six.string_types): + groupby = [groupby] p.extend(['groupby=%s' % g for g in groupby] if groupby else []) p.extend(self._build_aggregates(aggregates)) return self._list(options.build_url( |