diff --git a/novaclient/tests/v1_1/fakes.py b/novaclient/tests/v1_1/fakes.py index fe94f1e73..3e82eb053 100644 --- a/novaclient/tests/v1_1/fakes.py +++ b/novaclient/tests/v1_1/fakes.py @@ -1758,7 +1758,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) diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py index 9005759b4..eae395a83 100644 --- a/novaclient/tests/v1_1/test_shell.py +++ b/novaclient/tests/v1_1/test_shell.py @@ -1699,6 +1699,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') diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py index cb6b63167..0aa81a918 100644 --- a/novaclient/v1_1/shell.py +++ b/novaclient/v1_1/shell.py @@ -784,10 +784,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)