)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d47f4c1e918c8b9efad935abbf1611dfd00058ac","unresolved":false,"context_lines":[{"line_number":12,"context_line":"with revoke_model.matches [1] since we already import and use"},{"line_number":13,"context_line":"revoke_model."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]: https://github.com/openstack/keystone/blob/master/keystone/models/revoke_model.py#L151-L208"},{"line_number":16,"context_line":"Change-Id: I0cabf715bf111fe8f0a648840f1c0534c7d3a225"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ffe62b97_401f4607","line":15,"updated":"2017-03-29 17:12:39.000000000","message":"The problem with pointing to master is that it subject to change depending on whatever changes are made to that module after this merges (i.e. someone can refactor things and line 151 is no longer the start of the method). This can be confusing for people later. Instead, we can reference exactly what we mean and guarantee we can find it in the future by using commits to timestamp the link:\n\nhttps://github.com/openstack/keystone/blob/36da6f0c8660968e1ddacab274bace3abd78c0cb/keystone/models/revoke_model.py#L151-L208","commit_id":"d188331e3fd4f7c7e8514df97c0241f5e0759cde"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"714b85576f86e6946737805b88eba5fc598522c4","unresolved":false,"context_lines":[{"line_number":12,"context_line":"with revoke_model.matches [1] since we already import and use"},{"line_number":13,"context_line":"revoke_model."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]: https://github.com/openstack/keystone/blob/master/keystone/models/revoke_model.py#L151-L208"},{"line_number":16,"context_line":"Change-Id: I0cabf715bf111fe8f0a648840f1c0534c7d3a225"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ffe62b97_5bdf3b68","line":15,"in_reply_to":"ffe62b97_401f4607","updated":"2017-03-29 17:29:46.000000000","message":"ah ha i was wondering if there was a way to do this","commit_id":"d188331e3fd4f7c7e8514df97c0241f5e0759cde"}],"keystone/tests/unit/test_revoke.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"42f680861490bc2a48780eb06fdd27ef5095cf62","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    token has been revoked"},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    # The token has three attributes that can match the user_id"},{"line_number":110,"context_line":"    if event.user_id is not None:"},{"line_number":111,"context_line":"        for attribute_name in [\u0027user_id\u0027, \u0027trustor_id\u0027, \u0027trustee_id\u0027]:"},{"line_number":112,"context_line":"            if event.user_id \u003d\u003d token_values[attribute_name]:"},{"line_number":113,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_75eb2e77","side":"PARENT","line":110,"updated":"2017-03-29 17:03:22.000000000","message":"None of this is in the existing function. Should it be? Maybe it wasn\u0027t being used?","commit_id":"3432685a1e387f35e28777c9a42133f3bc145179"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"bc9a30c54dbb765a9787ff4d28541ba76b8a7871","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    token has been revoked"},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    # The token has three attributes that can match the user_id"},{"line_number":110,"context_line":"    if event.user_id is not None:"},{"line_number":111,"context_line":"        for attribute_name in [\u0027user_id\u0027, \u0027trustor_id\u0027, \u0027trustee_id\u0027]:"},{"line_number":112,"context_line":"            if event.user_id \u003d\u003d token_values[attribute_name]:"},{"line_number":113,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_e0c09ae3","side":"PARENT","line":110,"in_reply_to":"ffe62b97_75eb2e77","updated":"2017-03-29 17:19:13.000000000","message":"These and the other fields are being accounted for and tested here: https://github.com/openstack/keystone/blob/master/keystone/tests/unit/test_revoke.py#L161-L163","commit_id":"3432685a1e387f35e28777c9a42133f3bc145179"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"42f680861490bc2a48780eb06fdd27ef5095cf62","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            return False"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    # The token has two attributes that can match the domain_id"},{"line_number":118,"context_line":"    if event.domain_id is not None:"},{"line_number":119,"context_line":"        for attribute_name in [\u0027identity_domain_id\u0027, \u0027assignment_domain_id\u0027]:"},{"line_number":120,"context_line":"            if event.domain_id \u003d\u003d token_values[attribute_name]:"},{"line_number":121,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_558b8ac1","side":"PARENT","line":118,"updated":"2017-03-29 17:03:22.000000000","message":"Same with this","commit_id":"3432685a1e387f35e28777c9a42133f3bc145179"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"42f680861490bc2a48780eb06fdd27ef5095cf62","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    # not match the event. The numerous return False indicate"},{"line_number":131,"context_line":"    # that the token is still valid and short-circuits the"},{"line_number":132,"context_line":"    # rest of the logic."},{"line_number":133,"context_line":"    attribute_names \u003d [\u0027project_id\u0027,"},{"line_number":134,"context_line":"                       \u0027expires_at\u0027, \u0027trust_id\u0027, \u0027consumer_id\u0027,"},{"line_number":135,"context_line":"                       \u0027access_token_id\u0027, \u0027audit_id\u0027, \u0027audit_chain_id\u0027]"},{"line_number":136,"context_line":"    for attribute_name in attribute_names:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_15062221","side":"PARENT","line":133,"updated":"2017-03-29 17:03:22.000000000","message":"Same here","commit_id":"3432685a1e387f35e28777c9a42133f3bc145179"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"42f680861490bc2a48780eb06fdd27ef5095cf62","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                break"},{"line_number":147,"context_line":"        else:"},{"line_number":148,"context_line":"            return False"},{"line_number":149,"context_line":"    if token_values[\u0027issued_at\u0027] \u003e event.issued_before:"},{"line_number":150,"context_line":"        return False"},{"line_number":151,"context_line":"    return True"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_e02ada7c","side":"PARENT","line":149,"updated":"2017-03-29 17:03:22.000000000","message":"Same here","commit_id":"3432685a1e387f35e28777c9a42133f3bc145179"}]}
