)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ae5cebab03a64434bec0d456651a016dc65201e8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-12-18 14:17:56 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"create _member_ role as specified in CONF"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ib4a702e27da9903df85b774d7442bb98edfefec1"},{"line_number":10,"context_line":"Closes-Bug: 1403136"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_3324ce0d","line":8,"updated":"2014-12-29 01:42:54.000000000","message":"why?","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"}],"keystone/assignment/controllers.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"cc41d3d6bd85d128f265120a9ed09ffde93d1441","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            msg \u003d _(\u0027Name field is required and cannot be empty\u0027)"},{"line_number":224,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        role_id \u003d uuid.uuid4().hex"},{"line_number":227,"context_line":"        if role[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"},{"line_number":228,"context_line":"            # Instead of using a random role ID, using the"},{"line_number":229,"context_line":"            # configured role ID. This avoids the potential of"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_91276562","line":226,"updated":"2014-12-24 12:28:35.000000000","message":"It would be better to put this on an else statement at line 232.","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ae5cebab03a64434bec0d456651a016dc65201e8","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            msg \u003d _(\u0027Name field is required and cannot be empty\u0027)"},{"line_number":224,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        role_id \u003d uuid.uuid4().hex"},{"line_number":227,"context_line":"        if role[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"},{"line_number":228,"context_line":"            # Instead of using a random role ID, using the"},{"line_number":229,"context_line":"            # configured role ID. This avoids the potential of"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_931bc2c9","line":226,"in_reply_to":"3a961159_91276562","updated":"2014-12-29 01:42:54.000000000","message":"I agree with this... it\u0027s confusing to set the role_id to something and then set it to something else without using the old value.","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ae5cebab03a64434bec0d456651a016dc65201e8","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        role_id \u003d uuid.uuid4().hex"},{"line_number":227,"context_line":"        if role[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"},{"line_number":228,"context_line":"            # Instead of using a random role ID, using the"},{"line_number":229,"context_line":"            # configured role ID. This avoids the potential of"},{"line_number":230,"context_line":"            # creating a \"member\" role with an unexpected ID."},{"line_number":231,"context_line":"            role_id \u003d CONF.member_role_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_731e56bd","line":228,"updated":"2014-12-29 01:42:54.000000000","message":"change \"using\" to \"use\"","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ae5cebab03a64434bec0d456651a016dc65201e8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            # Instead of using a random role ID, using the"},{"line_number":229,"context_line":"            # configured role ID. This avoids the potential of"},{"line_number":230,"context_line":"            # creating a \"member\" role with an unexpected ID."},{"line_number":231,"context_line":"            role_id \u003d CONF.member_role_id"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        role[\u0027id\u0027] \u003d role_id"},{"line_number":234,"context_line":"        role_ref \u003d self.assignment_api.create_role(role_id, role)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_53687a21","line":231,"updated":"2014-12-29 01:42:54.000000000","message":"This isn\u0027t tested according to the coverage report. Add a test.","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"cc41d3d6bd85d128f265120a9ed09ffde93d1441","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    @controller.protected()"},{"line_number":472,"context_line":"    @validation.validated(schema.role_create, \u0027role\u0027)"},{"line_number":473,"context_line":"    def create_role(self, context, role):"},{"line_number":474,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(role))"},{"line_number":475,"context_line":"        if ref[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"},{"line_number":476,"context_line":"            # Instead of using a random role ID, using the"},{"line_number":477,"context_line":"            # configured role ID. This avoids the potential of"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_51d89d52","line":474,"updated":"2014-12-24 12:28:35.000000000","message":"Same as line 226.\n\nThis line could contain only ref \u003d self._normalize_dict(role)\n\nThe expression:\n\nref \u003d self._assign_unique_id(ref)\n\ncould be put on an else statement at line 480.","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ae5cebab03a64434bec0d456651a016dc65201e8","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    @controller.protected()"},{"line_number":472,"context_line":"    @validation.validated(schema.role_create, \u0027role\u0027)"},{"line_number":473,"context_line":"    def create_role(self, context, role):"},{"line_number":474,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(role))"},{"line_number":475,"context_line":"        if ref[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"},{"line_number":476,"context_line":"            # Instead of using a random role ID, using the"},{"line_number":477,"context_line":"            # configured role ID. This avoids the potential of"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_f38166c4","line":474,"in_reply_to":"3a961159_51d89d52","updated":"2014-12-29 01:42:54.000000000","message":"I agree... it\u0027s confusing as it is.","commit_id":"f88d2275b43f008a78026616e11f12fc1d16d19f"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"f877cd339913c8342cf9e3055e067d057f77c980","unresolved":false,"context_lines":[{"line_number":472,"context_line":"    @controller.protected()"},{"line_number":473,"context_line":"    @validation.validated(schema.role_create, \u0027role\u0027)"},{"line_number":474,"context_line":"    def create_role(self, context, role):"},{"line_number":475,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(role))"},{"line_number":476,"context_line":"        ref \u003d self._normalize_dict(role)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        if ref[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_ab8f56cb","line":475,"updated":"2015-02-09 16:32:12.000000000","message":"Please remove this line, as you took the suggestions from patch set 2.","commit_id":"9e678182fe8e6084ef691215bdb7024d9e7b429d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ce460aeac2d3bd62f9585a8e2d8f5804c2570e34","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            # \"member\" role with an unexpected ID."},{"line_number":482,"context_line":"            ref[\u0027id\u0027] \u003d CONF.member_role_id"},{"line_number":483,"context_line":"        else:"},{"line_number":484,"context_line":"            ref \u003d self._assign_unique_id(ref)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        ref \u003d self.role_api.create_role(ref[\u0027id\u0027], ref)"},{"line_number":487,"context_line":"        return RoleV3.wrap_member(context, ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_f676bbd7","line":484,"updated":"2015-02-01 15:37:05.000000000","message":"Wasn\u0027t this already done at line 475?","commit_id":"9e678182fe8e6084ef691215bdb7024d9e7b429d"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"82538006011ce8917636bed2de71b760462bd560","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            msg \u003d _(\u0027Name field is required and cannot be empty\u0027)"},{"line_number":225,"context_line":"            raise exception.ValidationError(message\u003dmsg)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        if role[\u0027name\u0027] \u003d\u003d CONF.member_role_name:"},{"line_number":228,"context_line":"            # Use the configured member role ID when creating the configured"},{"line_number":229,"context_line":"            # member role name. This avoids the potential of creating a"},{"line_number":230,"context_line":"            # \"member\" role with an unexpected ID."}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_51b0ff42","line":227,"updated":"2015-02-11 03:46:08.000000000","message":"I remember when _member_ was introduced and it gave me fits. It\u0027s nice to see it is the gift that keeps on giving :-)","commit_id":"24df280987b35e7bf206377c62d4cc2b1a9b7fec"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"652498606e86ff8a468b8ea70234b1dfc28e58bf","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        else:"},{"line_number":508,"context_line":"            role \u003d self._assign_unique_id(role)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        ref \u003d self._normalize_dict(role)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        ref \u003d self.role_api.create_role(ref[\u0027id\u0027], ref)"},{"line_number":513,"context_line":"        return RoleV3.wrap_member(context, ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_4d5dbb78","line":510,"updated":"2015-02-11 07:56:49.000000000","message":"Not a big deal: this change the code from \"calling _normalize_dict() then _assign_unique_id()\" to \"calling _assign_unique_id() first then _normalize_dict()\"\n\nI looked at the internal code, seems there is no difference since we are not modifying any attributes that may be affected by normalizing the key argument.","commit_id":"24df280987b35e7bf206377c62d4cc2b1a9b7fec"}],"keystone/tests/test_keystoneclient.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3db86adad9ee4c97151be7deea7ea089f74655a4","unresolved":false,"context_lines":[{"line_number":712,"context_line":"        client \u003d self.get_client(admin\u003dTrue)"},{"line_number":713,"context_line":"        client.roles.delete(role\u003dCONF.member_role_id)"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"        # deleting the member role revokes our token, so re-authenticate"},{"line_number":716,"context_line":"        client \u003d self.get_client(admin\u003dTrue)"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        # specify only the role name on creation"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_9215474b","line":715,"updated":"2015-02-10 07:05:10.000000000","message":"really? I thought member role only assigned when adding users to a tenant without specifying a role. Not all users have this role.","commit_id":"24df280987b35e7bf206377c62d4cc2b1a9b7fec"}]}
