)]}'
{"keystone/assignment/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2cd6d339889ac51f25748161f4a69e611c50063b","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"    def list_roles(self, hints\u003dNone):"},{"line_number":1272,"context_line":"        return self.driver.list_roles(hints or driver_hints.Hints())"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"    def update_role(self, role_id, role, initiator\u003dNone):"},{"line_number":1276,"context_line":"        original_role \u003d self.driver.get_role(role_id)"},{"line_number":1277,"context_line":"        if (\u0027domain_id\u0027 in role and"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf8cb3f7_a9fea1ab","line":1274,"updated":"2017-12-27 22:58:19.000000000","message":"Unrelated change?","commit_id":"2a7d634a328a2254019c968331d48ade16559fa2"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f6475938bd4a0a8a40c22bdde84afc3ef8c86832","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"    def get_role(self, role_id):"},{"line_number":1248,"context_line":"        return self.driver.get_role(role_id)"},{"line_number":1249,"context_line":""},{"line_number":1250,"context_line":"    def get_role_by_name(self, role_name, hints\u003dNone):"},{"line_number":1251,"context_line":"        if not hints:"},{"line_number":1252,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":1253,"context_line":"        hints.add_filter(\"name\", role_name, case_sensitive\u003dTrue)"},{"line_number":1254,"context_line":"        found_roles \u003d PROVIDERS.role_api.list_roles(hints)"},{"line_number":1255,"context_line":"        if not found_roles:"},{"line_number":1256,"context_line":"            raise exception.RoleNotFound("},{"line_number":1257,"context_line":"                _(\"Role %s is not defined\") % role_name"},{"line_number":1258,"context_line":"            )"},{"line_number":1259,"context_line":"        elif len(found_roles) \u003d\u003d 1:"},{"line_number":1260,"context_line":"            return {\u0027id\u0027: found_roles[0][\u0027id\u0027]}"},{"line_number":1261,"context_line":"        else:"},{"line_number":1262,"context_line":"            raise exception.AmbiguityError(resource\u003d\u0027role\u0027,"},{"line_number":1263,"context_line":"                                           name\u003drole_name)"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"    def create_role(self, role_id, role, initiator\u003dNone):"},{"line_number":1266,"context_line":"        ret \u003d self.driver.create_role(role_id, role)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f91af0f_e01ace15","line":1263,"range":{"start_line":1250,"start_character":0,"end_line":1263,"end_character":58},"updated":"2017-12-29 19:09:16.000000000","message":"I would recommend always returning a list of the roles with that name rather than a 3xx error if there are multiples.","commit_id":"d774baf73dc479aa7bafb2d482710e9191715d87"}],"keystone/trust/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2cd6d339889ac51f25748161f4a69e611c50063b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            if role.get(\u0027id\u0027):"},{"line_number":82,"context_line":"                roles.append({\u0027id\u0027: role[\u0027id\u0027]})"},{"line_number":83,"context_line":"            else:"},{"line_number":84,"context_line":"                roles.append(self.role_api.get_role_by_name(role[\u0027name\u0027]))"},{"line_number":85,"context_line":"        return roles"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _find_redelegated_trust(self, request):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf8cb3f7_0929cd36","line":84,"range":{"start_line":84,"start_character":29,"end_line":84,"end_character":33},"updated":"2017-12-27 22:58:19.000000000","message":"I think the stuff Morgan is working on changes these to use keystone.common.provider_api, we should be able to convert this, too.\n\n  from keystone.common import provider_api\n  PROVIDERS \u003d provider_api.ProviderAPIs\n  ...\n  roles.append(PROVIDERS.role_api.get_role_by_name(...))","commit_id":"2a7d634a328a2254019c968331d48ade16559fa2"}]}
