Support --all-projects in 'server list' command
Change-Id: I2ca747d67a7e5694ce704e0c210579a0214e98ee
This commit is contained in:
@@ -153,6 +153,13 @@ class ListServer(command.Lister):
|
||||
default=False,
|
||||
help=_("List additional with details.")
|
||||
)
|
||||
parser.add_argument(
|
||||
'--all-projects',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help=_("List the baremetal servers of all projects, "
|
||||
"only available for admin users.")
|
||||
)
|
||||
return parser
|
||||
|
||||
@staticmethod
|
||||
@@ -169,7 +176,8 @@ class ListServer(command.Lister):
|
||||
bc_client = self.app.client_manager.baremetal_compute
|
||||
|
||||
if parsed_args.detailed:
|
||||
data = bc_client.server.list(detailed=True)
|
||||
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 = (
|
||||
@@ -193,7 +201,7 @@ class ListServer(command.Lister):
|
||||
"network_info"
|
||||
)
|
||||
else:
|
||||
data = bc_client.server.list()
|
||||
data = bc_client.server.list(all_projects=parsed_args.all_projects)
|
||||
formatters = None
|
||||
column_headers = (
|
||||
"UUID",
|
||||
|
||||
@@ -355,6 +355,21 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
||||
self.assertEqual(self.list_columns_detailed, columns)
|
||||
self.assertEqual(self.list_data_detailed, tuple(data))
|
||||
|
||||
def test_server_list_with_all_projects(self, mock_list):
|
||||
arglist = [
|
||||
'--all-projects',
|
||||
]
|
||||
verifylist = [
|
||||
('all_projects', True),
|
||||
]
|
||||
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',
|
||||
response_key='instances')
|
||||
self.assertEqual(self.list_columns, columns)
|
||||
self.assertEqual(self.list_data, tuple(data))
|
||||
|
||||
|
||||
@mock.patch.object(utils, 'find_resource')
|
||||
@mock.patch.object(server_mgr.ServerManager, '_delete')
|
||||
|
||||
@@ -48,8 +48,10 @@ class ServerManager(base.ManagerWithFind):
|
||||
url = '/instances/%s' % base.getid(server_id)
|
||||
return self._get(url)
|
||||
|
||||
def list(self, detailed=False):
|
||||
def list(self, detailed=False, all_projects=False):
|
||||
url = '/instances/detail' if detailed else '/instances'
|
||||
if all_projects:
|
||||
url = '%s?%s' % (url, 'all_tenants=True')
|
||||
return self._list(url, response_key='instances')
|
||||
|
||||
def update(self, server_id, updates):
|
||||
|
||||
Reference in New Issue
Block a user