)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"29a06160ea648f71eae1eaea0d1a3628ffc3d39d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new method was introduced on AccessInfo class. The method user_roles"},{"line_number":10,"context_line":"returns a list of roles of user associated to the authorization request."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I0862aaaa27193119dc83ef38100c88b48a1d24a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUH%2F%2FPbw%3D","line":11,"updated":"2014-01-16 00:37:47.000000000","message":"this needs a bug or a blueprint.","commit_id":"61539af332f3e4ccee8835614ef932790050c830"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"54ea382e06b99ba3fa3bb9de479f19cf7532fef6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"returns a list of role names of a user associated to the authorization"},{"line_number":11,"context_line":"request."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"bp keystoneclient-auth-ref-get-roles"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I0862aaaa27193119dc83ef38100c88b48a1d24a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F%2BuKQ%3D","line":13,"updated":"2014-01-22 19:59:11.000000000","message":"add a DocImpact tag","commit_id":"ab45372444bda59f5f1efef26eec2378974915b1"}],"keystoneclient/access.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"29a06160ea648f71eae1eaea0d1a3628ffc3d39d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of dicts of data on role"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        raise NotImplementedError()"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FPco%3D","line":171,"updated":"2014-01-16 00:37:47.000000000","message":"change \"data on role\" to \"role data\"","commit_id":"61539af332f3e4ccee8835614ef932790050c830"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6e0947a07fa91919818a1879e3f1b17a8974f79e","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of dicts of role data"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        raise NotImplementedError()"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FOvk%3D","line":171,"updated":"2014-01-16 05:48:57.000000000","message":"We should define here what the dict will contain because AccessInfo is supposed to be version independent. It just so happens that the v2 and v3 role definition is very similar so they can be returned from the token, but we still need to define the contract.\n\nSo something like \n\na list of role data dicts. Role data will contain at least an \u0027id\u0027 and a \u0027name\u0027 field.","commit_id":"596095293410700112d6650394e78f05306e683a"},{"author":{"_account_id":1531,"name":"Ilya Kharin","email":"akscram@gmail.com","username":"akscram"},"change_message_id":"84230fbfd1d456720a3b76f36535ab2a5fae1851","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of dicts of role data"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        raise NotImplementedError()"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FBSs%3D","line":171,"in_reply_to":"AAAAUH%2F%2FI44%3D","updated":"2014-01-18 19:24:13.000000000","message":"a list of roles this is what I really want","commit_id":"596095293410700112d6650394e78f05306e683a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"af7e6153dedc3a82425e897e595e0760419e7dc9","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of dicts of role data"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        raise NotImplementedError()"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FI44%3D","line":171,"in_reply_to":"AAAAUH%2F%2FJMk%3D","updated":"2014-01-17 02:58:07.000000000","message":"Yea, that is unusual, i thought id was always required. Because of this we should probably also make sure that what we say is correct like \n\n    return [ x for x in sefl[\u0027user\u0027][\u0027roles\u0027] if \u0027name\u0027 in x ]\n\npartially because i can see the user for a role_names property which was simply\n\n    @property\n    def role_names(self):\n        return [ x[\u0027name\u0027] for x in self.roles ]","commit_id":"596095293410700112d6650394e78f05306e683a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c771b8b5f76b12968bbcc24ff00616670bb8412","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of dicts of role data"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        raise NotImplementedError()"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FJMk%3D","line":171,"in_reply_to":"AAAAUH%2F%2FN7s%3D","updated":"2014-01-17 01:29:06.000000000","message":"document that it\u0027s always got the name and the id is optional.","commit_id":"596095293410700112d6650394e78f05306e683a"},{"author":{"_account_id":1531,"name":"Ilya Kharin","email":"akscram@gmail.com","username":"akscram"},"change_message_id":"9f785813d9b5d7ccf58c7d666135c6720d3f0ef9","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of dicts of role data"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        raise NotImplementedError()"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FN7s%3D","line":171,"in_reply_to":"AAAAUH%2F%2FOvk%3D","updated":"2014-01-16 09:12:36.000000000","message":"I agree with this, it\u0027s a good point to have an unified format of returned value. So, there is a problem with v2 because in response body I have got only a \u0027name\u0027 field. On the other hand there is an example on http://api.openstack.org/api-ref-identity.html#identity-v2 when both fields are present.","commit_id":"596095293410700112d6650394e78f05306e683a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"1fe353b1a94dbeff0f9013cc38bce07a05968b50","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    @property"},{"line_number":167,"context_line":"    def role_names(self):"},{"line_number":168,"context_line":"        \"\"\"Returns a list of user roles of the user associated with the"},{"line_number":169,"context_line":"        authentication request."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        :returns: a list of strings of role names"},{"line_number":172,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BTzY%3D","line":169,"updated":"2014-01-28 04:58:35.000000000","message":"User probably only needs to be said once there.\n\nNit should probably say names in there somewhere (nit because the function says names)","commit_id":"755ae8363f03c617377269aa57b7fb61e43f5117"}]}
