)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"29481fad24c54d117472ac593e95c9bbaf49e20b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"what happened."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id5de16d446cf4fdacfefdad0523e84821e4fd72c"},{"line_number":13,"context_line":"Closes-Bug: 1625120"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a8bc5a2_7a47901d","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":19},"updated":"2016-09-27 21:55:05.000000000","message":"is this going to be the final patch or the other one? (so you can properly use Related-Bug and Closes-Bug)","commit_id":"623e3a57d3ac16e24d6ca8a6b7fe3e683a4aea36"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"48fcaff0bdaf0cf4fd4b0fff7911fd8a06d7faf5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"what happened."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Id5de16d446cf4fdacfefdad0523e84821e4fd72c"},{"line_number":13,"context_line":"Closes-Bug: 1625120"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a98d1f4_d7dda615","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":19},"in_reply_to":"5a8bc5a2_7a47901d","updated":"2016-09-29 12:06:38.000000000","message":"Done","commit_id":"623e3a57d3ac16e24d6ca8a6b7fe3e683a4aea36"}],"keystone/auth/plugins/token.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        if token_ref.oauth_scoped or token_ref.trust_scoped:"},{"line_number":65,"context_line":"            raise exception.ForbiddenAction("},{"line_number":66,"context_line":"                action\u003d_(\u0027rescope a delegated token\u0027))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if not CONF.token.allow_rescope_scoped_token:"},{"line_number":69,"context_line":"            # Do not allow conversion from scoped tokens."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_e773f713","line":66,"range":{"start_line":66,"start_character":26,"end_line":66,"end_character":51},"updated":"2016-09-19 20:49:01.000000000","message":"\"Using a trust or OAuth token to create another token is not allowed. Create a new trust or OAuth token instead.\"","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        if token_ref.oauth_scoped or token_ref.trust_scoped:"},{"line_number":65,"context_line":"            raise exception.ForbiddenAction("},{"line_number":66,"context_line":"                action\u003d_(\u0027rescope a delegated token\u0027))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if not CONF.token.allow_rescope_scoped_token:"},{"line_number":69,"context_line":"            # Do not allow conversion from scoped tokens."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_21b90f7a","line":66,"range":{"start_line":66,"start_character":26,"end_line":66,"end_character":51},"in_reply_to":"7a8ec9b2_e773f713","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9f5052c659af1464eea9a016aac840546454387a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # privilege attacks"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        if token_ref.oauth_scoped or token_ref.trust_scoped:"},{"line_number":65,"context_line":"            value \u003d _(\u0027Using a trust or OAuth token to create another token is\u0027"},{"line_number":66,"context_line":"                      \u0027 not allowed. Create a new trust or OAuth token instead\u0027"},{"line_number":67,"context_line":"                      )"},{"line_number":68,"context_line":"            raise exception.ForbiddenAction(action\u003dvalue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_bde7ffe2","line":65,"range":{"start_line":65,"start_character":12,"end_line":65,"end_character":17},"updated":"2016-09-20 21:00:28.000000000","message":"nit, call this variable \"msg\"","commit_id":"fc8c5519a145dc85409dc94ada1806ff17524703"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            # Do not allow conversion from scoped tokens."},{"line_number":72,"context_line":"            if token_ref.project_scoped or token_ref.domain_scoped:"},{"line_number":73,"context_line":"                raise exception.ForbiddenAction("},{"line_number":74,"context_line":"                    action\u003d_(\"rescope a scoped token\"))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        wsgi.validate_token_bind(request.context_dict, token_ref)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_e88a271a","line":74,"updated":"2016-10-03 17:41:00.000000000","message":"We could take an opportunity here to use either single or double quotes consistently. That way lines 65-66 and line 74 follow the same convention for the message string.","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"53414fe575fa0ff4216c4f729372f73d6282908c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            # Do not allow conversion from scoped tokens."},{"line_number":72,"context_line":"            if token_ref.project_scoped or token_ref.domain_scoped:"},{"line_number":73,"context_line":"                raise exception.ForbiddenAction("},{"line_number":74,"context_line":"                    action\u003d_(\"rescope a scoped token\"))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        wsgi.validate_token_bind(request.context_dict, token_ref)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_5900c201","line":74,"in_reply_to":"3a98d1f4_e88a271a","updated":"2016-10-06 12:58:57.000000000","message":"Done","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        if token_ref.oauth_scoped or token_ref.trust_scoped:"},{"line_number":65,"context_line":"            msg \u003d _(\u0027Using a trust or OAuth token to create another token is\u0027"},{"line_number":66,"context_line":"                    \u0027 not allowed. Create a new trust or OAuth token instead\u0027"},{"line_number":67,"context_line":"                    )"},{"line_number":68,"context_line":"            raise exception.ForbiddenAction(action\u003dmsg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if not CONF.token.allow_rescope_scoped_token:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_65d4f11f","line":67,"updated":"2016-10-06 14:12:43.000000000","message":"We could add to this even further to clarify things for the end user: \n\n  if token_ref.oauth_scoped or token_ref.trust_scoped:\n      if token_ref.oauth_scoped:\n          scope \u003d \u0027OAuth-scoped token\u0027\n      else:\n          scope \u003d \u0027trust-scoped token\u0027\n      msg \u003d _(\u0027Using a %{scope}s to create another token is\u0027\n              \u0027 not allowed. Create a new %{scope}s instead\u0027 % {scope\u003dscope})","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        if token_ref.oauth_scoped or token_ref.trust_scoped:"},{"line_number":65,"context_line":"            msg \u003d _(\u0027Using a trust or OAuth token to create another token is\u0027"},{"line_number":66,"context_line":"                    \u0027 not allowed. Create a new trust or OAuth token instead\u0027"},{"line_number":67,"context_line":"                    )"},{"line_number":68,"context_line":"            raise exception.ForbiddenAction(action\u003dmsg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if not CONF.token.allow_rescope_scoped_token:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_32f9484e","line":67,"in_reply_to":"1a95cdbc_65d4f11f","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a839b47b0313a4202316559a6ce8ef87d31d42aa","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            raise exception.ForbiddenAction("},{"line_number":66,"context_line":"                action\u003d_("},{"line_number":67,"context_line":"                    \u0027Using OAuth-scoped token to create another token is \u0027"},{"line_number":68,"context_line":"                    \u0027not allowed. Create a new OAuth-scoped token instead\u0027))"},{"line_number":69,"context_line":"        elif token_ref.trust_scoped:"},{"line_number":70,"context_line":"            raise exception.ForbiddenAction("},{"line_number":71,"context_line":"                action\u003d_("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_2b03cc0e","line":68,"range":{"start_line":68,"start_character":21,"end_line":68,"end_character":32},"updated":"2016-11-08 15:15:08.000000000","message":"the message already says that you\u0027re not authorized to do the action, so no need to put \"not allowed\" on all these.","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            raise exception.ForbiddenAction("},{"line_number":66,"context_line":"                action\u003d_("},{"line_number":67,"context_line":"                    \u0027Using OAuth-scoped token to create another token is \u0027"},{"line_number":68,"context_line":"                    \u0027not allowed. Create a new OAuth-scoped token instead\u0027))"},{"line_number":69,"context_line":"        elif token_ref.trust_scoped:"},{"line_number":70,"context_line":"            raise exception.ForbiddenAction("},{"line_number":71,"context_line":"                action\u003d_("}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_71297d9a","line":68,"range":{"start_line":68,"start_character":21,"end_line":68,"end_character":32},"in_reply_to":"9a629dbe_2b03cc0e","updated":"2016-11-21 02:13:17.000000000","message":"Done","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            raise exception.ForbiddenAction("},{"line_number":71,"context_line":"                action\u003d_("},{"line_number":72,"context_line":"                    \u0027Using trust-scoped token to create another token is \u0027"},{"line_number":73,"context_line":"                    \u0027not allowed. Create a new trust-scoped token instead\u0027))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if not CONF.token.allow_rescope_scoped_token:"},{"line_number":76,"context_line":"            # Do not allow conversion from scoped tokens."}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_b11dd574","line":73,"range":{"start_line":73,"start_character":21,"end_line":73,"end_character":32},"updated":"2016-11-21 02:13:17.000000000","message":"removed it here too","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"}],"keystone/common/controller.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4fa0b320fe067236135bb60e527ed1d455b21ef5","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        elif token_ref.project_scoped:"},{"line_number":715,"context_line":"            return token_ref.project_domain_id"},{"line_number":716,"context_line":"        else:"},{"line_number":717,"context_line":"            msg \u003d \u0027No domain information specified as part of list request\u0027"},{"line_number":718,"context_line":"            LOG.warning(_LW(msg))"},{"line_number":719,"context_line":"            raise exception.Unauthorized(_(msg))"},{"line_number":720,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_b6c68747","line":717,"updated":"2016-09-19 18:38:59.000000000","message":"This should really use _(). There is no reason for this string to be translated twice.","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        elif token_ref.project_scoped:"},{"line_number":715,"context_line":"            return token_ref.project_domain_id"},{"line_number":716,"context_line":"        else:"},{"line_number":717,"context_line":"            msg \u003d \u0027No domain information specified as part of list request\u0027"},{"line_number":718,"context_line":"            LOG.warning(_LW(msg))"},{"line_number":719,"context_line":"            raise exception.Unauthorized(_(msg))"},{"line_number":720,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_846cb19d","line":717,"in_reply_to":"7a8ec9b2_b6c68747","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":713,"context_line":"            return token_ref.project_domain_id"},{"line_number":714,"context_line":"        else:"},{"line_number":715,"context_line":"            msg \u003d _(\u0027No domain information specified as part of list request\u0027)"},{"line_number":716,"context_line":"            LOG.warning(msg)"},{"line_number":717,"context_line":"            raise exception.Unauthorized(msg)"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"    def _get_domain_id_from_token(self, request):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_6505d178","line":716,"updated":"2016-10-06 14:12:43.000000000","message":"This should be: \n\n  LOG.warning(_LW(msg))\n\nto be consistent with how it was logged in the past.","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":713,"context_line":"            return token_ref.project_domain_id"},{"line_number":714,"context_line":"        else:"},{"line_number":715,"context_line":"            msg \u003d _(\u0027No domain information specified as part of list request\u0027)"},{"line_number":716,"context_line":"            LOG.warning(msg)"},{"line_number":717,"context_line":"            raise exception.Unauthorized(msg)"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"    def _get_domain_id_from_token(self, request):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_12ac4c33","line":716,"in_reply_to":"1a95cdbc_6505d178","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"}],"keystone/common/request.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                            \u0027to perform authenticated calls\u0027))"},{"line_number":87,"context_line":"            raise exception.Unauthorized("},{"line_number":88,"context_line":"                _(\u0027auth_context middleware is not in place\u0027))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_0749c38e","line":88,"range":{"start_line":88,"start_character":19,"end_line":88,"end_character":58},"updated":"2016-09-19 20:49:01.000000000","message":"why not re-use the message above?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                            \u0027to perform authenticated calls\u0027))"},{"line_number":87,"context_line":"            raise exception.Unauthorized("},{"line_number":88,"context_line":"                _(\u0027auth_context middleware is not in place\u0027))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_9a188c77","line":88,"range":{"start_line":88,"start_character":19,"end_line":88,"end_character":58},"in_reply_to":"7a8ec9b2_0749c38e","updated":"2016-09-20 18:49:11.000000000","message":"It\u0027s too long and extract a variable breaks K007 pep8 test","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9f5052c659af1464eea9a016aac840546454387a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def assert_authenticated(self):"},{"line_number":80,"context_line":"        \"\"\"Ensure that the current request has been authenticated.\"\"\""},{"line_number":81,"context_line":"        if not self.context:"},{"line_number":82,"context_line":"            LOG.warning(_LW(\u0027An authenticated call was made and there is \u0027"},{"line_number":83,"context_line":"                            \u0027no request.context. This means the \u0027"},{"line_number":84,"context_line":"                            \u0027auth_context middleware is not in place. You \u0027"},{"line_number":85,"context_line":"                            \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                            \u0027to perform authenticated calls\u0027))"},{"line_number":87,"context_line":"            raise exception.Unauthorized("},{"line_number":88,"context_line":"                _(\u0027auth_context middleware is not in place\u0027))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_7d601736","line":86,"range":{"start_line":82,"start_character":29,"end_line":86,"end_character":59},"updated":"2016-09-20 21:00:28.000000000","message":"put this in a msg variable\n\nand then call msg in the log and the exception","commit_id":"fc8c5519a145dc85409dc94ada1806ff17524703"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"69cb16940f77eea85415be3a866a167a233f9228","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def assert_authenticated(self):"},{"line_number":80,"context_line":"        \"\"\"Ensure that the current request has been authenticated.\"\"\""},{"line_number":81,"context_line":"        if not self.context:"},{"line_number":82,"context_line":"            LOG.warning(_LW(\u0027An authenticated call was made and there is \u0027"},{"line_number":83,"context_line":"                            \u0027no request.context. This means the \u0027"},{"line_number":84,"context_line":"                            \u0027auth_context middleware is not in place. You \u0027"},{"line_number":85,"context_line":"                            \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                            \u0027to perform authenticated calls\u0027))"},{"line_number":87,"context_line":"            raise exception.Unauthorized("},{"line_number":88,"context_line":"                _(\u0027auth_context middleware is not in place\u0027))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_1406eccd","line":86,"range":{"start_line":82,"start_character":29,"end_line":86,"end_character":59},"in_reply_to":"7a8ec9b2_7d601736","updated":"2016-09-21 10:40:03.000000000","message":"The hack (https://github.com/openstack/keystone/blob/master/keystone/tests/hacking/checks.py#L369-L376) will prevent this to pass pep8 gate","commit_id":"fc8c5519a145dc85409dc94ada1806ff17524703"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                            \u0027to perform authenticated calls\u0027))"},{"line_number":87,"context_line":"            raise exception.Unauthorized("},{"line_number":88,"context_line":"                _(\u0027auth_context middleware is not in place\u0027))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_88c8c356","line":88,"updated":"2016-10-03 17:41:00.000000000","message":"Why not reuse the message declared on line 82 instead of emitting a truncated version of the same message?","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"53414fe575fa0ff4216c4f729372f73d6282908c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                            \u0027to perform authenticated calls\u0027))"},{"line_number":87,"context_line":"            raise exception.Unauthorized("},{"line_number":88,"context_line":"                _(\u0027auth_context middleware is not in place\u0027))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_f90fce2b","line":88,"in_reply_to":"3a98d1f4_88c8c356","updated":"2016-10-06 12:58:57.000000000","message":"Done","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"},{"line_number":92,"context_line":"            raise exception.Unauthorized("},{"line_number":93,"context_line":"                _(\"auth_context didn\u0027t decode anything useful\"))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    auth_type \u003d environ_getter(\u0027AUTH_TYPE\u0027, None)"},{"line_number":96,"context_line":"    remote_domain \u003d environ_getter(\u0027REMOTE_DOMAIN\u0027, None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_a8481fcd","line":93,"updated":"2016-10-03 17:41:00.000000000","message":"We should use single quotes or double quotes consistently. Also, what is a user suppose to do when they get this message? This feels more like a developer\u0027s inline comment than a user-friendly message.\n\nFrom a user perspective, I\u0027m not quite sure what I should do after I read this.","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"53414fe575fa0ff4216c4f729372f73d6282908c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"},{"line_number":92,"context_line":"            raise exception.Unauthorized("},{"line_number":93,"context_line":"                _(\"auth_context didn\u0027t decode anything useful\"))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    auth_type \u003d environ_getter(\u0027AUTH_TYPE\u0027, None)"},{"line_number":96,"context_line":"    remote_domain \u003d environ_getter(\u0027REMOTE_DOMAIN\u0027, None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_990a4a20","line":93,"in_reply_to":"3a98d1f4_a8481fcd","updated":"2016-10-06 12:58:57.000000000","message":"Done","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                      \u0027auth_context middleware is not in place. You \u0027"},{"line_number":85,"context_line":"                      \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                      \u0027to perform authenticated calls\u0027)"},{"line_number":87,"context_line":"            LOG.warning(msg)  # noqa"},{"line_number":88,"context_line":"            raise exception.Unauthorized(msg)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        if not self.context.authenticated:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_c58785d5","line":87,"updated":"2016-10-06 14:12:43.000000000","message":"You could move the _LW call to the LOG.warning line since it was only used there previously:\n\n  LOG.warning(_LW(msg))","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                      \u0027auth_context middleware is not in place. You \u0027"},{"line_number":85,"context_line":"                      \u0027must have this middleware in your pipeline \u0027"},{"line_number":86,"context_line":"                      \u0027to perform authenticated calls\u0027)"},{"line_number":87,"context_line":"            LOG.warning(msg)  # noqa"},{"line_number":88,"context_line":"            raise exception.Unauthorized(msg)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        if not self.context.authenticated:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_dd3675e6","line":87,"in_reply_to":"1a95cdbc_c58785d5","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"},{"line_number":92,"context_line":"            raise exception.Unauthorized("},{"line_number":93,"context_line":"                _(\u0027auth_context didn\\\u0027t decode anything useful\u0027))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    auth_type \u003d environ_getter(\u0027AUTH_TYPE\u0027, None)"},{"line_number":96,"context_line":"    remote_domain \u003d environ_getter(\u0027REMOTE_DOMAIN\u0027, None)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_45e295a0","line":93,"updated":"2016-10-06 14:12:43.000000000","message":"nit: did not* would avoid having to escape the single quote.","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        if not self.context.authenticated:"},{"line_number":91,"context_line":"            # auth_context didn\u0027t decode anything we can use"},{"line_number":92,"context_line":"            raise exception.Unauthorized("},{"line_number":93,"context_line":"                _(\u0027auth_context didn\\\u0027t decode anything useful\u0027))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    auth_type \u003d environ_getter(\u0027AUTH_TYPE\u0027, None)"},{"line_number":96,"context_line":"    remote_domain \u003d environ_getter(\u0027REMOTE_DOMAIN\u0027, None)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_bd42893c","line":93,"in_reply_to":"1a95cdbc_45e295a0","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"}],"keystone/common/utils.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4fa0b320fe067236135bb60e527ed1d455b21ef5","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        msg \u003d \"Couldn\u0027t find the auth context.\""},{"line_number":548,"context_line":"        LOG.warning(_LW(msg))"},{"line_number":549,"context_line":"        raise exception.Unauthorized(_(msg))"},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_96c98b5d","line":547,"updated":"2016-09-19 18:38:59.000000000","message":"Same as above","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9f5052c659af1464eea9a016aac840546454387a","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_7dc73712","line":547,"range":{"start_line":547,"start_character":25,"end_line":547,"end_character":55},"updated":"2016-09-20 21:00:28.000000000","message":"set this in a variable, and call the variable in the log and exception","commit_id":"fc8c5519a145dc85409dc94ada1806ff17524703"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"69cb16940f77eea85415be3a866a167a233f9228","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_f4fd00b2","line":547,"range":{"start_line":547,"start_character":25,"end_line":547,"end_character":55},"in_reply_to":"7a8ec9b2_7dc73712","updated":"2016-09-21 10:40:03.000000000","message":"same here","commit_id":"fc8c5519a145dc85409dc94ada1806ff17524703"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"3de822eab50e0aeb3ac4ec76163b557b1799b095","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_cbd4bd21","line":547,"range":{"start_line":547,"start_character":24,"end_line":547,"end_character":57},"updated":"2016-09-26 12:40:51.000000000","message":"reuse this as being done in previous files","commit_id":"466b3545cf461619ccc2c69f3eeca2210f222a0b"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"d1db0befb0d8495a6d80aa27c11192ceb32a0fdb","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_33f2d39a","line":547,"range":{"start_line":547,"start_character":24,"end_line":547,"end_character":57},"in_reply_to":"5a8bc5a2_19f51156","updated":"2016-09-27 00:54:45.000000000","message":"interesting, this is a sign that we need more tests :)","commit_id":"466b3545cf461619ccc2c69f3eeca2210f222a0b"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"c319d8a020ccb1599893665b2aa88dcda536f557","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_19f51156","line":547,"range":{"start_line":547,"start_character":24,"end_line":547,"end_character":57},"in_reply_to":"5a8bc5a2_cbd4bd21","updated":"2016-09-26 16:45:40.000000000","message":"Ok, but I have to add # noqa","commit_id":"466b3545cf461619ccc2c69f3eeca2210f222a0b"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"48fcaff0bdaf0cf4fd4b0fff7911fd8a06d7faf5","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"URL_RESERVED_CHARS \u003d \":/?#[]@!$\u0026\u0027()*+,;\u003d\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a98d1f4_b7c01a2c","line":548,"range":{"start_line":548,"start_character":36,"end_line":548,"end_character":73},"updated":"2016-09-29 12:06:38.000000000","message":"I\u0027m leaving it here as it will be changed in the next patch and I don\u0027t want # noqa here.","commit_id":"623e3a57d3ac16e24d6ca8a6b7fe3e683a4aea36"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"29481fad24c54d117472ac593e95c9bbaf49e20b","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"URL_RESERVED_CHARS \u003d \":/?#[]@!$\u0026\u0027()*+,;\u003d\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_7ac0707d","line":548,"range":{"start_line":548,"start_character":39,"end_line":548,"end_character":71},"updated":"2016-09-27 21:55:05.000000000","message":"maybe a rebase error? think this would go in the other patch","commit_id":"623e3a57d3ac16e24d6ca8a6b7fe3e683a4aea36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"URL_RESERVED_CHARS \u003d \":/?#[]@!$\u0026\u0027()*+,;\u003d\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_4590d5ec","line":548,"updated":"2016-10-06 14:12:43.000000000","message":"This message string could be shared:\n\n  msg \u003d \u0027Could not find the auth context.\u0027\n  LOG.warning(_LW(msg))\n  raise exception.Unauthorized(msg)","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        LOG.warning(_LW(\"Couldn\u0027t find the auth context.\"))"},{"line_number":548,"context_line":"        raise exception.Unauthorized(_(\"Couldn\u0027t find the auth context.\"))"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"URL_RESERVED_CHARS \u003d \":/?#[]@!$\u0026\u0027()*+,;\u003d\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_dd92f59e","line":548,"in_reply_to":"1a95cdbc_4590d5ec","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a839b47b0313a4202316559a6ce8ef87d31d42aa","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        msg \u003d _(\u0027Could not find the auth context.\u0027)"},{"line_number":548,"context_line":"        LOG.warning(msg)"},{"line_number":549,"context_line":"        raise exception.Unauthorized(msg)"},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_ab927c9d","line":547,"range":{"start_line":547,"start_character":17,"end_line":547,"end_character":26},"updated":"2016-11-08 15:15:08.000000000","message":"we shouldn\u0027t change a message that was correct before it just makes work for the translators and any deployers that were scraping the message logs.","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                        [authorization.AUTH_CONTEXT_ENV])"},{"line_number":545,"context_line":"        return auth_context[\u0027token\u0027]"},{"line_number":546,"context_line":"    except KeyError:"},{"line_number":547,"context_line":"        msg \u003d _(\u0027Could not find the auth context.\u0027)"},{"line_number":548,"context_line":"        LOG.warning(msg)"},{"line_number":549,"context_line":"        raise exception.Unauthorized(msg)"},{"line_number":550,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_ec0a121f","line":547,"range":{"start_line":547,"start_character":17,"end_line":547,"end_character":26},"in_reply_to":"9a629dbe_ab927c9d","updated":"2016-11-21 02:13:17.000000000","message":"Done","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"}],"keystone/common/wsgi.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    if name and name not in bind:"},{"line_number":89,"context_line":"        LOG.info(_LI(\"Named bind mode %s not in bind information\"), name)"},{"line_number":90,"context_line":"        raise exception.Unauthorized("},{"line_number":91,"context_line":"            _(\"Named bind mode not in bind information\"))"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_e754d722","line":89,"range":{"start_line":89,"start_character":22,"end_line":89,"end_character":64},"updated":"2016-09-19 20:49:01.000000000","message":"same this in a msg variable and re-use it, it\u0027ll only be translated once that way","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    if name and name not in bind:"},{"line_number":89,"context_line":"        LOG.info(_LI(\"Named bind mode %s not in bind information\"), name)"},{"line_number":90,"context_line":"        raise exception.Unauthorized("},{"line_number":91,"context_line":"            _(\"Named bind mode not in bind information\"))"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_c4623916","line":89,"range":{"start_line":89,"start_character":22,"end_line":89,"end_character":64},"in_reply_to":"7a8ec9b2_e754d722","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                creds[\u0027user_id\u0027] \u003d user_token_ref.user_id"},{"line_number":302,"context_line":"            except exception.UnexpectedError:"},{"line_number":303,"context_line":"                LOG.debug(\u0027Invalid user\u0027)"},{"line_number":304,"context_line":"                raise exception.Unauthorized(\u0027Invalid user\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            if user_token_ref.project_scoped:"},{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_c1ec442c","line":304,"range":{"start_line":304,"start_character":45,"end_line":304,"end_character":59},"updated":"2016-09-19 12:50:30.000000000","message":"Why don\u0027t you use _(\u0027Invalid user\u0027) as in l.91?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                creds[\u0027user_id\u0027] \u003d user_token_ref.user_id"},{"line_number":302,"context_line":"            except exception.UnexpectedError:"},{"line_number":303,"context_line":"                LOG.debug(\u0027Invalid user\u0027)"},{"line_number":304,"context_line":"                raise exception.Unauthorized(\u0027Invalid user\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            if user_token_ref.project_scoped:"},{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_046d0104","line":304,"range":{"start_line":304,"start_character":45,"end_line":304,"end_character":59},"in_reply_to":"7a8ec9b2_c1ec442c","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"},{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                LOG.debug(\u0027Invalid tenant\u0027)"},{"line_number":310,"context_line":"                raise exception.Unauthorized(\u0027Invalid tenant\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"            creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":313,"context_line":"            # Accept either is_admin or the admin role"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_41d91483","line":310,"range":{"start_line":310,"start_character":45,"end_line":310,"end_character":61},"updated":"2016-09-19 12:50:30.000000000","message":"Why don\u0027t you use _(\u0027Invalid tenant\u0027) as in l.91?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"},{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                LOG.debug(\u0027Invalid tenant\u0027)"},{"line_number":310,"context_line":"                raise exception.Unauthorized(\u0027Invalid tenant\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"            creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":313,"context_line":"            # Accept either is_admin or the admin role"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_24703ddc","line":310,"range":{"start_line":310,"start_character":45,"end_line":310,"end_character":61},"in_reply_to":"7a8ec9b2_41d91483","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"3de822eab50e0aeb3ac4ec76163b557b1799b095","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            LOG.info(_LI(\"No bind information present in token.\"))"},{"line_number":82,"context_line":"            raise exception.Unauthorized(_("},{"line_number":83,"context_line":"                \"No bind information present in token.\"))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # get the named mode if bind_mode is not one of the known"},{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_abecd1f3","line":83,"range":{"start_line":83,"start_character":16,"end_line":83,"end_character":55},"updated":"2016-09-26 12:40:51.000000000","message":"assign to a variable and reuse this","commit_id":"466b3545cf461619ccc2c69f3eeca2210f222a0b"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"c319d8a020ccb1599893665b2aa88dcda536f557","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            LOG.info(_LI(\"No bind information present in token.\"))"},{"line_number":82,"context_line":"            raise exception.Unauthorized(_("},{"line_number":83,"context_line":"                \"No bind information present in token.\"))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # get the named mode if bind_mode is not one of the known"},{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_39e64db0","line":83,"range":{"start_line":83,"start_character":16,"end_line":83,"end_character":55},"in_reply_to":"5a8bc5a2_abecd1f3","updated":"2016-09-26 16:45:40.000000000","message":"same here","commit_id":"466b3545cf461619ccc2c69f3eeca2210f222a0b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            LOG.info(_LI(\"No bind information present in token.\"))"},{"line_number":82,"context_line":"            raise exception.Unauthorized(_("},{"line_number":83,"context_line":"                \"No bind information present in token.\"))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # get the named mode if bind_mode is not one of the known"},{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_087f53e0","line":83,"updated":"2016-10-03 17:41:00.000000000","message":"How come we aren\u0027t using string injection here like we are on line 91?","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"53414fe575fa0ff4216c4f729372f73d6282908c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            LOG.info(_LI(\"No bind information present in token.\"))"},{"line_number":82,"context_line":"            raise exception.Unauthorized(_("},{"line_number":83,"context_line":"                \"No bind information present in token.\"))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # get the named mode if bind_mode is not one of the known"},{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_792ade7f","line":83,"in_reply_to":"3a98d1f4_087f53e0","updated":"2016-10-06 12:58:57.000000000","message":"Done","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    if name and name not in bind:"},{"line_number":89,"context_line":"        msg_pattern \u003d _LI(\"Named bind mode %s not in bind information\")"},{"line_number":90,"context_line":"        LOG.info(msg_pattern, name)"},{"line_number":91,"context_line":"        raise exception.Unauthorized(msg_pattern % name)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    for bind_type, identifier in bind.items():"},{"line_number":94,"context_line":"        if bind_type \u003d\u003d \u0027kerberos\u0027:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_a8765f03","line":91,"updated":"2016-10-03 17:41:00.000000000","message":"This feels similar to the above change - but they are being made differently. What\u0027s the reason for the difference?","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                creds[\u0027user_id\u0027] \u003d user_token_ref.user_id"},{"line_number":302,"context_line":"            except exception.UnexpectedError:"},{"line_number":303,"context_line":"                LOG.debug(\u0027Invalid user\u0027)"},{"line_number":304,"context_line":"                raise exception.Unauthorized(_(\u0027Invalid user\u0027))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            if user_token_ref.project_scoped:"},{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_48d31bd5","line":304,"updated":"2016-10-03 17:41:00.000000000","message":"Can\u0027t we reuse the \u0027Invalid user\u0027 string from line 303?\n\nHow come we don\u0027t localize this message when calling LOG.debug, but we seem to do that for other instances in this change.","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"},{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                LOG.debug(\u0027Invalid tenant\u0027)"},{"line_number":310,"context_line":"                raise exception.Unauthorized(_(\u0027Invalid tenant\u0027))"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"            creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":313,"context_line":"            # Accept either is_admin or the admin role"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_88d9a3f5","line":310,"updated":"2016-10-03 17:41:00.000000000","message":"Same comment here.","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            return"},{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            msg \u003d _LI(\u0027No bind information present in token.\u0027)"},{"line_number":82,"context_line":"            LOG.info(msg)  # noqa"},{"line_number":83,"context_line":"            raise exception.Unauthorized(msg)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # get the named mode if bind_mode is not one of the known"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_85357df8","line":82,"updated":"2016-10-06 14:12:43.000000000","message":"This could be:\n\n  LOG.info(_LI(msg))","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    name \u003d None if permissive or bind_mode \u003d\u003d \u0027required\u0027 else bind_mode"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    if name and name not in bind:"},{"line_number":89,"context_line":"        msg_pattern \u003d _LI(\"Named bind mode %s not in bind information\")"},{"line_number":90,"context_line":"        LOG.info(msg_pattern, name)"},{"line_number":91,"context_line":"        raise exception.Unauthorized(msg_pattern % name)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_89a6770e","line":89,"updated":"2016-10-06 14:12:43.000000000","message":"String injection could be done on this like:\n\n  msg_pattern \u003d \u0027Named bind mode %{name}s not in bind information\u0027 % {\u0027name\u0027: name}","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    if name and name not in bind:"},{"line_number":89,"context_line":"        msg_pattern \u003d _LI(\"Named bind mode %s not in bind information\")"},{"line_number":90,"context_line":"        LOG.info(msg_pattern, name)"},{"line_number":91,"context_line":"        raise exception.Unauthorized(msg_pattern % name)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    for bind_type, identifier in bind.items():"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_e50d613f","line":90,"updated":"2016-10-06 14:12:43.000000000","message":"Same comment here","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                creds[\u0027user_id\u0027] \u003d user_token_ref.user_id"},{"line_number":302,"context_line":"            except exception.UnexpectedError:"},{"line_number":303,"context_line":"                LOG.debug(\u0027Invalid user\u0027)"},{"line_number":304,"context_line":"                raise exception.Unauthorized(_(\u0027Invalid user\u0027))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            if user_token_ref.project_scoped:"},{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_090507bb","line":304,"updated":"2016-10-06 14:12:43.000000000","message":"This could be shared with line 303:\n\n  msg \u003d \u0027Invalid user\u0027\n  LOG.debug(msg)\n  raise exception.Unauthorized(_(msg))","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"},{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                LOG.debug(\u0027Invalid tenant\u0027)"},{"line_number":310,"context_line":"                raise exception.Unauthorized(_(\u0027Invalid tenant\u0027))"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"            creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":313,"context_line":"            # Accept either is_admin or the admin role"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_492d4f45","line":310,"updated":"2016-10-06 14:12:43.000000000","message":"Same comment here","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a839b47b0313a4202316559a6ce8ef87d31d42aa","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"},{"line_number":309,"context_line":"            else:"},{"line_number":310,"context_line":"                LOG.debug(\u0027Invalid tenant\u0027)"},{"line_number":311,"context_line":"                raise exception.Unauthorized(_(\u0027Invalid tenant\u0027))"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"            creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":314,"context_line":"            # Accept either is_admin or the admin role"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_6bcea4b5","line":311,"range":{"start_line":311,"start_character":56,"end_line":311,"end_character":62},"updated":"2016-11-08 15:15:08.000000000","message":"project","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                creds[\u0027tenant_id\u0027] \u003d user_token_ref.project_id"},{"line_number":309,"context_line":"            else:"},{"line_number":310,"context_line":"                LOG.debug(\u0027Invalid tenant\u0027)"},{"line_number":311,"context_line":"                raise exception.Unauthorized(_(\u0027Invalid tenant\u0027))"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"            creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":314,"context_line":"            # Accept either is_admin or the admin role"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_4c1ce669","line":311,"range":{"start_line":311,"start_character":56,"end_line":311,"end_character":62},"in_reply_to":"9a629dbe_6bcea4b5","updated":"2016-11-21 02:13:17.000000000","message":"the existing log message said tenant, so i will keep this as-is","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"}],"keystone/identity/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                request, user_id, original_password, password)"},{"line_number":285,"context_line":"        except AssertionError:"},{"line_number":286,"context_line":"            raise exception.Unauthorized("},{"line_number":287,"context_line":"                \u0027Assertion error on v3 password change\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_67160757","line":287,"range":{"start_line":287,"start_character":17,"end_line":287,"end_character":54},"updated":"2016-09-19 20:49:01.000000000","message":"i think we can remove the \"v3\" part of this, where the request lands should be obvious in the logs.\n\n  \"Error when changing user password\"","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                request, user_id, original_password, password)"},{"line_number":285,"context_line":"        except AssertionError:"},{"line_number":286,"context_line":"            raise exception.Unauthorized("},{"line_number":287,"context_line":"                \u0027Assertion error on v3 password change\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_a4a52d48","line":287,"range":{"start_line":287,"start_character":17,"end_line":287,"end_character":54},"in_reply_to":"7a8ec9b2_67160757","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                request, user_id, original_password, password)"},{"line_number":285,"context_line":"        except AssertionError:"},{"line_number":286,"context_line":"            raise exception.Unauthorized("},{"line_number":287,"context_line":"                \"Error when changing user password\")"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_08f4b358","line":287,"updated":"2016-10-03 17:41:00.000000000","message":"no logging?","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"53414fe575fa0ff4216c4f729372f73d6282908c","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                request, user_id, original_password, password)"},{"line_number":285,"context_line":"        except AssertionError:"},{"line_number":286,"context_line":"            raise exception.Unauthorized("},{"line_number":287,"context_line":"                \"Error when changing user password\")"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_3948565b","line":287,"in_reply_to":"3a98d1f4_08f4b358","updated":"2016-10-06 12:58:57.000000000","message":"yes, it may be needed, but not in this change - this one is about responses.","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a839b47b0313a4202316559a6ce8ef87d31d42aa","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                request, user_id, original_password, password)"},{"line_number":285,"context_line":"        except AssertionError as e:"},{"line_number":286,"context_line":"            raise exception.Unauthorized("},{"line_number":287,"context_line":"                \u0027Error when changing user password: %s\u0027 % str(e))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_abc0bc7d","line":287,"range":{"start_line":287,"start_character":58,"end_line":287,"end_character":64},"updated":"2016-11-08 15:15:08.000000000","message":"str isn\u0027t necessary since %s is used.","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                request, user_id, original_password, password)"},{"line_number":285,"context_line":"        except AssertionError as e:"},{"line_number":286,"context_line":"            raise exception.Unauthorized("},{"line_number":287,"context_line":"                \u0027Error when changing user password: %s\u0027 % str(e))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_6c17e244","line":287,"range":{"start_line":287,"start_character":58,"end_line":287,"end_character":64},"in_reply_to":"9a629dbe_abc0bc7d","updated":"2016-11-21 02:13:17.000000000","message":"Done","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9437a2bca5c23ec86a0847c5f130edc7b225534d","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            self.identity_api.change_password("},{"line_number":292,"context_line":"                request, user_id, original_password, password)"},{"line_number":293,"context_line":"        except AssertionError as e:"},{"line_number":294,"context_line":"            raise exception.Unauthorized("},{"line_number":295,"context_line":"                \u0027Error when changing user password: %s\u0027 % e)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_36f538cb","line":295,"range":{"start_line":293,"start_character":0,"end_line":295,"end_character":60},"updated":"2016-11-21 03:52:43.000000000","message":"Translate the message as you did here: https://review.openstack.org/#/c/372433/12/keystone/token/providers/common.py","commit_id":"1cb81b5724371a0630ccd080bcefa72e5e47b0bd"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"01ea41c2641fd63381548ca154dc3e4b7d8d6df9","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            self.identity_api.change_password("},{"line_number":292,"context_line":"                request, user_id, original_password, password)"},{"line_number":293,"context_line":"        except AssertionError as e:"},{"line_number":294,"context_line":"            raise exception.Unauthorized("},{"line_number":295,"context_line":"                \u0027Error when changing user password: %s\u0027 % e)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_d68084fa","line":295,"range":{"start_line":293,"start_character":0,"end_line":295,"end_character":60},"in_reply_to":"7a77a97e_36f538cb","updated":"2016-11-21 03:54:29.000000000","message":"Done","commit_id":"1cb81b5724371a0630ccd080bcefa72e5e47b0bd"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"593f4371010c20649d04513c53eef8e4381a0bb1","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            self.identity_api.change_password("},{"line_number":292,"context_line":"                request, user_id, original_password, password)"},{"line_number":293,"context_line":"        except AssertionError as e:"},{"line_number":294,"context_line":"            raise exception.Unauthorized(_("},{"line_number":295,"context_line":"                \u0027Error when changing user password: %s\u0027) % e)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a77a97e_0dbe57d4","line":294,"updated":"2016-11-21 14:07:40.000000000","message":"You are using _, but that\u0027s never imported.","commit_id":"35c6551aaab90cb06c6e21b96f1eb77c6003df23"}],"keystone/token/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            try:"},{"line_number":196,"context_line":"                trust_ref \u003d self.trust_api.get_trust(auth[\u0027trust_id\u0027])"},{"line_number":197,"context_line":"            except exception.TrustNotFound:"},{"line_number":198,"context_line":"                raise exception.Forbidden(_(\u0027Trust not found\u0027))"},{"line_number":199,"context_line":"            if user_id !\u003d trust_ref[\u0027trustee_user_id\u0027]:"},{"line_number":200,"context_line":"                raise exception.Forbidden(_(\u0027User is not a trustee\u0027))"},{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_a20f1d2d","line":198,"range":{"start_line":198,"start_character":45,"end_line":198,"end_character":60},"updated":"2016-09-19 20:49:01.000000000","message":"you could say:\n\n  trust $trust_id cannot be found","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            try:"},{"line_number":196,"context_line":"                trust_ref \u003d self.trust_api.get_trust(auth[\u0027trust_id\u0027])"},{"line_number":197,"context_line":"            except exception.TrustNotFound:"},{"line_number":198,"context_line":"                raise exception.Forbidden(_(\u0027Trust not found\u0027))"},{"line_number":199,"context_line":"            if user_id !\u003d trust_ref[\u0027trustee_user_id\u0027]:"},{"line_number":200,"context_line":"                raise exception.Forbidden(_(\u0027User is not a trustee\u0027))"},{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_5f9ef654","line":198,"range":{"start_line":198,"start_character":45,"end_line":198,"end_character":60},"in_reply_to":"7a8ec9b2_a20f1d2d","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            except exception.TrustNotFound:"},{"line_number":198,"context_line":"                raise exception.Forbidden(_(\u0027Trust not found\u0027))"},{"line_number":199,"context_line":"            if user_id !\u003d trust_ref[\u0027trustee_user_id\u0027]:"},{"line_number":200,"context_line":"                raise exception.Forbidden(_(\u0027User is not a trustee\u0027))"},{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"},{"line_number":202,"context_line":"                    tenant_id !\u003d trust_ref[\u0027project_id\u0027]):"},{"line_number":203,"context_line":"                raise exception.Forbidden("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_421f395b","line":200,"range":{"start_line":200,"start_character":45,"end_line":200,"end_character":66},"updated":"2016-09-19 20:49:01.000000000","message":"suggestion:\n\n  User $user_id is not a trustee of trust $trust_id","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            except exception.TrustNotFound:"},{"line_number":198,"context_line":"                raise exception.Forbidden(_(\u0027Trust not found\u0027))"},{"line_number":199,"context_line":"            if user_id !\u003d trust_ref[\u0027trustee_user_id\u0027]:"},{"line_number":200,"context_line":"                raise exception.Forbidden(_(\u0027User is not a trustee\u0027))"},{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"},{"line_number":202,"context_line":"                    tenant_id !\u003d trust_ref[\u0027project_id\u0027]):"},{"line_number":203,"context_line":"                raise exception.Forbidden("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_7fad7287","line":200,"range":{"start_line":200,"start_character":45,"end_line":200,"end_character":66},"in_reply_to":"7a8ec9b2_421f395b","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"},{"line_number":202,"context_line":"                    tenant_id !\u003d trust_ref[\u0027project_id\u0027]):"},{"line_number":203,"context_line":"                raise exception.Forbidden("},{"line_number":204,"context_line":"                    _(\u0027Trust is scoped to another project\u0027))"},{"line_number":205,"context_line":"            if (\u0027expires\u0027 in trust_ref) and (trust_ref[\u0027expires\u0027]):"},{"line_number":206,"context_line":"                expiry \u003d trust_ref[\u0027expires\u0027]"},{"line_number":207,"context_line":"                if expiry \u003c timeutils.parse_isotime(utils.isotime()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_610290b6","line":204,"range":{"start_line":204,"start_character":21,"end_line":204,"end_character":59},"updated":"2016-09-19 12:50:30.000000000","message":"where is _()?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f98bb0a0129910644d74f4f8631e23dddb124d3","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"},{"line_number":202,"context_line":"                    tenant_id !\u003d trust_ref[\u0027project_id\u0027]):"},{"line_number":203,"context_line":"                raise exception.Forbidden("},{"line_number":204,"context_line":"                    _(\u0027Trust is scoped to another project\u0027))"},{"line_number":205,"context_line":"            if (\u0027expires\u0027 in trust_ref) and (trust_ref[\u0027expires\u0027]):"},{"line_number":206,"context_line":"                expiry \u003d trust_ref[\u0027expires\u0027]"},{"line_number":207,"context_line":"                if expiry \u003c timeutils.parse_isotime(utils.isotime()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_82406137","line":204,"range":{"start_line":204,"start_character":21,"end_line":204,"end_character":59},"in_reply_to":"7a8ec9b2_610290b6","updated":"2016-09-19 20:49:01.000000000","message":"Trust $trust_id is scoped to a different project\n\nsame for the rest of these","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            if (trust_ref[\u0027project_id\u0027] and"},{"line_number":202,"context_line":"                    tenant_id !\u003d trust_ref[\u0027project_id\u0027]):"},{"line_number":203,"context_line":"                raise exception.Forbidden("},{"line_number":204,"context_line":"                    _(\u0027Trust is scoped to another project\u0027))"},{"line_number":205,"context_line":"            if (\u0027expires\u0027 in trust_ref) and (trust_ref[\u0027expires\u0027]):"},{"line_number":206,"context_line":"                expiry \u003d trust_ref[\u0027expires\u0027]"},{"line_number":207,"context_line":"                if expiry \u003c timeutils.parse_isotime(utils.isotime()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_9fa87e79","line":204,"range":{"start_line":204,"start_character":21,"end_line":204,"end_character":59},"in_reply_to":"7a8ec9b2_82406137","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                    trust_roles.append(role[\u0027id\u0027])"},{"line_number":241,"context_line":"                else:"},{"line_number":242,"context_line":"                    raise exception.Forbidden("},{"line_number":243,"context_line":"                        _(\u0027Trustor cannot provide roles for trust\u0027))"},{"line_number":244,"context_line":"            if \u0027expiry\u0027 in trust_ref and trust_ref[\u0027expiry\u0027]:"},{"line_number":245,"context_line":"                trust_expiry \u003d timeutils.parse_isotime(trust_ref[\u0027expiry\u0027])"},{"line_number":246,"context_line":"                if trust_expiry \u003c expiry:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_211fa80a","line":243,"range":{"start_line":243,"start_character":25,"end_line":243,"end_character":67},"updated":"2016-09-19 12:50:30.000000000","message":"where is _()?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        # A trust token cannot be used to get another token"},{"line_number":152,"context_line":"        if token_model_ref.trust_scoped:"},{"line_number":153,"context_line":"            raise exception.ForbiddenAction("},{"line_number":154,"context_line":"                action\u003d_(\u0027rescope a delegated token\u0027))"},{"line_number":155,"context_line":"        if not CONF.token.allow_rescope_scoped_token:"},{"line_number":156,"context_line":"            # Do not allow conversion from scoped tokens."},{"line_number":157,"context_line":"            if token_model_ref.project_scoped or token_model_ref.domain_scoped:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_a9afb392","line":154,"updated":"2016-10-06 14:12:43.000000000","message":"s/delegated/trust-scoped/","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a839b47b0313a4202316559a6ce8ef87d31d42aa","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            for role in trust_ref[\u0027roles\u0027]:"},{"line_number":242,"context_line":"                if \u0027roles\u0027 not in metadata_ref:"},{"line_number":243,"context_line":"                    raise exception.Forbidden("},{"line_number":244,"context_line":"                        _(\u0027Auth metadata creation error\u0027))"},{"line_number":245,"context_line":"                if role[\u0027id\u0027] in metadata_ref[\u0027roles\u0027]:"},{"line_number":246,"context_line":"                    trust_roles.append(role[\u0027id\u0027])"},{"line_number":247,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_8be858e4","line":244,"range":{"start_line":244,"start_character":27,"end_line":244,"end_character":55},"updated":"2016-11-08 15:15:08.000000000","message":"This message doesn\u0027t look like it matches the problem.","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            for role in trust_ref[\u0027roles\u0027]:"},{"line_number":242,"context_line":"                if \u0027roles\u0027 not in metadata_ref:"},{"line_number":243,"context_line":"                    raise exception.Forbidden("},{"line_number":244,"context_line":"                        _(\u0027Auth metadata creation error\u0027))"},{"line_number":245,"context_line":"                if role[\u0027id\u0027] in metadata_ref[\u0027roles\u0027]:"},{"line_number":246,"context_line":"                    trust_roles.append(role[\u0027id\u0027])"},{"line_number":247,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_8c4fde69","line":244,"range":{"start_line":244,"start_character":27,"end_line":244,"end_character":55},"in_reply_to":"9a629dbe_8be858e4","updated":"2016-11-21 02:13:17.000000000","message":"this message went away in the token controller refactoring","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"}],"keystone/token/provider.py":[{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            token_data \u003d token[\u0027access\u0027][\u0027token\u0027]"},{"line_number":363,"context_line":"            if (\u0027tenant\u0027 not in token_data or"},{"line_number":364,"context_line":"                    token_data[\u0027tenant\u0027][\u0027id\u0027] !\u003d belongs_to):"},{"line_number":365,"context_line":"                raise exception.Unauthorized(\u0027Token tenant mismatch\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def issue_v2_token(self, token_ref, roles_ref\u003dNone, catalog_ref\u003dNone):"},{"line_number":368,"context_line":"        token_id, token_data \u003d self.driver.issue_v2_token("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_21cde886","line":365,"range":{"start_line":365,"start_character":45,"end_line":365,"end_character":68},"updated":"2016-09-19 12:50:30.000000000","message":"where is _()?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            token_data \u003d token[\u0027access\u0027][\u0027token\u0027]"},{"line_number":363,"context_line":"            if (\u0027tenant\u0027 not in token_data or"},{"line_number":364,"context_line":"                    token_data[\u0027tenant\u0027][\u0027id\u0027] !\u003d belongs_to):"},{"line_number":365,"context_line":"                raise exception.Unauthorized(\u0027Token tenant mismatch\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def issue_v2_token(self, token_ref, roles_ref\u003dNone, catalog_ref\u003dNone):"},{"line_number":368,"context_line":"        token_id, token_data \u003d self.driver.issue_v2_token("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_1fb38eea","line":365,"range":{"start_line":365,"start_character":45,"end_line":365,"end_character":68},"in_reply_to":"7a8ec9b2_21cde886","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"}],"keystone/token/providers/common.py":[{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":719,"context_line":"    def _verify_token_ref(self, token_ref):"},{"line_number":720,"context_line":"        \"\"\"Verify and return the given token_ref.\"\"\""},{"line_number":721,"context_line":"        if not token_ref:"},{"line_number":722,"context_line":"            raise exception.Unauthorized(\u0027Token is absend.\u0027)"},{"line_number":723,"context_line":"        return token_ref"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def _assert_is_not_federation_token(self, token_ref):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_e1a94092","line":722,"range":{"start_line":722,"start_character":51,"end_line":722,"end_character":57},"updated":"2016-09-19 12:50:30.000000000","message":"absent?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"9859f7bd48905edbbf1d0a76d82850a18bedca18","unresolved":false,"context_lines":[{"line_number":719,"context_line":"    def _verify_token_ref(self, token_ref):"},{"line_number":720,"context_line":"        \"\"\"Verify and return the given token_ref.\"\"\""},{"line_number":721,"context_line":"        if not token_ref:"},{"line_number":722,"context_line":"            raise exception.Unauthorized(\u0027Token is absend.\u0027)"},{"line_number":723,"context_line":"        return token_ref"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def _assert_is_not_federation_token(self, token_ref):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_9fbf9ea9","line":722,"range":{"start_line":722,"start_character":51,"end_line":722,"end_character":57},"in_reply_to":"7a8ec9b2_e1a94092","updated":"2016-09-20 18:49:11.000000000","message":"Done","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"}],"keystone/trust/controllers.py":[{"author":{"_account_id":18796,"name":"Alex Petrov","email":"apetrov@mirantis.com","username":"apetrov"},"change_message_id":"417fa8ee6b084d0774d8530b30058085e0e24375","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        if (request.context.user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":230,"context_line":"                not request.context.is_admin):"},{"line_number":231,"context_line":"            raise exception.Forbidden("},{"line_number":232,"context_line":"                _(\u0027Only admin or trustor can delete the trust\u0027))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        initiator \u003d notifications._get_request_audit_info(request.context_dict)"},{"line_number":235,"context_line":"        self.trust_api.delete_trust(trust_id, initiator)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_e18060fa","line":232,"range":{"start_line":232,"start_character":16,"end_line":232,"end_character":64},"updated":"2016-09-19 12:50:30.000000000","message":"where is _()?","commit_id":"28d1b93bb2909aba0d64ca4c1701fb05935cdf79"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        if trustor_user_id:"},{"line_number":199,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":200,"context_line":"                raise exception.Forbidden("},{"line_number":201,"context_line":"                    _(\u0027Cannot list trusts for another user\u0027))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_49de2f12","line":201,"updated":"2016-10-06 14:12:43.000000000","message":"Does this need to be a ForbiddenAction() exception since we are passing an action to it?","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        if trustor_user_id:"},{"line_number":199,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":200,"context_line":"                raise exception.Forbidden("},{"line_number":201,"context_line":"                    _(\u0027Cannot list trusts for another user\u0027))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_dd691527","line":201,"in_reply_to":"1a95cdbc_49de2f12","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        if trustee_user_id:"},{"line_number":206,"context_line":"            if trustee_user_id !\u003d request.context.user_id:"},{"line_number":207,"context_line":"                raise exception.Forbidden("},{"line_number":208,"context_line":"                    _(\u0027Cannot list trusts for another user\u0027))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustee(trustee_user_id)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_c9d23f00","line":208,"updated":"2016-10-06 14:12:43.000000000","message":"This message could be shared with the one on line 201","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        if trustee_user_id:"},{"line_number":206,"context_line":"            if trustee_user_id !\u003d request.context.user_id:"},{"line_number":207,"context_line":"                raise exception.Forbidden("},{"line_number":208,"context_line":"                    _(\u0027Cannot list trusts for another user\u0027))"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustee(trustee_user_id)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_fd7891f4","line":208,"in_reply_to":"1a95cdbc_c9d23f00","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if (request.context.user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":230,"context_line":"                not request.context.is_admin):"},{"line_number":231,"context_line":"            raise exception.Forbidden("},{"line_number":232,"context_line":"                _(\u0027Only admin or trustor can delete the trust\u0027))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        initiator \u003d notifications._get_request_audit_info(request.context_dict)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_492c6f02","line":231,"updated":"2016-10-06 14:12:43.000000000","message":"Same question here about using exception.Forbidden versus exception.ForbiddenAction.","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.ForbiddenAction(action\u003dforbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_aca01af5","line":201,"range":{"start_line":201,"start_character":32,"end_line":201,"end_character":47},"updated":"2016-11-21 02:13:17.000000000","message":"reverted to Forbidden","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        if trustee_user_id:"},{"line_number":206,"context_line":"            if trustee_user_id !\u003d request.context.user_id:"},{"line_number":207,"context_line":"                raise exception.ForbiddenAction(action\u003dforbidden_msg)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustee(trustee_user_id)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_cca396fe","line":207,"range":{"start_line":207,"start_character":32,"end_line":207,"end_character":47},"updated":"2016-11-21 02:13:17.000000000","message":"reverted to Forbidden","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a839b47b0313a4202316559a6ce8ef87d31d42aa","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        if (request.context.user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":229,"context_line":"                not request.context.is_admin):"},{"line_number":230,"context_line":"            raise exception.Forbidden("},{"line_number":231,"context_line":"                _(\u0027Only admin or trustor can delete the trust\u0027))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        initiator \u003d notifications._get_request_audit_info(request.context_dict)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_ebd714eb","line":230,"updated":"2016-11-08 15:15:08.000000000","message":"why sometimes use ForbiddenAction and sometimes use Forbidden? This one could use ForbiddenAction, too.","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32e9d2a2e2af86485c2eb33cdb21dbc2d551aad8","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        if (request.context.user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":229,"context_line":"                not request.context.is_admin):"},{"line_number":230,"context_line":"            raise exception.Forbidden("},{"line_number":231,"context_line":"                _(\u0027Only admin or trustor can delete the trust\u0027))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        initiator \u003d notifications._get_request_audit_info(request.context_dict)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_6c452241","line":230,"in_reply_to":"9a629dbe_ebd714eb","updated":"2016-11-21 02:13:17.000000000","message":"for backwards compatibility i will keep this as-is and revert the others to Forbidden","commit_id":"17dd5444b39251b58f3476c57efc5c992f41a06b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"da5b6e8f1a387b4f56fd3af77c463687e049037d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.Forbidden(forbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_ada9e326","line":201,"updated":"2016-11-21 14:16:54.000000000","message":"Shouldn\u0027t this be action\u003dforbidden_msg\n\nIf not, the message could be reworded for something like: \"Listing trusts for another user is not allowed\"","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"586891919220e1e228877751f9f38813520d7b63","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.Forbidden(forbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_9e4a8f54","line":201,"in_reply_to":"7a77a97e_3387f4d8","updated":"2016-11-21 14:56:27.000000000","message":"Only if you want to change this to a ForbiddenAction... Should we roll another patch using that? Also we may want to do that with all of the Forbidden exceptions..","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46ec151505d9adaaff1815fa7c903e22329eed53","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.Forbidden(forbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_be7d8bb3","line":201,"in_reply_to":"7a77a97e_9e4a8f54","updated":"2016-11-21 15:14:08.000000000","message":"won\u0027t that be backwards incompatible?","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"371f083c2da6b5cf9667634b3d69d5698087589d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.Forbidden(forbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_3387f4d8","line":201,"in_reply_to":"7a77a97e_ada9e326","updated":"2016-11-21 14:48:25.000000000","message":"++","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"37db052e7cc72b5f8d2dbb3ae3cc0e9c848d5acb","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.Forbidden(forbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_d9fd010a","line":201,"in_reply_to":"7a77a97e_be7d8bb3","updated":"2016-11-21 15:16:55.000000000","message":"No. ForbiddenAction is a subclass of Forbidden that has a different message. I believe the way this code is written we\u0027ll be using \u0027list trusts for another user\u0027 as the message for the 403 response and not the normal \u0027You are not authorized...\u0027.","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"543f8dcbac7855b649977a768df7ba604add58a3","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        forbidden_msg \u003d _(\u0027list trusts for another user\u0027)"},{"line_number":199,"context_line":"        if trustor_user_id:"},{"line_number":200,"context_line":"            if trustor_user_id !\u003d request.context.user_id:"},{"line_number":201,"context_line":"                raise exception.Forbidden(forbidden_msg)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            trusts +\u003d self.trust_api.list_trusts_for_trustor(trustor_user_id)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_99570926","line":201,"in_reply_to":"7a77a97e_d9fd010a","updated":"2016-11-21 15:34:13.000000000","message":"gotcha, lets get this cleaned up then","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"371f083c2da6b5cf9667634b3d69d5698087589d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        if (request.context.user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":229,"context_line":"                not request.context.is_admin):"},{"line_number":230,"context_line":"            raise exception.Forbidden("},{"line_number":231,"context_line":"                _(\u0027Only admin or trustor can delete the trust\u0027))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        self.trust_api.delete_trust("},{"line_number":234,"context_line":"            trust_id, initiator\u003drequest.audit_initiator"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a77a97e_1359188f","line":231,"range":{"start_line":231,"start_character":52,"end_line":231,"end_character":61},"updated":"2016-11-21 14:48:25.000000000","message":"this should be more generic: \n\n  Only admin or trustor can delete a trust.\n\nHaving \"the trust\" looks like it is the case for only the trust being deleted.","commit_id":"5ae4ca12a75f7463623293944d5136fe36020ab4"}],"keystone/v2_crud/user_crud.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0230c37542f4a0d190bc0b404482a8f926d1a03f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                raise exception.Unauthorized(\u0027User is disabled\u0027)"},{"line_number":75,"context_line":"        except AssertionError:"},{"line_number":76,"context_line":"            raise exception.Unauthorized("},{"line_number":77,"context_line":"                _(\u0027Assertion error on v2 password change\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        update_dict \u003d {\u0027password\u0027: user[\u0027password\u0027], \u0027id\u0027: user_id}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_882363bc","line":77,"updated":"2016-10-03 17:41:00.000000000","message":"I can see where this would be confusing for an end user to read? Why was my password rejected? Did it not meet the requirements? Did I use an old password too soon?","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"53414fe575fa0ff4216c4f729372f73d6282908c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                raise exception.Unauthorized(\u0027User is disabled\u0027)"},{"line_number":75,"context_line":"        except AssertionError:"},{"line_number":76,"context_line":"            raise exception.Unauthorized("},{"line_number":77,"context_line":"                _(\u0027Assertion error on v2 password change\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        update_dict \u003d {\u0027password\u0027: user[\u0027password\u0027], \u0027id\u0027: user_id}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_799f3eb4","line":77,"in_reply_to":"3a98d1f4_882363bc","updated":"2016-10-06 12:58:57.000000000","message":"Added error message","commit_id":"c69bb3c5e14f8747d0b471b74543a414afddb986"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c7de40845cbb4c4710544715bd388e8274adb50","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                raise exception.Unauthorized(\u0027User is disabled\u0027)"},{"line_number":75,"context_line":"        except AssertionError as e:"},{"line_number":76,"context_line":"            raise exception.Unauthorized("},{"line_number":77,"context_line":"                _(\u0027Assertion error on v2 password change: %s\u0027) % str(e))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        update_dict \u003d {\u0027password\u0027: user[\u0027password\u0027], \u0027id\u0027: user_id}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_297483fb","line":77,"updated":"2016-10-06 14:12:43.000000000","message":"Taking a second look at this code and this all happens before we\u0027ve even done anything with the new password. The error would be from using the existing password. It might be worth it to rework this according to that case.","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ed1078dd36413ae10ccb7391d0123dc0b7d6e13b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                raise exception.Unauthorized(\u0027User is disabled\u0027)"},{"line_number":75,"context_line":"        except AssertionError as e:"},{"line_number":76,"context_line":"            raise exception.Unauthorized("},{"line_number":77,"context_line":"                _(\u0027Assertion error on v2 password change: %s\u0027) % str(e))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        update_dict \u003d {\u0027password\u0027: user[\u0027password\u0027], \u0027id\u0027: user_id}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_830ad01f","line":77,"in_reply_to":"1a95cdbc_297483fb","updated":"2016-10-06 15:30:38.000000000","message":"(nit) you don\u0027t need to wrap e with str(). the %s already does that for you.","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3ae9499b05f6d97e3f6f0a34f5e778f577ab38c2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                raise exception.Unauthorized(\u0027User is disabled\u0027)"},{"line_number":75,"context_line":"        except AssertionError as e:"},{"line_number":76,"context_line":"            raise exception.Unauthorized("},{"line_number":77,"context_line":"                _(\u0027Assertion error on v2 password change: %s\u0027) % str(e))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        update_dict \u003d {\u0027password\u0027: user[\u0027password\u0027], \u0027id\u0027: user_id}"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_03a160a3","line":77,"in_reply_to":"1a95cdbc_297483fb","updated":"2016-10-11 11:51:10.000000000","message":"Done","commit_id":"a92b930975720e08925e95762daea0b82ae44d68"}]}
