From a74850d2c4dccd72fc8e59df04848747dda0b70f Mon Sep 17 00:00:00 2001 From: xfrnk2 Date: Sun, 6 Oct 2024 01:20:27 +0900 Subject: [PATCH] Add a column to all_projects tag of server list cmd Add a Project ID column to the --all-projects tag of server list cmd Differentiate from the basic command, add a column for Project ID to facilitate easier identification. Add test code for the Project ID column of --all-projects tag. Change-Id: I12af2c91f934e7cd268d21cf76dda78646ed2ff4 --- openstackclient/compute/v2/server.py | 4 ++ .../tests/unit/compute/v2/test_server.py | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py index 524eae5490..73411a654f 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -2853,6 +2853,10 @@ class ListServer(command.Lister): 'Scheduler Hints', ) + if parsed_args.all_projects: + columns += ('project_id',) + column_headers += ('Project ID',) + # support for additional columns if parsed_args.columns: for c in parsed_args.columns: diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py index eb0b934e39..e129918d04 100644 --- a/openstackclient/tests/unit/compute/v2/test_server.py +++ b/openstackclient/tests/unit/compute/v2/test_server.py @@ -4594,6 +4594,15 @@ class _TestServerList(TestServer): 'Properties', 'Scheduler Hints', ) + columns_all_projects = ( + 'ID', + 'Name', + 'Status', + 'Networks', + 'Image', + 'Flavor', + 'Project ID', + ) def setUp(self): super().setUp() @@ -4755,6 +4764,36 @@ class TestServerList(_TestServerList): self.assertEqual(self.columns_long, columns) self.assertEqual(self.data, tuple(data)) + def test_server_list_all_projects_option(self): + self.data = tuple( + ( + s.id, + s.name, + s.status, + server.AddressesColumn(s.addresses), + # Image will be an empty string if boot-from-volume + self.image.name if s.image else server.IMAGE_STRING_FOR_BFV, + self.flavor.name, + s.project_id, + ) + for s in self.servers + ) + arglist = [ + '--all-projects', + ] + verifylist = [ + ('all_projects', True), + ('long', False), + ('deleted', False), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + + self.image_client.images.assert_called() + self.compute_client.flavors.assert_called() + self.assertEqual(self.columns_all_projects, columns) + self.assertEqual(self.data, tuple(data)) + def test_server_list_column_option(self): arglist = [ '-c',