)]}'
{"keystone/assignment/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a1380b36c67174d8c1307e5822128d0688995e22","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _get_admin_role(self):"},{"line_number":88,"context_line":"        admin_role \u003d None"},{"line_number":89,"context_line":"        for role in self.role_api.list_roles():"},{"line_number":90,"context_line":"            if role[\u0027name\u0027] \u003d\u003d \u0027admin\u0027:"},{"line_number":91,"context_line":"                admin_role \u003d role"},{"line_number":92,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_45ed54ee","line":89,"updated":"2015-10-12 04:39:30.000000000","message":"list roles has a \u0027name\u0027 query, we could use that and get rid of a lot of this https://github.com/openstack/keystone/blob/master/keystone/assignment/controllers.py#L299","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"98e772426aefe8cf99b84660394592c7c91f6f50","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _get_admin_role(self):"},{"line_number":88,"context_line":"        admin_role \u003d None"},{"line_number":89,"context_line":"        for role in self.role_api.list_roles():"},{"line_number":90,"context_line":"            if role[\u0027name\u0027] \u003d\u003d \u0027admin\u0027:"},{"line_number":91,"context_line":"                admin_role \u003d role"},{"line_number":92,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_8e805a8d","line":89,"in_reply_to":"7a2fa921_45ed54ee","updated":"2015-10-12 15:20:35.000000000","message":"Done","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a1380b36c67174d8c1307e5822128d0688995e22","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def _get_admin_role(self):"},{"line_number":88,"context_line":"        admin_role \u003d None"},{"line_number":89,"context_line":"        for role in self.role_api.list_roles():"},{"line_number":90,"context_line":"            if role[\u0027name\u0027] \u003d\u003d \u0027admin\u0027:"},{"line_number":91,"context_line":"                admin_role \u003d role"},{"line_number":92,"context_line":"                break"},{"line_number":93,"context_line":"        return admin_role"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_85e36c05","line":90,"updated":"2015-10-12 04:39:30.000000000","message":"we could make this a configuration option that defaults to \u0027admin\u0027\n\n  [assignment]\n  admin_role_name \u003d \u0027admin\u0027\n\njust to avoid having hard coded bits in the code","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"98e772426aefe8cf99b84660394592c7c91f6f50","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def _get_admin_role(self):"},{"line_number":88,"context_line":"        admin_role \u003d None"},{"line_number":89,"context_line":"        for role in self.role_api.list_roles():"},{"line_number":90,"context_line":"            if role[\u0027name\u0027] \u003d\u003d \u0027admin\u0027:"},{"line_number":91,"context_line":"                admin_role \u003d role"},{"line_number":92,"context_line":"                break"},{"line_number":93,"context_line":"        return admin_role"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_ee730ee6","line":90,"in_reply_to":"7a2fa921_85e36c05","updated":"2015-10-12 15:20:35.000000000","message":"Done","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a1380b36c67174d8c1307e5822128d0688995e22","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                break"},{"line_number":93,"context_line":"        return admin_role"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _strip_admin_role(self, role_list):"},{"line_number":96,"context_line":"        admin_role \u003d self._get_admin_role()"},{"line_number":97,"context_line":"        if admin_role is not None:"},{"line_number":98,"context_line":"            stripped_role_list \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_a580e8f8","line":95,"updated":"2015-10-12 04:39:30.000000000","message":"this could be a bit slicker, just get the single admin id and pop it if it\u0027s in the list, or compare sets\n\n  admin_role_id \u003d self._get_admin_role_id()\n  role_list.pop(admin_role_id, None)\n\nor \n\n  admin_role_id \u003d self._get_admin_role_id()\n  role_list \u003d set([admin_role_id]) - set(role_list)\n\nhaving tried it, just spitballing","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"98e772426aefe8cf99b84660394592c7c91f6f50","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                break"},{"line_number":93,"context_line":"        return admin_role"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _strip_admin_role(self, role_list):"},{"line_number":96,"context_line":"        admin_role \u003d self._get_admin_role()"},{"line_number":97,"context_line":"        if admin_role is not None:"},{"line_number":98,"context_line":"            stripped_role_list \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_ae7d16b3","line":95,"in_reply_to":"7a2fa921_a580e8f8","updated":"2015-10-12 15:20:35.000000000","message":"Done","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a1380b36c67174d8c1307e5822128d0688995e22","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                        user_id\u003duser_id, project_id\u003dp[\u0027id\u0027],"},{"line_number":150,"context_line":"                        inherited_to_projects\u003dTrue)"},{"line_number":151,"context_line":"                    role_list +\u003d [x[\u0027id\u0027] for x in p_roles]"},{"line_number":152,"context_line":"            if (CONF.assignment.admin_project_id is not None and"},{"line_number":153,"context_line":"                    project_ref[\u0027id\u0027] !\u003d CONF.assignment.admin_project_id):"},{"line_number":154,"context_line":"                role_list \u003d self._strip_admin_role(role_list)"},{"line_number":155,"context_line":"            return role_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e58d802b","line":152,"updated":"2015-10-12 04:39:30.000000000","message":"\"is not None\" isn\u0027t needed here","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"fc8c98448df104230abb8a4050135c62befd91c0","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                        user_id\u003duser_id, project_id\u003dp[\u0027id\u0027],"},{"line_number":150,"context_line":"                        inherited_to_projects\u003dTrue)"},{"line_number":151,"context_line":"                    role_list +\u003d [x[\u0027id\u0027] for x in p_roles]"},{"line_number":152,"context_line":"            if (CONF.assignment.admin_project_id is not None and"},{"line_number":153,"context_line":"                    project_ref[\u0027id\u0027] !\u003d CONF.assignment.admin_project_id):"},{"line_number":154,"context_line":"                role_list \u003d self._strip_admin_role(role_list)"},{"line_number":155,"context_line":"            return role_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_4b5ec513","line":152,"updated":"2015-10-12 06:50:05.000000000","message":"++, \u0027if CONF.assignment.admin_project_id\u0027 will call CONF.assignment.admin_project_id.__nonzero__()\n\nhttps://docs.python.org/2/reference/datamodel.html#object.__nonzero__","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"98e772426aefe8cf99b84660394592c7c91f6f50","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                        user_id\u003duser_id, project_id\u003dp[\u0027id\u0027],"},{"line_number":150,"context_line":"                        inherited_to_projects\u003dTrue)"},{"line_number":151,"context_line":"                    role_list +\u003d [x[\u0027id\u0027] for x in p_roles]"},{"line_number":152,"context_line":"            if (CONF.assignment.admin_project_id is not None and"},{"line_number":153,"context_line":"                    project_ref[\u0027id\u0027] !\u003d CONF.assignment.admin_project_id):"},{"line_number":154,"context_line":"                role_list \u003d self._strip_admin_role(role_list)"},{"line_number":155,"context_line":"            return role_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_61038f0e","line":152,"in_reply_to":"7a2fa921_4b5ec513","updated":"2015-10-12 15:20:35.000000000","message":"I don\u0027t want to make the config value be the ID, as that masks the fact that the string is \"admin\" and that is what we need to match on.  It needs to be the name","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a1380b36c67174d8c1307e5822128d0688995e22","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        group_role_list \u003d _get_group_domain_roles(user_id, domain_id)"},{"line_number":204,"context_line":"        # Use set() to process the list to remove any duplicates"},{"line_number":205,"context_line":"        role_list \u003d list(set(user_role_list + group_role_list))"},{"line_number":206,"context_line":"        if (CONF.assignment.admin_domain_id is not None and"},{"line_number":207,"context_line":"                domain_id !\u003d CONF.assignment.admin_domain_id):"},{"line_number":208,"context_line":"            role_list \u003d self._strip_admin_role(role_list)"},{"line_number":209,"context_line":"        return role_list"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_a5978839","line":206,"updated":"2015-10-12 04:39:30.000000000","message":"same","commit_id":"18191840ffdce0181ba3c000b842b5b6a1c046e1"}]}
