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
This commit is contained in:
@@ -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 = [
|
||||
|
||||
@@ -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):
|
||||
|
||||
|
||||
@@ -1054,11 +1054,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']
|
||||
|
||||
Reference in New Issue
Block a user