From 8521e83fe485c0354af6c697dbdadd9eee4d8b1c Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 12:37:18 -0700 Subject: fix floating_ip to follow standard create pattern --- nova/db/api.py | 6 +++--- nova/db/sqlalchemy/api.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'nova/db') diff --git a/nova/db/api.py b/nova/db/api.py index b49707392..0f9d58f42 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -87,9 +87,9 @@ def floating_ip_allocate_address(context, host, project_id): return IMPL.floating_ip_allocate_address(context, host, project_id) -def floating_ip_create(context, address, host): - """Create a floating ip for a given address on the specified host.""" - return IMPL.floating_ip_create(context, address, host) +def floating_ip_create(context, values): + """Create a floating ip from the values dictionary.""" + return IMPL.floating_ip_create(context, values) def floating_ip_disassociate(context, address): diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 5172b87b3..bc7a4e1ce 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -79,12 +79,12 @@ def floating_ip_allocate_address(_context, host, project_id): return floating_ip_ref['address'] -def floating_ip_create(_context, address, host): +def floating_ip_create(_context, values): floating_ip_ref = models.FloatingIp() - floating_ip_ref['address'] = address - floating_ip_ref['host'] = host + for (key, value) in values.iteritems(): + floating_ip_ref[key] = value floating_ip_ref.save() - return floating_ip_ref + return floating_ip_ref['address'] def floating_ip_fixed_ip_associate(_context, floating_address, fixed_address): -- cgit From d64ad6ff275916a41c3b2e6972ab96464311135c Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 18:14:19 -0700 Subject: clean up of session handling --- nova/db/sqlalchemy/api.py | 269 ++++++++++++++++++++++-------------------- nova/db/sqlalchemy/models.py | 139 +++++++++------------- nova/db/sqlalchemy/session.py | 42 ++----- 3 files changed, 215 insertions(+), 235 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index bc7a4e1ce..af5c9786c 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -23,7 +23,7 @@ from nova import db from nova import exception from nova import flags from nova.db.sqlalchemy import models -from nova.db.sqlalchemy.session import managed_session +from nova.db.sqlalchemy.session import get_session from sqlalchemy import or_ FLAGS = flags.FLAGS @@ -52,17 +52,20 @@ def service_create(_context, values): def service_update(context, service_id, values): - service_ref = service_get(context, service_id) - for (key, value) in values.iteritems(): - service_ref[key] = value - service_ref.save() + session = get_session() + with session.begin(): + service_ref = models.Service.find(service_id, session=session) + for (key, value) in values.iteritems(): + service_ref[key] = value + service_ref.save(session) ################### def floating_ip_allocate_address(_context, host, project_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): floating_ip_ref = session.query(models.FloatingIp) \ .filter_by(host=host) \ .filter_by(fixed_ip_id=None) \ @@ -75,8 +78,7 @@ def floating_ip_allocate_address(_context, host, project_id): raise db.NoMoreAddresses() floating_ip_ref['project_id'] = project_id session.add(floating_ip_ref) - session.commit() - return floating_ip_ref['address'] + return floating_ip_ref['address'] def floating_ip_create(_context, values): @@ -88,18 +90,19 @@ def floating_ip_create(_context, values): def floating_ip_fixed_ip_associate(_context, floating_address, fixed_address): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): floating_ip_ref = models.FloatingIp.find_by_str(floating_address, session=session) fixed_ip_ref = models.FixedIp.find_by_str(fixed_address, session=session) floating_ip_ref.fixed_ip = fixed_ip_ref floating_ip_ref.save(session=session) - session.commit() def floating_ip_disassociate(_context, address): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): floating_ip_ref = models.FloatingIp.find_by_str(address, session=session) fixed_ip_ref = floating_ip_ref.fixed_ip @@ -109,12 +112,12 @@ def floating_ip_disassociate(_context, address): fixed_ip_address = None floating_ip_ref.fixed_ip = None floating_ip_ref.save(session=session) - session.commit() - return fixed_ip_address + return fixed_ip_address def floating_ip_deallocate(_context, address): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): floating_ip_ref = models.FloatingIp.find_by_str(address, session=session) floating_ip_ref['project_id'] = None @@ -126,7 +129,8 @@ def floating_ip_get_by_address(_context, address): def floating_ip_get_instance(_context, address): - with managed_session() as session: + session = get_session() + with session.begin(): floating_ip_ref = models.FloatingIp.find_by_str(address, session=session) return floating_ip_ref.fixed_ip.instance @@ -136,7 +140,8 @@ def floating_ip_get_instance(_context, address): def fixed_ip_allocate(_context, network_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): network_or_none = or_(models.FixedIp.network_id == network_id, models.FixedIp.network_id == None) fixed_ip_ref = session.query(models.FixedIp) \ @@ -155,8 +160,7 @@ def fixed_ip_allocate(_context, network_id): fixed_ip_ref.network = models.Network.find(network_id) fixed_ip_ref['allocated'] = True session.add(fixed_ip_ref) - session.commit() - return fixed_ip_ref['address'] + return fixed_ip_ref['address'] def fixed_ip_create(_context, values): @@ -172,12 +176,14 @@ def fixed_ip_get_by_address(_context, address): def fixed_ip_get_instance(_context, address): - with managed_session() as session: + session = get_session() + with session.begin(): return models.FixedIp.find_by_str(address, session=session).instance def fixed_ip_get_network(_context, address): - with managed_session() as session: + session = get_session() + with session.begin(): return models.FixedIp.find_by_str(address, session=session).network @@ -188,27 +194,29 @@ def fixed_ip_deallocate(context, address): def fixed_ip_instance_associate(_context, address, instance_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): fixed_ip_ref = models.FixedIp.find_by_str(address, session=session) instance_ref = models.Instance.find(instance_id, session=session) fixed_ip_ref.instance = instance_ref fixed_ip_ref.save(session=session) - session.commit() def fixed_ip_instance_disassociate(_context, address): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): fixed_ip_ref = models.FixedIp.find_by_str(address, session=session) fixed_ip_ref.instance = None fixed_ip_ref.save(session=session) - session.commit() def fixed_ip_update(context, address, values): - fixed_ip_ref = fixed_ip_get_by_address(context, address) - for (key, value) in values.iteritems(): - fixed_ip_ref[key] = value - fixed_ip_ref.save() + session = get_session() + with session.begin(): + fixed_ip_ref = models.FixedIp.find_by_str(address, session=session) + for (key, value) in values.iteritems(): + fixed_ip_ref[key] = value + fixed_ip_ref.save() ################### @@ -236,19 +244,19 @@ def instance_get_all(_context): def instance_get_by_project(_context, project_id): - with managed_session() as session: - return session.query(models.Instance) \ - .filter_by(project_id=project_id) \ - .filter_by(deleted=False) \ - .all() + session = get_session() + return session.query(models.Instance) \ + .filter_by(project_id=project_id) \ + .filter_by(deleted=False) \ + .all() def instance_get_by_reservation(_context, reservation_id): - with managed_session() as session: - return session.query(models.Instance) \ - .filter_by(reservation_id=reservation_id) \ - .filter_by(deleted=False) \ - .all() + session = get_session() + return session.query(models.Instance) \ + .filter_by(reservation_id=reservation_id) \ + .filter_by(deleted=False) \ + .all() def instance_get_by_str(_context, str_id): @@ -256,7 +264,8 @@ def instance_get_by_str(_context, str_id): def instance_get_fixed_address(_context, instance_id): - with managed_session() as session: + session = get_session() + with session.begin(): instance_ref = models.Instance.find(instance_id, session=session) if not instance_ref.fixed_ip: return None @@ -264,7 +273,8 @@ def instance_get_fixed_address(_context, instance_id): def instance_get_floating_address(_context, instance_id): - with managed_session() as session: + session = get_session() + with session.begin(): instance_ref = models.Instance.find(instance_id, session=session) if not instance_ref.fixed_ip: return None @@ -280,20 +290,27 @@ def instance_get_host(context, instance_id): def instance_is_vpn(context, instance_id): + # TODO(vish): Move this into image code somewhere instance_ref = instance_get(context, instance_id) return instance_ref['image_id'] == FLAGS.vpn_image_id def instance_state(context, instance_id, state, description=None): - instance_ref = instance_get(context, instance_id) - instance_ref.set_state(state, description) + # TODO(devcamcar): Move this out of models and into driver + from nova.compute import power_state + if not description: + description = power_state.name(state) + db.instance_update(context, {'state': state, + 'state_description': description}) def instance_update(context, instance_id, values): - instance_ref = instance_get(context, instance_id) - for (key, value) in values.iteritems(): - instance_ref[key] = value - instance_ref.save() + session = get_session() + with session.begin(): + instance_ref = models.instance.find(instance_id, session=session) + for (key, value) in values.iteritems(): + instance_ref[key] = value + instance_ref.save() ################### @@ -304,31 +321,31 @@ def network_count(_context): def network_count_allocated_ips(_context, network_id): - with managed_session() as session: - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter_by(allocated=True) \ - .filter_by(deleted=False) \ - .count() + session = get_session() + return session.query(models.FixedIp) \ + .filter_by(network_id=network_id) \ + .filter_by(allocated=True) \ + .filter_by(deleted=False) \ + .count() def network_count_available_ips(_context, network_id): - with managed_session() as session: - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter_by(allocated=False) \ - .filter_by(reserved=False) \ - .filter_by(deleted=False) \ - .count() + session = get_session() + return session.query(models.FixedIp) \ + .filter_by(network_id=network_id) \ + .filter_by(allocated=False) \ + .filter_by(reserved=False) \ + .filter_by(deleted=False) \ + .count() def network_count_reserved_ips(_context, network_id): - with managed_session() as session: - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter_by(reserved=True) \ - .filter_by(deleted=False) \ - .count() + session = get_session() + return session.query(models.FixedIp) \ + .filter_by(network_id=network_id) \ + .filter_by(reserved=True) \ + .filter_by(deleted=False) \ + .count() def network_create(_context, values): @@ -340,7 +357,8 @@ def network_create(_context, values): def network_destroy(_context, network_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): # TODO(vish): do we have to use sql here? session.execute('update networks set deleted=1 where id=:id', {'id': network_id}) @@ -354,7 +372,6 @@ def network_destroy(_context, network_id): session.execute('update network_indexes set network_id=NULL ' 'where network_id=:id', {'id': network_id}) - session.commit() def network_get(_context, network_id): @@ -363,23 +380,23 @@ def network_get(_context, network_id): # pylint: disable-msg=C0103 def network_get_associated_fixed_ips(_context, network_id): - with managed_session() as session: - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter(models.FixedIp.instance_id != None) \ - .filter_by(deleted=False) \ - .all() + session = get_session() + return session.query(models.FixedIp) \ + .filter_by(network_id=network_id) \ + .filter(models.FixedIp.instance_id != None) \ + .filter_by(deleted=False) \ + .all() def network_get_by_bridge(_context, bridge): - with managed_session() as session: - rv = session.query(models.Network) \ - .filter_by(bridge=bridge) \ - .filter_by(deleted=False) \ - .first() - if not rv: - raise exception.NotFound('No network for bridge %s' % bridge) - return rv + session = get_session() + rv = session.query(models.Network) \ + .filter_by(bridge=bridge) \ + .filter_by(deleted=False) \ + .first() + if not rv: + raise exception.NotFound('No network for bridge %s' % bridge) + return rv def network_get_host(context, network_id): @@ -388,7 +405,8 @@ def network_get_host(context, network_id): def network_get_index(_context, network_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): network_index = session.query(models.NetworkIndex) \ .filter_by(network_id=None) \ .filter_by(deleted=False) \ @@ -399,8 +417,7 @@ def network_get_index(_context, network_id): network_index['network'] = models.Network.find(network_id, session=session) session.add(network_index) - session.commit() - return network_index['index'] + return network_index['index'] def network_index_count(_context): @@ -415,7 +432,8 @@ def network_index_create(_context, values): def network_set_host(_context, network_id, host_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): network = session.query(models.Network) \ .filter_by(id=network_id) \ .filter_by(deleted=False) \ @@ -426,34 +444,33 @@ def network_set_host(_context, network_id, host_id): network_id) # NOTE(vish): if with_lockmode isn't supported, as in sqlite, # then this has concurrency issues - if network.host: - session.commit() - return network['host'] - network['host'] = host_id - session.add(network) - session.commit() - return network['host'] + if not network['host']: + network['host'] = host_id + session.add(network) + return network['host'] def network_update(context, network_id, values): - network_ref = network_get(context, network_id) - for (key, value) in values.iteritems(): - network_ref[key] = value - network_ref.save() + session = get_session() + with session.begin(): + network_ref = models.Network(network_id, session=session) + for (key, value) in values.iteritems(): + network_ref[key] = value + network_ref.save() ################### def project_get_network(_context, project_id): - with managed_session() as session: - rv = session.query(models.Network) \ - .filter_by(project_id=project_id) \ - .filter_by(deleted=False) \ - .first() - if not rv: - raise exception.NotFound('No network for project: %s' % project_id) - return rv + session = get_session() + rv = session.query(models.Network) \ + .filter_by(project_id=project_id) \ + .filter_by(deleted=False) \ + .first() + if not rv: + raise exception.NotFound('No network for project: %s' % project_id) + return rv ################### @@ -482,7 +499,8 @@ def export_device_create(_context, values): def volume_allocate_shelf_and_blade(_context, volume_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): export_device = session.query(models.ExportDevice) \ .filter_by(volume=None) \ .filter_by(deleted=False) \ @@ -494,8 +512,7 @@ def volume_allocate_shelf_and_blade(_context, volume_id): raise db.NoMoreBlades() export_device.volume_id = volume_id session.add(export_device) - session.commit() - return (export_device.shelf_id, export_device.blade_id) + return (export_device.shelf_id, export_device.blade_id) def volume_attached(context, volume_id, instance_id, mountpoint): @@ -516,14 +533,14 @@ def volume_create(_context, values): def volume_destroy(_context, volume_id): - with managed_session(autocommit=False) as session: + session = get_session() + with session.begin(): # TODO(vish): do we have to use sql here? session.execute('update volumes set deleted=1 where id=:id', {'id': volume_id}) session.execute('update export_devices set volume_id=NULL ' 'where volume_id=:id', {'id': volume_id}) - session.commit() def volume_detached(context, volume_id): @@ -544,11 +561,11 @@ def volume_get_all(_context): def volume_get_by_project(_context, project_id): - with managed_session() as session: - return session.query(models.Volume) \ - .filter_by(project_id=project_id) \ - .filter_by(deleted=False) \ - .all() + session = get_session() + return session.query(models.Volume) \ + .filter_by(project_id=project_id) \ + .filter_by(deleted=False) \ + .all() def volume_get_by_str(_context, str_id): @@ -567,17 +584,19 @@ def volume_get_instance(context, volume_id): def volume_get_shelf_and_blade(_context, volume_id): - with managed_session() as session: - export_device = session.query(models.ExportDevice) \ - .filter_by(volume_id=volume_id) \ - .first() - if not export_device: - raise exception.NotFound() - return (export_device.shelf_id, export_device.blade_id) + session = get_session() + export_device = session.query(models.ExportDevice) \ + .filter_by(volume_id=volume_id) \ + .first() + if not export_device: + raise exception.NotFound() + return (export_device.shelf_id, export_device.blade_id) def volume_update(context, volume_id, values): - volume_ref = volume_get(context, volume_id) - for (key, value) in values.iteritems(): - volume_ref[key] = value - volume_ref.save() + session = get_session() + with session.begin(): + volume_ref = models.Volumes(context, session=session) + for (key, value) in values.iteritems(): + volume_ref[key] = value + volume_ref.save() diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 310d4640e..0d796ffa7 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -30,7 +30,7 @@ from sqlalchemy import Column, Integer, String from sqlalchemy import ForeignKey, DateTime, Boolean, Text from sqlalchemy.ext.declarative import declarative_base -from nova.db.sqlalchemy.session import managed_session +from nova.db.sqlalchemy.session import get_session from nova import auth from nova import exception @@ -53,40 +53,34 @@ class NovaBase(object): @classmethod def all(cls, session=None): """Get all objects of this type""" - if session: - return session.query(cls) \ - .filter_by(deleted=False) \ - .all() - else: - with managed_session() as sess: - return cls.all(session=sess) + if not session: + session = get_session() + return session.query(cls) \ + .filter_by(deleted=False) \ + .all() @classmethod def count(cls, session=None): """Count objects of this type""" - if session: - return session.query(cls) \ - .filter_by(deleted=False) \ - .count() - else: - with managed_session() as sess: - return cls.count(session=sess) + if not session: + session = get_session() + return session.query(cls) \ + .filter_by(deleted=False) \ + .count() @classmethod def find(cls, obj_id, session=None): """Find object by id""" - if session: - try: - return session.query(cls) \ - .filter_by(id=obj_id) \ - .filter_by(deleted=False) \ - .one() - except exc.NoResultFound: - new_exc = exception.NotFound("No model for id %s" % obj_id) - raise new_exc.__class__, new_exc, sys.exc_info()[2] - else: - with managed_session() as sess: - return cls.find(obj_id, session=sess) + if not session: + session = get_session() + try: + return session.query(cls) \ + .filter_by(id=obj_id) \ + .filter_by(deleted=False) \ + .one() + except exc.NoResultFound: + new_exc = exception.NotFound("No model for id %s" % obj_id) + raise new_exc.__class__, new_exc, sys.exc_info()[2] @classmethod def find_by_str(cls, str_id, session=None): @@ -101,12 +95,10 @@ class NovaBase(object): def save(self, session=None): """Save this object""" - if session: - session.add(self) - session.flush() - else: - with managed_session() as sess: - self.save(session=sess) + if not session: + session = get_session() + session.add(self) + session.flush() def delete(self, session=None): """Delete this object""" @@ -175,20 +167,18 @@ class Service(BASE, NovaBase): @classmethod def find_by_args(cls, host, binary, session=None): - if session: - try: - return session.query(cls) \ - .filter_by(host=host) \ - .filter_by(binary=binary) \ - .filter_by(deleted=False) \ - .one() - except exc.NoResultFound: - new_exc = exception.NotFound("No model for %s, %s" % (host, - binary)) - raise new_exc.__class__, new_exc, sys.exc_info()[2] - else: - with managed_session() as sess: - return cls.find_by_args(host, binary, session=sess) + if not session: + session = get_session() + try: + return session.query(cls) \ + .filter_by(host=host) \ + .filter_by(binary=binary) \ + .filter_by(deleted=False) \ + .one() + except exc.NoResultFound: + new_exc = exception.NotFound("No model for %s, %s" % (host, + binary)) + raise new_exc.__class__, new_exc, sys.exc_info()[2] class Instance(BASE, NovaBase): @@ -240,16 +230,6 @@ class Instance(BASE, NovaBase): reservation_id = Column(String(255)) mac_address = Column(String(255)) - def set_state(self, state_code, state_description=None): - """Set the code and description of an instance""" - # TODO(devcamcar): Move this out of models and into driver - from nova.compute import power_state - self.state = state_code - if not state_description: - state_description = power_state.name(state_code) - self.state_description = state_description - self.save() - # TODO(vish): see Ewan's email about state improvements, probably # should be in a driver base class or some such # vmstate_state = running, halted, suspended, paused @@ -351,18 +331,16 @@ class FixedIp(BASE, NovaBase): @classmethod def find_by_str(cls, str_id, session=None): - if session: - try: - return session.query(cls) \ - .filter_by(address=str_id) \ - .filter_by(deleted=False) \ - .one() - except exc.NoResultFound: - new_exc = exception.NotFound("No model for address %s" % str_id) - raise new_exc.__class__, new_exc, sys.exc_info()[2] - else: - with managed_session() as sess: - return cls.find_by_str(str_id, session=sess) + if not session: + session = get_session() + try: + return session.query(cls) \ + .filter_by(address=str_id) \ + .filter_by(deleted=False) \ + .one() + except exc.NoResultFound: + new_exc = exception.NotFound("No model for address %s" % str_id) + raise new_exc.__class__, new_exc, sys.exc_info()[2] class FloatingIp(BASE, NovaBase): @@ -382,18 +360,17 @@ class FloatingIp(BASE, NovaBase): @classmethod def find_by_str(cls, str_id, session=None): - if session: - try: - return session.query(cls) \ - .filter_by(address=str_id) \ - .filter_by(deleted=False) \ - .one() - except exc.NoResultFound: - new_exc = exception.NotFound("No model for address %s" % str_id) - raise new_exc.__class__, new_exc, sys.exc_info()[2] - else: - with managed_session() as sess: - return cls.find_by_str(str_id, session=sess) + if not session: + session = get_session() + try: + return session.query(cls) \ + .filter_by(address=str_id) \ + .filter_by(deleted=False) \ + .one() + except exc.NoResultFound: + session.rollback() + new_exc = exception.NotFound("No model for address %s" % str_id) + raise new_exc.__class__, new_exc, sys.exc_info()[2] def register_models(): diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py index adcc42293..f0973a10b 100644 --- a/nova/db/sqlalchemy/session.py +++ b/nova/db/sqlalchemy/session.py @@ -19,38 +19,22 @@ Session Handling for SQLAlchemy backend """ -import logging - from sqlalchemy import create_engine -from sqlalchemy.orm import create_session +from sqlalchemy.orm import sessionmaker from nova import flags FLAGS = flags.FLAGS - -def managed_session(autocommit=True): - """Helper method to grab session manager""" - return SessionExecutionManager(autocommit=autocommit) - - -class SessionExecutionManager: - """Session manager supporting with .. as syntax""" - _engine = None - _session = None - - def __init__(self, autocommit): - if not self._engine: - self._engine = create_engine(FLAGS.sql_connection, echo=False) - self._session = create_session(bind=self._engine, - autocommit=autocommit) - - def __enter__(self): - return self._session - - def __exit__(self, exc_type, exc_value, traceback): - if exc_type: - logging.exception("Rolling back due to failed transaction: %s", - exc_type) - self._session.rollback() - self._session.close() +_ENGINE = None +_MAKER = None + +def get_session(autocommit=True): + """Helper method to grab session""" + global _ENGINE + global _MAKER + if not _MAKER: + if not _ENGINE: + _ENGINE = create_engine(FLAGS.sql_connection, echo=True) + _MAKER = sessionmaker(bind=_ENGINE, autocommit=autocommit) + return _MAKER() -- cgit From fd63d8b658477b27f3962f62ba03dc90694ac737 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 18:58:08 -0700 Subject: don't log all sql statements --- nova/db/sqlalchemy/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py index f0973a10b..c00eecb5c 100644 --- a/nova/db/sqlalchemy/session.py +++ b/nova/db/sqlalchemy/session.py @@ -35,6 +35,6 @@ def get_session(autocommit=True): global _MAKER if not _MAKER: if not _ENGINE: - _ENGINE = create_engine(FLAGS.sql_connection, echo=True) + _ENGINE = create_engine(FLAGS.sql_connection, echo=False) _MAKER = sessionmaker(bind=_ENGINE, autocommit=autocommit) return _MAKER() -- cgit From ced5f151715c4a82c29dcc7ce71a22991be4ccef Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 19:04:08 -0700 Subject: few typos in updates --- nova/db/sqlalchemy/api.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index af5c9786c..7b2703a7c 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -57,7 +57,7 @@ def service_update(context, service_id, values): service_ref = models.Service.find(service_id, session=session) for (key, value) in values.iteritems(): service_ref[key] = value - service_ref.save(session) + service_ref.save(session=session) ################### @@ -216,7 +216,7 @@ def fixed_ip_update(context, address, values): fixed_ip_ref = models.FixedIp.find_by_str(address, session=session) for (key, value) in values.iteritems(): fixed_ip_ref[key] = value - fixed_ip_ref.save() + fixed_ip_ref.save(session=session) ################### @@ -307,10 +307,10 @@ def instance_state(context, instance_id, state, description=None): def instance_update(context, instance_id, values): session = get_session() with session.begin(): - instance_ref = models.instance.find(instance_id, session=session) + instance_ref = models.Instance.find(instance_id, session=session) for (key, value) in values.iteritems(): instance_ref[key] = value - instance_ref.save() + instance_ref.save(session=session) ################### @@ -453,10 +453,10 @@ def network_set_host(_context, network_id, host_id): def network_update(context, network_id, values): session = get_session() with session.begin(): - network_ref = models.Network(network_id, session=session) + network_ref = models.Network.find(network_id, session=session) for (key, value) in values.iteritems(): network_ref[key] = value - network_ref.save() + network_ref.save(session=session) ################### @@ -596,7 +596,7 @@ def volume_get_shelf_and_blade(_context, volume_id): def volume_update(context, volume_id, values): session = get_session() with session.begin(): - volume_ref = models.Volumes(context, session=session) + volume_ref = models.Volumes.find(volume_id, session=session) for (key, value) in values.iteritems(): volume_ref[key] = value - volume_ref.save() + volume_ref.save(session=session) -- cgit 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(-) (limited to 'nova/db') 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 From 4a446190027943e62838880c95f38127cc0fdfb2 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 20:24:58 -0700 Subject: review db code cleanup --- nova/db/api.py | 3 +- nova/db/sqlalchemy/api.py | 148 +++++++++++++++++++++++----------------------- 2 files changed, 76 insertions(+), 75 deletions(-) (limited to 'nova/db') diff --git a/nova/db/api.py b/nova/db/api.py index 0f9d58f42..05fc5b777 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -30,10 +30,9 @@ flags.DEFINE_string('db_backend', 'sqlalchemy', IMPL = utils.LazyPluggable(FLAGS['db_backend'], - sqlalchemy='nova.db.sqlalchemy.api') + sqlalchemy='nova.db.sqlalchemy.api') -# TODO(vish): where should these exceptions go? class NoMoreAddresses(exception.Error): """No more available addresses""" pass diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index c661fca3d..fd62abb5d 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -66,12 +66,12 @@ def service_update(context, service_id, values): def floating_ip_allocate_address(_context, host, project_id): session = get_session() with session.begin(): - floating_ip_ref = session.query(models.FloatingIp) \ - .filter_by(host=host) \ - .filter_by(fixed_ip_id=None) \ - .filter_by(deleted=False) \ - .with_lockmode('update') \ - .first() + floating_ip_ref = session.query(models.FloatingIp + ).filter_by(host=host + ).filter_by(fixed_ip_id=None + ).filter_by(deleted=False + ).with_lockmode('update' + ).first() # NOTE(vish): if with_lockmode isn't supported, as in sqlite, # then this has concurrency issues if not floating_ip_ref: @@ -144,14 +144,14 @@ def fixed_ip_allocate(_context, network_id): with session.begin(): network_or_none = or_(models.FixedIp.network_id == network_id, models.FixedIp.network_id == None) - fixed_ip_ref = session.query(models.FixedIp) \ - .filter(network_or_none) \ - .filter_by(reserved=False) \ - .filter_by(allocated=False) \ - .filter_by(leased=False) \ - .filter_by(deleted=False) \ - .with_lockmode('update') \ - .first() + fixed_ip_ref = session.query(models.FixedIp + ).filter(network_or_none + ).filter_by(reserved=False + ).filter_by(allocated=False + ).filter_by(leased=False + ).filter_by(deleted=False + ).with_lockmode('update' + ).first() # NOTE(vish): if with_lockmode isn't supported, as in sqlite, # then this has concurrency issues if not fixed_ip_ref: @@ -245,18 +245,18 @@ def instance_get_all(_context): def instance_get_by_project(_context, project_id): session = get_session() - return session.query(models.Instance) \ - .filter_by(project_id=project_id) \ - .filter_by(deleted=False) \ - .all() + return session.query(models.Instance + ).filter_by(project_id=project_id + ).filter_by(deleted=False + ).all() def instance_get_by_reservation(_context, reservation_id): session = get_session() - return session.query(models.Instance) \ - .filter_by(reservation_id=reservation_id) \ - .filter_by(deleted=False) \ - .all() + return session.query(models.Instance + ).filter_by(reservation_id=reservation_id + ).filter_by(deleted=False + ).all() def instance_get_by_str(_context, str_id): @@ -322,30 +322,30 @@ def network_count(_context): def network_count_allocated_ips(_context, network_id): session = get_session() - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter_by(allocated=True) \ - .filter_by(deleted=False) \ - .count() + return session.query(models.FixedIp + ).filter_by(network_id=network_id + ).filter_by(allocated=True + ).filter_by(deleted=False + ).count() def network_count_available_ips(_context, network_id): session = get_session() - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter_by(allocated=False) \ - .filter_by(reserved=False) \ - .filter_by(deleted=False) \ - .count() + return session.query(models.FixedIp + ).filter_by(network_id=network_id + ).filter_by(allocated=False + ).filter_by(reserved=False + ).filter_by(deleted=False + ).count() def network_count_reserved_ips(_context, network_id): session = get_session() - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter_by(reserved=True) \ - .filter_by(deleted=False) \ - .count() + return session.query(models.FixedIp + ).filter_by(network_id=network_id + ).filter_by(reserved=True + ).filter_by(deleted=False + ).count() def network_create(_context, values): @@ -378,22 +378,24 @@ def network_get(_context, network_id): return models.Network.find(network_id) +# NOTE(vish): pylint complains because of the long method name, but +# it fits with the names of the rest of the methods # pylint: disable-msg=C0103 def network_get_associated_fixed_ips(_context, network_id): session = get_session() - return session.query(models.FixedIp) \ - .filter_by(network_id=network_id) \ - .filter(models.FixedIp.instance_id != None) \ - .filter_by(deleted=False) \ - .all() + return session.query(models.FixedIp + ).filter_by(network_id=network_id + ).filter(models.FixedIp.instance_id != None + ).filter_by(deleted=False + ).all() def network_get_by_bridge(_context, bridge): session = get_session() - rv = session.query(models.Network) \ - .filter_by(bridge=bridge) \ - .filter_by(deleted=False) \ - .first() + rv = session.query(models.Network + ).filter_by(bridge=bridge + ).filter_by(deleted=False + ).first() if not rv: raise exception.NotFound('No network for bridge %s' % bridge) return rv @@ -407,11 +409,11 @@ def network_get_host(context, network_id): def network_get_index(_context, network_id): session = get_session() with session.begin(): - network_index = session.query(models.NetworkIndex) \ - .filter_by(network_id=None) \ - .filter_by(deleted=False) \ - .with_lockmode('update') \ - .first() + network_index = session.query(models.NetworkIndex + ).filter_by(network_id=None + ).filter_by(deleted=False + ).with_lockmode('update' + ).first() if not network_index: raise db.NoMoreNetworks() network_index['network'] = models.Network.find(network_id, @@ -434,11 +436,11 @@ def network_index_create(_context, values): def network_set_host(_context, network_id, host_id): session = get_session() with session.begin(): - network = session.query(models.Network) \ - .filter_by(id=network_id) \ - .filter_by(deleted=False) \ - .with_lockmode('update') \ - .first() + network = session.query(models.Network + ).filter_by(id=network_id + ).filter_by(deleted=False + ).with_lockmode('update' + ).first() if not network: raise exception.NotFound("Couldn't find network with %s" % network_id) @@ -464,10 +466,10 @@ def network_update(context, network_id, values): def project_get_network(_context, project_id): session = get_session() - rv = session.query(models.Network) \ - .filter_by(project_id=project_id) \ - .filter_by(deleted=False) \ - .first() + rv = session.query(models.Network + ).filter_by(project_id=project_id + ).filter_by(deleted=False + ).first() if not rv: raise exception.NotFound('No network for project: %s' % project_id) return rv @@ -501,11 +503,11 @@ def export_device_create(_context, values): def volume_allocate_shelf_and_blade(_context, volume_id): session = get_session() with session.begin(): - export_device = session.query(models.ExportDevice) \ - .filter_by(volume=None) \ - .filter_by(deleted=False) \ - .with_lockmode('update') \ - .first() + export_device = session.query(models.ExportDevice + ).filter_by(volume=None + ).filter_by(deleted=False + ).with_lockmode('update' + ).first() # NOTE(vish): if with_lockmode isn't supported, as in sqlite, # then this has concurrency issues if not export_device: @@ -562,10 +564,10 @@ def volume_get_all(_context): def volume_get_by_project(_context, project_id): session = get_session() - return session.query(models.Volume) \ - .filter_by(project_id=project_id) \ - .filter_by(deleted=False) \ - .all() + return session.query(models.Volume + ).filter_by(project_id=project_id + ).filter_by(deleted=False + ).all() def volume_get_by_str(_context, str_id): @@ -585,9 +587,9 @@ def volume_get_instance(context, volume_id): def volume_get_shelf_and_blade(_context, volume_id): session = get_session() - export_device = session.query(models.ExportDevice) \ - .filter_by(volume_id=volume_id) \ - .first() + export_device = session.query(models.ExportDevice + ).filter_by(volume_id=volume_id + ).first() if not export_device: raise exception.NotFound() return (export_device.shelf_id, export_device.blade_id) -- cgit From 920444362e998960b7cfb5ce824383e4fbd45b2c Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 21:45:50 -0700 Subject: fixed a few bugs in volume handling --- nova/db/sqlalchemy/api.py | 46 ++++++++++++++++++++++++++------------------ nova/db/sqlalchemy/models.py | 1 + 2 files changed, 28 insertions(+), 19 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index fd62abb5d..9d8297a8e 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -157,7 +157,8 @@ def fixed_ip_allocate(_context, network_id): if not fixed_ip_ref: raise db.NoMoreAddresses() if not fixed_ip_ref.network: - fixed_ip_ref.network = models.Network.find(network_id) + fixed_ip_ref.network = models.Network.find(network_id, + session=session) fixed_ip_ref['allocated'] = True session.add(fixed_ip_ref) return fixed_ip_ref['address'] @@ -300,8 +301,10 @@ def instance_state(context, instance_id, state, description=None): from nova.compute import power_state if not description: description = power_state.name(state) - db.instance_update(context, {'state': state, - 'state_description': description}) + db.instance_update(context, + instance_id, + {'state': state, + 'state_description': description}) def instance_update(context, instance_id, values): @@ -518,12 +521,15 @@ def volume_allocate_shelf_and_blade(_context, volume_id): def volume_attached(context, volume_id, instance_id, mountpoint): - volume_ref = volume_get(context, volume_id) - volume_ref.instance_id = instance_id - volume_ref['status'] = 'in-use' - volume_ref['mountpoint'] = mountpoint - volume_ref['attach_status'] = 'attached' - volume_ref.save() + session = get_session() + with session.begin(): + volume_ref = models.Volume.find(volume_id, session=session) + volume_ref['status'] = 'in-use' + volume_ref['mountpoint'] = mountpoint + volume_ref['attach_status'] = 'attached' + volume_ref.instance = models.Instance.find(instance_id, + session=session) + volume_ref.save(session=session) def volume_create(_context, values): @@ -546,12 +552,14 @@ def volume_destroy(_context, volume_id): def volume_detached(context, volume_id): - volume_ref = volume_get(context, volume_id) - volume_ref['instance_id'] = None - volume_ref['mountpoint'] = None - volume_ref['status'] = 'available' - volume_ref['attach_status'] = 'detached' - volume_ref.save() + session = get_session() + with session.begin(): + volume_ref = models.Volume.find(volume_id, session=session) + volume_ref['status'] = 'available' + volume_ref['mountpoint'] = None + volume_ref['attach_status'] = 'detached' + volume_ref.instance = None + volume_ref.save(session=session) def volume_get(_context, volume_id): @@ -580,9 +588,9 @@ def volume_get_host(context, volume_id): def volume_get_instance(context, volume_id): - volume_ref = db.volume_get(context, volume_id) - instance_ref = db.instance_get(context, volume_ref['instance_id']) - return instance_ref + session = get_session() + with session.begin(): + return models.Volume.find(volume_id, session=session).instance def volume_get_shelf_and_blade(_context, volume_id): @@ -598,7 +606,7 @@ def volume_get_shelf_and_blade(_context, volume_id): def volume_update(context, volume_id, values): session = get_session() with session.begin(): - volume_ref = models.Volumes.find(volume_id, session=session) + volume_ref = models.Volume.find(volume_id, session=session) for (key, value) in values.iteritems(): volume_ref[key] = value volume_ref.save(session=session) diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 0d796ffa7..fe3a77a52 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -255,6 +255,7 @@ class Volume(BASE, NovaBase): size = Column(Integer) availability_zone = Column(String(255)) # TODO(vish): foreign key? instance_id = Column(Integer, ForeignKey('instances.id'), nullable=True) + instance = relationship(Instance, backref=backref('volumes')) mountpoint = Column(String(255)) attach_time = Column(String(255)) # TODO(vish): datetime status = Column(String(255)) # TODO(vish): enum? -- cgit From 7b88b732505c27217a9e2cd823b5641ac730619e Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Tue, 7 Sep 2010 21:59:36 -0700 Subject: changed a few unused context to _context --- nova/db/sqlalchemy/api.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 9d8297a8e..391892214 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -51,7 +51,7 @@ def service_create(_context, values): return service_ref.id -def service_update(context, service_id, values): +def service_update(_context, service_id, values): session = get_session() with session.begin(): service_ref = models.Service.find(service_id, session=session) @@ -209,7 +209,7 @@ def fixed_ip_instance_disassociate(_context, address): fixed_ip_ref.save(session=session) -def fixed_ip_update(context, address, values): +def fixed_ip_update(_context, address, values): session = get_session() with session.begin(): fixed_ip_ref = models.FixedIp.find_by_str(address, session=session) @@ -229,7 +229,7 @@ def instance_create(_context, values): return instance_ref.id -def instance_destroy(context, instance_id): +def instance_destroy(_context, instance_id): session = get_session() with session.begin(): instance_ref = models.Instance.find(instance_id, session=session) @@ -307,7 +307,7 @@ def instance_state(context, instance_id, state, description=None): 'state_description': description}) -def instance_update(context, instance_id, values): +def instance_update(_context, instance_id, values): session = get_session() with session.begin(): instance_ref = models.Instance.find(instance_id, session=session) @@ -455,7 +455,7 @@ def network_set_host(_context, network_id, host_id): return network['host'] -def network_update(context, network_id, values): +def network_update(_context, network_id, values): session = get_session() with session.begin(): network_ref = models.Network.find(network_id, session=session) @@ -520,7 +520,7 @@ def volume_allocate_shelf_and_blade(_context, volume_id): return (export_device.shelf_id, export_device.blade_id) -def volume_attached(context, volume_id, instance_id, mountpoint): +def volume_attached(_context, volume_id, instance_id, mountpoint): session = get_session() with session.begin(): volume_ref = models.Volume.find(volume_id, session=session) @@ -551,7 +551,7 @@ def volume_destroy(_context, volume_id): {'id': volume_id}) -def volume_detached(context, volume_id): +def volume_detached(_context, volume_id): session = get_session() with session.begin(): volume_ref = models.Volume.find(volume_id, session=session) @@ -587,7 +587,7 @@ def volume_get_host(context, volume_id): return volume_ref['host'] -def volume_get_instance(context, volume_id): +def volume_get_instance(_context, volume_id): session = get_session() with session.begin(): return models.Volume.find(volume_id, session=session).instance @@ -603,7 +603,7 @@ def volume_get_shelf_and_blade(_context, volume_id): return (export_device.shelf_id, export_device.blade_id) -def volume_update(context, volume_id, values): +def volume_update(_context, volume_id, values): session = get_session() with session.begin(): volume_ref = models.Volume.find(volume_id, session=session) -- cgit From f8a970e98bcef40142dee39642320f1cab5a78aa Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Wed, 8 Sep 2010 01:51:34 -0700 Subject: remove end of line slashes from models.py --- nova/db/sqlalchemy/models.py | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index fe3a77a52..960b7089b 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -55,18 +55,18 @@ class NovaBase(object): """Get all objects of this type""" if not session: session = get_session() - return session.query(cls) \ - .filter_by(deleted=False) \ - .all() + return session.query(cls + ).filter_by(deleted=False + ).all() @classmethod def count(cls, session=None): """Count objects of this type""" if not session: session = get_session() - return session.query(cls) \ - .filter_by(deleted=False) \ - .count() + return session.query(cls + ).filter_by(deleted=False + ).count() @classmethod def find(cls, obj_id, session=None): @@ -74,10 +74,10 @@ class NovaBase(object): if not session: session = get_session() try: - return session.query(cls) \ - .filter_by(id=obj_id) \ - .filter_by(deleted=False) \ - .one() + return session.query(cls + ).filter_by(id=obj_id + ).filter_by(deleted=False + ).one() except exc.NoResultFound: new_exc = exception.NotFound("No model for id %s" % obj_id) raise new_exc.__class__, new_exc, sys.exc_info()[2] @@ -170,10 +170,10 @@ class Service(BASE, NovaBase): if not session: session = get_session() try: - return session.query(cls) \ - .filter_by(host=host) \ - .filter_by(binary=binary) \ - .filter_by(deleted=False) \ + return session.query(cls + ).filter_by(host=host + ).filter_by(binary=binary + ).filter_by(deleted=False .one() except exc.NoResultFound: new_exc = exception.NotFound("No model for %s, %s" % (host, @@ -335,9 +335,9 @@ class FixedIp(BASE, NovaBase): if not session: session = get_session() try: - return session.query(cls) \ - .filter_by(address=str_id) \ - .filter_by(deleted=False) \ + return session.query(cls + ).filter_by(address=str_id + ).filter_by(deleted=False .one() except exc.NoResultFound: new_exc = exception.NotFound("No model for address %s" % str_id) @@ -364,9 +364,9 @@ class FloatingIp(BASE, NovaBase): if not session: session = get_session() try: - return session.query(cls) \ - .filter_by(address=str_id) \ - .filter_by(deleted=False) \ + return session.query(cls + ).filter_by(address=str_id + ).filter_by(deleted=False .one() except exc.NoResultFound: session.rollback() -- cgit From fbe2007deb9618e497097082f2c1af1be9c07c1c Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Wed, 8 Sep 2010 01:58:59 -0700 Subject: fixed missing paren --- nova/db/sqlalchemy/models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 960b7089b..846fe362f 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -174,7 +174,7 @@ class Service(BASE, NovaBase): ).filter_by(host=host ).filter_by(binary=binary ).filter_by(deleted=False - .one() + ).one() except exc.NoResultFound: new_exc = exception.NotFound("No model for %s, %s" % (host, binary)) @@ -338,7 +338,7 @@ class FixedIp(BASE, NovaBase): return session.query(cls ).filter_by(address=str_id ).filter_by(deleted=False - .one() + ).one() except exc.NoResultFound: new_exc = exception.NotFound("No model for address %s" % str_id) raise new_exc.__class__, new_exc, sys.exc_info()[2] @@ -367,7 +367,7 @@ class FloatingIp(BASE, NovaBase): return session.query(cls ).filter_by(address=str_id ).filter_by(deleted=False - .one() + ).one() except exc.NoResultFound: session.rollback() new_exc = exception.NotFound("No model for address %s" % str_id) -- cgit From 4a1c4a4925e427c639419e87e912b08fd41d7f74 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Thu, 9 Sep 2010 02:16:06 -0700 Subject: consistent naming for instance_set_state --- nova/db/api.py | 4 ++-- nova/db/sqlalchemy/api.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'nova/db') diff --git a/nova/db/api.py b/nova/db/api.py index 05fc5b777..59313b0af 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -230,9 +230,9 @@ def instance_is_vpn(context, instance_id): return IMPL.instance_is_vpn(context, instance_id) -def instance_state(context, instance_id, state, description=None): +def instance_set_state(context, instance_id, state, description=None): """Set the state of an instance.""" - return IMPL.instance_state(context, instance_id, state, description) + return IMPL.instance_set_state(context, instance_id, state, description) def instance_update(context, instance_id, values): diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 391892214..8b94f6036 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -296,7 +296,7 @@ def instance_is_vpn(context, instance_id): return instance_ref['image_id'] == FLAGS.vpn_image_id -def instance_state(context, instance_id, state, description=None): +def instance_set_state(context, instance_id, state, description=None): # TODO(devcamcar): Move this out of models and into driver from nova.compute import power_state if not description: -- cgit From 33d832ee798bc9530be577e3234ff8bcdac4939e Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Thu, 9 Sep 2010 07:37:03 -0700 Subject: removed extraneous rollback --- nova/db/sqlalchemy/models.py | 1 - 1 file changed, 1 deletion(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 846fe362f..b6ae90e16 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -369,7 +369,6 @@ class FloatingIp(BASE, NovaBase): ).filter_by(deleted=False ).one() except exc.NoResultFound: - session.rollback() new_exc = exception.NotFound("No model for address %s" % str_id) raise new_exc.__class__, new_exc, sys.exc_info()[2] -- cgit