)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17073,"name":"Theodore Ilie","email":"theodorex.ilie@intel.com","username":"Lactem"},"change_message_id":"aee607ff13d9a182d66158f31f6f84df535fd4ea","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"provider.common.py:BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implemente a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This commit removes the issue_v3_token() method from the fernet.Provider. This"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba3cc151_5570d1a3","line":12,"updated":"2015-07-02 21:41:59.000000000","message":"implemente --\u003e implement","commit_id":"ac7a1f39ff3f2e2e258a46502a0c8575b38bbdc3"},{"author":{"_account_id":17073,"name":"Theodore Ilie","email":"theodorex.ilie@intel.com","username":"Lactem"},"change_message_id":"aee607ff13d9a182d66158f31f6f84df535fd4ea","unresolved":false,"context_lines":[{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This commit removes the issue_v3_token() method from the fernet.Provider. This"},{"line_number":16,"context_line":"ensure that the Fernet provider uses the same issue_v3_token() that all the"},{"line_number":17,"context_line":"other token providers use."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ib86dbe2229e8ebf2639cf2e52751554113c047a2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba3cc151_b5611dd5","line":16,"updated":"2015-07-02 21:41:59.000000000","message":"ensure --\u003e ensures","commit_id":"ac7a1f39ff3f2e2e258a46502a0c8575b38bbdc3"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"d98310347565a42fe78b94040283e3d499f03067","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Consolidate the fernet provider validate_v3_token()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"provider.common.py:BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implement a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ba3cc151_8003b241","line":10,"updated":"2015-07-08 15:25:24.000000000","message":"Please either make a link here or provide a path to common.py from the project root - it looks weird as it is :)","commit_id":"0903b428365354e3dfe44603b3f0d7370f50931b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"216aa23241a014f14d19560278a28f14357f030e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implement a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_2c497660","line":11,"updated":"2015-08-06 09:18:22.000000000","message":"pls reduce the length per line, too long here and the same else.","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"216aa23241a014f14d19560278a28f14357f030e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This commit removes the issue_v3_token() method from the fernet.Provider. This"},{"line_number":16,"context_line":"ensures that the Fernet provider uses the same issue_v3_token() that all the"},{"line_number":17,"context_line":"other token providers use."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ib86dbe2229e8ebf2639cf2e52751554113c047a2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_cc2252a3","line":16,"updated":"2015-08-06 09:18:22.000000000","message":"The above commit message should be updated, this patch just remvoe `validate_v3_token` from the fernet.Provider.\n\nAnd use methods of `validate_v3_non_persistent_token_id` and `validate_v3_token_reference` for non persistent token and persistent token respectively.\n\nNot *issue_v3_token()*.","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6f2ee183b24ed101e00044d41e42ee4b9ffd025d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This commit removes the issue_v3_token() method from the fernet.Provider. This"},{"line_number":16,"context_line":"ensures that the Fernet provider uses the same issue_v3_token() that all the"},{"line_number":17,"context_line":"other token providers use."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ib86dbe2229e8ebf2639cf2e52751554113c047a2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_0f2fb088","line":16,"in_reply_to":"1a4dcd0f_cc2252a3","updated":"2015-08-06 20:25:23.000000000","message":"Done","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"f9252c09f01cf3ef0e3c92e2969e59c1311c4948","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Consolidate the fernet provider validate_v3_token()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implement a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1a4dcd0f_82a07743","line":10,"updated":"2015-08-12 18:02:45.000000000","message":"*most of the","commit_id":"9cd669a8931a4ff9f25b10d2552bd464929dbdc3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"32c0f8f4cc63f6d73092875428946b30784f77d3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Consolidate the fernet provider validate_v3_token()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implement a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1a4dcd0f_20707b3f","line":10,"in_reply_to":"1a4dcd0f_82a07743","updated":"2015-08-12 18:31:48.000000000","message":"Done","commit_id":"9cd669a8931a4ff9f25b10d2552bd464929dbdc3"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"f9252c09f01cf3ef0e3c92e2969e59c1311c4948","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implement a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This commit removes the validate_v3_token() method from the fernet.Provider."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1a4dcd0f_c29aff13","line":12,"updated":"2015-08-12 18:02:45.000000000","message":"*and","commit_id":"9cd669a8931a4ff9f25b10d2552bd464929dbdc3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"32c0f8f4cc63f6d73092875428946b30784f77d3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When the Fernet token provider was implemented, it extended the"},{"line_number":10,"context_line":"BaseProvider class. It also overrode most all common methods"},{"line_number":11,"context_line":"the BaseProvider implemented. Other token providers in Keystone (like the UUID"},{"line_number":12,"context_line":"an PKI providers) just implement a _get_token_id method because token ids may"},{"line_number":13,"context_line":"be different across providers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This commit removes the validate_v3_token() method from the fernet.Provider."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1a4dcd0f_c0919748","line":12,"in_reply_to":"1a4dcd0f_c29aff13","updated":"2015-08-12 18:31:48.000000000","message":"Done","commit_id":"9cd669a8931a4ff9f25b10d2552bd464929dbdc3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d4e5f44010fb140065607eb0f1e9de1137e22ec3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This commit removes the validate_v3_token() method from the fernet.Provider."},{"line_number":16,"context_line":"This ensures that the Fernet provider uses the same validation method that all"},{"line_number":17,"context_line":"the other token providers use."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ib86dbe2229e8ebf2639cf2e52751554113c047a2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"ba15a1d1_ab61d3d4","line":18,"updated":"2015-09-17 19:53:57.000000000","message":"This changes the provider interface so there should be a bug.\n\nI\u0027m not sure it\u0027s even allowed if we decided the interface is stable.","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"}],"keystone/tests/unit/token/test_fernet_provider.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"216aa23241a014f14d19560278a28f14357f030e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def test_needs_persistence_returns_false(self):"},{"line_number":43,"context_line":"        self.assertFalse(self.provider.needs_persistence())"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_invalid_v3_token_raises_404(self):"},{"line_number":46,"context_line":"        self.assertRaises("},{"line_number":47,"context_line":"            exception.ValidationError,"},{"line_number":48,"context_line":"            self.provider.validate_v3_non_persistent_token_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_47a85d77","line":45,"updated":"2015-08-06 09:18:22.000000000","message":"update the name of testcase pls, it should raise *400* instead of 404 after this patch.","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6f2ee183b24ed101e00044d41e42ee4b9ffd025d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def test_needs_persistence_returns_false(self):"},{"line_number":43,"context_line":"        self.assertFalse(self.provider.needs_persistence())"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_invalid_v3_token_raises_404(self):"},{"line_number":46,"context_line":"        self.assertRaises("},{"line_number":47,"context_line":"            exception.ValidationError,"},{"line_number":48,"context_line":"            self.provider.validate_v3_non_persistent_token_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_6da8ce20","line":45,"in_reply_to":"1a4dcd0f_47a85d77","updated":"2015-08-06 20:25:23.000000000","message":"Done","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"216aa23241a014f14d19560278a28f14357f030e","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_invalid_v3_token_raises_404(self):"},{"line_number":46,"context_line":"        self.assertRaises("},{"line_number":47,"context_line":"            exception.ValidationError,"},{"line_number":48,"context_line":"            self.provider.validate_v3_non_persistent_token_id,"},{"line_number":49,"context_line":"            uuid.uuid4().hex)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_876c2536","line":47,"updated":"2015-08-06 09:18:22.000000000","message":"If the name of testcase expect 404 explictly, why we not assert the status code?","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6f2ee183b24ed101e00044d41e42ee4b9ffd025d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_invalid_v3_token_raises_404(self):"},{"line_number":46,"context_line":"        self.assertRaises("},{"line_number":47,"context_line":"            exception.ValidationError,"},{"line_number":48,"context_line":"            self.provider.validate_v3_non_persistent_token_id,"},{"line_number":49,"context_line":"            uuid.uuid4().hex)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_adb25692","line":47,"in_reply_to":"1a4dcd0f_876c2536","updated":"2015-08-06 20:25:23.000000000","message":"We can\u0027t make assertions on the status code because we don\u0027t get an actual WebTest response back.","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"f9252c09f01cf3ef0e3c92e2969e59c1311c4948","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_needs_persistence_returns_false(self):"},{"line_number":44,"context_line":"        self.assertFalse(self.provider.needs_persistence())"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_invalid_v3_token_raises_400(self):"},{"line_number":47,"context_line":"        self.assertRaises("},{"line_number":48,"context_line":"            exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_02a46748","line":45,"updated":"2015-08-12 18:02:45.000000000","message":"Should we just add a new test which calls the new validate_v3_non_persistent_token_id and leave the old test to call validate_v3_token_reference..?","commit_id":"9cd669a8931a4ff9f25b10d2552bd464929dbdc3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"32c0f8f4cc63f6d73092875428946b30784f77d3","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_needs_persistence_returns_false(self):"},{"line_number":44,"context_line":"        self.assertFalse(self.provider.needs_persistence())"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_invalid_v3_token_raises_400(self):"},{"line_number":47,"context_line":"        self.assertRaises("},{"line_number":48,"context_line":"            exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a4dcd0f_e0bff3cd","line":45,"in_reply_to":"1a4dcd0f_02a46748","updated":"2015-08-12 18:31:48.000000000","message":"For this case, I think it would be ok to refactor the test. This test module tests validate_v3_non_persistent_token_id since the fernet provider issues non-persistent tokens.","commit_id":"9cd669a8931a4ff9f25b10d2552bd464929dbdc3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bc71ddd2d4b4950b74ffb04b29d79b710addc3c3","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def test_needs_persistence_returns_false(self):"},{"line_number":45,"context_line":"        self.assertFalse(self.provider.needs_persistence())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_invalid_v3_token_raises_token_not_found(self):"},{"line_number":48,"context_line":"        self.assertRaises("},{"line_number":49,"context_line":"            exception.TokenNotFound,"},{"line_number":50,"context_line":"            self.provider.validate_non_persistent_token,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a1a9d01_1e634043","line":47,"updated":"2015-10-01 00:20:49.000000000","message":"suggest remove \"v3\" since the call is to \"validate_non_persistent_token\" now (no v3 in the name), and there\u0027s no v3 token used, it\u0027s just a uuid.","commit_id":"4b625303dfc3f200e2e9b05a238b6fbd450badd3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"46d9fb6d197f792800c01e070ab02c119dd7c511","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def test_needs_persistence_returns_false(self):"},{"line_number":45,"context_line":"        self.assertFalse(self.provider.needs_persistence())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_invalid_v3_token_raises_token_not_found(self):"},{"line_number":48,"context_line":"        self.assertRaises("},{"line_number":49,"context_line":"            exception.TokenNotFound,"},{"line_number":50,"context_line":"            self.provider.validate_non_persistent_token,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a1a9d01_eb0319bd","line":47,"in_reply_to":"9a1a9d01_1e634043","updated":"2015-10-01 13:19:37.000000000","message":"Done","commit_id":"4b625303dfc3f200e2e9b05a238b6fbd450badd3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9564cde357b862cfa6bdec1578a48d2ee41d5ee4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        token_id \u003d uuid.uuid4().hex"},{"line_number":53,"context_line":"        e \u003d self.assertRaises("},{"line_number":54,"context_line":"            exception.TokenNotFound,"},{"line_number":55,"context_line":"            self.provider.validate_non_persistent_token,"},{"line_number":56,"context_line":"            token_id)"},{"line_number":57,"context_line":"        self.assertIn(token_id, u\u0027%s\u0027 % e)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7a5de9d1_14c9bdac","line":55,"updated":"2016-02-02 21:26:44.000000000","message":"why can\u0027t this test continue to use validate_v3_token anymore? The next test is the same thing for v2 and it\u0027s able to call validate_v2_token rather than validate_non_persistent_token.","commit_id":"43f47e20abcebdf7f42aa8f569066b110972a154"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f80851c4db7b42d5a540554ff4e2a183d4b85aad","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        token_id \u003d uuid.uuid4().hex"},{"line_number":53,"context_line":"        e \u003d self.assertRaises("},{"line_number":54,"context_line":"            exception.TokenNotFound,"},{"line_number":55,"context_line":"            self.provider.validate_non_persistent_token,"},{"line_number":56,"context_line":"            token_id)"},{"line_number":57,"context_line":"        self.assertIn(token_id, u\u0027%s\u0027 % e)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5a5ae5dd_795c9825","line":55,"in_reply_to":"7a5de9d1_14c9bdac","updated":"2016-02-03 22:10:40.000000000","message":"It doesn\u0027t use valdiate_v3_token anymore because validate_v3_token is specific to tokens that have been persisted in the backend. The validate_v2_token method hasn\u0027t been consolidated yet so it still uses the validate_v2_token method because that actually uses keystone/token/providers/fernet/core.py:Provider.validate_v2_token, not keystone/token/providers/common.py:Provider.validate_v2_token.\n\nA later patch in this series consolidates the validate_v2_token to be used in the same way v3 uses it.","commit_id":"43f47e20abcebdf7f42aa8f569066b110972a154"}],"keystone/token/provider.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b72c624fc3a33862f5d014c271005f194f6b3f3b","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            token_ref \u003d self._persistence.get_token(unique_id)"},{"line_number":244,"context_line":"            token_ref \u003d self.validate_v3_token_reference(token_ref)"},{"line_number":245,"context_line":"        self._is_valid_token(token_ref)"},{"line_number":246,"context_line":"        return token_ref"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    @MEMOIZE"},{"line_number":249,"context_line":"    def _validate_token(self, token_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_e55cfe4c","line":246,"updated":"2015-07-28 16:08:39.000000000","message":"this method makes sense now! yay","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0a0722e51cfa84a620dba54bed5686fd63a28a98","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    @abc.abstractmethod"},{"line_number":556,"context_line":"    def validate_v3_token_id(self, token_id):"},{"line_number":557,"context_line":"        \"\"\"Validate the given V3 token id and return the token_data."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        :param token_id: the token id"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_21cbda54","line":556,"updated":"2015-08-03 07:42:50.000000000","message":"If it\u0027s for non persistent tokens - let\u0027s document it. I would never guess from the name.\nMethod renaming so it\u0027s really indicates its use could also be considered.","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c085d7ffcc1d9412246a1dd42c41e2ae996556f7","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    @abc.abstractmethod"},{"line_number":556,"context_line":"    def validate_v3_token_id(self, token_id):"},{"line_number":557,"context_line":"        \"\"\"Validate the given V3 token id and return the token_data."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        :param token_id: the token id"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_81a015f6","line":556,"in_reply_to":"1a4dcd0f_cefd0670","updated":"2015-08-04 08:54:43.000000000","message":"that\u0027s much better.","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db30f313d18c1bf5cae0db7531a424e6746f9e75","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    @abc.abstractmethod"},{"line_number":556,"context_line":"    def validate_v3_token_id(self, token_id):"},{"line_number":557,"context_line":"        \"\"\"Validate the given V3 token id and return the token_data."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        :param token_id: the token id"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_cefd0670","line":556,"in_reply_to":"3a50d1a3_21cbda54","updated":"2015-08-03 17:54:31.000000000","message":"so, you\u0027d rather see something like?\n\n    def validate_v3_non_persistent_token_id(self, token_id):","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"216aa23241a014f14d19560278a28f14357f030e","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # NOTE(lbragstad): Only go to persistent storage if we have a token to"},{"line_number":233,"context_line":"        # fetch from the backend. If the Fernet token provider is being used"},{"line_number":234,"context_line":"        # this step isn\u0027t necessary. The Fernet token reference is persisted in"},{"line_number":235,"context_line":"        # the token_id, so in this case set the token_ref as the identifier of"},{"line_number":236,"context_line":"        # the token."},{"line_number":237,"context_line":"        if not self._needs_persistence:"},{"line_number":238,"context_line":"            token_ref \u003d self.validate_v3_non_persistent_token_id(token_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_4c1ba2ca","line":235,"updated":"2015-08-06 09:18:22.000000000","message":"update the docstring pls, the token_ref is not token_id anymore in this patch.","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6f2ee183b24ed101e00044d41e42ee4b9ffd025d","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # NOTE(lbragstad): Only go to persistent storage if we have a token to"},{"line_number":233,"context_line":"        # fetch from the backend. If the Fernet token provider is being used"},{"line_number":234,"context_line":"        # this step isn\u0027t necessary. The Fernet token reference is persisted in"},{"line_number":235,"context_line":"        # the token_id, so in this case set the token_ref as the identifier of"},{"line_number":236,"context_line":"        # the token."},{"line_number":237,"context_line":"        if not self._needs_persistence:"},{"line_number":238,"context_line":"            token_ref \u003d self.validate_v3_non_persistent_token_id(token_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_005a312a","line":235,"in_reply_to":"1a4dcd0f_4c1ba2ca","updated":"2015-08-06 20:25:23.000000000","message":"Done","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"216aa23241a014f14d19560278a28f14357f030e","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        return self.driver.validate_v2_token(token_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @MEMOIZE"},{"line_number":265,"context_line":"    def _validate_v3_token(self, token_id):"},{"line_number":266,"context_line":"        return self.driver.validate_v3_token(token_id)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _is_valid_token(self, token):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_c75a2df2","line":265,"updated":"2015-08-06 09:18:22.000000000","message":"pls udpate this method, `validate_v3_token` is no longer existing, but `validate_v3_non_persistent_token_id` and `validate_v3_token_reference` instead.","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"df091a889b9efc40a38e700bd12651ed6e70dfed","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        return self.driver.validate_v2_token(token_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @MEMOIZE"},{"line_number":265,"context_line":"    def _validate_v3_token(self, token_id):"},{"line_number":266,"context_line":"        return self.driver.validate_v3_token(token_id)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _is_valid_token(self, token):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_5200eb65","line":265,"in_reply_to":"1a4dcd0f_c75a2df2","updated":"2015-08-07 04:00:45.000000000","message":"Do I miss something? validate_v3_token is still there?","commit_id":"ec839aef912be2eb0153b494855ade7585291e3f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d4e5f44010fb140065607eb0f1e9de1137e22ec3","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        # this step isn\u0027t necessary. The Fernet token reference is persisted in"},{"line_number":236,"context_line":"        # the token_id."},{"line_number":237,"context_line":"        if not self._needs_persistence:"},{"line_number":238,"context_line":"            token_ref \u003d self.validate_v3_non_persistent_token_id(token_id)"},{"line_number":239,"context_line":"        else:"},{"line_number":240,"context_line":"            unique_id \u003d utils.generate_unique_id(token_id)"},{"line_number":241,"context_line":"            # NOTE(morganfainberg): Ensure we never use the long-form token_id"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_2bc943ac","line":238,"updated":"2015-09-17 19:53:57.000000000","message":"remove \"token_id\" from the method name -- any time we\u0027re validating non-persistent the only thing we\u0027re going to have to do the validation is the ID.\n\nAlso, remove v3 since there\u0027s no v2 version of this.","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"aba07596c5ca97a891b0f9e1cf274f4d4e41ee5f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        # this step isn\u0027t necessary. The Fernet token reference is persisted in"},{"line_number":236,"context_line":"        # the token_id."},{"line_number":237,"context_line":"        if not self._needs_persistence:"},{"line_number":238,"context_line":"            token_ref \u003d self.validate_v3_non_persistent_token_id(token_id)"},{"line_number":239,"context_line":"        else:"},{"line_number":240,"context_line":"            unique_id \u003d utils.generate_unique_id(token_id)"},{"line_number":241,"context_line":"            # NOTE(morganfainberg): Ensure we never use the long-form token_id"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a1a9d01_f9a0caa7","line":238,"in_reply_to":"ba15a1d1_2bc943ac","updated":"2015-09-24 17:04:43.000000000","message":"keeping validate_non_persistent_token and removing \"id\" and \"v3\"","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d4e5f44010fb140065607eb0f1e9de1137e22ec3","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        :param token_id: the token id"},{"line_number":555,"context_line":"        :type token_id: string"},{"line_number":556,"context_line":"        :returns: token data"},{"line_number":557,"context_line":"        :raises: keystone.exception.TokenNotFound"},{"line_number":558,"context_line":"        \"\"\""},{"line_number":559,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_ab0233b2","line":557,"updated":"2015-09-17 19:53:57.000000000","message":"the format is :raises keystone.exception.TokenNotFound: \u003ccondition\u003e","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"aba07596c5ca97a891b0f9e1cf274f4d4e41ee5f","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        :param token_id: the token id"},{"line_number":555,"context_line":"        :type token_id: string"},{"line_number":556,"context_line":"        :returns: token data"},{"line_number":557,"context_line":"        :raises: keystone.exception.TokenNotFound"},{"line_number":558,"context_line":"        \"\"\""},{"line_number":559,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a1a9d01_99c74e45","line":557,"in_reply_to":"ba15a1d1_ab0233b2","updated":"2015-09-24 17:04:43.000000000","message":"Done","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d4e5f44010fb140065607eb0f1e9de1137e22ec3","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    @abc.abstractmethod"},{"line_number":562,"context_line":"    def validate_v3_token_reference(self, token_ref):"},{"line_number":563,"context_line":"        \"\"\"Validate the given V3 token and return the token_data."},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :param token_ref: the token reference"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_8b3def90","line":562,"updated":"2015-09-17 19:53:57.000000000","message":"suggest don\u0027t rename the method. The original name is fine.","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"aba07596c5ca97a891b0f9e1cf274f4d4e41ee5f","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    @abc.abstractmethod"},{"line_number":562,"context_line":"    def validate_v3_token_reference(self, token_ref):"},{"line_number":563,"context_line":"        \"\"\"Validate the given V3 token and return the token_data."},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :param token_ref: the token reference"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a1a9d01_19e25ed6","line":562,"in_reply_to":"ba15a1d1_8b3def90","updated":"2015-09-24 17:04:43.000000000","message":"Done","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a5546ffa8ddd139a00584eb4ec7ed33d8d15fe08","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return token_ref"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @MEMOIZE"},{"line_number":248,"context_line":"    def _validate_token(self, token_id):"},{"line_number":249,"context_line":"        if not self._needs_persistence:"},{"line_number":250,"context_line":"            return self.driver.validate_non_persistent_token(token_id)"},{"line_number":251,"context_line":"        token_ref \u003d self._persistence.get_token(token_id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a1a9d01_0d334a15","line":248,"updated":"2015-09-30 03:21:59.000000000","message":"what are the thoughts on rolling this whole _validate_token method into validate_v3_token? \n\nI\u0027m not sure I have to context as to why we have validate_token, _validate_token, _validate_v2_token, and validate_v3_token all in this provider. Now, we are adding validate_non_persistent_token, too. Seems like a lot of methods for two token versions... \n\nThoughts? I\u0027d be happy to do the refactor","commit_id":"881fb2c31d18ee78b2e150f1bde718b9b5d1a8e8"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"91681ad76923add34624c89845648879184d6b11","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return token_ref"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @MEMOIZE"},{"line_number":248,"context_line":"    def _validate_token(self, token_id):"},{"line_number":249,"context_line":"        if not self._needs_persistence:"},{"line_number":250,"context_line":"            return self.driver.validate_non_persistent_token(token_id)"},{"line_number":251,"context_line":"        token_ref \u003d self._persistence.get_token(token_id)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a1a9d01_e3c38236","line":248,"in_reply_to":"9a1a9d01_0d334a15","updated":"2015-09-30 08:21:57.000000000","message":"i see _validate_token is cached, whereas validate_v{2,3}_token is not....","commit_id":"881fb2c31d18ee78b2e150f1bde718b9b5d1a8e8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bc71ddd2d4b4950b74ffb04b29d79b710addc3c3","unresolved":false,"context_lines":[{"line_number":260,"context_line":"    def _validate_v2_token(self, token_id):"},{"line_number":261,"context_line":"        return self.driver.validate_v2_token(token_id)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @MEMOIZE"},{"line_number":264,"context_line":"    def _validate_v3_token(self, token_id):"},{"line_number":265,"context_line":"        return self.driver.validate_v3_token(token_id)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9a1a9d01_7ea4bc49","side":"PARENT","line":263,"updated":"2015-10-01 00:20:49.000000000","message":"I don\u0027t understand why this is being removed. It provides caching for v3 tokens.","commit_id":"3f587c5fd57761e85fc9e58909e6cb4cd35e8a82"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"46d9fb6d197f792800c01e070ab02c119dd7c511","unresolved":false,"context_lines":[{"line_number":260,"context_line":"    def _validate_v2_token(self, token_id):"},{"line_number":261,"context_line":"        return self.driver.validate_v2_token(token_id)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @MEMOIZE"},{"line_number":264,"context_line":"    def _validate_v3_token(self, token_id):"},{"line_number":265,"context_line":"        return self.driver.validate_v3_token(token_id)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9a1a9d01_cb44151d","side":"PARENT","line":263,"in_reply_to":"9a1a9d01_7ea4bc49","updated":"2015-10-01 13:19:37.000000000","message":"Done","commit_id":"3f587c5fd57761e85fc9e58909e6cb4cd35e8a82"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4e36357c6f4ed2e7b187c8ee048452652366fab8","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        self._validate_token.invalidate(self, token_id)"},{"line_number":375,"context_line":"        self._validate_v2_token.invalidate(self, token_id)"},{"line_number":376,"context_line":"        self._validate_v3_token.invalidate(self, token_id)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def revoke_token(self, token_id, revoke_chain\u003dFalse):"},{"line_number":379,"context_line":"        revoke_by_expires \u003d False"}],"source_content_type":"text/x-python","patch_set":27,"id":"9a1a9d01_ebba3971","side":"PARENT","line":376,"updated":"2015-10-01 13:29:51.000000000","message":"this still needs to happen.","commit_id":"3f587c5fd57761e85fc9e58909e6cb4cd35e8a82"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48b8154d800dd850b65b495931e7b545d45a511f","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        self._validate_token.invalidate(self, token_id)"},{"line_number":375,"context_line":"        self._validate_v2_token.invalidate(self, token_id)"},{"line_number":376,"context_line":"        self._validate_v3_token.invalidate(self, token_id)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def revoke_token(self, token_id, revoke_chain\u003dFalse):"},{"line_number":379,"context_line":"        revoke_by_expires \u003d False"}],"source_content_type":"text/x-python","patch_set":27,"id":"9a1a9d01_ccae6b98","side":"PARENT","line":376,"in_reply_to":"9a1a9d01_ebba3971","updated":"2015-10-01 14:14:17.000000000","message":"Done","commit_id":"3f587c5fd57761e85fc9e58909e6cb4cd35e8a82"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4e36357c6f4ed2e7b187c8ee048452652366fab8","unresolved":false,"context_lines":[{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    @abc.abstractmethod"},{"line_number":556,"context_line":"    def validate_non_persistent_token(self, token_id):"},{"line_number":557,"context_line":"        \"\"\"Validate the given V3 token id and return the token_data."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        :param token_id: the token id"},{"line_number":560,"context_line":"        :type token_id: string"}],"source_content_type":"text/x-python","patch_set":27,"id":"9a1a9d01_cb7095df","line":557,"updated":"2015-10-01 13:29:51.000000000","message":"the comment at line 250 says that this works for v2 or v3.","commit_id":"f253f37fcaa36fcc8408a48f88da2fb428da6852"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"48b8154d800dd850b65b495931e7b545d45a511f","unresolved":false,"context_lines":[{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    @abc.abstractmethod"},{"line_number":556,"context_line":"    def validate_non_persistent_token(self, token_id):"},{"line_number":557,"context_line":"        \"\"\"Validate the given V3 token id and return the token_data."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        :param token_id: the token id"},{"line_number":560,"context_line":"        :type token_id: string"}],"source_content_type":"text/x-python","patch_set":27,"id":"9a1a9d01_8c695328","line":557,"in_reply_to":"9a1a9d01_cb7095df","updated":"2015-10-01 14:14:17.000000000","message":"Done","commit_id":"f253f37fcaa36fcc8408a48f88da2fb428da6852"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"861be098dfe1b32ac3a8174b107a754a3dfb25f1","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        # NOTE(lbragstad): Only go to persistent storage if we have a token to"},{"line_number":257,"context_line":"        # fetch from the backend (the driver persists the token). Otherwise"},{"line_number":258,"context_line":"        # the information about the token must be in the token id."},{"line_number":259,"context_line":"        if not self._needs_persistence:"},{"line_number":260,"context_line":"            token_ref \u003d self.validate_non_persistent_token(token_id)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            unique_id \u003d utils.generate_unique_id(token_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a5ae5dd_d4b9d32f","line":259,"updated":"2016-02-03 22:29:26.000000000","message":"would probably reverse the order of these and drop the not...","commit_id":"f9bdfecf6831b45a4030e2c234f9e52da59e2cdd"}],"keystone/token/providers/common.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1ce5bd3542ff18b9fe6b9822aaf223c13de2da87","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        # token reference. If we\u0027re dealing with a dictionary, attempt to"},{"line_number":744,"context_line":"        # return the cached token."},{"line_number":745,"context_line":"        if (isinstance(token_ref, six.binary_type) or"},{"line_number":746,"context_line":"                isinstance(token_ref, unicode)):"},{"line_number":747,"context_line":"            return self._validate_token_id(token_ref)"},{"line_number":748,"context_line":"        return self._validate_token_reference(token_ref)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_ff1c02c3","line":746,"updated":"2015-07-06 20:12:31.000000000","message":"\"unicode\" isn\u0027t available in Python 3.\n\nSuggest \"if isinstance(token_ref, (six.binary_type, six.text_type))\"","commit_id":"c64c8d6cd70eaccb76ccfc39a1db1db02a3bee9b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"bbe5ec909fe0e145e69eca82710bc250b6dd52cc","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        # token reference. If we\u0027re dealing with a dictionary, attempt to"},{"line_number":744,"context_line":"        # return the cached token."},{"line_number":745,"context_line":"        if (isinstance(token_ref, six.binary_type) or"},{"line_number":746,"context_line":"                isinstance(token_ref, unicode)):"},{"line_number":747,"context_line":"            return self._validate_token_id(token_ref)"},{"line_number":748,"context_line":"        return self._validate_token_reference(token_ref)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_bb074480","line":746,"in_reply_to":"ba3cc151_ff1c02c3","updated":"2015-07-07 14:58:16.000000000","message":"Done","commit_id":"c64c8d6cd70eaccb76ccfc39a1db1db02a3bee9b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"687c41b7fa3c9d50cb1d670bc1cfa0e9b10aa8cc","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                audit_info\u003daudit)"},{"line_number":738,"context_line":"        return token_data"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def validate_v3_token(self, token_ref):"},{"line_number":741,"context_line":"        # NOTE(lbragstad): If the \"token_ref\" is a string, we\u0027re dealing with a"},{"line_number":742,"context_line":"        # non-persistent token, in which case we want to reconstruct the real"},{"line_number":743,"context_line":"        # token reference. If we\u0027re dealing with a dictionary, attempt to"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_fabbf0c1","line":740,"updated":"2015-07-23 18:04:06.000000000","message":"this seems to be handling a bug caused elsewhere, rather than fixing the bug itself. a reference should already be a dict... *never* just a string. can we fix the source of this instead?","commit_id":"c3ced286827bc71f2c0a2f75b01a4f171e8d7416"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fcd1346e2b47edf883ef88fba29fcfdfb7febc15","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                audit_info\u003daudit)"},{"line_number":738,"context_line":"        return token_data"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def validate_v3_token(self, token_ref):"},{"line_number":741,"context_line":"        # NOTE(lbragstad): If the \"token_ref\" is a string, we\u0027re dealing with a"},{"line_number":742,"context_line":"        # non-persistent token, in which case we want to reconstruct the real"},{"line_number":743,"context_line":"        # token reference. If we\u0027re dealing with a dictionary, attempt to"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_d7e97f1b","line":740,"in_reply_to":"3a50d1a3_fabbf0c1","updated":"2015-07-28 13:28:26.000000000","message":"yeah, that makes sense. then validate_v3_token will have to do what it does in _validate_token_reference() and if only a token_id exists in the token_ref it should validate it as a non-persistent token, right?","commit_id":"c3ced286827bc71f2c0a2f75b01a4f171e8d7416"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"59b55370b3f920f9fa59f0b407f4e15b1646c35c","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    def validate_v3_token_id(self, token_id):"},{"line_number":682,"context_line":"        (user_id, methods, audit_ids, domain_id, project_id, trust_id,"},{"line_number":683,"context_line":"            federated_info, created_at, expires_at) \u003d ("},{"line_number":684,"context_line":"                self.token_formatter.validate_token(token_id))"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_501a2a7e","line":684,"updated":"2015-07-29 09:15:50.000000000","message":"Please consider apply https://review.openstack.org/205554","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"04e6eee41510f9ea62a0372f444f68db8862fa57","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    def validate_v3_token_id(self, token_id):"},{"line_number":682,"context_line":"        (user_id, methods, audit_ids, domain_id, project_id, trust_id,"},{"line_number":683,"context_line":"            federated_info, created_at, expires_at) \u003d ("},{"line_number":684,"context_line":"                self.token_formatter.validate_token(token_id))"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_db0361bd","line":684,"in_reply_to":"3a50d1a3_501a2a7e","updated":"2015-07-30 20:35:22.000000000","message":"I will rebase","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e3c54ef63220aad24a4b4b00823f3a8bec901a94","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"},{"line_number":688,"context_line":"        if federated_info:"},{"line_number":689,"context_line":"            token_dict \u003d self._rebuild_federated_info(federated_info, user_id)"},{"line_number":690,"context_line":"        if trust_id:"},{"line_number":691,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_f0f57682","line":689,"updated":"2015-07-29 08:59:22.000000000","message":"so you are calling a method which is implemented for fernet provider only (it\u0027s def is in fernet/core.py) ?","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"04e6eee41510f9ea62a0372f444f68db8862fa57","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"},{"line_number":688,"context_line":"        if federated_info:"},{"line_number":689,"context_line":"            token_dict \u003d self._rebuild_federated_info(federated_info, user_id)"},{"line_number":690,"context_line":"        if trust_id:"},{"line_number":691,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_7b6ecd97","line":689,"in_reply_to":"3a50d1a3_f0f57682","updated":"2015-07-30 20:35:22.000000000","message":"this method (validate_v3_token_id) is only called if we are validating a non-persistent token","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b72c624fc3a33862f5d014c271005f194f6b3f3b","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            issued_at\u003dcreated_at,"},{"line_number":699,"context_line":"            expires\u003dexpires_at,"},{"line_number":700,"context_line":"            trust\u003dtrust_ref,"},{"line_number":701,"context_line":"            token\u003dtoken_dict,"},{"line_number":702,"context_line":"            audit_info\u003daudit_ids)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    def validate_v3_token_reference(self, token_ref):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_45193287","line":701,"updated":"2015-07-28 16:08:39.000000000","message":"there\u0027s only a \"token_dict\" if it\u0027s a federated token?","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c480155f26c702df5daf9594157dc4389c6d6050","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            issued_at\u003dcreated_at,"},{"line_number":699,"context_line":"            expires\u003dexpires_at,"},{"line_number":700,"context_line":"            trust\u003dtrust_ref,"},{"line_number":701,"context_line":"            token\u003dtoken_dict,"},{"line_number":702,"context_line":"            audit_info\u003daudit_ids)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    def validate_v3_token_reference(self, token_ref):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_48194987","line":701,"in_reply_to":"3a50d1a3_45193287","updated":"2015-07-28 16:19:45.000000000","message":"yes, I believe so, but I\u0027ll have Marek take a look, too.","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e3c54ef63220aad24a4b4b00823f3a8bec901a94","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            issued_at\u003dcreated_at,"},{"line_number":699,"context_line":"            expires\u003dexpires_at,"},{"line_number":700,"context_line":"            trust\u003dtrust_ref,"},{"line_number":701,"context_line":"            token\u003dtoken_dict,"},{"line_number":702,"context_line":"            audit_info\u003daudit_ids)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"    def validate_v3_token_reference(self, token_ref):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_b0428ea9","line":701,"in_reply_to":"3a50d1a3_48194987","updated":"2015-07-29 08:59:22.000000000","message":"well, if i take a look at the code abowe it\u0027s been filled with data only if we have some federation data.","commit_id":"d50dd530eea8bc97715c9d41db1c0082065f42ce"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0a0722e51cfa84a620dba54bed5686fd63a28a98","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"},{"line_number":688,"context_line":"        if federated_info:"},{"line_number":689,"context_line":"            token_dict \u003d self._rebuild_federated_info(federated_info, user_id)"},{"line_number":690,"context_line":"        if trust_id:"},{"line_number":691,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_41a14693","line":689,"updated":"2015-08-03 07:42:50.000000000","message":"Why not make it @abc.abstractmethod  or at least a \u0027stub\u0027 method (returning empty {} or None) in this class? I know it\u0027s Python but let\u0027s help other developers and specify a \u0027interface\u0027 for future implementers  of another token formats.","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c085d7ffcc1d9412246a1dd42c41e2ae996556f7","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"},{"line_number":688,"context_line":"        if federated_info:"},{"line_number":689,"context_line":"            token_dict \u003d self._rebuild_federated_info(federated_info, user_id)"},{"line_number":690,"context_line":"        if trust_id:"},{"line_number":691,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_21f3410c","line":689,"in_reply_to":"1a4dcd0f_0db9b3e9","updated":"2015-08-04 08:54:43.000000000","message":"what do you mean by saying \u0027outside of keystone\u0027 ?","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1661438084423097fd16acd2262bdbb4c164cf2e","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"},{"line_number":688,"context_line":"        if federated_info:"},{"line_number":689,"context_line":"            token_dict \u003d self._rebuild_federated_info(federated_info, user_id)"},{"line_number":690,"context_line":"        if trust_id:"},{"line_number":691,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_637fad66","line":689,"in_reply_to":"1a4dcd0f_21f3410c","updated":"2015-08-05 16:35:59.000000000","message":"I mean people who are writing their own custom providers.","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7d1573e6ed535e4f120971f6b4ff0264f50b1144","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        token_dict \u003d None"},{"line_number":687,"context_line":"        trust_ref \u003d None"},{"line_number":688,"context_line":"        if federated_info:"},{"line_number":689,"context_line":"            token_dict \u003d self._rebuild_federated_info(federated_info, user_id)"},{"line_number":690,"context_line":"        if trust_id:"},{"line_number":691,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_0db9b3e9","line":689,"in_reply_to":"3a50d1a3_41a14693","updated":"2015-08-03 18:41:31.000000000","message":"Is that something that all providers outside of keystone have to write?","commit_id":"28e191bedfb25cec3679161dc797807b058e4cdc"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"6e05d2f0d27754911e62f4fd5b8c1460cc6bf286","unresolved":false,"context_lines":[{"line_number":718,"context_line":"            if project_id or domain_id:"},{"line_number":719,"context_line":"                self._rebuild_federated_token_roles(token_dict, federated_info,"},{"line_number":720,"context_line":"                                                    user_id, project_id,"},{"line_number":721,"context_line":"                                                    domain_id)"},{"line_number":722,"context_line":"        if trust_id:"},{"line_number":723,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"da20952f_cde0a9fd","line":721,"updated":"2015-09-01 15:00:57.000000000","message":"if you don\u0027t want to make BasePRovider._rebuild_federated_info()  @abc.abstractmethod or make it raise NotImplemented() when called BaseProvider\u0027s version at least put a comment that this method doesn\u0027t belond in here. Otherwise developers implementing this will first end with confusion and this frustrating \"hmmm, i wonder where is it called and why not here\" + grepping of the codebase will begin.","commit_id":"c47111927647dc85b05f9fd94c7b96a22b5c6426"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d35ccbee865008e62c446bdf9acd8878ead6e341","unresolved":false,"context_lines":[{"line_number":718,"context_line":"            if project_id or domain_id:"},{"line_number":719,"context_line":"                self._rebuild_federated_token_roles(token_dict, federated_info,"},{"line_number":720,"context_line":"                                                    user_id, project_id,"},{"line_number":721,"context_line":"                                                    domain_id)"},{"line_number":722,"context_line":"        if trust_id:"},{"line_number":723,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"da20952f_04d400bb","line":721,"in_reply_to":"da20952f_cde0a9fd","updated":"2015-09-02 15:48:45.000000000","message":"Done","commit_id":"c47111927647dc85b05f9fd94c7b96a22b5c6426"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d4e5f44010fb140065607eb0f1e9de1137e22ec3","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":708,"context_line":"                    self.token_formatter.validate_token(token_id))"},{"line_number":709,"context_line":"        except exception.ValidationError as e:"},{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        token_dict \u003d None"},{"line_number":713,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_2bb3830b","line":710,"updated":"2015-09-17 19:53:57.000000000","message":"The argument to TokenNotFound is token_id","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"aba07596c5ca97a891b0f9e1cf274f4d4e41ee5f","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":708,"context_line":"                    self.token_formatter.validate_token(token_id))"},{"line_number":709,"context_line":"        except exception.ValidationError as e:"},{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        token_dict \u003d None"},{"line_number":713,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a1a9d01_99f50e85","line":710,"in_reply_to":"ba15a1d1_2bb3830b","updated":"2015-09-24 17:04:43.000000000","message":"Done","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1acccbaaac27d279ccbd8ee6d63a1fc2314dde07","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":708,"context_line":"                    self.token_formatter.validate_token(token_id))"},{"line_number":709,"context_line":"        except exception.ValidationError as e:"},{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        token_dict \u003d None"},{"line_number":713,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_6b7c1bec","line":710,"in_reply_to":"ba15a1d1_2bb3830b","updated":"2015-09-17 20:00:14.000000000","message":"meant to update this with (unrelated) -- it\u0027s in the original code which this is just moving around.","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d4e5f44010fb140065607eb0f1e9de1137e22ec3","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        token_dict \u003d None"},{"line_number":713,"context_line":"        trust_ref \u003d None"},{"line_number":714,"context_line":"        if federated_info:"},{"line_number":715,"context_line":"            # NOTE(lbragstad): We need to rebuild information about the"},{"line_number":716,"context_line":"            # federated token as well as the federated token roles. This is"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_cb99a77a","line":713,"updated":"2015-09-17 19:53:57.000000000","message":"(unrelated) move trust_ref down to before it\u0027s used, right before line 727","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"aba07596c5ca97a891b0f9e1cf274f4d4e41ee5f","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        token_dict \u003d None"},{"line_number":713,"context_line":"        trust_ref \u003d None"},{"line_number":714,"context_line":"        if federated_info:"},{"line_number":715,"context_line":"            # NOTE(lbragstad): We need to rebuild information about the"},{"line_number":716,"context_line":"            # federated token as well as the federated token roles. This is"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a1a9d01_79f83a7d","line":713,"in_reply_to":"ba15a1d1_cb99a77a","updated":"2015-09-24 17:04:43.000000000","message":"Done","commit_id":"757a6802020fd1e1bbbbd6d3151873f664d93995"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"575193b3471c143f51e17d2b14f8af3795cd73be","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        try:"},{"line_number":706,"context_line":"            (user_id, methods, audit_ids, domain_id, project_id, trust_id,"},{"line_number":707,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":708,"context_line":"                    self.token_formatter.validate_token(token_id))"},{"line_number":709,"context_line":"        except exception.ValidationError as e:"},{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9a1a9d01_18048fc4","line":708,"updated":"2015-10-01 19:02:15.000000000","message":"what is self.token_formatter supposed to be? This class is supposed to be for all token providers and not all token providers have a token_formatter.","commit_id":"94fb7c27f74ceae8cb139c82e8dc33e767419196"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b2946c9f221305b502b621eea3901bbe522f4fce","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        try:"},{"line_number":706,"context_line":"            (user_id, methods, audit_ids, domain_id, project_id, trust_id,"},{"line_number":707,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":708,"context_line":"                    self.token_formatter.validate_token(token_id))"},{"line_number":709,"context_line":"        except exception.ValidationError as e:"},{"line_number":710,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9a1a9d01_bf73e9b3","line":708,"in_reply_to":"9a1a9d01_18048fc4","updated":"2015-10-02 13:14:52.000000000","message":"At this point, this is specific to non-persistent tokens.","commit_id":"94fb7c27f74ceae8cb139c82e8dc33e767419196"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"0f208ee906455d499484c47313b29f3f97be75d6","unresolved":false,"context_lines":[{"line_number":727,"context_line":"            if project_id or domain_id:"},{"line_number":728,"context_line":"                self._rebuild_federated_token_roles(token_dict, federated_info,"},{"line_number":729,"context_line":"                                                    user_id, project_id,"},{"line_number":730,"context_line":"                                                    domain_id)"},{"line_number":731,"context_line":"        if trust_id:"},{"line_number":732,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":733,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"7a5de9d1_d8568f29","line":730,"updated":"2016-01-29 17:35:50.000000000","message":"It does not necessary do the same thing as line 755 here?\n\ntrust_id \u003d token_ref.get(\u0027trust_id\u0027)","commit_id":"e7e70a57be83d6ad063c23a2e9978a42034fea05"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"861be098dfe1b32ac3a8174b107a754a3dfb25f1","unresolved":false,"context_lines":[{"line_number":678,"context_line":"            token_id \u003d token_ref[\u0027token_data\u0027][\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"},{"line_number":679,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    def validate_non_persistent_token(self, token_id):"},{"line_number":682,"context_line":"        try:"},{"line_number":683,"context_line":"            (user_id, methods, audit_ids, domain_id, project_id, trust_id,"},{"line_number":684,"context_line":"                federated_info, created_at, expires_at) \u003d ("}],"source_content_type":"text/x-python","patch_set":35,"id":"5a5ae5dd_f45f2f0c","line":681,"updated":"2016-02-03 22:29:26.000000000","message":"YESSSSSSSS$$$$$!!!","commit_id":"f9bdfecf6831b45a4030e2c234f9e52da59e2cdd"}],"keystone/token/providers/fernet/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b127f5977a39d1428f4ad1587fa129e0d1f2d143","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":241,"context_line":"                    self.token_formatter.validate_token(token))"},{"line_number":242,"context_line":"        except exception.ValidationError as e:"},{"line_number":243,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        token_dict \u003d None"},{"line_number":246,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da20952f_4a9bdac9","side":"PARENT","line":243,"updated":"2015-09-02 17:45:40.000000000","message":"This should be carried over into the BaseProvider, too.","commit_id":"ada038534236293fb73aed9d4e38b812950967ac"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8d4f751e00f5d5a466849bc7e92e2a37dacaad07","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                federated_info, created_at, expires_at) \u003d ("},{"line_number":244,"context_line":"                    self.token_formatter.validate_token(token))"},{"line_number":245,"context_line":"        except exception.ValidationError as e:"},{"line_number":246,"context_line":"            raise exception.TokenNotFound(e)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        token_dict \u003d None"},{"line_number":249,"context_line":"        trust_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_5502940c","side":"PARENT","line":246,"updated":"2015-09-15 12:30:40.000000000","message":"this got lost moving over to the BaseProvider. Not sure how because I applied this in another patch? \n\nNew patch on the way with this in the BaseProvider, which should address the failing tests...","commit_id":"da1d4936465a63c99df08bf0b3a6ad9c950b8bef"}]}
