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':
|
'/v2/resources/a':
|
||||||
{
|
{
|
||||||
'GET': (
|
'GET': (
|
||||||
@@ -85,6 +104,16 @@ class ResourceManagerTest(utils.BaseTestCase):
|
|||||||
self.assertEqual(resources[0].resource_id, 'a')
|
self.assertEqual(resources[0].resource_id, 'a')
|
||||||
self.assertEqual(resources[1].resource_id, 'b')
|
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):
|
def test_list_one(self):
|
||||||
resource = self.mgr.get(resource_id='a')
|
resource = self.mgr.get(resource_id='a')
|
||||||
expect = [
|
expect = [
|
||||||
|
|||||||
@@ -1382,6 +1382,7 @@ class ShellResourceListCommandTest(utils.BaseTestCase):
|
|||||||
self.cc.resources.list = mock.Mock()
|
self.cc.resources.list = mock.Mock()
|
||||||
self.args = mock.MagicMock()
|
self.args = mock.MagicMock()
|
||||||
self.args.limit = None
|
self.args.limit = None
|
||||||
|
self.args.meter_links = None
|
||||||
|
|
||||||
@mock.patch('sys.stdout', new=six.StringIO())
|
@mock.patch('sys.stdout', new=six.StringIO())
|
||||||
def test_resource_list(self):
|
def test_resource_list(self):
|
||||||
@@ -1389,7 +1390,9 @@ class ShellResourceListCommandTest(utils.BaseTestCase):
|
|||||||
self.cc.resources.list.return_value = [resource]
|
self.cc.resources.list.return_value = [resource]
|
||||||
|
|
||||||
ceilometer_shell.do_resource_list(self.cc, self.args)
|
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('''\
|
self.assertEqual('''\
|
||||||
+-------------+-----------+---------+------------+
|
+-------------+-----------+---------+------------+
|
||||||
@@ -1399,6 +1402,23 @@ class ShellResourceListCommandTest(utils.BaseTestCase):
|
|||||||
+-------------+-----------+---------+------------+
|
+-------------+-----------+---------+------------+
|
||||||
''', sys.stdout.getvalue())
|
''', 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):
|
class ShellEventTypeListCommandTest(utils.BaseTestCase):
|
||||||
|
|
||||||
|
|||||||
@@ -1054,11 +1054,14 @@ def do_alarm_history(cc, args={}):
|
|||||||
@utils.arg('-q', '--query', metavar='<QUERY>',
|
@utils.arg('-q', '--query', metavar='<QUERY>',
|
||||||
help='key[op]data_type::value; list. data_type is optional, '
|
help='key[op]data_type::value; list. data_type is optional, '
|
||||||
'but if supplied must be string, integer, float, or boolean.')
|
'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>',
|
@utils.arg('-l', '--limit', metavar='<NUMBER>',
|
||||||
help='Maximum number of resources to return.')
|
help='Maximum number of resources to return.')
|
||||||
def do_resource_list(cc, args={}):
|
def do_resource_list(cc, args={}):
|
||||||
"""List the resources."""
|
"""List the resources."""
|
||||||
resources = cc.resources.list(q=options.cli_to_array(args.query),
|
resources = cc.resources.list(q=options.cli_to_array(args.query),
|
||||||
|
links=args.meter_links,
|
||||||
limit=args.limit)
|
limit=args.limit)
|
||||||
|
|
||||||
field_labels = ['Resource ID', 'Source', 'User ID', 'Project ID']
|
field_labels = ['Resource ID', 'Source', 'User ID', 'Project ID']
|
||||||
|
|||||||
Reference in New Issue
Block a user