)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"9a5678348a55f21b06ca247488b34eb0a6359fa5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     wanghong \u003cw.wanghong@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-09-01 16:30:41 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"V2 token from trust cannot be generated with user/pass"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, trust handling in the v2 authentication path only exists"},{"line_number":10,"context_line":"for token authentication. This patch add trust support for user/pass"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa98f980_0a692825","line":7,"updated":"2014-09-02 01:27:55.000000000","message":"pass should be password or passwd?","commit_id":"aebdf9d9aec37841252da7a8f9416abcd7a8e4ac"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"9a5678348a55f21b06ca247488b34eb0a6359fa5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"V2 token from trust cannot be generated with user/pass"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, trust handling in the v2 authentication path only exists"},{"line_number":10,"context_line":"for token authentication. This patch add trust support for user/pass"},{"line_number":11,"context_line":"authentication."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I71eb45518d3eb5f62c0d18a4083684107a119a9b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa98f980_4a733015","line":10,"updated":"2014-09-02 01:27:55.000000000","message":"same here","commit_id":"aebdf9d9aec37841252da7a8f9416abcd7a8e4ac"}],"keystone/tests/test_auth.py":[{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"9a5678348a55f21b06ca247488b34eb0a6359fa5","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"class AuthWithTrustByPasswordCredentials(AuthWithTrust):"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def build_v2_token_request(self, username, password, trust,"},{"line_number":1099,"context_line":"                               tenant_id\u003dNone):"},{"line_number":1100,"context_line":"        if not tenant_id:"},{"line_number":1101,"context_line":"            tenant_id \u003d self.tenant_bar[\u0027id\u0027]"},{"line_number":1102,"context_line":"        request_body \u003d _build_user_auth(username\u003dusername,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_ea54e455","line":1099,"updated":"2014-09-02 01:27:55.000000000","message":"tenant_id? project _id could be better?","commit_id":"aebdf9d9aec37841252da7a8f9416abcd7a8e4ac"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"44db8c21d493557224f1fa686fd45f4ffcfc6925","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"class AuthWithTrustByPasswordCredentials(AuthWithTrust):"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def build_v2_token_request(self, username, password, trust,"},{"line_number":1099,"context_line":"                               tenant_id\u003dNone):"},{"line_number":1100,"context_line":"        if not tenant_id:"},{"line_number":1101,"context_line":"            tenant_id \u003d self.tenant_bar[\u0027id\u0027]"},{"line_number":1102,"context_line":"        request_body \u003d _build_user_auth(username\u003dusername,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_c0a61f10","line":1099,"in_reply_to":"fa98f980_ea54e455","updated":"2014-09-02 02:02:43.000000000","message":"This method is inherited from AuthWithTrust object.","commit_id":"aebdf9d9aec37841252da7a8f9416abcd7a8e4ac"}],"keystone/token/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2da070cf56cd5e91e63b7b8cd8f48e1f2d4aee9c","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        return token_data"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _apply_trust_scope(self, trust_id, user_id, tenant_id, token_expiry):"},{"line_number":153,"context_line":"        if not CONF.trust.enabled:"},{"line_number":154,"context_line":"            raise exception.Forbidden(\u0027Trusts are disabled.\u0027)"},{"line_number":155,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac7a964_a27205ab","line":152,"updated":"2014-08-15 19:21:58.000000000","message":"nit: this method is doing a lot of validation as well and could be renamed to include that. Applying the scope of the trust doesn\u0027t happen until after line 180.","commit_id":"9d96da49d40d65eac851e0f333f059eef4467fc8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2da070cf56cd5e91e63b7b8cd8f48e1f2d4aee9c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            trust_roles \u003d []"},{"line_number":188,"context_line":"            for role in trust_ref[\u0027roles\u0027]:"},{"line_number":189,"context_line":"                if \u0027roles\u0027 not in metadata_ref:"},{"line_number":190,"context_line":"                    raise exception.Forbidden()()"},{"line_number":191,"context_line":"                if role[\u0027id\u0027] in metadata_ref[\u0027roles\u0027]:"},{"line_number":192,"context_line":"                    trust_roles.append(role[\u0027id\u0027])"},{"line_number":193,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac7a964_87b7db85","line":190,"updated":"2014-08-15 19:21:58.000000000","message":"the check for \u0027roles\u0027 not in metadata_ref doesn\u0027t need to be in the loop I don\u0027t think.","commit_id":"9d96da49d40d65eac851e0f333f059eef4467fc8"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"9a5678348a55f21b06ca247488b34eb0a6359fa5","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        return token_data"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _deal_with_trust_scope(self, trust_id, user_id, tenant_id, expiry):"},{"line_number":155,"context_line":"        if not CONF.trust.enabled:"},{"line_number":156,"context_line":"            raise exception.Forbidden(\u0027Trusts are disabled.\u0027)"},{"line_number":157,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_8ac0b8e1","line":154,"updated":"2014-09-02 01:27:55.000000000","message":"project_id could be better in argv?","commit_id":"aebdf9d9aec37841252da7a8f9416abcd7a8e4ac"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"e0d5d484d456dbbbd11d2db66ef5053a29c1c015","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        return token_data"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _deal_with_trust_scope(self, trust_id, user_id, tenant_id, expiry):"},{"line_number":155,"context_line":"        if not CONF.trust.enabled:"},{"line_number":156,"context_line":"            raise exception.Forbidden(\u0027Trusts are disabled.\u0027)"},{"line_number":157,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_1be33c06","line":154,"in_reply_to":"fa98f980_8ac0b8e1","updated":"2014-09-02 02:24:29.000000000","message":"We all use tenant in this file. So, I think we should make consistent with others.","commit_id":"aebdf9d9aec37841252da7a8f9416abcd7a8e4ac"}]}
