diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-04-12 05:00:10 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-04-12 05:00:10 +0000 |
commit | e56da49b60eda53b743f1f5391a323e4e2f0fcfe (patch) | |
tree | e9458cacef707496f00ff2be744f02671b3334eb | |
parent | defbb95855443047c3fb0a90ca4a9c9d1a51180b (diff) | |
parent | f032b7ef848d248f5917ea30a2caaa7f6d4e6822 (diff) | |
download | python-ceilometerclient-e56da49b60eda53b743f1f5391a323e4e2f0fcfe.tar.gz |
Merge "Statistics groupby handling improvement"
-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 dde4dd6..ed3465c 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 d0b56c9..e8c92e8 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 @@ -43,6 +45,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( |