Role NoneType object has no attribute setdefault

Havana Keystone configured with LDAP.

When you try to update a role using the API:

curl -X PATCH --insecure -H "X-Auth-Token:the_token" -H
"Content-type:
application/json" -d '{"role": {"name": "the new name"}}'
https://localhost:35357/v3/roles/role_id

Keystone server raises an error:

{"error": {"message": "An unexpected error prevented the server from
fulfilling your request. 'NoneType' object has no attribute
'setdefault'", "code": 500, "title": "Internal Server Error"}}

The role information is updated, but keystone server raises that
error.

Closes-Bug: #1247830

Change-Id: I686e40e42371f6e2cea55110554456a33939799c
This commit is contained in:
Marcos Lobo 2013-11-04 14:10:59 +01:00 committed by Adam Young
parent 2ab2c62435
commit 24da79bded
2 changed files with 3 additions and 2 deletions

View File

@ -192,7 +192,7 @@ class Assignment(assignment.Driver):
def update_role(self, role_id, role): def update_role(self, role_id, role):
self.get_role(role_id) self.get_role(role_id)
self.role.update(role_id, role) return self.role.update(role_id, role)
def create_domain(self, domain_id, domain): def create_domain(self, domain_id, domain):
if domain_id == CONF.identity.default_domain_id: if domain_id == CONF.identity.default_domain_id:

View File

@ -1511,10 +1511,11 @@ class IdentityTests(object):
self.assertDictEqual(role_ref_dict, role) self.assertDictEqual(role_ref_dict, role)
role['name'] = uuid.uuid4().hex role['name'] = uuid.uuid4().hex
self.assignment_api.update_role(role['id'], role) updated_role_ref = self.assignment_api.update_role(role['id'], role)
role_ref = self.assignment_api.get_role(role['id']) role_ref = self.assignment_api.get_role(role['id'])
role_ref_dict = dict((x, role_ref[x]) for x in role_ref) role_ref_dict = dict((x, role_ref[x]) for x in role_ref)
self.assertDictEqual(role_ref_dict, role) self.assertDictEqual(role_ref_dict, role)
self.assertDictEqual(role_ref_dict, updated_role_ref)
self.assignment_api.delete_role(role['id']) self.assignment_api.delete_role(role['id'])
self.assertRaises(exception.RoleNotFound, self.assertRaises(exception.RoleNotFound,