From 459db7deba825e79caa7801680df23b6f6b1c338 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 19:48:12 -0700 Subject: more fixes to session handling --- nova/db/sqlalchemy/api.py | 10 +++++----- nova/db/sqlalchemy/session.py | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 7b2703a7c..c661fca3d 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -188,9 +188,7 @@ def fixed_ip_get_network(_context, address): def fixed_ip_deallocate(context, address): - fixed_ip_ref = fixed_ip_get_by_address(context, address) - fixed_ip_ref['allocated'] = False - fixed_ip_ref.save() + db.fixed_ip_update(context, address, {'allocated': False}) def fixed_ip_instance_associate(_context, address, instance_id): @@ -231,8 +229,10 @@ def instance_create(_context, values): def instance_destroy(context, instance_id): - instance_ref = instance_get(context, instance_id) - instance_ref.delete() + session = get_session() + with session.begin(): + instance_ref = models.Instance.find(instance_id, session=session) + instance_ref.delete(session=session) def instance_get(_context, instance_id): diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py index c00eecb5c..69a205378 100644 --- a/nova/db/sqlalchemy/session.py +++ b/nova/db/sqlalchemy/session.py @@ -29,12 +29,14 @@ FLAGS = flags.FLAGS _ENGINE = None _MAKER = None -def get_session(autocommit=True): +def get_session(autocommit=True, expire_on_commit=False): """Helper method to grab session""" global _ENGINE global _MAKER if not _MAKER: if not _ENGINE: _ENGINE = create_engine(FLAGS.sql_connection, echo=False) - _MAKER = sessionmaker(bind=_ENGINE, autocommit=autocommit) + _MAKER = sessionmaker(bind=_ENGINE, + autocommit=autocommit, + expire_on_commit=expire_on_commit) return _MAKER() -- cgit