summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRohit Jaiswal <rohit.jaiswal@hp.com>2015-10-23 14:46:23 +0000
committerRohit Jaiswal <rohit.jaiswal@hp.com>2015-10-23 17:48:08 +0000
commitb84806d87c08b7773243f8c06d1ab8773f906c43 (patch)
tree793310f3050114a4ae744bd9b95d27b2cf9d2456
parent58572ad4c974694dac199e5f35d6401f62f05ab9 (diff)
downloadpython-ceilometerclient-b84806d87c08b7773243f8c06d1ab8773f906c43.tar.gz
Fix to enable meter-links on resource-list CLI
This adds an optional param to resource-list CLI to enable meter-links. By default, meter links are not generated, this patch adds an optional param to generate links. Change-Id: I308b94c8a57833cf30b4815ecec2ff9a50e91af6 Closes-Bug: #1508709 (cherry picked from commit e4a62a20b1d072969e842c38b2885a46a20fc54c)
-rw-r--r--ceilometerclient/tests/unit/v2/test_resources.py29
-rw-r--r--ceilometerclient/tests/unit/v2/test_shell.py22
-rw-r--r--ceilometerclient/v2/shell.py3
3 files changed, 53 insertions, 1 deletions
diff --git a/ceilometerclient/tests/unit/v2/test_resources.py b/ceilometerclient/tests/unit/v2/test_resources.py
index 3368b77..3c19654 100644
--- a/ceilometerclient/tests/unit/v2/test_resources.py
+++ b/ceilometerclient/tests/unit/v2/test_resources.py
@@ -52,6 +52,25 @@ fixtures = {
]
),
},
+ '/v2/resources?meter_links=1': {
+ 'GET': (
+ {},
+ [
+ {
+ 'resource_id': 'c',
+ 'project_id': 'project_blah',
+ 'user_id': 'fred',
+ 'metadata': {'zxc_id': 'blah'},
+ },
+ {
+ 'resource_id': 'd',
+ 'project_id': 'bury_the_ditch',
+ 'user_id': 'jack',
+ 'metadata': {'zxc_id': 'foobar'},
+ },
+ ]
+ ),
+ },
'/v2/resources/a':
{
'GET': (
@@ -85,6 +104,16 @@ class ResourceManagerTest(utils.BaseTestCase):
self.assertEqual(resources[0].resource_id, 'a')
self.assertEqual(resources[1].resource_id, 'b')
+ def test_list_all_with_links_enabled(self):
+ resources = list(self.mgr.list(links=True))
+ expect = [
+ 'GET', '/v2/resources?meter_links=1'
+ ]
+ self.http_client.assert_called(*expect)
+ self.assertEqual(2, len(resources))
+ self.assertEqual('c', resources[0].resource_id)
+ self.assertEqual('d', resources[1].resource_id)
+
def test_list_one(self):
resource = self.mgr.get(resource_id='a')
expect = [
diff --git a/ceilometerclient/tests/unit/v2/test_shell.py b/ceilometerclient/tests/unit/v2/test_shell.py
index 725ef66..a860b43 100644
--- a/ceilometerclient/tests/unit/v2/test_shell.py
+++ b/ceilometerclient/tests/unit/v2/test_shell.py
@@ -1382,6 +1382,7 @@ class ShellResourceListCommandTest(utils.BaseTestCase):
self.cc.resources.list = mock.Mock()
self.args = mock.MagicMock()
self.args.limit = None
+ self.args.meter_links = None
@mock.patch('sys.stdout', new=six.StringIO())
def test_resource_list(self):
@@ -1389,7 +1390,9 @@ class ShellResourceListCommandTest(utils.BaseTestCase):
self.cc.resources.list.return_value = [resource]
ceilometer_shell.do_resource_list(self.cc, self.args)
- self.cc.resources.list.assert_called_once_with(q=[], limit=None)
+ self.cc.resources.list.assert_called_once_with(q=[],
+ links=None,
+ limit=None)
self.assertEqual('''\
+-------------+-----------+---------+------------+
@@ -1399,6 +1402,23 @@ class ShellResourceListCommandTest(utils.BaseTestCase):
+-------------+-----------+---------+------------+
''', sys.stdout.getvalue())
+ @mock.patch('sys.stdout', new=six.StringIO())
+ def test_resource_list_with_links(self):
+ self.args.meter_links = True
+ resource = resources.Resource(mock.Mock(), self.RESOURCE)
+ self.cc.resources.list.return_value = [resource]
+ ceilometer_shell.do_resource_list(self.cc, self.args)
+ self.cc.resources.list.assert_called_once_with(q=[],
+ links=True,
+ limit=None)
+ self.assertEqual('''\
++-------------+-----------+---------+------------+
+| Resource ID | Source | User ID | Project ID |
++-------------+-----------+---------+------------+
+| resource-id | openstack | user | project |
++-------------+-----------+---------+------------+
+''', sys.stdout.getvalue())
+
class ShellEventTypeListCommandTest(utils.BaseTestCase):
diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py
index 798dc45..a145700 100644
--- a/ceilometerclient/v2/shell.py
+++ b/ceilometerclient/v2/shell.py
@@ -1053,11 +1053,14 @@ def do_alarm_history(cc, args={}):
@utils.arg('-q', '--query', metavar='<QUERY>',
help='key[op]data_type::value; list. data_type is optional, '
'but if supplied must be string, integer, float, or boolean.')
+@utils.arg('--meter-links', dest='meter_links', action='store_true',
+ help='If specified, meter links will be generated.')
@utils.arg('-l', '--limit', metavar='<NUMBER>',
help='Maximum number of resources to return.')
def do_resource_list(cc, args={}):
"""List the resources."""
resources = cc.resources.list(q=options.cli_to_array(args.query),
+ links=args.meter_links,
limit=args.limit)
field_labels = ['Resource ID', 'Source', 'User ID', 'Project ID']