From b51a8be1ba075beba1b0a0a50052751e07046b9a Mon Sep 17 00:00:00 2001 From: Tobias Henkel Date: Tue, 16 Feb 2021 11:21:40 +0100 Subject: [PATCH] Optimize list_servers call in cleanupLeakedInstances By default list_servers gets the server list and then attaches the network information to each server object. This involves a call to the floatingips endpoint per instance. This is unneeded during cleanupLeakedInstances since we're only interested in the id and metadata in order to trigger node deletion. In larger clouds this can trigger hundreds or thousands unnecessary api calls to the cloud. Optimize this by getting the server list with the bare flag to avoid that. Change-Id: Ie48e647eefc2aa3169e943fdf6854d82219b645b --- nodepool/driver/openstack/provider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodepool/driver/openstack/provider.py b/nodepool/driver/openstack/provider.py index 0506ffb10..67d0b772f 100755 --- a/nodepool/driver/openstack/provider.py +++ b/nodepool/driver/openstack/provider.py @@ -463,7 +463,7 @@ class OpenStackProvider(Provider, QuotaSupport): deleting_nodes[node.provider] = [] deleting_nodes[node.provider].append(node.external_id) - for server in self.listNodes(): + for server in self._client.list_servers(bare=True): meta = server.get('metadata', {}) if 'nodepool_provider_name' not in meta: