)]}'
{"keystone/cmd/cli.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"272e2eab1b9df071ae0805126373d1f467232d7a","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        roles \u003d self.assignment_manager.\\"},{"line_number":249,"context_line":"            get_roles_for_user_and_project(user[\u0027id\u0027], self.project_id)"},{"line_number":250,"context_line":"        if roles and self.role_id in roles:"},{"line_number":251,"context_line":"            LOG.info(_LI(\u0027User %(username)s already has %(role)s on \u0027"},{"line_number":252,"context_line":"                         \u0027%(project)s.\u0027),"},{"line_number":253,"context_line":"                     {\u0027username\u0027: self.username,"},{"line_number":254,"context_line":"                      \u0027role\u0027: self.role_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_550987dc","line":251,"range":{"start_line":251,"start_character":56,"end_line":251,"end_character":64},"updated":"2016-03-14 17:41:15.000000000","message":"s/role %(role)s/%(role)s/","commit_id":"28a73c1b8632598edb92b699279e6d3d54e8ea82"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"272e2eab1b9df071ae0805126373d1f467232d7a","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            get_roles_for_user_and_project(user[\u0027id\u0027], self.project_id)"},{"line_number":250,"context_line":"        if roles and self.role_id in roles:"},{"line_number":251,"context_line":"            LOG.info(_LI(\u0027User %(username)s already has %(role)s on \u0027"},{"line_number":252,"context_line":"                         \u0027%(project)s.\u0027),"},{"line_number":253,"context_line":"                     {\u0027username\u0027: self.username,"},{"line_number":254,"context_line":"                      \u0027role\u0027: self.role_name,"},{"line_number":255,"context_line":"                      \u0027project\u0027: self.project_name})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_3505dbbb","line":252,"updated":"2016-03-14 17:41:15.000000000","message":"project %(project)s","commit_id":"28a73c1b8632598edb92b699279e6d3d54e8ea82"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"86ff327296e0719b3b7433d1f4ef511294273fd8","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        # by name, so build the hints to list the roles and filter by"},{"line_number":230,"context_line":"        # name instead."},{"line_number":231,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":232,"context_line":"        hints.add_filter(\u0027name\u0027, self.role_name)"},{"line_number":233,"context_line":"        role \u003d self.role_manager.list_roles(hints)"},{"line_number":234,"context_line":"        # NOTE(morganfainberg): Do not create the role if it already exists."},{"line_number":235,"context_line":"        if role:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_a6e8c3e3","line":232,"updated":"2016-03-16 15:01:27.000000000","message":"This by itself isn\u0027t unique and can return multiple entries.","commit_id":"c5ad41734105b694b8b6fd2c2b0d98b13f39bf54"}]}
