diff options
-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'] |