)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":11,"context_line":"by having a protocol specific middleware"},{"line_number":12,"context_line":"(i.e. EC2, S3, etc)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint generic signature"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I4c04ca5b4790c25f1aedadec605f5ca0b97f6a0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAASn%2F%2FjS4%3D","line":14,"updated":"2013-09-03 16:09:00.000000000","message":"This might need to be fixed since it doesn\u0027t link to a blueprint.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"by having a protocol specific middleware"},{"line_number":12,"context_line":"(i.e. EC2, S3, etc)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint generic signature"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I4c04ca5b4790c25f1aedadec605f5ca0b97f6a0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAASn%2F%2FiF4%3D","line":14,"in_reply_to":"AAAASn%2F%2FjS4%3D","updated":"2013-09-03 18:51:03.000000000","message":"I will update the commit message","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"}],"etc/keystone.conf.sample":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cb60c66f8faeb648a30ff667dc2d75682db8ff74","unresolved":false,"context_lines":[{"line_number":368,"context_line":"password \u003d keystone.auth.plugins.password.Password"},{"line_number":369,"context_line":"token \u003d keystone.auth.plugins.token.Token"},{"line_number":370,"context_line":"oauth1 \u003d keystone.auth.plugins.oauth1.OAuth"},{"line_number":371,"context_line":"signature \u003d  keystone.auth.plugins.signature.Signature"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"[paste_deploy]"},{"line_number":374,"context_line":"# Name of the paste configuration file that defines the available pipelines"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAASn%2F%2FgVA%3D","line":371,"updated":"2013-09-04 01:11:57.000000000","message":"Disabled by default","commit_id":"d9867d00fec61c3b7685ac95faf6ad2ee60bc028"}],"keystone/auth/auth_utils.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        credential_id \u003d utils.hash_access_key(access_id)"},{"line_number":56,"context_line":"        creds \u003d self.credential_api.get_credential(credential_id)"},{"line_number":57,"context_line":"        if not creds:"},{"line_number":58,"context_line":"            raise exception.Unauthorized(message\u003d_(\u0027Credential \u0027"},{"line_number":59,"context_line":"                                                   \u0027access key %s not \u0027"},{"line_number":60,"context_line":"                                                   \u0027found.\u0027) % access_id)"},{"line_number":61,"context_line":"        if project_id is not None and ("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjRA%3D","line":58,"updated":"2013-09-03 16:09:00.000000000","message":"For easier readability, \u0027message\u0027 could be built on a separate line and just passed in here\n\nmsg \u003d _(\u0027Some message info here\u0027)\nraise exception.Unauthorized(message\u003dmsg)","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        credential_id \u003d utils.hash_access_key(access_id)"},{"line_number":56,"context_line":"        creds \u003d self.credential_api.get_credential(credential_id)"},{"line_number":57,"context_line":"        if not creds:"},{"line_number":58,"context_line":"            raise exception.Unauthorized(message\u003d_(\u0027Credential \u0027"},{"line_number":59,"context_line":"                                                   \u0027access key %s not \u0027"},{"line_number":60,"context_line":"                                                   \u0027found.\u0027) % access_id)"},{"line_number":61,"context_line":"        if project_id is not None and ("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiTc%3D","line":58,"in_reply_to":"AAAASn%2F%2FjRA%3D","updated":"2013-09-03 18:51:03.000000000","message":"ok","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                   \u0027found.\u0027) % access_id)"},{"line_number":61,"context_line":"        if project_id is not None and ("},{"line_number":62,"context_line":"                creds.get(\u0027project_id\u0027) !\u003d project_id):"},{"line_number":63,"context_line":"            raise exception.Unauthorized(message\u003d_(\u0027Credential \u0027"},{"line_number":64,"context_line":"                                                   \u0027project id does not \u0027"},{"line_number":65,"context_line":"                                                   \u0027match request project id \u0027"},{"line_number":66,"context_line":"                                                   \u0027%s.\u0027) % project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjQ0%3D","line":63,"updated":"2013-09-03 16:09:00.000000000","message":"Same comment here","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                   \u0027found.\u0027) % access_id)"},{"line_number":61,"context_line":"        if project_id is not None and ("},{"line_number":62,"context_line":"                creds.get(\u0027project_id\u0027) !\u003d project_id):"},{"line_number":63,"context_line":"            raise exception.Unauthorized(message\u003d_(\u0027Credential \u0027"},{"line_number":64,"context_line":"                                                   \u0027project id does not \u0027"},{"line_number":65,"context_line":"                                                   \u0027match request project id \u0027"},{"line_number":66,"context_line":"                                                   \u0027%s.\u0027) % project_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiTU%3D","line":63,"in_reply_to":"AAAASn%2F%2FjQ0%3D","updated":"2013-09-03 18:51:03.000000000","message":"ok","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                                                   \u0027%s.\u0027) % project_id)"},{"line_number":67,"context_line":"        return creds"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def lookup_credential(self, signature_info):"},{"line_number":70,"context_line":"        access_id \u003d signature_info[\u0027access\u0027]"},{"line_number":71,"context_line":"        if not access_id:"},{"line_number":72,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027access\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjPM%3D","line":69,"updated":"2013-09-03 16:09:00.000000000","message":"(NIT): Could docstrings be added to these methods for clarity? This method especially returns multiple values and raises exceptions in certain cases, it would be nice to have these documented.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                                                   \u0027%s.\u0027) % project_id)"},{"line_number":67,"context_line":"        return creds"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def lookup_credential(self, signature_info):"},{"line_number":70,"context_line":"        access_id \u003d signature_info[\u0027access\u0027]"},{"line_number":71,"context_line":"        if not access_id:"},{"line_number":72,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027access\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiNA%3D","line":69,"in_reply_to":"AAAASn%2F%2FjPM%3D","updated":"2013-09-03 18:51:03.000000000","message":"I will change the api to check if the required parameters are sent in auth_payload and will return only the credentials. Thanks for catching this in review.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        access_id \u003d signature_info[\u0027access\u0027]"},{"line_number":71,"context_line":"        if not access_id:"},{"line_number":72,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027access\u0027,"},{"line_number":73,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":74,"context_line":"        signature_algorithm \u003d signature_info[\u0027algorithm\u0027]"},{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjQk%3D","line":73,"updated":"2013-09-03 16:09:00.000000000","message":"can \u0027target\u0027 be aligned with \u0027attribute\u0027 on the line above?","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        access_id \u003d signature_info[\u0027access\u0027]"},{"line_number":71,"context_line":"        if not access_id:"},{"line_number":72,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027access\u0027,"},{"line_number":73,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":74,"context_line":"        signature_algorithm \u003d signature_info[\u0027algorithm\u0027]"},{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiSU%3D","line":73,"in_reply_to":"AAAASn%2F%2FjQk%3D","updated":"2013-09-03 18:51:03.000000000","message":"it is actually aligned in the code. Not sure why it is not aligned in gerrit.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        signature_algorithm \u003d signature_info[\u0027algorithm\u0027]"},{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"},{"line_number":77,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027signature or algorithm\u0027,"},{"line_number":78,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":79,"context_line":"        data_to_sign \u003d signature_info[\u0027data_to_sign\u0027]"},{"line_number":80,"context_line":"        if not data_to_sign:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjQI%3D","line":77,"updated":"2013-09-03 16:09:00.000000000","message":"It might be nice to have a little more information about what is failing here and fail loud if we can.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"5aa9c1d6c85e9ab882d6b5618a4fb31816ed81bf","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        signature_algorithm \u003d signature_info[\u0027algorithm\u0027]"},{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"},{"line_number":77,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027signature or algorithm\u0027,"},{"line_number":78,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":79,"context_line":"        data_to_sign \u003d signature_info[\u0027data_to_sign\u0027]"},{"line_number":80,"context_line":"        if not data_to_sign:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2Fh38%3D","line":77,"in_reply_to":"AAAASn%2F%2FiQk%3D","updated":"2013-09-03 19:29:15.000000000","message":"i have split this check in the updated patch to check for the required params in the signature auth payload.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        signature_algorithm \u003d signature_info[\u0027algorithm\u0027]"},{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"},{"line_number":77,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027signature or algorithm\u0027,"},{"line_number":78,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":79,"context_line":"        data_to_sign \u003d signature_info[\u0027data_to_sign\u0027]"},{"line_number":80,"context_line":"        if not data_to_sign:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiQk%3D","line":77,"in_reply_to":"AAAASn%2F%2FjQI%3D","updated":"2013-09-03 18:51:03.000000000","message":"Basically here i raise a validation error if the signature or signature algorithm is missing in the auth_paylod. Please suggest me how do you want to change this?","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"},{"line_number":77,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027signature or algorithm\u0027,"},{"line_number":78,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":79,"context_line":"        data_to_sign \u003d signature_info[\u0027data_to_sign\u0027]"},{"line_number":80,"context_line":"        if not data_to_sign:"},{"line_number":81,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027data_to_sign\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjQc%3D","line":78,"updated":"2013-09-03 16:09:00.000000000","message":"Same comment here","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        signature \u003d signature_info[\u0027signature\u0027]"},{"line_number":76,"context_line":"        if not signature or not signature_algorithm:"},{"line_number":77,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027signature or algorithm\u0027,"},{"line_number":78,"context_line":"                                            target\u003d\u0027signature\u0027)"},{"line_number":79,"context_line":"        data_to_sign \u003d signature_info[\u0027data_to_sign\u0027]"},{"line_number":80,"context_line":"        if not data_to_sign:"},{"line_number":81,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027data_to_sign\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiQE%3D","line":78,"in_reply_to":"AAAASn%2F%2FjQc%3D","updated":"2013-09-03 18:51:03.000000000","message":"it is actually aligned in the code. Not sure why it is not aligned in gerrit.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return cred_ref, signature, signature_algorithm, data_to_sign"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_utf8_value(self, value):"},{"line_number":88,"context_line":"        \"\"\"Get the UTF8-encoded version of a value.\"\"\""},{"line_number":89,"context_line":"        if not isinstance(value, str) and not isinstance(value, unicode):"},{"line_number":90,"context_line":"            value \u003d str(value)"},{"line_number":91,"context_line":"        if isinstance(value, unicode):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjOw%3D","line":88,"updated":"2013-09-03 16:09:00.000000000","message":"(NIT): docstrings here too?","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return cred_ref, signature, signature_algorithm, data_to_sign"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_utf8_value(self, value):"},{"line_number":88,"context_line":"        \"\"\"Get the UTF8-encoded version of a value.\"\"\""},{"line_number":89,"context_line":"        if not isinstance(value, str) and not isinstance(value, unicode):"},{"line_number":90,"context_line":"            value \u003d str(value)"},{"line_number":91,"context_line":"        if isinstance(value, unicode):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiOo%3D","line":88,"in_reply_to":"AAAASn%2F%2FjOw%3D","updated":"2013-09-03 18:51:03.000000000","message":"do you mean remove the doc-strings here?","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        domain_id \u003d domain_info.get(\u0027id\u0027)"},{"line_number":98,"context_line":"        domain_name \u003d domain_info.get(\u0027name\u0027)"},{"line_number":99,"context_line":"        domain_ref \u003d None"},{"line_number":100,"context_line":"        if not domain_id and not domain_name:"},{"line_number":101,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":102,"context_line":"                                            target\u003d\u0027domain\u0027)"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjOo%3D","line":100,"updated":"2013-09-03 16:09:00.000000000","message":"Can this be broken up so that we know what is failing explicitly?","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        domain_id \u003d domain_info.get(\u0027id\u0027)"},{"line_number":98,"context_line":"        domain_name \u003d domain_info.get(\u0027name\u0027)"},{"line_number":99,"context_line":"        domain_ref \u003d None"},{"line_number":100,"context_line":"        if not domain_id and not domain_name:"},{"line_number":101,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":102,"context_line":"                                            target\u003d\u0027domain\u0027)"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiGw%3D","line":100,"in_reply_to":"AAAASn%2F%2FjOo%3D","updated":"2013-09-03 18:51:03.000000000","message":"If the payload is missing domain id or name we will not be able to lookup the domain information. From my understanding we are doing the correct check here. So we dont need to make changes.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        domain_ref \u003d None"},{"line_number":100,"context_line":"        if not domain_id and not domain_name:"},{"line_number":101,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":102,"context_line":"                                            target\u003d\u0027domain\u0027)"},{"line_number":103,"context_line":"        try:"},{"line_number":104,"context_line":"            if domain_name:"},{"line_number":105,"context_line":"                domain_ref \u003d self.identity_api.get_domain_by_name(domain_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjOc%3D","line":102,"updated":"2013-09-03 16:09:00.000000000","message":"align the first letter of \u0027target\u0027 with the first letter of \u0027attribute\u0027 on line 101 if possible.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        domain_ref \u003d None"},{"line_number":100,"context_line":"        if not domain_id and not domain_name:"},{"line_number":101,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":102,"context_line":"                                            target\u003d\u0027domain\u0027)"},{"line_number":103,"context_line":"        try:"},{"line_number":104,"context_line":"            if domain_name:"},{"line_number":105,"context_line":"                domain_ref \u003d self.identity_api.get_domain_by_name(domain_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiPg%3D","line":102,"in_reply_to":"AAAASn%2F%2FjOc%3D","updated":"2013-09-03 18:51:03.000000000","message":"it is actually aligned in the code. Not sure why it is not aligned in gerrit.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        project_id \u003d project_info.get(\u0027id\u0027)"},{"line_number":116,"context_line":"        project_name \u003d project_info.get(\u0027name\u0027)"},{"line_number":117,"context_line":"        project_ref \u003d None"},{"line_number":118,"context_line":"        if not project_id and not project_name:"},{"line_number":119,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":120,"context_line":"                                            target\u003d\u0027project\u0027)"},{"line_number":121,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjNs%3D","line":118,"updated":"2013-09-03 16:09:00.000000000","message":"Same comment as above","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        project_id \u003d project_info.get(\u0027id\u0027)"},{"line_number":116,"context_line":"        project_name \u003d project_info.get(\u0027name\u0027)"},{"line_number":117,"context_line":"        project_ref \u003d None"},{"line_number":118,"context_line":"        if not project_id and not project_name:"},{"line_number":119,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":120,"context_line":"                                            target\u003d\u0027project\u0027)"},{"line_number":121,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiHE%3D","line":118,"in_reply_to":"AAAASn%2F%2FjNs%3D","updated":"2013-09-03 18:51:03.000000000","message":"if the project id or project_name is missing in auth payload  we will not be able to lookup for the project information. From my understanding we are doing the correct check here. So we dont need to make changes.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        project_ref \u003d None"},{"line_number":118,"context_line":"        if not project_id and not project_name:"},{"line_number":119,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":120,"context_line":"                                            target\u003d\u0027project\u0027)"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            if project_name:"},{"line_number":123,"context_line":"                if \u0027domain\u0027 not in project_info:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjN8%3D","line":120,"updated":"2013-09-03 16:09:00.000000000","message":"Same comment here","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        project_ref \u003d None"},{"line_number":118,"context_line":"        if not project_id and not project_name:"},{"line_number":119,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027id or name\u0027,"},{"line_number":120,"context_line":"                                            target\u003d\u0027project\u0027)"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            if project_name:"},{"line_number":123,"context_line":"                if \u0027domain\u0027 not in project_info:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiPM%3D","line":120,"in_reply_to":"AAAASn%2F%2FjN8%3D","updated":"2013-09-03 18:51:03.000000000","message":"it is actually aligned in the code. Not sure why it is not aligned in gerrit.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"177c378b98e084aff611446e500b8da633a55251","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            if project_name:"},{"line_number":123,"context_line":"                if \u0027domain\u0027 not in project_info:"},{"line_number":124,"context_line":"                    raise exception.ValidationError(attribute\u003d\u0027domain\u0027,"},{"line_number":125,"context_line":"                                                    target\u003d\u0027project\u0027)"},{"line_number":126,"context_line":"                domain_ref \u003d self.lookup_domain(project_info[\u0027domain\u0027])"},{"line_number":127,"context_line":"                project_ref \u003d self.identity_api.get_project_by_name("},{"line_number":128,"context_line":"                    project_name, domain_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FjNg%3D","line":125,"updated":"2013-09-03 16:09:00.000000000","message":"Same comment here as comment on line 102","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fde46be6199387fa3e58bec7f75c570151cce8d4","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            if project_name:"},{"line_number":123,"context_line":"                if \u0027domain\u0027 not in project_info:"},{"line_number":124,"context_line":"                    raise exception.ValidationError(attribute\u003d\u0027domain\u0027,"},{"line_number":125,"context_line":"                                                    target\u003d\u0027project\u0027)"},{"line_number":126,"context_line":"                domain_ref \u003d self.lookup_domain(project_info[\u0027domain\u0027])"},{"line_number":127,"context_line":"                project_ref \u003d self.identity_api.get_project_by_name("},{"line_number":128,"context_line":"                    project_name, domain_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FhD0%3D","line":125,"in_reply_to":"AAAASn%2F%2FiPE%3D","updated":"2013-09-03 21:34:29.000000000","message":"Ok, thanks for clarifying!","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0d6202c0bac6a6596b1b40d153e4ba42a2419d8a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            if project_name:"},{"line_number":123,"context_line":"                if \u0027domain\u0027 not in project_info:"},{"line_number":124,"context_line":"                    raise exception.ValidationError(attribute\u003d\u0027domain\u0027,"},{"line_number":125,"context_line":"                                                    target\u003d\u0027project\u0027)"},{"line_number":126,"context_line":"                domain_ref \u003d self.lookup_domain(project_info[\u0027domain\u0027])"},{"line_number":127,"context_line":"                project_ref \u003d self.identity_api.get_project_by_name("},{"line_number":128,"context_line":"                    project_name, domain_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAASn%2F%2FiPE%3D","line":125,"in_reply_to":"AAAASn%2F%2FjNg%3D","updated":"2013-09-03 18:51:03.000000000","message":"it is actually aligned in the code. Not sure why it is not aligned in gerrit.","commit_id":"56d2525842c4a78794e9280bc3905d989ea69a3d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"aac813268c59e5c779244b4ed062be0d9910b0a1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def assert_project_is_enabled(self, project_ref):"},{"line_number":36,"context_line":"    # ensure the project is enabled"},{"line_number":37,"context_line":"        if not project_ref.get(\u0027enabled\u0027, True):"},{"line_number":38,"context_line":"            msg \u003d _(\u0027Project is disabled: %s\u0027) % project_ref[\u0027id\u0027]"},{"line_number":39,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2FgYs%3D","line":36,"updated":"2013-09-04 00:16:15.000000000","message":"line up the comment with the code","commit_id":"d9867d00fec61c3b7685ac95faf6ad2ee60bc028"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"aac813268c59e5c779244b4ed062be0d9910b0a1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if not creds:"},{"line_number":58,"context_line":"            msg \u003d _(\u0027Credential access key %s not found.\u0027) % access_id"},{"line_number":59,"context_line":"            raise exception.Unauthorized(message\u003dmsg)"},{"line_number":60,"context_line":"        if project_id is not None and ("},{"line_number":61,"context_line":"                creds.get(\u0027project_id\u0027) !\u003d project_id):"},{"line_number":62,"context_line":"            msg \u003d _(\u0027Credential project id does not match request \u0027"},{"line_number":63,"context_line":"                    \u0027project id %s.\u0027) % project_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2FgYw%3D","line":60,"updated":"2013-09-04 00:16:15.000000000","message":"project_id for creds is optional. If absent, it is implicitly scoped to all projects.\n\nif (project_id is not None and\n    creds.get(\u0027project_id\u0027) and\n    project_id !\u003d creds[\u0027project_id\u0027]):","commit_id":"d9867d00fec61c3b7685ac95faf6ad2ee60bc028"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e058b1f3511243ac814d0d7d4ee0b6cd64a0d8ff","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                        {\u0027credential_id\u0027: credential_id,"},{"line_number":53,"context_line":"                         \u0027scoped_project_id\u0027: creds[\u0027project_id\u0027],"},{"line_number":54,"context_line":"                         \u0027request_project_id\u0027: project_id})"},{"line_number":55,"context_line":"            raise exception.Unauthorized(message\u003dmsg)"},{"line_number":56,"context_line":"        return creds"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def get_utf8_value(self, value):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BJI4%3D","line":55,"updated":"2014-01-29 19:27:29.000000000","message":"In authz point of view, we should not provide detailed error message to client.\nMay be OK to log.\nm2c","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"be19952fc2b4d00330474a02594f284405932656","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                        {\u0027credential_id\u0027: credential_id,"},{"line_number":53,"context_line":"                         \u0027scoped_project_id\u0027: creds[\u0027project_id\u0027],"},{"line_number":54,"context_line":"                         \u0027request_project_id\u0027: project_id})"},{"line_number":55,"context_line":"            raise exception.Unauthorized(message\u003dmsg)"},{"line_number":56,"context_line":"        return creds"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def get_utf8_value(self, value):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BI6Q%3D","line":55,"in_reply_to":"AAAAUH%2F%2BJI4%3D","updated":"2014-01-29 19:33:45.000000000","message":"Arvind - the keystone server doesn\u0027t return the message to the client unless debug\u003dTrue is configured. See http://git.openstack.org/cgit/openstack/keystone/tree/keystone/exception.py#n121","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e058b1f3511243ac814d0d7d4ee0b6cd64a0d8ff","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            raise exception.Unauthorized(e)"},{"line_number":140,"context_line":"        self.assert_domain_is_enabled(domain_ref)"},{"line_number":141,"context_line":"        self.assert_user_is_enabled(user_ref)"},{"line_number":142,"context_line":"        return user_ref, domain_ref"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BJBc%3D","line":142,"updated":"2014-01-29 19:27:29.000000000","message":"Why duplication of lookup method, can\u0027t we use them from keystone/auth/controllers.py?\n\nWe may need to enhance them.\n\nThoughts?","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"}],"keystone/auth/controllers.py":[{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e058b1f3511243ac814d0d7d4ee0b6cd64a0d8ff","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                self.auth[\u0027scope\u0027][\u0027OS-TRUST:trust\u0027])"},{"line_number":194,"context_line":"            # TODO(ayoung): when trusts support domains, fill in domain data"},{"line_number":195,"context_line":"            if \u0027project_id\u0027 in trust_ref:"},{"line_number":196,"context_line":"                project_ref \u003d self.auth_utils.lookup_project("},{"line_number":197,"context_line":"                    {\u0027id\u0027: trust_ref[\u0027project_id\u0027]})"},{"line_number":198,"context_line":"                self._scope_data \u003d (None, project_ref[\u0027id\u0027], trust_ref)"},{"line_number":199,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BJAs%3D","line":196,"updated":"2014-01-29 19:27:29.000000000","message":"You are not using private methods, better to remove them from code.\n\nI think we need to clean or reuse then .","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"}],"keystone/auth/plugins/signature.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e35127d8b95af304e4f971221529a786dc97424","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2F08g%3D","line":3,"updated":"2013-08-29 03:55:16.000000000","message":"(NIT): Copyright is wrong.  Suggest removing this line all together.\n\nFor more details see: https://wiki.openstack.org/wiki/LegalIssuesFAQ#Copyright_Headers","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d17cc4ee8ba28b8da1e88076860b01002ae0f9b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FyDw%3D","line":3,"in_reply_to":"AAAASn%2F%2F08g%3D","updated":"2013-08-29 16:58:50.000000000","message":"I wonder if we can ask Jenkins to keep an eye on this kind of stuff.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsFM%3D","line":3,"in_reply_to":"AAAASn%2F%2F08g%3D","updated":"2013-08-30 20:52:09.000000000","message":"ok","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsFE%3D","line":3,"in_reply_to":"AAAASn%2F%2FyDw%3D","updated":"2013-08-30 20:52:09.000000000","message":"gyee: Thats a good suggestion, for jenkins to catch the errors on copyright.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"306aa4a5602757c2c165c494e7714772b576a860","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone import identity"},{"line_number":22,"context_line":"from keystone import policy"},{"line_number":23,"context_line":"from keystone import token"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystone.auth import auth_utils"},{"line_number":26,"context_line":"from keystone.common import controller"},{"line_number":27,"context_line":"from keystone.common import utils"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fg%2BI%3D","line":24,"updated":"2013-09-03 21:50:39.000000000","message":"nit, get rid of blank line, you\u0027ll have to re-order the imports likely, too.","commit_id":"6257d7d5b10d333da58e31932802a63ff1415ff5"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0f06e3233c87d2a76e0532b2d92d7f7a706e6595","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone import identity"},{"line_number":22,"context_line":"from keystone import policy"},{"line_number":23,"context_line":"from keystone import token"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystone.auth import auth_utils"},{"line_number":26,"context_line":"from keystone.common import controller"},{"line_number":27,"context_line":"from keystone.common import utils"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FgeI%3D","line":24,"in_reply_to":"AAAASn%2F%2Fg%2BI%3D","updated":"2013-09-03 23:46:38.000000000","message":"Ok.","commit_id":"6257d7d5b10d333da58e31932802a63ff1415ff5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"306aa4a5602757c2c165c494e7714772b576a860","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            sig_info.secret), self.auth_utils.get_utf8_value("},{"line_number":70,"context_line":"                sig_info.data_to_sign))"},{"line_number":71,"context_line":"        if not utils.auth_str_equal(sig_info.signature, signature):"},{"line_number":72,"context_line":"            raise exception.Unauthorized(message\u003d\u0027Invalid EC2 signature\u0027)"},{"line_number":73,"context_line":"        if \u0027user_id\u0027 not in user_context:"},{"line_number":74,"context_line":"            user_context[\u0027user_id\u0027] \u003d sig_info.user_id"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fg9U%3D","line":72,"updated":"2013-09-03 21:50:39.000000000","message":"message should be wrapped in _()","commit_id":"6257d7d5b10d333da58e31932802a63ff1415ff5"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"0f06e3233c87d2a76e0532b2d92d7f7a706e6595","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            sig_info.secret), self.auth_utils.get_utf8_value("},{"line_number":70,"context_line":"                sig_info.data_to_sign))"},{"line_number":71,"context_line":"        if not utils.auth_str_equal(sig_info.signature, signature):"},{"line_number":72,"context_line":"            raise exception.Unauthorized(message\u003d\u0027Invalid EC2 signature\u0027)"},{"line_number":73,"context_line":"        if \u0027user_id\u0027 not in user_context:"},{"line_number":74,"context_line":"            user_context[\u0027user_id\u0027] \u003d sig_info.user_id"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FgeE%3D","line":72,"in_reply_to":"AAAASn%2F%2Fg9U%3D","updated":"2013-09-03 23:46:38.000000000","message":"Ok.","commit_id":"6257d7d5b10d333da58e31932802a63ff1415ff5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"aac813268c59e5c779244b4ed062be0d9910b0a1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            sig_info.secret), self.auth_utils.get_utf8_value("},{"line_number":69,"context_line":"                sig_info.data_to_sign))"},{"line_number":70,"context_line":"        if not utils.auth_str_equal(sig_info.signature, signature):"},{"line_number":71,"context_line":"            msg \u003d _(\u0027Invalid EC2 signature\u0027)"},{"line_number":72,"context_line":"            raise exception.Unauthorized(message\u003dmsg)"},{"line_number":73,"context_line":"        if \u0027user_id\u0027 not in user_context:"},{"line_number":74,"context_line":"            user_context[\u0027user_id\u0027] \u003d sig_info.user_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAASn%2F%2FgYI%3D","line":71,"updated":"2013-09-04 00:16:15.000000000","message":"Invalid signature. Remove EC2 as this is generic signature auth.","commit_id":"d9867d00fec61c3b7685ac95faf6ad2ee60bc028"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e058b1f3511243ac814d0d7d4ee0b6cd64a0d8ff","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027identity_api\u0027)"},{"line_number":35,"context_line":"class SignatureAuthInfo(object):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BI%2Fw%3D","line":32,"updated":"2014-01-29 19:27:29.000000000","message":"Some comment about this code will be helpful","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e058b1f3511243ac814d0d7d4ee0b6cd64a0d8ff","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            params \u003d {"},{"line_number":85,"context_line":"                \u0027cred_type\u0027: cred_ref[\u0027type\u0027],"},{"line_number":86,"context_line":"                \u0027cred_type_allowed\u0027: CONF.signature.credential_type"},{"line_number":87,"context_line":"            }"},{"line_number":88,"context_line":"            msg \u003d msg % params"},{"line_number":89,"context_line":"            raise exception.Unauthorized(message\u003dmsg)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BI%2B4%3D","line":87,"updated":"2014-01-29 19:27:29.000000000","message":"In authz point of view, we should not provide detailed error message to client. May be OK to log. m2c","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e058b1f3511243ac814d0d7d4ee0b6cd64a0d8ff","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            params \u003d {"},{"line_number":105,"context_line":"                \u0027algorithm\u0027: self.algorithm,"},{"line_number":106,"context_line":"                \u0027supported_algorithms\u0027: CONF.signature.supported_algorithms"},{"line_number":107,"context_line":"            }"},{"line_number":108,"context_line":"            msg \u003d msg % params"},{"line_number":109,"context_line":"            raise exception.Unauthorized(message\u003dmsg)"},{"line_number":110,"context_line":"        self.signature \u003d auth_payload[\u0027signature\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BI%2Bw%3D","line":107,"updated":"2014-01-29 19:27:29.000000000","message":"In authz point of view, we should not provide detailed error message to client. May be OK to log. m2c","commit_id":"ac937893f861b2bb718ffa40404a68467473edbf"}],"keystone/auth/utils.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e35127d8b95af304e4f971221529a786dc97424","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2F08o%3D","line":3,"updated":"2013-08-29 03:55:16.000000000","message":"(NIT): Copyright is wrong.  Suggest removing this line all together.\n\nFor more details see: https://wiki.openstack.org/wiki/LegalIssuesFAQ#Copyright_Headers","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsFY%3D","line":3,"in_reply_to":"AAAASn%2F%2F08o%3D","updated":"2013-08-30 20:52:09.000000000","message":"ok","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e35127d8b95af304e4f971221529a786dc97424","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _get_trust_api():"},{"line_number":37,"context_line":"    return trust.Manager()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def assert_project_is_enabled(project_ref):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2F08k%3D","line":37,"updated":"2013-08-29 03:55:16.000000000","message":"This seems sub-optimal, instantiating a new manager object each time.\n\nRecommend the auth_util functions should turn into a mixin/inherited class that the plugins can inherit from. \n\nAlternatively, an object that uses the @depedancy.requires decorator could be instantiated in the auth plugin and referenced there.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"692a80f6be6f7d1791a0ccac3dbb775ce2a7e508","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _get_trust_api():"},{"line_number":37,"context_line":"    return trust.Manager()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def assert_project_is_enabled(project_ref):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2Fwhw%3D","line":37,"in_reply_to":"AAAASn%2F%2F08k%3D","updated":"2013-08-29 23:12:25.000000000","message":"Hi Morgan.the util function is not holding any state and is only a set of utilities. So i thought it would be better to define as static method at module level.\nI am still trying to understand why you would recommend to make it a class type.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _get_trust_api():"},{"line_number":37,"context_line":"    return trust.Manager()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def assert_project_is_enabled(project_ref):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsGM%3D","line":37,"in_reply_to":"AAAASn%2F%2Fwhw%3D","updated":"2013-08-30 20:52:09.000000000","message":"Morgan,\n\nI changed the code as discussed in the IRC chat in the new patch.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e35127d8b95af304e4f971221529a786dc97424","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    if not creds:"},{"line_number":66,"context_line":"        raise exception.Unauthorized(message\u003d\u0027Credential \u0027"},{"line_number":67,"context_line":"                                             \u0027access key %s not \u0027"},{"line_number":68,"context_line":"                                             \u0027found.\u0027 % access_id)"},{"line_number":69,"context_line":"    if project_id is not None and ("},{"line_number":70,"context_line":"            creds.get(\u0027project_id\u0027) !\u003d project_id):"},{"line_number":71,"context_line":"        raise exception.Unauthorized(message\u003d\u0027Credential \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2F07M%3D","line":68,"updated":"2013-08-29 03:55:16.000000000","message":"String needs to be wrapped in _() for translations.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    if not creds:"},{"line_number":66,"context_line":"        raise exception.Unauthorized(message\u003d\u0027Credential \u0027"},{"line_number":67,"context_line":"                                             \u0027access key %s not \u0027"},{"line_number":68,"context_line":"                                             \u0027found.\u0027 % access_id)"},{"line_number":69,"context_line":"    if project_id is not None and ("},{"line_number":70,"context_line":"            creds.get(\u0027project_id\u0027) !\u003d project_id):"},{"line_number":71,"context_line":"        raise exception.Unauthorized(message\u003d\u0027Credential \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsGE%3D","line":68,"in_reply_to":"AAAASn%2F%2F07M%3D","updated":"2013-08-30 20:52:09.000000000","message":"ok","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e35127d8b95af304e4f971221529a786dc97424","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        raise exception.Unauthorized(message\u003d\u0027Credential \u0027"},{"line_number":72,"context_line":"                                             \u0027project id does not \u0027"},{"line_number":73,"context_line":"                                             \u0027match request project id \u0027"},{"line_number":74,"context_line":"                                             \u0027%s.\u0027 % project_id)"},{"line_number":75,"context_line":"    return creds"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2F07I%3D","line":74,"updated":"2013-08-29 03:55:16.000000000","message":"String needs to be wrapped in _() for translations.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        raise exception.Unauthorized(message\u003d\u0027Credential \u0027"},{"line_number":72,"context_line":"                                             \u0027project id does not \u0027"},{"line_number":73,"context_line":"                                             \u0027match request project id \u0027"},{"line_number":74,"context_line":"                                             \u0027%s.\u0027 % project_id)"},{"line_number":75,"context_line":"    return creds"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsGA%3D","line":74,"in_reply_to":"AAAASn%2F%2F07I%3D","updated":"2013-08-30 20:52:09.000000000","message":"ok","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"37e20db9cb69b803b0431d79cfd22958592f4de1","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    return trust"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def lookup_user(user_info):"},{"line_number":162,"context_line":"    user_id \u003d user_info.get(\u0027id\u0027)"},{"line_number":163,"context_line":"    user_name \u003d user_info.get(\u0027name\u0027)"},{"line_number":164,"context_line":"    user_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2F2F4%3D","line":161,"updated":"2013-08-28 21:27:24.000000000","message":"This function is untested.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"},{"author":{"_account_id":5971,"name":"nachiappan-veerappan-nachiappan","email":"nachiappan_vrn@yahoo.com","username":"nachiappan-veerappan-nachiappan"},"change_message_id":"7af4ef10382408088f70328fbda73eecd3951100","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    return trust"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def lookup_user(user_info):"},{"line_number":162,"context_line":"    user_id \u003d user_info.get(\u0027id\u0027)"},{"line_number":163,"context_line":"    user_name \u003d user_info.get(\u0027name\u0027)"},{"line_number":164,"context_line":"    user_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAASn%2F%2FsFg%3D","line":161,"in_reply_to":"AAAASn%2F%2F2F4%3D","updated":"2013-08-30 20:52:09.000000000","message":"Good catch. I have refactored the password plugin to use this API. The functional test written for password should cover this API.","commit_id":"7aa3b4d70347a716c69d250fda7444b4ab9c17bf"}]}
