)]}'
{"keystone/models/token_model.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f3c7f6e7baac0736bd84332302ce6496d9421e28","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @property"},{"line_number":230,"context_line":"    def trust_impersonation(self):"},{"line_number":231,"context_line":"        if self.version is V3:"},{"line_number":232,"context_line":"            return self.get("},{"line_number":233,"context_line":"                \u0027OS-TRUST:trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":234,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_01e08295","line":231,"updated":"2014-08-04 23:29:23.000000000","message":"seems like all of this copy-pasted code should be put into a function.","commit_id":"3a6516becbafb6c7c3ec96c73bc2eced77d8d4e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"000a25187ae4853ff4e2de33cf8a04a033c2c839","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @property"},{"line_number":230,"context_line":"    def trust_impersonation(self):"},{"line_number":231,"context_line":"        if self.version is V3:"},{"line_number":232,"context_line":"            return self.get("},{"line_number":233,"context_line":"                \u0027OS-TRUST:trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":234,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ac7a964_23e9bb80","line":231,"updated":"2014-08-15 01:33:13.000000000","message":"seems like all of this copy-pasted code should be put into a function.","commit_id":"357cd0045e16f4160a4a567ef74795982bab2cac"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"7253ecd93cb1c87e9301ad407b562548247665e2","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    def trust_impersonation(self):"},{"line_number":259,"context_line":"        if self.version is V3:"},{"line_number":260,"context_line":"            return self.get("},{"line_number":261,"context_line":"                \u0027OS-TRUST:trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            return self.get(\u0027trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_a5784d90","line":261,"updated":"2014-09-02 01:36:08.000000000","message":"self.setdefault(\u0027OS-TRUST:trust\u0027, {})\n\nreturn self[\u0027OS-TRUST:trust\u0027].get(\u0027impersonation\u0027)\n\ncould be better?","commit_id":"a792ef017d416de673270a54232ceea93299eb40"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"4db84271c916251ff580004895e0567438cfb193","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    def trust_impersonation(self):"},{"line_number":259,"context_line":"        if self.version is V3:"},{"line_number":260,"context_line":"            return self.get("},{"line_number":261,"context_line":"                \u0027OS-TRUST:trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            return self.get(\u0027trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_60f8134a","line":261,"in_reply_to":"fa98f980_a5784d90","updated":"2014-09-02 02:11:05.000000000","message":"I don\u0027t think so. Why does self must contain OS-TRUST:trust? The token can be a non-trust-scope token.","commit_id":"a792ef017d416de673270a54232ceea93299eb40"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"7253ecd93cb1c87e9301ad407b562548247665e2","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            return self.get("},{"line_number":261,"context_line":"                \u0027OS-TRUST:trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            return self.get(\u0027trust\u0027, {}).get(\u0027impersonation\u0027)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @property"},{"line_number":266,"context_line":"    def oauth_access_token_id(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_456321dc","line":263,"updated":"2014-09-02 01:36:08.000000000","message":"same here","commit_id":"a792ef017d416de673270a54232ceea93299eb40"}],"keystone/tests/test_auth.py":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"88c9673f529f3a716eaa1f4d9b16bd695ec3798a","unresolved":false,"context_lines":[{"line_number":956,"context_line":"        self.assertEqual(new_trust[\u0027impersonation\u0027],"},{"line_number":957,"context_line":"                         auth_response[\u0027access\u0027][\u0027trust\u0027][\u0027impersonation\u0027])"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        validate_resp \u003d self.controller.validate_token("},{"line_number":960,"context_line":"            dict(is_admin\u003dTrue, query_string\u003d{}),"},{"line_number":961,"context_line":"            token_id\u003dauth_response[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027])"},{"line_number":962,"context_line":"        self.assertEqual(new_trust[\u0027trustor_user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_640649cf","line":959,"updated":"2014-06-27 13:29:40.000000000","message":"Inconsistent variable names used \"_response\" and then \"_resp\".","commit_id":"e8a767db80087a48eab754bd11fe922577386834"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"972a7742078d5778d0bfa52897448acbffa1193b","unresolved":false,"context_lines":[{"line_number":947,"context_line":"            exception.Forbidden,"},{"line_number":948,"context_line":"            self.controller.authenticate, {}, request_body)"},{"line_number":949,"context_line":""},{"line_number":950,"context_line":"    def test_v2_trust_token_contain_trustor_user_id_and_impersonation(self):"},{"line_number":951,"context_line":"        new_trust \u003d self.create_trust(self.sample_data, self.trustor[\u0027name\u0027])"},{"line_number":952,"context_line":"        auth_response \u003d self.fetch_v2_token_from_trust(new_trust)"},{"line_number":953,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_2595bc31","line":950,"updated":"2014-08-03 23:41:40.000000000","message":"change \"contain\" to \"contains\"","commit_id":"4d8158db7301d84f2b94c3834a3c752955f8c0aa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c51795269b36ff2cbfb189e3a2782ef49a3501ef","unresolved":false,"context_lines":[{"line_number":950,"context_line":"    def test_v2_trust_token_contain_trustor_user_id_and_impersonation(self):"},{"line_number":951,"context_line":"        new_trust \u003d self.create_trust(self.sample_data, self.trustor[\u0027name\u0027])"},{"line_number":952,"context_line":"        auth_response \u003d self.fetch_v2_token_from_trust(new_trust)"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"        self.assertEqual(new_trust[\u0027trustor_user_id\u0027],"},{"line_number":955,"context_line":"                         auth_response[\u0027access\u0027][\u0027trust\u0027][\u0027trustor_user_id\u0027])"},{"line_number":956,"context_line":"        self.assertEqual(new_trust[\u0027impersonation\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_1984000b","line":953,"updated":"2014-07-02 20:27:32.000000000","message":"This may be a little verbose, but we could add an assertIn here to make sure the proper default value from new_trust is in auth_response: \n\nhttps://docs.python.org/2/library/unittest.html#unittest.TestCase.assertIn","commit_id":"4d8158db7301d84f2b94c3834a3c752955f8c0aa"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"972a7742078d5778d0bfa52897448acbffa1193b","unresolved":false,"context_lines":[{"line_number":957,"context_line":"                         auth_response[\u0027access\u0027][\u0027trust\u0027][\u0027impersonation\u0027])"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        validate_response \u003d self.controller.validate_token("},{"line_number":960,"context_line":"            dict(is_admin\u003dTrue, query_string\u003d{}),"},{"line_number":961,"context_line":"            token_id\u003dauth_response[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027])"},{"line_number":962,"context_line":"        self.assertEqual("},{"line_number":963,"context_line":"            new_trust[\u0027trustor_user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e5dca41a","line":960,"updated":"2014-08-03 23:41:40.000000000","message":"provide a name for this dict so that readers know what it\u0027s for --\n\n context\u003ddict(is_admin\u003dTrue, query_string\u003d{}),","commit_id":"4d8158db7301d84f2b94c3834a3c752955f8c0aa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a7b4742ded22869aae3305bb3d68b4d09bff23c0","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                                                new_trust[\u0027id\u0027])[\u0027trust\u0027]"},{"line_number":981,"context_line":"        self.assertEqual(3, trust[\u0027remaining_uses\u0027])"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def test_v2_trust_token_contains_trustor_user_id_and_impersonation(self):"},{"line_number":984,"context_line":"        new_trust \u003d self.create_trust(self.sample_data, self.trustor[\u0027name\u0027])"},{"line_number":985,"context_line":"        auth_response \u003d self.fetch_v2_token_from_trust(new_trust)"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ac7a964_365e8dea","line":983,"updated":"2014-08-14 03:27:04.000000000","message":"Could this test case be generalized so that it checks that a v2 trust token includes all the same properties a v3 trust token should, instead of only trustor_user_id and impersonation? \n\nLike the response here? https://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3-os-trust-ext.md#create-trust-post-os-trusttrusts","commit_id":"3a6516becbafb6c7c3ec96c73bc2eced77d8d4e7"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"2d88db38268cea207dfa5ebe373ab7af9805d312","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                                                new_trust[\u0027id\u0027])[\u0027trust\u0027]"},{"line_number":981,"context_line":"        self.assertEqual(3, trust[\u0027remaining_uses\u0027])"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def test_v2_trust_token_contains_trustor_user_id_and_impersonation(self):"},{"line_number":984,"context_line":"        new_trust \u003d self.create_trust(self.sample_data, self.trustor[\u0027name\u0027])"},{"line_number":985,"context_line":"        auth_response \u003d self.fetch_v2_token_from_trust(new_trust)"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ac7a964_ffcdba87","line":983,"in_reply_to":"7ac7a964_365e8dea","updated":"2014-08-14 11:50:13.000000000","message":"Hi Lance Bragstad, could you explain more please? Do you mean this test should add a assert for trust_id or this test should check both v2 and v3 trust token should contain trustor_user_id, trustee_user_id, empersonation and trust_id?","commit_id":"3a6516becbafb6c7c3ec96c73bc2eced77d8d4e7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"05821dedb05668cd59e92d22bbc216af63efb0b1","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                                                new_trust[\u0027id\u0027])[\u0027trust\u0027]"},{"line_number":981,"context_line":"        self.assertEqual(3, trust[\u0027remaining_uses\u0027])"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def test_v2_trust_token_contains_trustor_user_id_and_impersonation(self):"},{"line_number":984,"context_line":"        new_trust \u003d self.create_trust(self.sample_data, self.trustor[\u0027name\u0027])"},{"line_number":985,"context_line":"        auth_response \u003d self.fetch_v2_token_from_trust(new_trust)"},{"line_number":986,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ac7a964_c90c8c45","line":983,"in_reply_to":"7ac7a964_ffcdba87","updated":"2014-08-15 18:20:59.000000000","message":"Correct, instead of testing that only trustor_user_id and impersonation are included in the response ensure that everything that *should* is in fact there. We could generalize this test case to include that as well.","commit_id":"3a6516becbafb6c7c3ec96c73bc2eced77d8d4e7"}],"keystone/token/providers/common.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"915184b62fa76b279e3966386b5869408f1fabac","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    \"\"\"Creates V2 token data.\"\"\""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def format_token(cls, token_ref, roles_ref\u003dNone, catalog_ref\u003dNone,"},{"line_number":42,"context_line":"                     trust_ref\u003dNone):"},{"line_number":43,"context_line":"        user_ref \u003d token_ref[\u0027user\u0027]"},{"line_number":44,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"},{"line_number":45,"context_line":"        if roles_ref is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_3bf06afc","line":42,"updated":"2014-06-27 17:40:04.000000000","message":"trust_ref can actually derive from the following and not passed as a parameter.\n\ntrust_ref \u003d None\nmetadata_ref \u003d token_ref[\u0027metadata\u0027]\nif \u0027trust_id\u0027 in metadata_ref:\n    trust_ref \u003d self.trust_api.get_trust(metadata_ref[\u0027trust_id\u0027])","commit_id":"e8a767db80087a48eab754bd11fe922577386834"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"6330c3e386aa31e6e942a5070cad8bb7b687ace3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    \"\"\"Creates V2 token data.\"\"\""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def format_token(cls, token_ref, roles_ref\u003dNone, catalog_ref\u003dNone,"},{"line_number":42,"context_line":"                     trust_ref\u003dNone):"},{"line_number":43,"context_line":"        user_ref \u003d token_ref[\u0027user\u0027]"},{"line_number":44,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"},{"line_number":45,"context_line":"        if roles_ref is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_6d686a88","line":42,"in_reply_to":"1ae5cdf2_3bf06afc","updated":"2014-06-28 08:56:19.000000000","message":"Please note that this method is a classmethod, so we can not use @dependency.requires(\u0027trust_api\u0027) to get trust_api instance. Therefor, we must product a trust_api instance by ourselves. Compare these two solutions, I prefer my solution.","commit_id":"e8a767db80087a48eab754bd11fe922577386834"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d78679b0762e793664ca4bde1555309a88b9da81","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    \"\"\"Creates V2 token data.\"\"\""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def format_token(cls, token_ref, roles_ref\u003dNone, catalog_ref\u003dNone,"},{"line_number":42,"context_line":"                     trust_ref\u003dNone):"},{"line_number":43,"context_line":"        user_ref \u003d token_ref[\u0027user\u0027]"},{"line_number":44,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"},{"line_number":45,"context_line":"        if roles_ref is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_dc06f6cd","line":42,"in_reply_to":"1ae5cdf2_6d686a88","updated":"2014-07-02 20:51:16.000000000","message":"Agreed","commit_id":"e8a767db80087a48eab754bd11fe922577386834"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"915184b62fa76b279e3966386b5869408f1fabac","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"},{"line_number":385,"context_line":"        trust_ref \u003d None"},{"line_number":386,"context_line":"        if CONF.trust.enabled and \u0027trust_id\u0027 in metadata_ref:"},{"line_number":387,"context_line":"            trust_ref \u003d self.trust_api.get_trust(metadata_ref[\u0027trust_id\u0027])"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        token_data \u003d self.v2_token_data_helper.format_token("},{"line_number":390,"context_line":"            token_ref, roles_ref, catalog_ref, trust_ref)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_bb68fa88","line":387,"updated":"2014-06-27 17:40:04.000000000","message":"See comment above.","commit_id":"e8a767db80087a48eab754bd11fe922577386834"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"915184b62fa76b279e3966386b5869408f1fabac","unresolved":false,"context_lines":[{"line_number":623,"context_line":""},{"line_number":624,"context_line":"                trust_ref \u003d None"},{"line_number":625,"context_line":"                if CONF.trust.enabled and \u0027trust_id\u0027 in metadata_ref:"},{"line_number":626,"context_line":"                    trust_ref \u003d self.trust_api.get_trust("},{"line_number":627,"context_line":"                        metadata_ref[\u0027trust_id\u0027])"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"                token_data \u003d self.v2_token_data_helper.format_token("}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_9bf41ed0","line":626,"updated":"2014-06-27 17:40:04.000000000","message":"See the comment at the top.","commit_id":"e8a767db80087a48eab754bd11fe922577386834"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3aa283469ec1503ebd0dd1498f97a456ef92869e","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                       catalog_ref\u003dNone):"},{"line_number":399,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"},{"line_number":400,"context_line":"        trust_ref \u003d None"},{"line_number":401,"context_line":"        if CONF.trust.enabled and \u0027trust_id\u0027 in metadata_ref:"},{"line_number":402,"context_line":"            trust_ref \u003d self.trust_api.get_trust(metadata_ref[\u0027trust_id\u0027])"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        token_data \u003d self.v2_token_data_helper.format_token("}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_26a85f8c","line":401,"updated":"2014-07-07 06:03:58.000000000","message":"nit: the check should be similar to the v3 check:\n\n  if (CONF.trust.enabled and metadata_ref and \u0027trust_id\u0027 in metadata_ref):","commit_id":"4d8158db7301d84f2b94c3834a3c752955f8c0aa"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3aa283469ec1503ebd0dd1498f97a456ef92869e","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"},{"line_number":400,"context_line":"        trust_ref \u003d None"},{"line_number":401,"context_line":"        if CONF.trust.enabled and \u0027trust_id\u0027 in metadata_ref:"},{"line_number":402,"context_line":"            trust_ref \u003d self.trust_api.get_trust(metadata_ref[\u0027trust_id\u0027])"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        token_data \u003d self.v2_token_data_helper.format_token("},{"line_number":405,"context_line":"            token_ref, roles_ref, catalog_ref, trust_ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a6a1cf95","line":402,"updated":"2014-07-07 06:03:58.000000000","message":"the extra call to the trust API seems like it will affect performance when authN via trust... but I don\u0027t see a way around this.","commit_id":"4d8158db7301d84f2b94c3834a3c752955f8c0aa"}]}
