From 1067b9bf3e17829148182bbfcf108f06a5b483d9 Mon Sep 17 00:00:00 2001 From: Maysa Macedo Date: Wed, 20 Nov 2019 11:46:54 +0000 Subject: [PATCH] Fix deletion of ports on a pool We should ensure the ports pools dict that is being interated do not change over time, causing the deletion of the ports to fail. A dict copy is made to avoid this. Change-Id: Ibf0662f71c3837f97c2e9ce815a48a0955c50e89 Closes-bug: 1853281 --- kuryr_kubernetes/controller/drivers/vif_pool.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kuryr_kubernetes/controller/drivers/vif_pool.py b/kuryr_kubernetes/controller/drivers/vif_pool.py index fe0f7988d..47fed393b 100644 --- a/kuryr_kubernetes/controller/drivers/vif_pool.py +++ b/kuryr_kubernetes/controller/drivers/vif_pool.py @@ -653,7 +653,8 @@ class NeutronVIFPool(BaseVIFPool): # on the available_ports_pools dict. The next call forces it to be on # that dict before cleaning it up self._trigger_return_to_pool() - for pool_key, ports in self._available_ports_pools.items(): + available_ports_pools = self._available_ports_pools.copy() + for pool_key, ports in available_ports_pools.items(): if self._get_pool_key_net(pool_key) != net_id: continue ports_id = [] @@ -1014,7 +1015,8 @@ class NestedVIFPool(BaseVIFPool): # on the available_ports_pools dict. The next call forces it to be on # that dict before cleaning it up self._trigger_return_to_pool() - for pool_key, ports in self._available_ports_pools.items(): + available_ports_pools = self._available_ports_pools.copy() + for pool_key, ports in available_ports_pools.items(): if self._get_pool_key_net(pool_key) != net_id: continue trunk_id = self._get_trunk_id(neutron, pool_key)