)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"316c70fef3c39e35f9f101c8449a8d3f23f3f5d8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"which decreases the time spent in get_token_data() by 34%."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Dolph Mathews \u003cdolph.mathews@gmail.com\u003e"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I3dfe66880295ef36a18ca3e384191106b74be795"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dab17558_2a5d3c79","line":16,"updated":"2016-05-10 23:40:43.000000000","message":"Suggest a bug id for this.","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a1f1ae8fe047465f618ca5755fa293cc21206b68","unresolved":false,"context_lines":[{"line_number":13,"context_line":"which decreases the time spent in get_token_data() by 34%."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Dolph Mathews \u003cdolph.mathews@gmail.com\u003e"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I3dfe66880295ef36a18ca3e384191106b74be795"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9abb7d3a_3d74f1fb","line":16,"in_reply_to":"dab17558_2a5d3c79","updated":"2016-06-02 21:13:41.000000000","message":"Done","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"}],"keystone/common/cache/_context_cache.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"316c70fef3c39e35f9f101c8449a8d3f23f3f5d8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_serialization import msgpackutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"_registry \u003d msgpackutils.default_registry"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _register_model_handler(handler_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_8a56e859","line":20,"updated":"2016-05-10 23:40:43.000000000","message":"Please rebase this on top of the liniar revocation event patch, this is likely no longer needed.","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d707c1b5fbeb2f78fed567d95038965815405861","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_serialization import msgpackutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"_registry \u003d msgpackutils.default_registry"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _register_model_handler(handler_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_1d776dd5","line":20,"in_reply_to":"dab17558_8a56e859","updated":"2016-06-02 21:16:30.000000000","message":"Done","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"}],"keystone/common/cache/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d2bf643fb48b96d279dde4c967390eaf5f2e34c3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CACHE_REGION \u003d cache.create_region()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"register_model_handler \u003d _context_cache._register_model_handler"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def configure_cache(region\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_cf8893ea","line":28,"updated":"2016-03-29 13:40:27.000000000","message":"Shouldn\u0027t this pass a handler class?\n\n    _context_cache._register_model_handler(handler_class)","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"03b9b0aa3122916829c01b3f8533614b5d5d22c6","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CACHE_REGION \u003d cache.create_region()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"register_model_handler \u003d _context_cache._register_model_handler"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def configure_cache(region\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_a15f2b71","line":28,"in_reply_to":"ba0121b8_c36d0706","updated":"2016-03-29 15:47:42.000000000","message":"Got it - thanks!","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19544348a0efa4dc9c657cc0c17f43d39088744b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CACHE_REGION \u003d cache.create_region()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"register_model_handler \u003d _context_cache._register_model_handler"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def configure_cache(region\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_c36d0706","line":28,"in_reply_to":"ba0121b8_cf8893ea","updated":"2016-03-29 15:20:54.000000000","message":"This was just intended to expose the private function in a private module as a public function in a public module. This is actually called from the model module.","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"316c70fef3c39e35f9f101c8449a8d3f23f3f5d8","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"register_model_handler \u003d _context_cache._register_model_handler"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def configure_cache(region\u003dNone):"},{"line_number":32,"context_line":"    if region is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_6a53c46b","line":29,"updated":"2016-05-10 23:40:43.000000000","message":"See above comment.","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"}],"keystone/federation/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2bcf35de598b53cd90089a3615683e6d4ca50090","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from keystone.federation import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# This is a general cache region for assignment administration (CRUD"},{"line_number":28,"context_line":"# operations)."},{"line_number":29,"context_line":"MEMOIZE \u003d cache.get_memoization_decorator(group\u003d\u0027federation\u0027)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_70e85317","line":27,"range":{"start_line":27,"start_character":37,"end_line":27,"end_character":47},"updated":"2016-06-03 04:16:57.000000000","message":"s/assignment/service providers?","commit_id":"ee57e441a706138b52037bf4d31ee0d09ba6421c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e6076dee7c45a7fc2f0bed36329bdca105396315","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# This is a general cache region for assignment administration (CRUD"},{"line_number":28,"context_line":"# operations)."},{"line_number":29,"context_line":"MEMOIZE \u003d cache.get_memoization_decorator(group\u003d\u0027federation\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"EXTENSION_DATA \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_d592d19e","line":29,"updated":"2016-06-03 03:32:05.000000000","message":"I would prefer this was isolated into it\u0027s own dependant patch. Easier to see the code shuffle (restruture) then the addition of caching.","commit_id":"ee57e441a706138b52037bf4d31ee0d09ba6421c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"abb08d4a79e142f64bb918b3c983c1b2a03b4d01","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# This is a general cache region for assignment administration (CRUD"},{"line_number":28,"context_line":"# operations)."},{"line_number":29,"context_line":"MEMOIZE \u003d cache.get_memoization_decorator(group\u003d\u0027federation\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"EXTENSION_DATA \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_10b6273d","line":29,"in_reply_to":"9abb7d3a_d592d19e","updated":"2016-06-03 04:14:49.000000000","message":"Oh - good point. I can break this out.","commit_id":"ee57e441a706138b52037bf4d31ee0d09ba6421c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"eb4c709eb072aa4bbdb7c9a1d9557e6e471134c0","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from keystone.federation import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# This is a general cache region for assignment administration (CRUD"},{"line_number":28,"context_line":"# operations)."},{"line_number":29,"context_line":"MEMOIZE \u003d cache.get_memoization_decorator(group\u003d\u0027federation\u0027)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_30c40b3f","line":27,"range":{"start_line":27,"start_character":37,"end_line":27,"end_character":47},"updated":"2016-06-03 04:32:20.000000000","message":"service provider?","commit_id":"18451433b6345c273224715f25b29d2af22392a4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5513627eb3f3769aa996e50e1121d85f19b79eee","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from keystone.federation import utils"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# This is a general cache region for assignment administration (CRUD"},{"line_number":28,"context_line":"# operations)."},{"line_number":29,"context_line":"MEMOIZE \u003d cache.get_memoization_decorator(group\u003d\u0027federation\u0027)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_b00bdb7c","line":27,"in_reply_to":"9abb7d3a_30c40b3f","updated":"2016-06-03 04:36:14.000000000","message":"Done","commit_id":"18451433b6345c273224715f25b29d2af22392a4"}],"keystone/models/revoke_model.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"316c70fef3c39e35f9f101c8449a8d3f23f3f5d8","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        revoke_tree \u003d revoke_model.RevokeTree()"},{"line_number":395,"context_line":"        revoke_tree.revoke_map \u003d revoke_map"},{"line_number":396,"context_line":"        return revoke_tree"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"cache.register_model_handler(_RevokeModelHandler)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_4a58808a","line":397,"updated":"2016-05-10 23:40:43.000000000","message":"See previous comments.","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"19544348a0efa4dc9c657cc0c17f43d39088744b","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        return revoke_tree"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"cache.register_model_handler(_RevokeModelHandler)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_232de3a7","line":399,"updated":"2016-03-29 15:20:54.000000000","message":"Called here ^\n\nIt\u0027s not clean :( but neither was the circular dep i was trying to solve for.","commit_id":"d7b69a434af78c7ce5b48815ea20c4febf135309"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"27b41873a06c98781413b3b914ae4eac086bace7","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        return revoke_tree"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"cache.register_model_handler(_RevokeModelHandler)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_2341743a","line":351,"updated":"2016-06-02 21:41:51.000000000","message":"Technically this is already done here: \n\nhttps://github.com/openstack/keystone/blob/c1e712e18743fd683c9e6ee8886032a6e468188e/keystone/common/cache/_context_cache.py#L45","commit_id":"429c2218700f9599b9e14f3478f509467b7dfa58"}]}
