]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commit
Fix IP recycling on exhausted pool
authorSalvatore Orlando <salv.orlando@gmail.com>
Wed, 16 Oct 2013 10:14:16 +0000 (03:14 -0700)
committerMark McClain <mark.mcclain@dreamhost.com>
Wed, 16 Oct 2013 14:40:03 +0000 (10:40 -0400)
commit9808cac073777ae375074121f9eab15403f1a856
treecfc4c2cb9dd24502fdc0e159370bf95cc186e381
parentc471fdc7b3bda60a3419a122357fba2a4facdff2
Fix IP recycling on exhausted pool

When recycling an IP, allocation pools are loaded with an inner
join with ip avaiblity ranges. However, if the pool is exhausted,
there will be no availability ranges and the query will return
no results because of the inner join. It will therefore be
impossible to reuse IP addresses once the pool has been exhausted.

This patch tries to reload allocation pools without joining on
IP avaiability ranges if the first query did not return any result.
Replacing an inner join with an outer join will not be possible
as postgresql backend does not support 'SELECT ... FOR UPDATE' with
outer joins (for more info see bug 1215350).

The patch also contains unit tests for verifying IP are recycled
correctly even when the pool is exhausted.

Bug 1240353

Change-Id: I87f274bd759cb47be77717f0760d3704f9f34ade
(cherry picked from commit 72af3cef2a476b7f1f7d109d1bd37cd50a6f560e)
neutron/db/db_base_plugin_v2.py
neutron/tests/unit/test_db_plugin.py