diff options
Diffstat (limited to 'ironic/openstack/common/db/sqlalchemy/models.py')
-rw-r--r-- | ironic/openstack/common/db/sqlalchemy/models.py | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/ironic/openstack/common/db/sqlalchemy/models.py b/ironic/openstack/common/db/sqlalchemy/models.py index e90d4110e..d55d0e58a 100644 --- a/ironic/openstack/common/db/sqlalchemy/models.py +++ b/ironic/openstack/common/db/sqlalchemy/models.py @@ -22,11 +22,13 @@ SQLAlchemy models. """ +import six + from sqlalchemy import Column, Integer from sqlalchemy import DateTime from sqlalchemy.orm import object_mapper -from ironic.openstack.common.db.sqlalchemy.session import get_session +from ironic.openstack.common.db.sqlalchemy import session as sa from ironic.openstack.common import timeutils @@ -37,7 +39,7 @@ class ModelBase(object): def save(self, session=None): """Save this object.""" if not session: - session = get_session() + session = sa.get_session() # NOTE(boris-42): This part of code should be look like: # sesssion.add(self) # session.flush() @@ -59,31 +61,34 @@ class ModelBase(object): def get(self, key, default=None): return getattr(self, key, default) + def _get_extra_keys(self): + return [] + def __iter__(self): columns = dict(object_mapper(self).columns).keys() # NOTE(russellb): Allow models to specify other keys that can be looked # up, beyond the actual db columns. An example would be the 'name' # property for an Instance. - if hasattr(self, '_extra_keys'): - columns.extend(self._extra_keys()) + columns.extend(self._get_extra_keys()) self._i = iter(columns) return self def next(self): - n = self._i.next() + n = six.advance_iterator(self._i) return n, getattr(self, n) def update(self, values): """Make the model object behave like a dict.""" - for k, v in values.iteritems(): + for k, v in six.iteritems(values): setattr(self, k, v) def iteritems(self): """Make the model object behave like a dict. - Includes attributes from joins.""" + Includes attributes from joins. + """ local = dict(self) - joined = dict([(k, v) for k, v in self.__dict__.iteritems() + joined = dict([(k, v) for k, v in six.iteritems(self.__dict__) if not k[0] == '_']) local.update(joined) return local.iteritems() |