summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-03-11 21:11:59 +0000
committerGerrit Code Review <review@openstack.org>2016-03-11 21:11:59 +0000
commit3f5ed4579f4cbc0dec9db843b51078ca25a8d1c6 (patch)
tree3d2f4063441cbb7c1a7fbc9f459f36b56e1f9023
parent8bbea95f32b8073b9108b54eb80e24e71333d0fc (diff)
parentcb98c6d05fadb4f9df202235a9d8582f5ed40339 (diff)
downloadpython-ceilometerclient-3f5ed4579f4cbc0dec9db843b51078ca25a8d1c6.tar.gz
Merge "Enhances client to support unique meter retrieval" into stable/mitaka
-rw-r--r--ceilometerclient/tests/unit/v2/test_shell.py22
-rw-r--r--ceilometerclient/v2/meters.py11
-rw-r--r--ceilometerclient/v2/shell.py6
3 files changed, 35 insertions, 4 deletions
diff --git a/ceilometerclient/tests/unit/v2/test_shell.py b/ceilometerclient/tests/unit/v2/test_shell.py
index 053936b..8f518b2 100644
--- a/ceilometerclient/tests/unit/v2/test_shell.py
+++ b/ceilometerclient/tests/unit/v2/test_shell.py
@@ -1846,6 +1846,7 @@ class ShellMeterListCommandTest(utils.BaseTestCase):
self.cc.meters.list = mock.Mock()
self.args = mock.MagicMock()
self.args.limit = None
+ self.args.unique = False
@mock.patch('sys.stdout', new=six.StringIO())
def test_meter_list(self):
@@ -1853,7 +1854,26 @@ class ShellMeterListCommandTest(utils.BaseTestCase):
self.cc.meters.list.return_value = [meter]
ceilometer_shell.do_meter_list(self.cc, self.args)
- self.cc.meters.list.assert_called_once_with(q=[], limit=None)
+ self.cc.meters.list.assert_called_once_with(q=[], limit=None,
+ unique=False)
+
+ self.assertEqual('''\
++-------+-------+-------+-------------+---------+------------+
+| Name | Type | Unit | Resource ID | User ID | Project ID |
++-------+-------+-------+-------------+---------+------------+
+| image | gauge | image | resource-id | | project |
++-------+-------+-------+-------------+---------+------------+
+''', sys.stdout.getvalue())
+
+ @mock.patch('sys.stdout', new=six.StringIO())
+ def test_unique_meter_list(self):
+ self.args.unique = True
+ meter = meters.Meter(mock.Mock(), self.METER)
+ self.cc.meters.list.return_value = [meter]
+
+ ceilometer_shell.do_meter_list(self.cc, self.args)
+ self.cc.meters.list.assert_called_once_with(q=[], limit=None,
+ unique=True)
self.assertEqual('''\
+-------+-------+-------+-------------+---------+------------+
diff --git a/ceilometerclient/v2/meters.py b/ceilometerclient/v2/meters.py
index ddb2134..015c04c 100644
--- a/ceilometerclient/v2/meters.py
+++ b/ceilometerclient/v2/meters.py
@@ -25,7 +25,14 @@ class Meter(base.Resource):
class MeterManager(base.Manager):
resource_class = Meter
- def list(self, q=None, limit=None):
+ def list(self, q=None, limit=None, unique=False):
path = '/v2/meters'
- params = ['limit=%s' % limit] if limit else None
+ params = []
+
+ if limit:
+ params.append('limit=%s' % limit)
+
+ if unique:
+ params.append('unique=%s' % str(unique))
+
return self._list(options.build_url(path, q, params))
diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py
index 4395ecd..09c2e95 100644
--- a/ceilometerclient/v2/shell.py
+++ b/ceilometerclient/v2/shell.py
@@ -266,10 +266,14 @@ def do_sample_create(cc, args={}):
'but if supplied must be string, integer, float, or boolean.')
@utils.arg('-l', '--limit', metavar='<NUMBER>',
help='Maximum number of meters to return. %s' % DEFAULT_API_LIMIT)
+@utils.arg('--unique', dest='unique',
+ metavar='{True|False}',
+ type=lambda v: strutils.bool_from_string(v, True),
+ help='Retrieves unique list of meters.')
def do_meter_list(cc, args={}):
"""List the user's meters."""
meters = cc.meters.list(q=options.cli_to_array(args.query),
- limit=args.limit)
+ limit=args.limit, unique=args.unique)
field_labels = ['Name', 'Type', 'Unit', 'Resource ID', 'User ID',
'Project ID']
fields = ['name', 'type', 'unit', 'resource_id', 'user_id',