)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4788e2a6725ea6286469536d69a919ed92ae292c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove unused statements in matches"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With recent changes in list_events in the sql backend there is no"},{"line_number":10,"context_line":"longer a need to use repetitive statements. list_events already prunes"},{"line_number":11,"context_line":"out rows based off user_id, project_id, audit_id and issued_at so we"},{"line_number":12,"context_line":"can remove these subsequent statements in matches."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa6399be_9854f854","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":19},"updated":"2016-10-20 05:09:02.000000000","message":"reference the changes please (either the change id or commit id) -- i\u0027m assuming you are referring to https://github.com/openstack/keystone/commit/9e84371461831880ce5736e9888c7d9648e3a77b","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b85d04d8c0ffe6979aa059c69f79dbe8651e7f1c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove unused statements in matches"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With recent changes in list_events in the sql backend there is no"},{"line_number":10,"context_line":"longer a need to use repetitive statements. list_events already prunes"},{"line_number":11,"context_line":"out rows based off user_id, project_id, audit_id and issued_at so we"},{"line_number":12,"context_line":"can remove these subsequent statements in matches."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa6399be_72372aff","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":19},"in_reply_to":"fa6399be_9854f854","updated":"2016-10-20 15:56:27.000000000","message":"Done","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6494a89d82261e519187abf329625db1d5c77bec","unresolved":false,"context_lines":[{"line_number":10,"context_line":"longer a need to use repetitive statements. list_events already prunes"},{"line_number":11,"context_line":"out rows based off user_id, project_id, audit_id and issued_at so we"},{"line_number":12,"context_line":"can remove these subsequent statements in matches."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ib76a14428f46b8b6669c412764de22faf1ac2e3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa6399be_1831c80b","line":13,"updated":"2016-10-20 05:09:55.000000000","message":"since this cleans up a previous fix, let\u0027s add:\n\n  Related-Bug: 1524030\n\nto the commit message","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b85d04d8c0ffe6979aa059c69f79dbe8651e7f1c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"longer a need to use repetitive statements. list_events already prunes"},{"line_number":11,"context_line":"out rows based off user_id, project_id, audit_id and issued_at so we"},{"line_number":12,"context_line":"can remove these subsequent statements in matches."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ib76a14428f46b8b6669c412764de22faf1ac2e3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa6399be_92383ef0","line":13,"in_reply_to":"fa6399be_1831c80b","updated":"2016-10-20 15:56:27.000000000","message":"Done","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de74a5472d683e1e88ed0a1c08aac94f414d9331","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove unused statements in matches"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With recent changes"},{"line_number":10,"context_line":"(Change-Id: 9e84371461831880ce5736e9888c7d9648e3a77b)"},{"line_number":11,"context_line":"in list_events in the sql backend there is no longer a need to use"},{"line_number":12,"context_line":"repetitive statements. list_events already prunes out rows based"},{"line_number":13,"context_line":"off user_id, project_id, audit_id and issued_at so we can remove these"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba5da102_17fe0037","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":53},"updated":"2016-11-01 00:39:46.000000000","message":"nit, but for future patches, make this a footnote:\n\n\n  With recent changes [1], in list_events..\n\n\n  [1] 9e84371461831880ce5736e9888c7d9648e3a77b","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"46ccac37ddaba4a604ddcee7cd9b583e2504e26e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove unused statements in matches"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With recent changes"},{"line_number":10,"context_line":"(Change-Id: 9e84371461831880ce5736e9888c7d9648e3a77b)"},{"line_number":11,"context_line":"in list_events in the sql backend there is no longer a need to use"},{"line_number":12,"context_line":"repetitive statements. list_events already prunes out rows based"},{"line_number":13,"context_line":"off user_id, project_id, audit_id and issued_at so we can remove these"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba5da102_72f1f500","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":53},"in_reply_to":"ba5da102_17fe0037","updated":"2016-11-01 14:56:00.000000000","message":"Done","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"}],"keystone/tests/unit/test_revoke.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4788e2a6725ea6286469536d69a919ed92ae292c","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class RevokeTests(object):"},{"line_number":116,"context_line":"    def _assertTokenRevoked(self, token_data, events\u003dNone):"},{"line_number":117,"context_line":"        backend \u003d sql.Revoke()"},{"line_number":118,"context_line":"        if events:"},{"line_number":119,"context_line":"            self.assertTrue(revoke_model.is_revoked(events, token_data),"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_58442073","line":116,"range":{"start_line":116,"start_character":28,"end_line":116,"end_character":59},"updated":"2016-10-20 05:09:02.000000000","message":"rather than flip everything around, why not just pass in events\u003dNone if you only want to check if the token is revoked. you already check if events is not null on line 118\n\nand it\u0027ll save you the hassle of changing 100+ lines","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b85d04d8c0ffe6979aa059c69f79dbe8651e7f1c","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class RevokeTests(object):"},{"line_number":116,"context_line":"    def _assertTokenRevoked(self, token_data, events\u003dNone):"},{"line_number":117,"context_line":"        backend \u003d sql.Revoke()"},{"line_number":118,"context_line":"        if events:"},{"line_number":119,"context_line":"            self.assertTrue(revoke_model.is_revoked(events, token_data),"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_d22636cd","line":116,"range":{"start_line":116,"start_character":28,"end_line":116,"end_character":59},"in_reply_to":"fa6399be_58442073","updated":"2016-10-20 15:56:27.000000000","message":"Done","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4788e2a6725ea6286469536d69a919ed92ae292c","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # are going to assert that the token values match the only revocation"},{"line_number":157,"context_line":"        # event in the backend."},{"line_number":158,"context_line":"        first_token \u003d _sample_blank_token()"},{"line_number":159,"context_line":"        first_token[\u0027user_id\u0027] \u003d _new_id()"},{"line_number":160,"context_line":"        add_event("},{"line_number":161,"context_line":"            events, revoke_model.RevokeEvent(user_id\u003dfirst_token[\u0027user_id\u0027])"},{"line_number":162,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_38ca0c1b","line":159,"range":{"start_line":159,"start_character":33,"end_line":159,"end_character":42},"updated":"2016-10-20 05:09:02.000000000","message":"undo this change, it\u0027s unrelated and does the exact same thing (goes for all the other changes of uuid -\u003e new_id)\n\nas a review its much easier to review small focused changes one at a time. \n\n(for the record, i\u0027d be totally OK with a separate patch to get rid of new_id() and just use uuid.uuid4().hex instead)","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b85d04d8c0ffe6979aa059c69f79dbe8651e7f1c","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # are going to assert that the token values match the only revocation"},{"line_number":157,"context_line":"        # event in the backend."},{"line_number":158,"context_line":"        first_token \u003d _sample_blank_token()"},{"line_number":159,"context_line":"        first_token[\u0027user_id\u0027] \u003d _new_id()"},{"line_number":160,"context_line":"        add_event("},{"line_number":161,"context_line":"            events, revoke_model.RevokeEvent(user_id\u003dfirst_token[\u0027user_id\u0027])"},{"line_number":162,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_f2233abb","line":159,"range":{"start_line":159,"start_character":33,"end_line":159,"end_character":42},"in_reply_to":"fa6399be_38ca0c1b","updated":"2016-10-20 15:56:27.000000000","message":"Done","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4788e2a6725ea6286469536d69a919ed92ae292c","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        token[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":370,"context_line":"        token[\u0027audit_chain_id\u0027] \u003d token[\u0027audit_id\u0027]"},{"line_number":371,"context_line":"        self.revoke_api.revoke_by_audit_id(audit_id\u003dtoken[\u0027audit_id\u0027])"},{"line_number":372,"context_line":"        self._assertTokenRevoked(token)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        token2 \u003d _sample_blank_token()"},{"line_number":375,"context_line":"        token2[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_987798d3","line":372,"range":{"start_line":372,"start_character":13,"end_line":372,"end_character":39},"updated":"2016-10-20 05:09:02.000000000","message":"pass in (events\u003dNone, token) instead?","commit_id":"45ba471c0820cabf82d5354b6d0b7f4ec396265a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de74a5472d683e1e88ed0a1c08aac94f414d9331","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        second_token[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":265,"context_line":"        add_event(events, revoke_model.RevokeEvent("},{"line_number":266,"context_line":"            audit_id\u003dsecond_token[\u0027audit_id\u0027]))"},{"line_number":267,"context_line":"        self.revoke_api.revoke_by_audit_id(audit_id\u003dsecond_token[\u0027audit_id\u0027])"},{"line_number":268,"context_line":"        self._assertTokenRevoked(events, second_token)"},{"line_number":269,"context_line":"        self.assertEqual("},{"line_number":270,"context_line":"            1, len(revocation_backend.list_events(token\u003dsecond_token)))"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_915b0087","line":267,"range":{"start_line":267,"start_character":8,"end_line":267,"end_character":77},"updated":"2016-11-01 00:39:46.000000000","message":"this is not related","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"f45c7dc4a7498d21c5c8d2b98c5251e167b4eb96","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        second_token[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":265,"context_line":"        add_event(events, revoke_model.RevokeEvent("},{"line_number":266,"context_line":"            audit_id\u003dsecond_token[\u0027audit_id\u0027]))"},{"line_number":267,"context_line":"        self.revoke_api.revoke_by_audit_id(audit_id\u003dsecond_token[\u0027audit_id\u0027])"},{"line_number":268,"context_line":"        self._assertTokenRevoked(events, second_token)"},{"line_number":269,"context_line":"        self.assertEqual("},{"line_number":270,"context_line":"            1, len(revocation_backend.list_events(token\u003dsecond_token)))"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_920cc93c","line":267,"range":{"start_line":267,"start_character":8,"end_line":267,"end_character":77},"in_reply_to":"ba5da102_915b0087","updated":"2016-11-01 14:55:41.000000000","message":"Done","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de74a5472d683e1e88ed0a1c08aac94f414d9331","unresolved":false,"context_lines":[{"line_number":358,"context_line":"    def test_revoke_by_user_matches_trustor(self):"},{"line_number":359,"context_line":"        self._user_field_test(\u0027trustor_id\u0027)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def test_revoke_by_audit_id(self):"},{"line_number":362,"context_line":"        token \u003d _sample_blank_token()"},{"line_number":363,"context_line":"        # Audit ID and Audit Chain ID are populated with the same value"},{"line_number":364,"context_line":"        # if the token is an original token"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_d703a840","line":361,"range":{"start_line":361,"start_character":8,"end_line":361,"end_character":31},"updated":"2016-11-01 00:39:46.000000000","message":"missing the last 2 steps here:\n\n  self.remove_event(event)\n  self._assertTokenNotRevoked(token_data_1)","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"f45c7dc4a7498d21c5c8d2b98c5251e167b4eb96","unresolved":false,"context_lines":[{"line_number":358,"context_line":"    def test_revoke_by_user_matches_trustor(self):"},{"line_number":359,"context_line":"        self._user_field_test(\u0027trustor_id\u0027)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def test_revoke_by_audit_id(self):"},{"line_number":362,"context_line":"        token \u003d _sample_blank_token()"},{"line_number":363,"context_line":"        # Audit ID and Audit Chain ID are populated with the same value"},{"line_number":364,"context_line":"        # if the token is an original token"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_f2498561","line":361,"range":{"start_line":361,"start_character":8,"end_line":361,"end_character":31},"in_reply_to":"ba5da102_d703a840","updated":"2016-11-01 14:55:41.000000000","message":"I edited the commit message to expand on this. Since we are testing list_events directly in assertToken private methods, and the methods no use the events python list instead of the method list_events, we no longer need to use remove_event etc to keep track of events in a list since we are testing the functionality of list_events","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de74a5472d683e1e88ed0a1c08aac94f414d9331","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        token \u003d _sample_blank_token()"},{"line_number":363,"context_line":"        # Audit ID and Audit Chain ID are populated with the same value"},{"line_number":364,"context_line":"        # if the token is an original token"},{"line_number":365,"context_line":"        token[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":366,"context_line":"        token[\u0027audit_chain_id\u0027] \u003d token[\u0027audit_id\u0027]"},{"line_number":367,"context_line":"        self.revoke_api.revoke_by_audit_id(audit_id\u003dtoken[\u0027audit_id\u0027])"},{"line_number":368,"context_line":"        self._assertTokenRevoked(None, token)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_17e7e0b0","line":365,"range":{"start_line":365,"start_character":28,"end_line":365,"end_character":55},"updated":"2016-11-01 00:39:46.000000000","message":"this is not usually an audit id, maybe a uuid instead?","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"f45c7dc4a7498d21c5c8d2b98c5251e167b4eb96","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        token \u003d _sample_blank_token()"},{"line_number":363,"context_line":"        # Audit ID and Audit Chain ID are populated with the same value"},{"line_number":364,"context_line":"        # if the token is an original token"},{"line_number":365,"context_line":"        token[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":366,"context_line":"        token[\u0027audit_chain_id\u0027] \u003d token[\u0027audit_id\u0027]"},{"line_number":367,"context_line":"        self.revoke_api.revoke_by_audit_id(audit_id\u003dtoken[\u0027audit_id\u0027])"},{"line_number":368,"context_line":"        self._assertTokenRevoked(None, token)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_2fdf1a0e","line":365,"range":{"start_line":365,"start_character":28,"end_line":365,"end_character":55},"in_reply_to":"ba5da102_17e7e0b0","updated":"2016-11-01 14:55:41.000000000","message":"Done, \nThe reason it was random_urlsafe_str() was due to lances comment in an earlier review \nhttps://review.openstack.org/#/c/382107/16/keystone/tests/unit/test_revoke.py\nand in another merged review done by someone else common was imported and replaced provider to end up with common.random_urlsafe_str()","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de74a5472d683e1e88ed0a1c08aac94f414d9331","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        self._assertTokenRevoked(None, token)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        token2 \u003d _sample_blank_token()"},{"line_number":371,"context_line":"        token2[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":372,"context_line":"        token2[\u0027audit_chain_id\u0027] \u003d token2[\u0027audit_id\u0027]"},{"line_number":373,"context_line":"        self._assertTokenNotRevoked(None, token2)"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_57ef9886","line":371,"range":{"start_line":371,"start_character":36,"end_line":371,"end_character":54},"updated":"2016-11-01 00:39:46.000000000","message":"same","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"f45c7dc4a7498d21c5c8d2b98c5251e167b4eb96","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        self._assertTokenRevoked(None, token)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        token2 \u003d _sample_blank_token()"},{"line_number":371,"context_line":"        token2[\u0027audit_id\u0027] \u003d common.random_urlsafe_str()"},{"line_number":372,"context_line":"        token2[\u0027audit_chain_id\u0027] \u003d token2[\u0027audit_id\u0027]"},{"line_number":373,"context_line":"        self._assertTokenNotRevoked(None, token2)"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_4fe44ee0","line":371,"range":{"start_line":371,"start_character":36,"end_line":371,"end_character":54},"in_reply_to":"ba5da102_57ef9886","updated":"2016-11-01 14:55:41.000000000","message":"Done","commit_id":"076d3d3afd3b4251674d280d236f87716520a1ba"}]}
