summaryrefslogtreecommitdiffstats
path: root/keystone/identity
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2013-06-04 10:27:31 -0400
committerAdam Young <ayoung@redhat.com>2013-06-10 11:38:39 -0400
commit7b7800608af87e5f84df97f8fef7a69b4f435946 (patch)
treeed40178b12948a2c551f2db6691cb512bcfb869b /keystone/identity
parentf1172aac7d8e462af8956c8ce071aeef855bb370 (diff)
downloadkeystone-7b7800608af87e5f84df97f8fef7a69b4f435946.tar.gz
keystone-7b7800608af87e5f84df97f8fef7a69b4f435946.tar.xz
keystone-7b7800608af87e5f84df97f8fef7a69b4f435946.zip
drop user and group constraints
Drop foreign keys that point to user and group tables from other tables. This is required to be able to split up the backends. Blueprint extract-projects-from-id Change-Id: Iea78ddca4ef5ea5ca1bb542cba81da8aefa95b6b
Diffstat (limited to 'keystone/identity')
-rw-r--r--keystone/identity/backends/sql.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/keystone/identity/backends/sql.py b/keystone/identity/backends/sql.py
index 394be8f8..b2be8774 100644
--- a/keystone/identity/backends/sql.py
+++ b/keystone/identity/backends/sql.py
@@ -96,10 +96,8 @@ class BaseGrant(sql.DictBase):
class UserProjectGrant(sql.ModelBase, BaseGrant):
__tablename__ = 'user_project_metadata'
user_id = sql.Column(sql.String(64),
- sql.ForeignKey('user.id'),
primary_key=True)
project_id = sql.Column(sql.String(64),
- sql.ForeignKey('project.id'),
primary_key=True)
data = sql.Column(sql.JsonBlob())
@@ -208,15 +206,24 @@ class Identity(sql.Base, identity.Driver):
raise exception.ProjectNotFound(project_id=tenant_name)
return project_ref.to_dict()
- def get_project_users(self, tenant_id):
+ def get_project_user_ids(self, tenant_id):
session = self.get_session()
self.get_project(tenant_id)
- query = session.query(User)
- query = query.join(UserProjectGrant)
+ query = session.query(UserProjectGrant)
query = query.filter(UserProjectGrant.project_id == tenant_id)
- user_refs = query.all()
- return [identity.filter_user(user_ref.to_dict())
- for user_ref in user_refs]
+ project_refs = query.all()
+ return [project_ref.user_id for project_ref in project_refs]
+
+ def get_project_users(self, tenant_id):
+ session = self.get_session()
+ self.get_project(tenant_id)
+ user_refs = []
+ for user_id in self.get_project_user_ids(tenant_id):
+ query = session.query(User)
+ query = query.filter(User.id == user_id)
+ user_ref = query.first()
+ user_refs.append(identity.filter_user(user_ref.to_dict()))
+ return user_refs
def get_metadata(self, user_id=None, tenant_id=None,
domain_id=None, group_id=None):