summaryrefslogtreecommitdiffstats
path: root/keystone
diff options
context:
space:
mode:
authorAdam Gandelman <adamg@canonical.com>2012-04-02 14:21:43 -0700
committerAdam Gandelman <adamg@canonical.com>2012-04-03 18:31:16 -0700
commit75a8dfef51f3566cd5d4cacee41f34bbbf9d15bd (patch)
tree0ec31a6741d683f5306e672f9b2f051ae78189a3 /keystone
parent198fe22df9a924e08448b5220a694c4f9491b289 (diff)
downloadkeystone-75a8dfef51f3566cd5d4cacee41f34bbbf9d15bd.tar.gz
keystone-75a8dfef51f3566cd5d4cacee41f34bbbf9d15bd.tar.xz
keystone-75a8dfef51f3566cd5d4cacee41f34bbbf9d15bd.zip
Remove tenant membership during user deletion
Remove users' tenant membership on user deletion. Resolves a FK constraint issue that previously went unnoticed due to testing against database configurations that do not support FK constraints (MyISAM). Fixes LP bug 959294. Update: * Move tenant membership cleanup to the sql identity backend * Add a test case to test_backend_sql Change-Id: Ib4f5da03033f7886b36d1ab3b8b4ac37f08b2e0e
Diffstat (limited to 'keystone')
-rw-r--r--keystone/identity/backends/sql.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/keystone/identity/backends/sql.py b/keystone/identity/backends/sql.py
index 7c692475..e4281a8d 100644
--- a/keystone/identity/backends/sql.py
+++ b/keystone/identity/backends/sql.py
@@ -327,7 +327,15 @@ class Identity(sql.Base, identity.Driver):
def delete_user(self, user_id):
session = self.get_session()
user_ref = session.query(User).filter_by(id=user_id).first()
+ membership_refs = session.query(UserTenantMembership)\
+ .filter_by(user_id=user_id)\
+ .all()
+
with session.begin():
+ if membership_refs:
+ for membership_ref in membership_refs:
+ session.delete(membership_ref)
+
session.delete(user_ref)
session.flush()