)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8404abf40fc54e8f4b0a4e677ac49bf9913e74a3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We need to ensure that tokens won\u0027t stay in cache after they have been"},{"line_number":10,"context_line":"revoked."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1287301"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I14c0eacac3b431c06e40385c891a6636736e5b4a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAVn%2F%2Fcqc%3D","line":12,"updated":"2014-03-06 01:32:15.000000000","message":"that bug doesn\u0027t exist so i\u0027m having some trouble with the context for this fix.","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9f5ffa92530980b10bf72453d3bd9e55bcd425cb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We need to ensure that tokens won\u0027t stay in cache after they have been"},{"line_number":10,"context_line":"revoked."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1287301"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I14c0eacac3b431c06e40385c891a6636736e5b4a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAVn%2F%2FX0M%3D","line":12,"in_reply_to":"AAAAVn%2F%2FaAw%3D","updated":"2014-03-06 15:13:19.000000000","message":"for future reference, patches for private security vulnerabilities should not be submitted publicly through gerrit; instead post them privately to the bug as attachment.","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"01b0510ba8b9643ff197dd23046d14e54a242ab5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We need to ensure that tokens won\u0027t stay in cache after they have been"},{"line_number":10,"context_line":"revoked."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1287301"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I14c0eacac3b431c06e40385c891a6636736e5b4a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAVn%2F%2FaAw%3D","line":12,"in_reply_to":"AAAAVn%2F%2Fcqc%3D","updated":"2014-03-06 09:25:42.000000000","message":"I\u0027ve reported this bug as security vulnerability so it\u0027s invisible for most of the people. I\u0027ve subscribed you on it.","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"72d9358b635bf9715f7395a735eb1cb37784d167","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We need to ensure that tokens won\u0027t stay in cache after they have been"},{"line_number":10,"context_line":"revoked."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1287301"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I14c0eacac3b431c06e40385c891a6636736e5b4a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2FR4U%3D","line":11,"updated":"2014-04-22 19:34:34.000000000","message":"if we\u0027re going to change the default for revocation_cache_time then we\u0027ll have to mention that in the commit message.","commit_id":"9991b2694309ac476fb67eadc4b40ed04eaf784c"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"000e5e00dbe6cc9ffa411b23fbc925212c8ad8bd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We need to ensure that tokens won\u0027t stay in cache after they have been"},{"line_number":10,"context_line":"revoked."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1287301"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I14c0eacac3b431c06e40385c891a6636736e5b4a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2FR2E%3D","line":11,"in_reply_to":"AAAAXH%2F%2FR34%3D","updated":"2014-04-22 19:38:23.000000000","message":"Done","commit_id":"9991b2694309ac476fb67eadc4b40ed04eaf784c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"125389047aaca3445b8d6aa72972cd5a34ca651f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We need to ensure that tokens won\u0027t stay in cache after they have been"},{"line_number":10,"context_line":"revoked."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug #1287301"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I14c0eacac3b431c06e40385c891a6636736e5b4a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2FR34%3D","line":11,"in_reply_to":"AAAAXH%2F%2FR4U%3D","updated":"2014-04-22 19:34:51.000000000","message":"and say why it\u0027s changing.","commit_id":"9991b2694309ac476fb67eadc4b40ed04eaf784c"}],"keystoneclient/middleware/auth_token.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8404abf40fc54e8f4b0a4e677ac49bf9913e74a3","unresolved":false,"context_lines":[{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"},{"line_number":835,"context_line":"                verified \u003d self.verify_signed_token(user_token)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2Fco4%3D","line":832,"updated":"2014-03-06 01:32:15.000000000","message":"hmm, this doesn\u0027t do the _confirm_token_bind check either. There should be a way to rewrite this such that it does the normal checks using the cached data.","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"01b0510ba8b9643ff197dd23046d14e54a242ab5","unresolved":false,"context_lines":[{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"},{"line_number":835,"context_line":"                verified \u003d self.verify_signed_token(user_token)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FaAM%3D","line":832,"in_reply_to":"AAAAVn%2F%2Fco4%3D","updated":"2014-03-06 09:25:42.000000000","message":"We don\u0027t need to check _confirm_token_bind since it\u0027s done before putting token in cache (see line 839). We should only check that token has not been revoked.","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8404abf40fc54e8f4b0a4e677ac49bf9913e74a3","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"        revocation_list \u003d self.token_revocation_list"},{"line_number":1240,"context_line":"        revoked_tokens \u003d revocation_list.get(\u0027revoked\u0027, [])"},{"line_number":1241,"context_line":"        if not revoked_tokens:"},{"line_number":1242,"context_line":"            return False"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"        revoked_ids \u003d (x[\u0027id\u0027] for x in revoked_tokens)"},{"line_number":1245,"context_line":"        return token_id in revoked_ids"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FcpY%3D","line":1242,"updated":"2014-03-06 01:32:15.000000000","message":"if you do this you should probably not get(, []) either use none or let the value fall through","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"01b0510ba8b9643ff197dd23046d14e54a242ab5","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"        revocation_list \u003d self.token_revocation_list"},{"line_number":1240,"context_line":"        revoked_tokens \u003d revocation_list.get(\u0027revoked\u0027, [])"},{"line_number":1241,"context_line":"        if not revoked_tokens:"},{"line_number":1242,"context_line":"            return False"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"        revoked_ids \u003d (x[\u0027id\u0027] for x in revoked_tokens)"},{"line_number":1245,"context_line":"        return token_id in revoked_ids"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FZ%2F0%3D","line":1242,"in_reply_to":"AAAAVn%2F%2FcpY%3D","updated":"2014-03-06 09:25:42.000000000","message":"Empty list will be evaluated to False so it should not affect code logic. I\u0027ll fix this issue in the next patchset","commit_id":"5580a232bcffeffeee316a081edc0b68527e2646"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0e5f2e06c0329a32162da9bee4263c03afe65867","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            if cached:"},{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FTfM%3D","line":831,"updated":"2014-03-06 23:05:46.000000000","message":"a token bind check though is something that should be enforced on the way that a token was connected so should need to be checked every time","commit_id":"19ce17a2b92ea521fb7ea69a76dbb332aa37bc8d"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"c135ebffff6f7d14c047b2521faf0aa0d3ec0f3c","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            if cached:"},{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2F%2FyA%3D","line":831,"in_reply_to":"AAAAVn%2F%2FGBM%3D","updated":"2014-03-12 13:18:30.000000000","message":"I\u0027m sorry but I still fail to understand why it\u0027s needed:\n\nself._confirm_token_bind(data, env)\n\nself._cache_put(token_id, data, expires)\n\nWe confirm token bind before caching token. What exactly can change so we would need to do that again? If there are reasons that require such checks they should be filed as bugs IMHO.","commit_id":"19ce17a2b92ea521fb7ea69a76dbb332aa37bc8d"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5f6912b677c1cf78a3da680efb6b2b4f2e85001d","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            if cached:"},{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FGBM%3D","line":831,"in_reply_to":"AAAAVn%2F%2FPw4%3D","updated":"2014-03-09 22:25:24.000000000","message":"so token bind ensures that the token is used in conjunction with for example a specific client cert. So you need to check that this is used every time you receive the token otherwise you can use that token without the certificate if it is in the cache","commit_id":"19ce17a2b92ea521fb7ea69a76dbb332aa37bc8d"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"e6addddaacc8ed0dc2fd1f8d0a182f8933043803","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            if cached:"},{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FPw4%3D","line":831,"in_reply_to":"AAAAVn%2F%2FTfM%3D","updated":"2014-03-07 09:39:25.000000000","message":"I\u0027m not sure I understand. How token bind can change? I thought that If token bind was confirmed before putting it in cache we should not check it anymore.","commit_id":"19ce17a2b92ea521fb7ea69a76dbb332aa37bc8d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ea77f489f78310e3adb6b6a8b020e3cc58c54f82","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            if cached:"},{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FgcA%3D","line":831,"in_reply_to":"AAAAWH%2F%2F%2BaY%3D","updated":"2014-03-17 13:48:40.000000000","message":"Jamie is saying top move the bind check into this block as well.  LOgic should be:\n\nif cached:\n    revalidate all values that could change between requests.\n\nSO you don\u0027t need to unpack the body of the token again, but you do need to check against the revocation list as well as  the binding and the expiration","commit_id":"19ce17a2b92ea521fb7ea69a76dbb332aa37bc8d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"568e8cfbde109de7c58f635d586a929d257a41fb","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            if cached:"},{"line_number":829,"context_line":"                if self._is_token_id_in_revoked_list(token_id):"},{"line_number":830,"context_line":"                    self._cache_store_invalid(token_id)"},{"line_number":831,"context_line":"                    raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"                return cached"},{"line_number":834,"context_line":"            if cms.is_ans1_token(user_token):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2F%2BaY%3D","line":831,"in_reply_to":"AAAAWH%2F%2F%2FyA%3D","updated":"2014-03-12 15:51:45.000000000","message":"Jamie - this sounds like a different issue -- that auth_token is failing to validate the bind information when the token was cached?","commit_id":"19ce17a2b92ea521fb7ea69a76dbb332aa37bc8d"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f3c2f167d9e7c70fbcc04aaa90371aa70fcb87c","unresolved":false,"context_lines":[{"line_number":271,"context_line":"               \u0027 tokens, the middleware caches previously-seen tokens for a\u0027"},{"line_number":272,"context_line":"               \u0027 configurable duration (in seconds). Set to -1 to disable\u0027"},{"line_number":273,"context_line":"               \u0027 caching completely.\u0027),"},{"line_number":274,"context_line":"    cfg.IntOpt(\u0027revocation_cache_time\u0027,"},{"line_number":275,"context_line":"               default\u003d300,"},{"line_number":276,"context_line":"               help\u003d\u0027Determines the frequency at which the list of revoked\u0027"},{"line_number":277,"context_line":"               \u0027 tokens is retrieved from the Identity service (in seconds). A\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FLxI%3D","line":274,"updated":"2014-03-19 16:39:42.000000000","message":"default revocation_cache_time needs to be much smaller for these changes to be useful. Original default was 1, and the recent change to 300 was not warranted.","commit_id":"9c7073a6e590c7e5dcb532067f2dca3bdf64c595"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f3c2f167d9e7c70fbcc04aaa90371aa70fcb87c","unresolved":false,"context_lines":[{"line_number":816,"context_line":"                \"Unable to parse expiration time from token: %s\", data)"},{"line_number":817,"context_line":"            raise ServiceError(\u0027invalid json response\u0027)"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"    def _validate_user_token(self, user_token, env, retry\u003dTrue):"},{"line_number":820,"context_line":"        \"\"\"Authenticate user using PKI"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"        :param user_token: user\u0027s token id"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FL08%3D","line":819,"updated":"2014-03-19 16:39:42.000000000","message":"this isn\u0027t specific to PKI","commit_id":"9c7073a6e590c7e5dcb532067f2dca3bdf64c595"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f3c2f167d9e7c70fbcc04aaa90371aa70fcb87c","unresolved":false,"context_lines":[{"line_number":833,"context_line":"            cached \u003d self._cache_get(token_id)"},{"line_number":834,"context_line":"            if cached:"},{"line_number":835,"context_line":"                data \u003d cached"},{"line_number":836,"context_line":"            if cms.is_ans1_token(user_token):"},{"line_number":837,"context_line":"                verified \u003d self.verify_signed_token(user_token)"},{"line_number":838,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":839,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FLxU%3D","line":836,"updated":"2014-03-19 16:39:42.000000000","message":"these verify_*_token calls need to be avoided when we have a cached token. Making those calls defeats the purpose of caching.","commit_id":"9c7073a6e590c7e5dcb532067f2dca3bdf64c595"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"4d83cfb54ed091dc5841b51c50fdafb1823dbd41","unresolved":false,"context_lines":[{"line_number":833,"context_line":"            cached \u003d self._cache_get(token_id)"},{"line_number":834,"context_line":"            if cached:"},{"line_number":835,"context_line":"                data \u003d cached"},{"line_number":836,"context_line":"            if cms.is_ans1_token(user_token):"},{"line_number":837,"context_line":"                verified \u003d self.verify_signed_token(user_token)"},{"line_number":838,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":839,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FSEA%3D","line":836,"in_reply_to":"AAAAWH%2F%2FLxU%3D","updated":"2014-04-22 19:08:55.000000000","message":"I agree that such calls should be avoided but I don\u0027t agree that they completely defeat the purpose of cache. It would be slightly less efficient.\n\nI propose to keep it this way to keep existing logic. If it will be safe to remove such calls it can be done in following patch.","commit_id":"9c7073a6e590c7e5dcb532067f2dca3bdf64c595"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7b3d38394f0f13a7d7c70a566c2e74bd2ac2fe78","unresolved":false,"context_lines":[{"line_number":277,"context_line":"               \u0027 configurable duration (in seconds). Set to -1 to disable\u0027"},{"line_number":278,"context_line":"               \u0027 caching completely.\u0027),"},{"line_number":279,"context_line":"    cfg.IntOpt(\u0027revocation_cache_time\u0027,"},{"line_number":280,"context_line":"               default\u003d10,"},{"line_number":281,"context_line":"               help\u003d\u0027Determines the frequency at which the list of revoked\u0027"},{"line_number":282,"context_line":"               \u0027 tokens is retrieved from the Identity service (in seconds). A\u0027"},{"line_number":283,"context_line":"               \u0027 high number of revocation events combined with a low cache\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FSBc%3D","line":280,"updated":"2014-04-22 19:15:37.000000000","message":"I don\u0027t know how this change snuck in there.","commit_id":"f1e62146c0bc64f7f9017864d9ea006206118d21"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"50c46fbcbc9fb374997508c9a76e087c62834f35","unresolved":false,"context_lines":[{"line_number":277,"context_line":"               \u0027 configurable duration (in seconds). Set to -1 to disable\u0027"},{"line_number":278,"context_line":"               \u0027 caching completely.\u0027),"},{"line_number":279,"context_line":"    cfg.IntOpt(\u0027revocation_cache_time\u0027,"},{"line_number":280,"context_line":"               default\u003d10,"},{"line_number":281,"context_line":"               help\u003d\u0027Determines the frequency at which the list of revoked\u0027"},{"line_number":282,"context_line":"               \u0027 tokens is retrieved from the Identity service (in seconds). A\u0027"},{"line_number":283,"context_line":"               \u0027 high number of revocation events combined with a low cache\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FR%2FM%3D","line":280,"in_reply_to":"AAAAXH%2F%2FSBc%3D","updated":"2014-04-22 19:20:16.000000000","message":"ok, it was deliberate... I thought this was a change I snuck in there when resolving the merge conflict.","commit_id":"f1e62146c0bc64f7f9017864d9ea006206118d21"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"12886a21603c4e9c0fec3df4952c0b929ddb1596","unresolved":false,"context_lines":[{"line_number":847,"context_line":"            token_id \u003d cms.cms_hash_token(user_token)"},{"line_number":848,"context_line":"            cached \u003d self._cache_get(token_id)"},{"line_number":849,"context_line":"            if cached:"},{"line_number":850,"context_line":"                data \u003d cached"},{"line_number":851,"context_line":"            if cms.is_asn1_token(user_token):"},{"line_number":852,"context_line":"                verified \u003d self.verify_signed_token(user_token)"},{"line_number":853,"context_line":"                data \u003d jsonutils.loads(verified)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FR%2BA%3D","line":850,"updated":"2014-04-22 19:24:46.000000000","message":"this value isn\u0027t used before it\u0027s overwritten at line 853 or 855, so this should be removed. (or the logic corrected)","commit_id":"f1e62146c0bc64f7f9017864d9ea006206118d21"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"002050ac980a04efcfa17a2d846b4174ceaf38b6","unresolved":false,"context_lines":[{"line_number":847,"context_line":"            token_id \u003d cms.cms_hash_token(user_token)"},{"line_number":848,"context_line":"            cached \u003d self._cache_get(token_id)"},{"line_number":849,"context_line":"            if cached:"},{"line_number":850,"context_line":"                data \u003d cached"},{"line_number":851,"context_line":"            if cms.is_asn1_token(user_token):"},{"line_number":852,"context_line":"                verified \u003d self.verify_signed_token(user_token)"},{"line_number":853,"context_line":"                data \u003d jsonutils.loads(verified)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FR7w%3D","line":850,"in_reply_to":"AAAAXH%2F%2FR%2BA%3D","updated":"2014-04-22 19:26:19.000000000","message":"Done","commit_id":"f1e62146c0bc64f7f9017864d9ea006206118d21"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e2cd733d82b3463a0aaf3dae891ca892b86b4302","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"            return False"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"        revoked_ids \u003d (x[\u0027id\u0027] for x in revoked_tokens)"},{"line_number":1203,"context_line":"        return token_id in revoked_ids"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def cms_verify(self, data):"},{"line_number":1206,"context_line":"        \"\"\"Verifies the signature of the provided data\u0027s IAW CMS syntax."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FRzI%3D","line":1203,"updated":"2014-04-22 19:44:21.000000000","message":"we lost a useful log message -- we need to continue to log that the token was revoked as invalid (see original at line 1195).","commit_id":"8574256f9342faeba2ce64080ab5190023524e0a"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"8dd0fb4457126b069498b5178e34ffbc980bcd54","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"            return False"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"        revoked_ids \u003d (x[\u0027id\u0027] for x in revoked_tokens)"},{"line_number":1203,"context_line":"        return token_id in revoked_ids"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def cms_verify(self, data):"},{"line_number":1206,"context_line":"        \"\"\"Verifies the signature of the provided data\u0027s IAW CMS syntax."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FRb0%3D","line":1203,"in_reply_to":"AAAAXH%2F%2FRdI%3D","updated":"2014-04-22 20:38:25.000000000","message":"Sorry I cannot agree with you here. Debug information was useless so I don\u0027t see why it cannot be removed.","commit_id":"8574256f9342faeba2ce64080ab5190023524e0a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c99e96a601210cfb773999a35d63df66ad816173","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"            return False"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"        revoked_ids \u003d (x[\u0027id\u0027] for x in revoked_tokens)"},{"line_number":1203,"context_line":"        return token_id in revoked_ids"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def cms_verify(self, data):"},{"line_number":1206,"context_line":"        \"\"\"Verifies the signature of the provided data\u0027s IAW CMS syntax."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FRdI%3D","line":1203,"in_reply_to":"AAAAXH%2F%2FRwk%3D","updated":"2014-04-22 20:36:14.000000000","message":"I tried it and the debug message is giving us information we didn\u0027t have otherwise, so I\u0027d prefer that the debug message was left there. It can be removed in a separate commit.","commit_id":"8574256f9342faeba2ce64080ab5190023524e0a"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"93227883ff39d329e413788e17f9a204296bdd47","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"            return False"},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"        revoked_ids \u003d (x[\u0027id\u0027] for x in revoked_tokens)"},{"line_number":1203,"context_line":"        return token_id in revoked_ids"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def cms_verify(self, data):"},{"line_number":1206,"context_line":"        \"\"\"Verifies the signature of the provided data\u0027s IAW CMS syntax."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2FRwk%3D","line":1203,"in_reply_to":"AAAAXH%2F%2FRzI%3D","updated":"2014-04-22 19:48:31.000000000","message":"IMHO this message was not usefull at all. It doesn\u0027t contain any info about the token that was revoked. Additionaly I don\u0027t think that we should log such case since it\u0027s normal code execution and not exceptional case.","commit_id":"8574256f9342faeba2ce64080ab5190023524e0a"}]}
