diff options
| author | Kevin L. Mitchell <kevin.mitchell@rackspace.com> | 2011-03-10 20:36:36 +0000 |
|---|---|---|
| committer | Kevin L. Mitchell <kevin.mitchell@rackspace.com> | 2011-03-10 20:36:36 +0000 |
| commit | bd06f0ac0d0d3e3c9d7b296c5fe4bb8a0dd44c89 (patch) | |
| tree | 4b2df381117bd6b8d769bf46612fc309576bc009 /nova | |
| parent | 03e5b8f7c4e1afc6637774acb3d28100035cd323 (diff) | |
| download | nova-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.py | 21 |
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 |
