summaryrefslogtreecommitdiff
path: root/ironic/openstack/common/db/sqlalchemy/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/openstack/common/db/sqlalchemy/models.py')
-rw-r--r--ironic/openstack/common/db/sqlalchemy/models.py21
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()