diff options
author | Rohit Jaiswal <rohit.jaiswal@hp.com> | 2015-10-23 14:46:23 +0000 |
---|---|---|
committer | Rohit Jaiswal <rohit.jaiswal@hp.com> | 2015-10-23 17:48:08 +0000 |
commit | b84806d87c08b7773243f8c06d1ab8773f906c43 (patch) | |
tree | 793310f3050114a4ae744bd9b95d27b2cf9d2456 | |
parent | 58572ad4c974694dac199e5f35d6401f62f05ab9 (diff) | |
download | python-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.py | 29 | ||||
-rw-r--r-- | ceilometerclient/tests/unit/v2/test_shell.py | 22 | ||||
-rw-r--r-- | ceilometerclient/v2/shell.py | 3 |
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'] |