From f48f1bb72474e564f4f8b01da97730f612a868f9 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Tue, 13 Mar 2012 13:15:49 -0400 Subject: Make fixed_ip_disassociate_all_by_timeout work. Fix an issue in the SQL api where fixed_ip_disassociate_all_by_timeout was getting an array of tuples instead of IDs from a model_query. This should resolves issues where fixed IPs don't get dissassociated via the network managers periodic task. Fixes LP Bug #953708. Change-Id: Iac485cdcda072ee248237e6c4a31113685f5b980 --- nova/db/sqlalchemy/api.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 2136dbd6d..851d0733c 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -1015,16 +1015,17 @@ def fixed_ip_disassociate_all_by_timeout(context, host, time): host_filter = or_(and_(models.Instance.host == host, models.Network.multi_host == True), models.Network.host == host) - fixed_ips = model_query(context, models.FixedIp.id, session=session, + fixed_ips = model_query(context, models.FixedIp, session=session, read_deleted="yes").\ filter(models.FixedIp.updated_at < time).\ filter(models.FixedIp.instance_id != None).\ filter(models.FixedIp.allocated == False).\ filter(host_filter).\ all() + fixed_ip_ids = [fip.id for fip in fixed_ips] result = model_query(context, models.FixedIp, session=session, read_deleted="yes").\ - filter(models.FixedIp.id.in_(fixed_ips)).\ + filter(models.FixedIp.id.in_(fixed_ip_ids)).\ update({'instance_id': None, 'leased': False, 'updated_at': utils.utcnow()}, -- cgit