Enhance network-list to allow --fields

Add the ability to specify --fields, using any valid vields, when
doing a network-list. This code was shamelessly borrowed from
do_list(). This will allow crafting network-list queries which
mirror the functionality of 'nova-manage network list', which this
query was intended to replace.

Change-Id: I7ec7066350cdb979a64d20d14362b12e3ec76496
This commit is contained in:
Rafi Khardalian 2014-08-19 15:33:24 -07:00
parent 9758ffc85d
commit cc4f3dfc9c
3 changed files with 24 additions and 2 deletions

View File

@ -1708,7 +1708,7 @@ class FakeHTTPClient(base_client.HTTPClient):
def get_os_networks(self, **kw):
return (200, {}, {'networks': [{"label": "1", "cidr": "10.0.0.0/24",
'project_id': '4ffc664c198e435e9853f2538fbcd7a7',
'id': '1'}]})
'id': '1', 'vlan': '1234'}]})
def delete_os_networks_1(self, **kw):
return (202, {}, None)

View File

@ -1690,6 +1690,13 @@ class ShellTest(utils.TestCase):
self.run_command('network-list')
self.assert_called('GET', '/os-networks')
def test_network_list_fields(self):
output = self.run_command('network-list --fields '
'vlan,project_id')
self.assert_called('GET', '/os-networks')
self.assertIn('1234', output)
self.assertIn('4ffc664c198e435e9853f2538fbcd7a7', output)
def test_network_show(self):
self.run_command('network-show 1')
self.assert_called('GET', '/os-networks/1')

View File

@ -779,10 +779,25 @@ def do_scrub(cs, args):
cs.security_groups.delete(group)
def do_network_list(cs, _args):
@utils.arg('--fields',
default=None,
metavar='<fields>',
help='Comma-separated list of fields to display. '
'Use the show command to see which fields are available.')
def do_network_list(cs, args):
"""Print a list of available networks."""
network_list = cs.networks.list()
columns = ['ID', 'Label', 'Cidr']
formatters = {}
field_titles = []
if args.fields:
for field in args.fields.split(','):
field_title, formatter = utils._make_field_formatter(field, {})
field_titles.append(field_title)
formatters[field_title] = formatter
columns = columns + field_titles
utils.print_list(network_list, columns)