Persist updated expiration time

Without creating a subtransaction, the database query wasn't actually
being run and the data was being lost.  This resulted in the case that
on termination of long running VMs, the VM IP address was immediately
available for reuse instead of being held as it should have been.

Fixes: bug #1116500

Change-Id: I7774273b8e799d945c27329e9da2dba34e39fdb8
Signed-off-by: Stephen Gran <stephen.gran@guardian.co.uk>
This commit is contained in:
Stephen Gran 2013-02-06 14:57:57 +00:00
parent 0bb435d607
commit 69cc5e2aa4

View File

@ -394,8 +394,9 @@ class QuantumDbPluginV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
query = query.filter_by(network_id=network_id, ip_address=ip_address) query = query.filter_by(network_id=network_id, ip_address=ip_address)
try: try:
fixed_ip = query.one() with context.session.begin(subtransactions=True):
fixed_ip.expiration = expiration fixed_ip = query.one()
fixed_ip.expiration = expiration
except exc.NoResultFound: except exc.NoResultFound:
LOG.debug(_("No fixed IP found that matches the network " LOG.debug(_("No fixed IP found that matches the network "
"%(network_id)s and ip address %(ip_address)s."), "%(network_id)s and ip address %(ip_address)s."),