summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2022-04-12 20:16:59 +0100
committerStephen Finucane <sfinucan@redhat.com>2022-04-12 20:41:29 +0100
commit725b7de13cf00da386132a42b2738f4c57026184 (patch)
treef857874024c9a02194ce89895bce03f818133d58 /openstackclient/tests
parentdabaec5a7b1b9786a8f91eebef738bf755faf059 (diff)
downloadpython-openstackclient-725b7de13cf00da386132a42b2738f4c57026184.tar.gz
compute: Only retrieve necessary images
The Glance API allows us to filter by multiple IDs using the 'in:' operator. Take advantage of this to speed up listing of server in larger deployments where image counts in the hundreds (or even thousands) are not uncommon. Unfortunately the Nova API does not support something similar for listing flavors. Boo. Change-Id: I7d3222d0b0b8bf72b4ff3e429bc49e621b569979 Signed-off-by: Stephen Finucane <sfinucan@redhat.com> Depends-On: https://review.opendev.org/c/openstack/openstacksdk/+/837613
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 46ace579..207daf4b 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -4441,8 +4441,8 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args)
self.servers_mock.list.assert_called_with(**self.kwargs)
- self.assertEqual(0, self.images_mock.list.call_count)
- self.assertEqual(0, self.flavors_mock.list.call_count)
+ self.images_mock.assert_not_called()
+ self.flavors_mock.list.assert_not_called()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data))
@@ -4465,7 +4465,8 @@ class TestServerList(_TestServerList):
getattr(s, 'OS-EXT-AZ:availability_zone'),
getattr(s, 'OS-EXT-SRV-ATTR:host'),
s.Metadata,
- ) for s in self.servers)
+ ) for s in self.servers
+ )
arglist = [
'--long',
]
@@ -4477,6 +4478,11 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args)
self.servers_mock.list.assert_called_with(**self.kwargs)
+ image_ids = {s.image['id'] for s in self.servers if s.image}
+ self.images_mock.assert_called_once_with(
+ id=f'in:{",".join(image_ids)}',
+ )
+ self.flavors_mock.list.assert_called_once_with(is_public=None)
self.assertEqual(self.columns_long, columns)
self.assertEqual(self.data, tuple(data))
@@ -4526,6 +4532,8 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args)
self.servers_mock.list.assert_called_with(**self.kwargs)
+ self.images_mock.assert_not_called()
+ self.flavors_mock.list.assert_not_called()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data))
@@ -4554,6 +4562,8 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args)
self.servers_mock.list.assert_called_with(**self.kwargs)
+ self.images_mock.assert_not_called()
+ self.flavors_mock.list.assert_not_called()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data))
@@ -4571,8 +4581,8 @@ class TestServerList(_TestServerList):
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.assert_not_called()
+ self.flavors_mock.list.assert_not_called()
self.get_image_mock.assert_called()
self.flavors_mock.get.assert_called()
@@ -4596,6 +4606,8 @@ class TestServerList(_TestServerList):
self.search_opts['image'] = self.image.id
self.servers_mock.list.assert_called_with(**self.kwargs)
+ self.images_mock.assert_not_called()
+ self.flavors_mock.list.assert_called_once()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data))
@@ -4616,6 +4628,8 @@ class TestServerList(_TestServerList):
self.search_opts['flavor'] = self.flavor.id
self.servers_mock.list.assert_called_with(**self.kwargs)
+ self.images_mock.assert_called_once()
+ self.flavors_mock.list.assert_not_called()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data))