summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit
diff options
context:
space:
mode:
authorPavlo Shchelokovskyy <shchelokovskyy@gmail.com>2018-05-14 18:13:28 +0000
committerDean Troyer <dtroyer@gmail.com>2018-11-02 12:01:36 -0500
commite782f49927a6b142a35f85a1a4a759fd2b1ceedf (patch)
tree18980d991f18528afdf5eee68c0d974556e0569b /openstackclient/tests/unit
parentb9fab849f7be93fa62e793ce68303a9473c54fa7 (diff)
downloadpython-openstackclient-e782f49927a6b142a35f85a1a4a759fd2b1ceedf.tar.gz
Add --name-lookup-one-by-one option to server list
usually in a big cloud there are many images and flavors, while each given project might use only some of those. This patch introduces '--name-lookup-one-by-one' argument to server list command (mutually exclusive with '--no-name-lookup') When provided (or either '--image' or '--flavor' is specified) to the `server list` command, name resolving for corresponding entity is now using targeted GET commands instead of full entities list. In some situations this can significantly speedup the execution of the `server list` command by reducing the number of API requests performed. Change-Id: I59cbf3f75c55e5d3747654edcc9be86ad954cf40 Story: #2002039 Task: #19682
Diffstat (limited to 'openstackclient/tests/unit')
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 46d4c241..6243b49d 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -1938,12 +1938,18 @@ class TestServerList(TestServer):
('all_projects', False),
('long', False),
('deleted', False),
+ ('name_lookup_one_by_one', False),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.servers_mock.list.assert_called_with(**self.kwargs)
+ self.images_mock.list.assert_called()
+ self.flavors_mock.list.assert_called()
+ # we did not pass image or flavor, so gets on those must be absent
+ self.assertFalse(self.flavors_mock.get.call_count)
+ self.assertFalse(self.images_mock.get.call_count)
self.assertEqual(self.columns, columns)
self.assertEqual(tuple(self.data), tuple(data))
@@ -2014,6 +2020,28 @@ class TestServerList(TestServer):
self.assertEqual(self.columns, columns)
self.assertEqual(tuple(self.data_no_name_lookup), tuple(data))
+ def test_server_list_name_lookup_one_by_one(self):
+ arglist = [
+ '--name-lookup-one-by-one'
+ ]
+ verifylist = [
+ ('all_projects', False),
+ ('no_name_lookup', False),
+ ('name_lookup_one_by_one', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.servers_mock.list.assert_called_with(**self.kwargs)
+ self.assertFalse(self.images_mock.list.call_count)
+ self.assertFalse(self.flavors_mock.list.call_count)
+ self.images_mock.get.assert_called()
+ self.flavors_mock.get.assert_called()
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(tuple(self.data), tuple(data))
+
def test_server_list_with_image(self):
arglist = [
@@ -2046,7 +2074,7 @@ class TestServerList(TestServer):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.flavors_mock.get.assert_called_with(self.flavor.id)
+ self.flavors_mock.get.has_calls(self.flavor.id)
self.search_opts['flavor'] = self.flavor.id
self.servers_mock.list.assert_called_with(**self.kwargs)