)]}'
{"keystone/contrib/revoke/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                              domain_id\u003ddomain_id,"},{"line_number":148,"context_line":"                              project_id\u003dproject_id))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def revoke_by_audit_id(self, audit_id, user_id\u003dNone, project_id\u003dNone,"},{"line_number":151,"context_line":"                           domain_id\u003dNone):"},{"line_number":152,"context_line":"        self.revoke("},{"line_number":153,"context_line":"            model.RevokeEvent(audit_id\u003daudit_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_41b5777c","line":150,"updated":"2014-08-21 01:15:50.000000000","message":"this is only called with audit_id, so remove the extra parameters.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                              domain_id\u003ddomain_id,"},{"line_number":148,"context_line":"                              project_id\u003dproject_id))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def revoke_by_audit_id(self, audit_id, user_id\u003dNone, project_id\u003dNone,"},{"line_number":151,"context_line":"                           domain_id\u003dNone):"},{"line_number":152,"context_line":"        self.revoke("},{"line_number":153,"context_line":"            model.RevokeEvent(audit_id\u003daudit_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_d7f78557","line":150,"in_reply_to":"1abeadc6_41b5777c","updated":"2014-08-21 02:24:15.000000000","message":"done in next","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def revoke_by_audit_chain_id(self, audit_chain_id, project_id\u003dNone,"},{"line_number":159,"context_line":"                                 domain_id\u003dNone):"},{"line_number":160,"context_line":"        self.revoke(model.RevokeEvent(audit_chain_id\u003daudit_chain_id,"},{"line_number":161,"context_line":"                                      domain_id\u003ddomain_id,"},{"line_number":162,"context_line":"                                      project_id\u003dproject_id))"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_d45063d6","line":160,"updated":"2014-08-21 01:15:50.000000000","message":"this isn\u0027t tested.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c6273f8d7052509d7a62f361bd740d463473ecb7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @versionutils.deprecated(as_of\u003dversionutils.deprecated.JUNO,"},{"line_number":133,"context_line":"                             remove_in\u003d0)"},{"line_number":134,"context_line":"    def revoke_by_expiration(self, user_id, expires_at,"},{"line_number":135,"context_line":"                             domain_id\u003dNone, project_id\u003dNone):"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_06d148cd","line":133,"updated":"2014-08-25 20:55:06.000000000","message":"remove in juno?","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"0c7228f3194269c286dbe868ec0cc36d3033f479","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @versionutils.deprecated(as_of\u003dversionutils.deprecated.JUNO,"},{"line_number":133,"context_line":"                             remove_in\u003d0)"},{"line_number":134,"context_line":"    def revoke_by_expiration(self, user_id, expires_at,"},{"line_number":135,"context_line":"                             domain_id\u003dNone, project_id\u003dNone):"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_ec16eba6","line":133,"in_reply_to":"1abeadc6_06d148cd","updated":"2014-08-25 21:28:06.000000000","message":"remove_in\u003d0 means not slated for removal, it\u0027s a new functionality added to @versionutils (which is why i had an oslo sync in the chain)","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed1111c53623c8f94d390ab96f11a1c5f4da8632","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @versionutils.deprecated(as_of\u003dversionutils.deprecated.JUNO,"},{"line_number":133,"context_line":"                             remove_in\u003d0)"},{"line_number":134,"context_line":"    def revoke_by_expiration(self, user_id, expires_at,"},{"line_number":135,"context_line":"                             domain_id\u003dNone, project_id\u003dNone):"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_eada2fe8","line":133,"in_reply_to":"1abeadc6_b430b508","updated":"2014-08-26 14:14:14.000000000","message":"yeah, that\u0027s just wrong. remove never \u003d None","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @versionutils.deprecated(as_of\u003dversionutils.deprecated.JUNO,"},{"line_number":133,"context_line":"                             remove_in\u003d0)"},{"line_number":134,"context_line":"    def revoke_by_expiration(self, user_id, expires_at,"},{"line_number":135,"context_line":"                             domain_id\u003dNone, project_id\u003dNone):"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_b430b508","line":133,"in_reply_to":"1abeadc6_ec16eba6","updated":"2014-08-26 01:24:53.000000000","message":"this is a terrible UX.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"}],"keystone/contrib/revoke/migrate_repo/versions/002_add_audit_id_and_chain_to_revoke_table.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4a66e0afa8f4052254ccb94c4bc8636aa18fcfad","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sqlalchemy as sql"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"_TABLE_NAME \u003d \u0027revocation_event\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_0cd586b8","line":14,"updated":"2014-08-20 16:48:11.000000000","message":"(nit) should be an extra newline here.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"639f85fbc6d38d35065b57f2858c00aa5e1f30ff","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sqlalchemy as sql"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"_TABLE_NAME \u003d \u0027revocation_event\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_8a496962","line":14,"in_reply_to":"1abeadc6_0cd586b8","updated":"2014-08-20 23:00:26.000000000","message":"done in next patch if required.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def downgrade(migrate_engine):"},{"line_number":31,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":32,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    event_table \u003d sql.Table(_TABLE_NAME, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_744dcf3d","line":31,"updated":"2014-08-21 01:15:50.000000000","message":"this isn\u0027t tested.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def downgrade(migrate_engine):"},{"line_number":32,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":33,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    event_table \u003d sql.Table(_TABLE_NAME, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_af81404f","line":32,"updated":"2014-08-26 01:24:53.000000000","message":"this isn\u0027t tested.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"}],"keystone/contrib/revoke/model.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                \u0027domain_scope_id\u0027,"},{"line_number":90,"context_line":"                \u0027project_id\u0027,"},{"line_number":91,"context_line":"                \u0027audit_id\u0027,"},{"line_number":92,"context_line":"                \u0027audit_chain_id\u0027"},{"line_number":93,"context_line":"                ]"},{"line_number":94,"context_line":"        event \u003d dict((key, self.__dict__[key]) for key in keys"},{"line_number":95,"context_line":"                     if self.__dict__[key] is not None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_81794fca","line":92,"updated":"2014-08-21 01:15:50.000000000","message":"leave the , on the last element so it\u0027s easier to change.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                \u0027domain_scope_id\u0027,"},{"line_number":90,"context_line":"                \u0027project_id\u0027,"},{"line_number":91,"context_line":"                \u0027audit_id\u0027,"},{"line_number":92,"context_line":"                \u0027audit_chain_id\u0027"},{"line_number":93,"context_line":"                ]"},{"line_number":94,"context_line":"        event \u003d dict((key, self.__dict__[key]) for key in keys"},{"line_number":95,"context_line":"                     if self.__dict__[key] is not None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_37e7d9ad","line":92,"in_reply_to":"1abeadc6_81794fca","updated":"2014-08-21 02:24:15.000000000","message":"done in next","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"          \u0027domain_id\u0027,"},{"line_number":25,"context_line":"          \u0027project_id\u0027,"},{"line_number":26,"context_line":"          \u0027user_id\u0027,"},{"line_number":27,"context_line":"          \u0027role_id\u0027,"},{"line_number":28,"context_line":"          ]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_cf511c10","line":27,"updated":"2014-08-26 01:24:53.000000000","message":"revert this change it\u0027s unrelated.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":24,"context_line":"          \u0027domain_id\u0027,"},{"line_number":25,"context_line":"          \u0027project_id\u0027,"},{"line_number":26,"context_line":"          \u0027user_id\u0027,"},{"line_number":27,"context_line":"          \u0027role_id\u0027,"},{"line_number":28,"context_line":"          ]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_8940ff36","line":27,"in_reply_to":"1abeadc6_cf511c10","updated":"2014-08-26 04:03:07.000000000","message":"Done","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                \u0027domain_scope_id\u0027,"},{"line_number":91,"context_line":"                \u0027project_id\u0027,"},{"line_number":92,"context_line":"                \u0027audit_id\u0027,"},{"line_number":93,"context_line":"                \u0027audit_chain_id\u0027"},{"line_number":94,"context_line":"                ]"},{"line_number":95,"context_line":"        event \u003d dict((key, self.__dict__[key]) for key in keys"},{"line_number":96,"context_line":"                     if self.__dict__[key] is not None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_742e1da7","line":93,"updated":"2014-08-26 01:24:53.000000000","message":"leave the , on the last element so it\u0027s easier to change.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                \u0027domain_scope_id\u0027,"},{"line_number":91,"context_line":"                \u0027project_id\u0027,"},{"line_number":92,"context_line":"                \u0027audit_id\u0027,"},{"line_number":93,"context_line":"                \u0027audit_chain_id\u0027"},{"line_number":94,"context_line":"                ]"},{"line_number":95,"context_line":"        event \u003d dict((key, self.__dict__[key]) for key in keys"},{"line_number":96,"context_line":"                     if self.__dict__[key] is not None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_a93dbbbd","line":93,"in_reply_to":"1abeadc6_742e1da7","updated":"2014-08-26 04:03:07.000000000","message":"Done","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"}],"keystone/models/token_model.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @property"},{"line_number":83,"context_line":"    def audit_chain_id(self):"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            if self.version is V3:"},{"line_number":86,"context_line":"                return self.get(\u0027audit_ids\u0027, [])[-1]"},{"line_number":87,"context_line":"            return self[\u0027token\u0027].get(\u0027audit_ids\u0027, [])[-1]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_014d3f9a","line":84,"updated":"2014-08-21 01:15:50.000000000","message":"revert these changes.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @property"},{"line_number":83,"context_line":"    def audit_chain_id(self):"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            if self.version is V3:"},{"line_number":86,"context_line":"                return self.get(\u0027audit_ids\u0027, [])[-1]"},{"line_number":87,"context_line":"            return self[\u0027token\u0027].get(\u0027audit_ids\u0027, [])[-1]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_d7e06598","line":84,"in_reply_to":"1abeadc6_014d3f9a","updated":"2014-08-21 02:24:15.000000000","message":"Good catch, rebase error it looks like. thanks!","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @property"},{"line_number":83,"context_line":"    def audit_chain_id(self):"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            if self.version is V3:"},{"line_number":86,"context_line":"                return self.get(\u0027audit_ids\u0027, [])[-1]"},{"line_number":87,"context_line":"            return self[\u0027token\u0027].get(\u0027audit_ids\u0027, [])[-1]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_6f4ac856","line":84,"updated":"2014-08-26 01:24:53.000000000","message":"revert the changes in this file.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @property"},{"line_number":83,"context_line":"    def audit_chain_id(self):"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            if self.version is V3:"},{"line_number":86,"context_line":"                return self.get(\u0027audit_ids\u0027, [])[-1]"},{"line_number":87,"context_line":"            return self[\u0027token\u0027].get(\u0027audit_ids\u0027, [])[-1]"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_c94af754","line":84,"in_reply_to":"1abeadc6_6f4ac856","updated":"2014-08-26 04:03:07.000000000","message":"Done","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"}],"keystone/tests/test_auth.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"41315ba3e6b66dcc029670bf13a3bade4be7d282","unresolved":false,"context_lines":[{"line_number":596,"context_line":"                          token_id\u003dtoken_2_id)"},{"line_number":597,"context_line":"        revoke_event \u003d self.revoke_api.get_events()[0].to_dict()"},{"line_number":598,"context_line":"        self.assertIn(\u0027expires_at\u0027, revoke_event)"},{"line_number":599,"context_line":"        self.assertEqual(unscoped_token_2[\u0027access\u0027][\u0027token\u0027][\u0027expires\u0027],"},{"line_number":600,"context_line":"                         revoke_event[\u0027expires_at\u0027])"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_9f8209c7","line":599,"updated":"2014-08-25 14:17:47.000000000","message":"you either introduced a real transient error here and this needs to use asstCloseEnoughForGovernmentWork or there\u0027s a nasty bug somewhere.","commit_id":"f0e699d72e0774b55686269d59f4195465be6ea8"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"20762604fadb17f3a9faf10382df041f7d116b9c","unresolved":false,"context_lines":[{"line_number":596,"context_line":"                          token_id\u003dtoken_2_id)"},{"line_number":597,"context_line":"        revoke_event \u003d self.revoke_api.get_events()[0].to_dict()"},{"line_number":598,"context_line":"        self.assertIn(\u0027expires_at\u0027, revoke_event)"},{"line_number":599,"context_line":"        self.assertEqual(unscoped_token_2[\u0027access\u0027][\u0027token\u0027][\u0027expires\u0027],"},{"line_number":600,"context_line":"                         revoke_event[\u0027expires_at\u0027])"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_33a92925","line":599,"in_reply_to":"1abeadc6_9f8209c7","updated":"2014-08-25 17:34:29.000000000","message":"What I find interesting is that we errored out on this assertEqual, in theory we should have had an issue with the previous assertRaises if this didn\u0027t match.\n\nThis is a weird one.","commit_id":"f0e699d72e0774b55686269d59f4195465be6ea8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":573,"context_line":""},{"line_number":574,"context_line":"        # Test to make sure a non-audit-id parent token revoked will revoke"},{"line_number":575,"context_line":"        # Child tokens with audit ids"},{"line_number":576,"context_line":"        with mock.patch.object(provider, \u0027audit_info\u0027, audit_info):"},{"line_number":577,"context_line":"            # get a token"},{"line_number":578,"context_line":"            body_dict \u003d _build_user_auth(username\u003d\u0027FOO\u0027, password\u003d\u0027foo2\u0027)"},{"line_number":579,"context_line":"            unscoped_token \u003d self.controller.authenticate(context, body_dict)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_2f4a9027","line":576,"updated":"2014-08-26 01:24:53.000000000","message":"why is this a different context and no the same one?","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":573,"context_line":""},{"line_number":574,"context_line":"        # Test to make sure a non-audit-id parent token revoked will revoke"},{"line_number":575,"context_line":"        # Child tokens with audit ids"},{"line_number":576,"context_line":"        with mock.patch.object(provider, \u0027audit_info\u0027, audit_info):"},{"line_number":577,"context_line":"            # get a token"},{"line_number":578,"context_line":"            body_dict \u003d _build_user_auth(username\u003d\u0027FOO\u0027, password\u003d\u0027foo2\u0027)"},{"line_number":579,"context_line":"            unscoped_token \u003d self.controller.authenticate(context, body_dict)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_2a0b5e2c","line":576,"in_reply_to":"1abeadc6_2f4a9027","updated":"2014-08-26 04:03:07.000000000","message":"Changed the test to resolve this.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":580,"context_line":"            token_id \u003d unscoped_token[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"},{"line_number":581,"context_line":"        # get a second token, now with an audit id"},{"line_number":582,"context_line":"        body_dict \u003d _build_user_auth("},{"line_number":583,"context_line":"            token\u003dunscoped_token[\"access\"][\"token\"])"},{"line_number":584,"context_line":"        unscoped_token_2 \u003d self.controller.authenticate(context, body_dict)"},{"line_number":585,"context_line":"        token_2_id \u003d unscoped_token_2[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"},{"line_number":586,"context_line":"        self.assertThat(unscoped_token_2[\u0027access\u0027][\u0027token\u0027][\u0027audit_ids\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_8f51e4da","line":583,"updated":"2014-08-26 01:24:53.000000000","message":"use \u0027 consistently.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d774c72aed1f9f9c32ed17672fe521b7111def17","unresolved":false,"context_lines":[{"line_number":554,"context_line":"            body_dict \u003d _build_user_auth("},{"line_number":555,"context_line":"                token\u003dunscoped_token[\u0027access\u0027][\u0027token\u0027])"},{"line_number":556,"context_line":"            unscoped_token_2 \u003d self.controller.authenticate(context, body_dict)"},{"line_number":557,"context_line":"            token_2_id \u003d unscoped_token_2[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"            self.token_provider_api.revoke_token(token_id, revoke_chain\u003dTrue)"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_0fb6afdc","line":557,"updated":"2014-08-26 05:01:10.000000000","message":"for another time, this code is repeated three times now, you could make a function to just return 2 tokens.","commit_id":"ea185a25a235d339d0d9282fbc08905fa1949b92"}],"keystone/tests/test_sql_upgrade.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        \u0027id\u0027, \u0027domain_id\u0027, \u0027project_id\u0027, \u0027user_id\u0027, \u0027role_id\u0027,"},{"line_number":123,"context_line":"        \u0027trust_id\u0027, \u0027consumer_id\u0027, \u0027access_token_id\u0027,"},{"line_number":124,"context_line":"        \u0027issued_before\u0027, \u0027expires_at\u0027, \u0027revoked_at\u0027, \u0027audit_id\u0027,"},{"line_number":125,"context_line":"        \u0027audit_chain_id\u0027"},{"line_number":126,"context_line":"    ],"},{"line_number":127,"context_line":"}"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_6f02c8b5","line":125,"updated":"2014-08-26 01:24:53.000000000","message":"leave the trailing ,","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        \u0027id\u0027, \u0027domain_id\u0027, \u0027project_id\u0027, \u0027user_id\u0027, \u0027role_id\u0027,"},{"line_number":123,"context_line":"        \u0027trust_id\u0027, \u0027consumer_id\u0027, \u0027access_token_id\u0027,"},{"line_number":124,"context_line":"        \u0027issued_before\u0027, \u0027expires_at\u0027, \u0027revoked_at\u0027, \u0027audit_id\u0027,"},{"line_number":125,"context_line":"        \u0027audit_chain_id\u0027"},{"line_number":126,"context_line":"    ],"},{"line_number":127,"context_line":"}"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_a964dbe5","line":125,"in_reply_to":"1abeadc6_6f02c8b5","updated":"2014-08-26 04:03:07.000000000","message":"Done, but i generally disagree with the trailing comma nit in lists.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"EXTENSIONS \u003d {\u0027federation\u0027: federation,"},{"line_number":130,"context_line":"              \u0027revoke\u0027: revoke}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"class SqlMigrateBase(tests.SQLDriverOverrides, tests.TestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_2fe61017","line":130,"updated":"2014-08-26 01:24:53.000000000","message":"most of these changes could be split to a separate commit.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            abs_path \u003d migration_helpers.find_migrate_repo(extension)"},{"line_number":1424,"context_line":"            migration.db_version_control(sql.get_engine(), abs_path)"},{"line_number":1425,"context_line":"            version \u003d migration_helpers.get_db_version(extension\u003dname)"},{"line_number":1426,"context_line":"            self.assertEqual(0, version)"},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"    def test_extension_migrated(self):"},{"line_number":1429,"context_line":"        \"\"\"When get the version after migrating an extension, it\u0027s not 0.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_6f19e821","line":1426,"updated":"2014-08-26 01:24:53.000000000","message":"put the name of the extension in the failure message so we know which failed.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            abs_path \u003d migration_helpers.find_migrate_repo(extension)"},{"line_number":1424,"context_line":"            migration.db_version_control(sql.get_engine(), abs_path)"},{"line_number":1425,"context_line":"            version \u003d migration_helpers.get_db_version(extension\u003dname)"},{"line_number":1426,"context_line":"            self.assertEqual(0, version)"},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"    def test_extension_migrated(self):"},{"line_number":1429,"context_line":"        \"\"\"When get the version after migrating an extension, it\u0027s not 0.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_29a0cbf3","line":1426,"in_reply_to":"1abeadc6_6f19e821","updated":"2014-08-26 04:03:07.000000000","message":"Done","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"            migration.db_sync(sql.get_engine(), abs_path)"},{"line_number":1434,"context_line":"            version \u003d migration_helpers.get_db_version(extension\u003dname)"},{"line_number":1435,"context_line":"            self.assertTrue(version \u003e 0,"},{"line_number":1436,"context_line":"                            \"Version didn\u0027t change after migrated?\")"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"    def test_extension_downgraded(self):"},{"line_number":1439,"context_line":"        \"\"\"When get the version after downgrading an extension, it is 0.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_8f1644f0","line":1436,"updated":"2014-08-26 01:24:53.000000000","message":"put the name of the extension in the failure message so we know which failed.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"            migration.db_sync(sql.get_engine(), abs_path)"},{"line_number":1434,"context_line":"            version \u003d migration_helpers.get_db_version(extension\u003dname)"},{"line_number":1435,"context_line":"            self.assertTrue(version \u003e 0,"},{"line_number":1436,"context_line":"                            \"Version didn\u0027t change after migrated?\")"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"    def test_extension_downgraded(self):"},{"line_number":1439,"context_line":"        \"\"\"When get the version after downgrading an extension, it is 0.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_49a50703","line":1436,"in_reply_to":"1abeadc6_8f1644f0","updated":"2014-08-26 04:03:07.000000000","message":"Done","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":1442,"context_line":"            migration.db_version_control(sql.get_engine(), abs_path)"},{"line_number":1443,"context_line":"            migration.db_sync(sql.get_engine(), abs_path, version\u003d0)"},{"line_number":1444,"context_line":"            version \u003d migration_helpers.get_db_version(extension\u003dname)"},{"line_number":1445,"context_line":"            self.assertEqual(0, version)"},{"line_number":1446,"context_line":""},{"line_number":1447,"context_line":"    def test_unexpected_extension(self):"},{"line_number":1448,"context_line":"        \"\"\"The version for an extension that doesn\u0027t exist raises ImportError."}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_afd22032","line":1445,"updated":"2014-08-26 01:24:53.000000000","message":"put the name of the extension in the failure message so we know which failed.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":1442,"context_line":"            migration.db_version_control(sql.get_engine(), abs_path)"},{"line_number":1443,"context_line":"            migration.db_sync(sql.get_engine(), abs_path, version\u003d0)"},{"line_number":1444,"context_line":"            version \u003d migration_helpers.get_db_version(extension\u003dname)"},{"line_number":1445,"context_line":"            self.assertEqual(0, version)"},{"line_number":1446,"context_line":""},{"line_number":1447,"context_line":"    def test_unexpected_extension(self):"},{"line_number":1448,"context_line":"        \"\"\"The version for an extension that doesn\u0027t exist raises ImportError."}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_69aac3d5","line":1445,"in_reply_to":"1abeadc6_afd22032","updated":"2014-08-26 04:03:07.000000000","message":"Done","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"}],"keystone/tests/test_v3_auth.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":"from testtools import testcase"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone import auth"},{"line_number":27,"context_line":"from keystone.common import dependency"},{"line_number":28,"context_line":"from keystone import config"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_3408b727","line":25,"updated":"2014-08-21 01:15:50.000000000","message":"revert the whitespace change on the previous line.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":"from testtools import testcase"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone import auth"},{"line_number":27,"context_line":"from keystone.common import dependency"},{"line_number":28,"context_line":"from keystone import config"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_57d535b7","line":25,"in_reply_to":"1abeadc6_3408b727","updated":"2014-08-21 02:24:15.000000000","message":"done in next","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"}],"keystone/tests/unit/token/test_token_model.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        self.assertFalse(token_data.domain_scoped)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        token_data[\u0027token\u0027][\u0027audit_ids\u0027] \u003d [uuid.uuid4().hex]"},{"line_number":184,"context_line":"        self.assertEqual(token_data.audit_id,"},{"line_number":185,"context_line":"                         token_data[\u0027token\u0027][\u0027audit_ids\u0027][0])"},{"line_number":186,"context_line":"        self.assertEqual(token_data.audit_chain_id,"},{"line_number":187,"context_line":"                         token_data[\u0027token\u0027][\u0027audit_ids\u0027][0])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_f4763fa3","line":184,"updated":"2014-08-21 01:15:50.000000000","message":"why is this change here?","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        self.assertFalse(token_data.domain_scoped)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        token_data[\u0027token\u0027][\u0027audit_ids\u0027] \u003d [uuid.uuid4().hex]"},{"line_number":184,"context_line":"        self.assertEqual(token_data.audit_id,"},{"line_number":185,"context_line":"                         token_data[\u0027token\u0027][\u0027audit_ids\u0027][0])"},{"line_number":186,"context_line":"        self.assertEqual(token_data.audit_chain_id,"},{"line_number":187,"context_line":"                         token_data[\u0027token\u0027][\u0027audit_ids\u0027][0])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_37d0b9c8","line":184,"in_reply_to":"1abeadc6_f4763fa3","updated":"2014-08-21 02:24:15.000000000","message":"hm. must have snuck in, will revert.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"}],"keystone/token/provider.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"05a416937aae23768d7e5f6608181b9609226c7e","unresolved":false,"context_lines":[{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def revoke_token(self, token_id, revoke_chain\u003dFalse):"},{"line_number":415,"context_line":"        if self.revoke_api:"},{"line_number":416,"context_line":"            revoke_by_expires \u003d False"},{"line_number":417,"context_line":"            project_id \u003d None"},{"line_number":418,"context_line":"            domain_id \u003d None"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_f4082893","line":416,"updated":"2014-08-20 16:38:28.000000000","message":"This is confusing.  It looks like it is here as a config option, but it really should be removed.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"fa01161cf6fc235364ab6211eb3df87c688bd0f4","unresolved":false,"context_lines":[{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def revoke_token(self, token_id, revoke_chain\u003dFalse):"},{"line_number":415,"context_line":"        if self.revoke_api:"},{"line_number":416,"context_line":"            revoke_by_expires \u003d False"},{"line_number":417,"context_line":"            project_id \u003d None"},{"line_number":418,"context_line":"            domain_id \u003d None"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_628e037b","line":416,"in_reply_to":"1abeadc6_f4082893","updated":"2014-08-20 16:56:07.000000000","message":"Look at lines 435 and 439, this is for compatibility in the case we have lingering tokens (pre upgrade) that do not have audit ids.\n\nIf the general consensus is we can ditch this compatibility it lightens up some other code we can pull out (that handles the compatiblity)","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                domain_id \u003d token_ref.domain_id"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"            if audit_id is None:"},{"line_number":434,"context_line":"                LOG.debug(\u0027Audit ID is None for token %s\u0027, token_id)"},{"line_number":435,"context_line":"                revoke_by_expires \u003d True"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            if audit_chain_id is None:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_b46047d0","line":434,"updated":"2014-08-21 01:15:50.000000000","message":"we can\u0027t log tokens.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                domain_id \u003d token_ref.domain_id"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"            if audit_id is None:"},{"line_number":434,"context_line":"                LOG.debug(\u0027Audit ID is None for token %s\u0027, token_id)"},{"line_number":435,"context_line":"                revoke_by_expires \u003d True"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            if audit_chain_id is None:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_d74945b8","line":434,"in_reply_to":"1abeadc6_b46047d0","updated":"2014-08-21 02:24:15.000000000","message":"Thanks! I\u0027ll figure something else out.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":435,"context_line":"                revoke_by_expires \u003d True"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            if audit_chain_id is None:"},{"line_number":438,"context_line":"                LOG.debug(\u0027Audit Chain ID is None for token %s\u0027, token_id)"},{"line_number":439,"context_line":"                revoke_by_expires \u003d True"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"            if revoke_by_expires:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_f49d5fbd","line":438,"updated":"2014-08-21 01:15:50.000000000","message":"we can\u0027t log tokens.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"040e1cdaf7173aaca6b38d2d6ced7360ab1b5259","unresolved":false,"context_lines":[{"line_number":435,"context_line":"                revoke_by_expires \u003d True"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            if audit_chain_id is None:"},{"line_number":438,"context_line":"                LOG.debug(\u0027Audit Chain ID is None for token %s\u0027, token_id)"},{"line_number":439,"context_line":"                revoke_by_expires \u003d True"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"            if revoke_by_expires:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_17cf3d2b","line":438,"in_reply_to":"1abeadc6_f49d5fbd","updated":"2014-08-21 02:24:15.000000000","message":"same as above","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"05a416937aae23768d7e5f6608181b9609226c7e","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                LOG.debug(\u0027Audit Chain ID is None for token %s\u0027, token_id)"},{"line_number":439,"context_line":"                revoke_by_expires \u003d True"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"            if revoke_by_expires:"},{"line_number":442,"context_line":"                self.revoke_api.revoke_by_expiration(user_id, expires_at,"},{"line_number":443,"context_line":"                                                     project_id\u003dproject_id,"},{"line_number":444,"context_line":"                                                     domain_id\u003ddomain_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_ef24bc61","line":441,"updated":"2014-08-20 16:38:28.000000000","message":"remove this","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":439,"context_line":"                revoke_by_expires \u003d True"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"            if revoke_by_expires:"},{"line_number":442,"context_line":"                self.revoke_api.revoke_by_expiration(user_id, expires_at,"},{"line_number":443,"context_line":"                                                     project_id\u003dproject_id,"},{"line_number":444,"context_line":"                                                     domain_id\u003ddomain_id)"},{"line_number":445,"context_line":"            elif revoke_chain:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_74fb0fc1","line":442,"updated":"2014-08-21 01:15:50.000000000","message":"this isn\u0027t tested.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e23e52ea779948d08de40190538e81eb779a943","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                                                     project_id\u003dproject_id,"},{"line_number":444,"context_line":"                                                     domain_id\u003ddomain_id)"},{"line_number":445,"context_line":"            elif revoke_chain:"},{"line_number":446,"context_line":"                self.revoke_api.revoke_by_audit_chain_id(audit_chain_id,"},{"line_number":447,"context_line":"                                                         project_id\u003dproject_id,"},{"line_number":448,"context_line":"                                                         domain_id\u003ddomain_id)"},{"line_number":449,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_f4071fc8","line":446,"updated":"2014-08-21 01:15:50.000000000","message":"this isn\u0027t tested.","commit_id":"8d7359af9a2546f72d56498b8a4479085a83a033"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                domain_id \u003d token_ref.domain_id"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"            if audit_id is None and not revoke_chain:"},{"line_number":434,"context_line":"                LOG.debug(\u0027Received token with no audit_id.\u0027)"},{"line_number":435,"context_line":"                revoke_by_expires \u003d True"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            if audit_chain_id is None and revoke_chain:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_0ff874e4","line":434,"updated":"2014-08-26 01:24:53.000000000","message":"this case isn\u0027t tested.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05beaf46f72ab997b5b1e2519b1060e201a5219a","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                self.revoke_api.revoke_by_audit_id(audit_id)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        if CONF.token.revoke_by_id:"},{"line_number":453,"context_line":"            self.persistence.delete_token(token_id\u003dtoken_id)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def list_revoked_tokens(self):"},{"line_number":456,"context_line":"        return self.persistence.list_revoked_tokens()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_efb33808","line":453,"updated":"2014-08-26 01:24:53.000000000","message":"doesn\u0027t this have to handle revoke_chain, too?","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"996f6a93d1f4755d4f8e7947bf1b2b80cbe39249","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                self.revoke_api.revoke_by_audit_id(audit_id)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        if CONF.token.revoke_by_id:"},{"line_number":453,"context_line":"            self.persistence.delete_token(token_id\u003dtoken_id)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def list_revoked_tokens(self):"},{"line_number":456,"context_line":"        return self.persistence.list_revoked_tokens()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_a54c0178","line":453,"in_reply_to":"1abeadc6_efb33808","updated":"2014-08-26 04:03:07.000000000","message":"No, deletion of tokens is done explicitly by id. the _list_tokens method is used to find associated tokens via user_id, trust_id, etc. We never utilized expires for the standard Token Revocation List.","commit_id":"16f7d3402460d5e3509d7a56f73ea1ed2267d362"}]}
