diff options
| author | Adam Gandelman <adamg@canonical.com> | 2012-04-02 14:21:43 -0700 |
|---|---|---|
| committer | Adam Gandelman <adamg@canonical.com> | 2012-04-03 18:31:16 -0700 |
| commit | 75a8dfef51f3566cd5d4cacee41f34bbbf9d15bd (patch) | |
| tree | 0ec31a6741d683f5306e672f9b2f051ae78189a3 /keystone | |
| parent | 198fe22df9a924e08448b5220a694c4f9491b289 (diff) | |
| download | keystone-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.py | 8 |
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() |
