# HG changeset patch # User david.comay@oracle.com # Date 1402773126 25200 # Node ID 97e85b2096e52cd1c0fb3b70fc6dcd770bb75126 # Parent 2d1537e7942d1e76f88d0a6772f568ddb2402c0d 18720708 Error: Unable to add userto primary project when adding user via Horizon diff -r 2d1537e7942d -r 97e85b2096e5 components/openstack/horizon/patches/05-launchpad-1260439.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/openstack/horizon/patches/05-launchpad-1260439.patch Sat Jun 14 12:12:06 2014 -0700 @@ -0,0 +1,75 @@ +This proposed upstream patch addresses + + 18720708 Error: Unable to add userto primary project when adding user + via Horizon + +and is tracked under Launchpad bug 1260439. Although it's been +addressed in the Juno trunk, the patch below is still not yet released +for Havana. It has been modified to apply cleanly into our current +Havana implementation + +commit f5ded29d9a73db4c225cbfb664e7d85e5aa0996b +Author: Matthias Runge +Date: Fri May 23 11:36:54 2014 +0200 + + Prevent error message when creating a user + + keystone changed behaviour and didn't add the user + to the specified role. Now it does; this patch + prevents an exception popping up without breaking + with previous versions. + + Change-Id: I115a5126b70ae3c7733aa065bf55104f88cc42e5 + Closes-Bug: #1260439 + +--- horizon-2013.2.3/openstack_dashboard/dashboards/admin/users/forms.py.~1~ 2014-04-03 11:45:53.000000000 -0700 ++++ horizon-2013.2.3/openstack_dashboard/dashboards/admin/users/forms.py 2014-06-11 12:54:51.517905246 -0700 +@@ -122,15 +122,21 @@ + _('User "%s" was successfully created.') + % data['name']) + if data['role_id']: +- try: +- api.keystone.add_tenant_user_role(request, +- data['project'], +- new_user.id, +- data['role_id']) +- except Exception: +- exceptions.handle(request, +- _('Unable to add user ' +- 'to primary project.')) ++ roles = api.keystone.roles_for_user(request, ++ new_user.id, ++ data['project']) or [] ++ assigned = [role for role in roles if role.id == str( ++ data['role_id'])] ++ if not assigned: ++ try: ++ api.keystone.add_tenant_user_role(request, ++ data['project'], ++ new_user.id, ++ data['role_id']) ++ except Exception: ++ exceptions.handle(request, ++ _('Unable to add user ' ++ 'to primary project.')) + return new_user + except Exception: + exceptions.handle(request, _('Unable to create user.')) +--- horizon-2013.2.3/openstack_dashboard/dashboards/admin/users/tests.py.~1~ 2014-04-03 11:45:53.000000000 -0700 ++++ horizon-2013.2.3/openstack_dashboard/dashboards/admin/users/tests.py 2014-06-11 13:44:29.437187509 -0700 +@@ -81,6 +81,7 @@ + 'tenant_list', + 'add_tenant_user_role', + 'get_default_role', ++ 'roles_for_user', + 'role_list')}) + def test_create(self): + user = self.users.get(id="1") +@@ -102,6 +103,7 @@ + domain=domain_id).AndReturn(user) + api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list()) + api.keystone.get_default_role(IgnoreArg()).AndReturn(role) ++ api.keystone.roles_for_user(IgnoreArg(), user.id, self.tenant.id) + api.keystone.add_tenant_user_role(IgnoreArg(), self.tenant.id, + user.id, role.id) +