diff --git a/moganclient/osc/v1/server.py b/moganclient/osc/v1/server.py index 72c4fe0..adebcb8 100644 --- a/moganclient/osc/v1/server.py +++ b/moganclient/osc/v1/server.py @@ -18,6 +18,7 @@ import json import logging +import os from osc_lib.cli import parseractions from osc_lib.command import command @@ -207,9 +208,8 @@ class ListServer(command.Lister): parser.add_argument( '--all-projects', action='store_true', - default=False, - help=_("List the baremetal servers of all projects, " - "only available for admin users.") + default=bool(int(os.environ.get("ALL_PROJECTS", 0))), + help=_('Include all projects (admin only)'), ) return parser @@ -227,46 +227,49 @@ class ListServer(command.Lister): bc_client = self.app.client_manager.baremetal_compute if parsed_args.long: - data = bc_client.server.list(detailed=True, - all_projects=parsed_args.all_projects) - formatters = {'network_info': self._networks_formatter} # This is the easiest way to change column headers column_headers = ( "UUID", "Name", - "Flavor", "Status", "Power State", + "Networks", "Image", - "Description", + "Flavor", "Availability Zone", - "Networks" + 'Properties', ) columns = ( "uuid", "name", - "instance_type_uuid", "status", "power_state", + "network_info", "image_uuid", - "description", + "instance_type_uuid", "availability_zone", - "network_info" + 'extra', ) else: - data = bc_client.server.list(all_projects=parsed_args.all_projects) - formatters = None column_headers = ( "UUID", "Name", "Status", + "Networks", + "Image", ) columns = ( "uuid", "name", "status", + "network_info", + "image_uuid", ) + data = bc_client.server.list(detailed=True, + all_projects=parsed_args.all_projects) + formatters = {'network_info': self._networks_formatter, + 'extra': utils.format_dict} return (column_headers, (utils.get_item_properties( s, columns, formatters=formatters diff --git a/moganclient/tests/unit/fakes.py b/moganclient/tests/unit/fakes.py index 58af7c2..9037977 100644 --- a/moganclient/tests/unit/fakes.py +++ b/moganclient/tests/unit/fakes.py @@ -260,7 +260,7 @@ class FakeServer(object): dashed=False), "availability_zone": "zone-name-" + uuidutils.generate_uuid( dashed=False), - 'extra': "fake_extra" + 'extra': {} } # Overwrite default attributes. diff --git a/moganclient/tests/unit/osc/v1/test_server.py b/moganclient/tests/unit/osc/v1/test_server.py index 737b072..23774a0 100644 --- a/moganclient/tests/unit/osc/v1/test_server.py +++ b/moganclient/tests/unit/osc/v1/test_server.py @@ -309,36 +309,40 @@ class TestServerList(test_base.TestBaremetalComputeV1): "UUID", "Name", "Status", + 'Networks', + 'Image' ) self.list_columns_long = ( "UUID", "Name", - "Flavor", "Status", "Power State", + "Networks", "Image", - "Description", + "Flavor", "Availability Zone", - "Networks" + "Properties" ) self.list_data = tuple(( self.fake_servers[i].uuid, self.fake_servers[i].name, self.fake_servers[i].status, + '172.24.4.4, 2001:db8::a', + self.fake_servers[i].image_uuid, ) for i in range(3)) self.list_data_long = tuple(( self.fake_servers[i].uuid, self.fake_servers[i].name, - self.fake_servers[i].instance_type_uuid, self.fake_servers[i].status, self.fake_servers[i].power_state, + '172.24.4.4, 2001:db8::a', self.fake_servers[i].image_uuid, - self.fake_servers[i].description, + self.fake_servers[i].instance_type_uuid, self.fake_servers[i].availability_zone, - '172.24.4.4, 2001:db8::a' + '', ) for i in range(3)) def test_server_list(self, mock_list): @@ -347,7 +351,7 @@ class TestServerList(test_base.TestBaremetalComputeV1): mock_list.return_value = self.fake_servers parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - mock_list.assert_called_once_with('/instances', + mock_list.assert_called_once_with('/instances/detail', response_key='instances') self.assertEqual(self.list_columns, columns) self.assertEqual(self.list_data, tuple(data)) @@ -377,7 +381,7 @@ class TestServerList(test_base.TestBaremetalComputeV1): mock_list.return_value = self.fake_servers parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - mock_list.assert_called_once_with('/instances?all_tenants=True', + mock_list.assert_called_once_with('/instances/detail?all_tenants=True', response_key='instances') self.assertEqual(self.list_columns, columns) self.assertEqual(self.list_data, tuple(data))