summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorKevin L. Mitchell <kevin.mitchell@rackspace.com>2011-03-10 20:36:36 +0000
committerKevin L. Mitchell <kevin.mitchell@rackspace.com>2011-03-10 20:36:36 +0000
commitbd06f0ac0d0d3e3c9d7b296c5fe4bb8a0dd44c89 (patch)
tree4b2df381117bd6b8d769bf46612fc309576bc009 /nova
parent03e5b8f7c4e1afc6637774acb3d28100035cd323 (diff)
downloadnova-bd06f0ac0d0d3e3c9d7b296c5fe4bb8a0dd44c89.tar.gz
nova-bd06f0ac0d0d3e3c9d7b296c5fe4bb8a0dd44c89.tar.xz
nova-bd06f0ac0d0d3e3c9d7b296c5fe4bb8a0dd44c89.zip
Last un-magiced session.execute() replaced with SQLAlchemy code...
Diffstat (limited to 'nova')
-rw-r--r--nova/db/sqlalchemy/api.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 31adb33ee..88125aaf5 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -579,16 +579,17 @@ def fixed_ip_disassociate_all_by_timeout(_context, host, time):
session = get_session()
# NOTE(vish): The nested select is because sqlite doesn't support
# JOINs in UPDATEs.
- result = session.execute('UPDATE fixed_ips SET instance_id = NULL, '
- 'leased = 0 '
- 'WHERE network_id IN (SELECT id FROM networks '
- 'WHERE host = :host) '
- 'AND updated_at < :time '
- 'AND instance_id IS NOT NULL '
- 'AND allocated = 0',
- {'host': host,
- 'time': time})
- return result.rowcount
+ inner_q = session.query(models.Network.id).\
+ filter_by(host=host).\
+ subquery()
+ result = session.query(models.FixedIp).\
+ filter(models.FixedIp.network_id.in_(inner_q)).\
+ filter(models.FixedIp.updated_at < time).\
+ filter(models.FixedIp.instance_id != None).\
+ filter_by(allocated=0).\
+ update({'instance_id': None,
+ 'leased': 0})
+ return result
@require_admin_context