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
This commit is contained in:
Maysa Macedo 2019-11-20 11:46:54 +00:00
parent 28b27c5de2
commit 1067b9bf3e
1 changed files with 4 additions and 2 deletions

View File

@ -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)