diff --git a/keystone/backends/sqlalchemy/api/credentials.py b/keystone/backends/sqlalchemy/api/credentials.py index a3dd5bea7a..2210569446 100755 --- a/keystone/backends/sqlalchemy/api/credentials.py +++ b/keystone/backends/sqlalchemy/api/credentials.py @@ -99,8 +99,10 @@ def get(self, id, session=None): @staticmethod def _get(id, session=None): - if not session: - session = get_session() + if id is None: + return None + + session = session or get_session() return session.query(models.Credentials).filter_by(id=id).first() diff --git a/keystone/backends/sqlalchemy/api/endpoint_template.py b/keystone/backends/sqlalchemy/api/endpoint_template.py index 25fe0ed41e..84fce4549e 100755 --- a/keystone/backends/sqlalchemy/api/endpoint_template.py +++ b/keystone/backends/sqlalchemy/api/endpoint_template.py @@ -61,8 +61,10 @@ def delete(self, id, session=None): session.delete(endpoint_template) def get(self, id, session=None): - if not session: - session = get_session() + if id is None: + return None + + session = session or get_session() return session.query(models.EndpointTemplates).\ filter_by(id=id).first() diff --git a/keystone/backends/sqlalchemy/api/role.py b/keystone/backends/sqlalchemy/api/role.py index 7ffe13e8e0..62198e76f9 100755 --- a/keystone/backends/sqlalchemy/api/role.py +++ b/keystone/backends/sqlalchemy/api/role.py @@ -89,8 +89,10 @@ def update(id, values, session=None): ref.save(session=session) def get(self, id, session=None): - if not session: - session = get_session() + if id is None: + return None + + session = session or get_session() return RoleAPI.to_model( session.query(models.Role).filter_by(id=id).first()) diff --git a/keystone/backends/sqlalchemy/api/service.py b/keystone/backends/sqlalchemy/api/service.py index 0ffb4f28f9..3e54610675 100644 --- a/keystone/backends/sqlalchemy/api/service.py +++ b/keystone/backends/sqlalchemy/api/service.py @@ -102,8 +102,10 @@ def update(id, values, session=None): service_ref.save(session=session) def get(self, id, session=None): - if not session: - session = get_session() + if id is None: + return None + + session = session or get_session() return ServiceAPI.to_model(session.query(models.Service). filter_by(id=id).first()) diff --git a/keystone/backends/sqlalchemy/api/tenant.py b/keystone/backends/sqlalchemy/api/tenant.py index 32432e5a7e..db516b155e 100755 --- a/keystone/backends/sqlalchemy/api/tenant.py +++ b/keystone/backends/sqlalchemy/api/tenant.py @@ -81,6 +81,9 @@ def get(self, id, session=None): For PK lookups from within the sqlalchemy backend, use ``_get_by_id()`` instead. """ + if id is None: + return None + session = session or get_session() result = session.query(models.Tenant).filter_by(uid=id).first() @@ -97,18 +100,27 @@ def _get_by_id(id, session=None): This is **only** for use within the sqlalchemy backend. """ + if id is None: + return None + session = session or get_session() return session.query(models.Tenant).filter_by(id=id).first() @staticmethod def id_to_uid(id, session=None): + if id is None: + return None + session = session or get_session() tenant = session.query(models.Tenant).filter_by(id=id).first() return tenant.uid if tenant else None @staticmethod def uid_to_id(uid, session=None): + if uid is None: + return None + session = session or get_session() tenant = session.query(models.Tenant).filter_by(uid=uid).first() return tenant.id if tenant else None diff --git a/keystone/backends/sqlalchemy/api/token.py b/keystone/backends/sqlalchemy/api/token.py index e2624a9c06..869822bbaf 100755 --- a/keystone/backends/sqlalchemy/api/token.py +++ b/keystone/backends/sqlalchemy/api/token.py @@ -78,8 +78,10 @@ def get(self, id, session=None): @staticmethod def _get(id, session=None): - if not session: - session = get_session() + if id is None: + return None + + session = session or get_session() result = session.query(models.Token).filter_by(id=id).first() diff --git a/keystone/backends/sqlalchemy/api/user.py b/keystone/backends/sqlalchemy/api/user.py index 156d79db3f..f5a64b1823 100755 --- a/keystone/backends/sqlalchemy/api/user.py +++ b/keystone/backends/sqlalchemy/api/user.py @@ -80,11 +80,12 @@ def create(self, values): return UserAPI.to_model(user_ref) def get(self, id, session=None): - if not session: - session = get_session() + if id is None: + return None - id = str(id) if id is not None else None - result = session.query(models.User).filter_by(uid=id).first() + session = session or get_session() + + result = session.query(models.User).filter_by(uid=str(id)).first() return UserAPI.to_model(result) @@ -95,24 +96,30 @@ def _get_by_id(id, session=None): - Queries by PK ID - Doesn't wrap result with domain layer models """ - if not session: - session = get_session() + if id is None: + return None + + session = session or get_session() - id = str(id) if id is not None else None - return session.query(models.User).filter_by(id=id).first() + # TODO(dolph): user ID's are NOT strings... why is this is being cast? + return session.query(models.User).filter_by(id=str(id)).first() @staticmethod def id_to_uid(id, session=None): + if id is None: + return None + session = session or get_session() - id = str(id) if id is not None else None - user = session.query(models.User).filter_by(id=id).first() + user = session.query(models.User).filter_by(id=str(id)).first() return user.uid if user else None @staticmethod def uid_to_id(uid, session=None): + if uid is None: + return None + session = session or get_session() - uid = str(uid) if uid is not None else None - user = session.query(models.User).filter_by(uid=uid).first() + user = session.query(models.User).filter_by(uid=str(uid)).first() return user.id if user else None def get_by_name(self, name, session=None):