)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"b3c16025cabeac7858ff4e38d0af1dbc22e8be45","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ajayaa \u003cajku.agr@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-23 21:26:05 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Expand the caching layer in keystone"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added caching to catalog layer."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_4f031cbe","line":7,"updated":"2014-07-23 16:50:28.000000000","message":"s/keystone/Keystone","commit_id":"5d48c2db668de7a2aed188025258af86cb2422b2"}],"keystone/catalog/core.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"046c84cce8cf99a8416fbec0e36a3a228a7a7f71","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def delete_service(self, service_id):"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            endpoints \u003d self.list_endpoints()"},{"line_number":128,"context_line":"            for endpoint in endpoints:"},{"line_number":129,"context_line":"                if endpoint[\u0027service_id\u0027] \u003d\u003d service_id:"},{"line_number":130,"context_line":"                    self.get_endpoint.invalidate(self, endpoint[\u0027id\u0027])"},{"line_number":131,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0744ae45","line":128,"updated":"2014-07-23 15:11:07.000000000","message":"This loop, because it handles invalidation, needs to occur after line 132, otherwise you could have something re-cache before the service is invalidated.  Line 127 should stay where it is at.","commit_id":"b33f328e25821975cd262e5cd989a1215d0e3de7"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"046c84cce8cf99a8416fbec0e36a3a228a7a7f71","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            for endpoint in endpoints:"},{"line_number":129,"context_line":"                if endpoint[\u0027service_id\u0027] \u003d\u003d service_id:"},{"line_number":130,"context_line":"                    self.get_endpoint.invalidate(self, endpoint[\u0027id\u0027])"},{"line_number":131,"context_line":"                    break"},{"line_number":132,"context_line":"            ret \u003d self.driver.delete_service(service_id)"},{"line_number":133,"context_line":"            self.get_service.invalidate(self, service_id)"},{"line_number":134,"context_line":"            return ret"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_07166e49","line":131,"updated":"2014-07-23 15:11:07.000000000","message":"If a single endpoint matches the service id, i don\u0027t think you want to break the loop, you want all endpoints to be invalidated.  This also shows the need for an expanded test to show that endpoints are all invalidated when the service is deleted.","commit_id":"b33f328e25821975cd262e5cd989a1215d0e3de7"}],"keystone/common/config.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"046c84cce8cf99a8416fbec0e36a3a228a7a7f71","unresolved":false,"context_lines":[{"line_number":746,"context_line":"                    help\u003d\u0027Toggle for token system cacheing. This has no \u0027"},{"line_number":747,"context_line":"                         \u0027effect unless global caching is enabled.\u0027),"},{"line_number":748,"context_line":"        cfg.IntOpt(\u0027cache_time\u0027,"},{"line_number":749,"context_line":"                   help\u003d\u0027Time to cache tokens (in seconds). This has no \u0027"},{"line_number":750,"context_line":"                        \u0027effect unless global and token caching are \u0027"},{"line_number":751,"context_line":"                        \u0027enabled.\u0027),"},{"line_number":752,"context_line":"        cfg.IntOpt(\u0027list_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4cefad86","line":749,"updated":"2014-07-23 15:11:07.000000000","message":"The help string needs to be updated for the catalog-specific case, this looks like a simple copy-paste issue (tokens are not part of catalog).\n\nSame on line 746","commit_id":"b33f328e25821975cd262e5cd989a1215d0e3de7"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"b3c16025cabeac7858ff4e38d0af1dbc22e8be45","unresolved":false,"context_lines":[{"line_number":746,"context_line":"                    help\u003d\u0027Toggle for catalog caching. This has no \u0027"},{"line_number":747,"context_line":"                         \u0027effect unless global caching is enabled.\u0027),"},{"line_number":748,"context_line":"        cfg.IntOpt(\u0027cache_time\u0027,"},{"line_number":749,"context_line":"                   help\u003d\u0027Time to cache catalog data(in seconds). This has no \u0027"},{"line_number":750,"context_line":"                        \u0027effect unless global and catalog caching are \u0027"},{"line_number":751,"context_line":"                        \u0027enabled.\u0027),"},{"line_number":752,"context_line":"        cfg.IntOpt(\u0027list_limit\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_6f2d4045","line":749,"updated":"2014-07-23 16:50:28.000000000","message":"space after data","commit_id":"5d48c2db668de7a2aed188025258af86cb2422b2"}],"keystone/tests/test_backend.py":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"b3c16025cabeac7858ff4e38d0af1dbc22e8be45","unresolved":false,"context_lines":[{"line_number":3585,"context_line":""},{"line_number":3586,"context_line":"    @tests.skip_if_cache_disabled(\u0027catalog\u0027)"},{"line_number":3587,"context_line":"    def test_cache_layer_region_crud(self):"},{"line_number":3588,"context_line":"        # create"},{"line_number":3589,"context_line":"        region_id \u003d uuid.uuid4().hex"},{"line_number":3590,"context_line":"        new_region \u003d {"},{"line_number":3591,"context_line":"            \u0027id\u0027: region_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_cfe48c10","line":3588,"updated":"2014-07-23 16:50:28.000000000","message":"The code here is self explanatory and therefore the comments are redundant. As highlighted by Dolph and Henry in a recent code review:\n\nhttps://review.openstack.org/#/c/107194/11/keystone/token/core.py\nhttps://review.openstack.org/#/c/107194/12/keystone/token/core.py\n\nInline comments should be used to answer the \"why the code is doing something\", not \"what the code is doing\" (unless it\u0027s a highly complex piece of code and further comments aid a reader\u0027s comprehension of it).","commit_id":"5d48c2db668de7a2aed188025258af86cb2422b2"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"0c9790db7f6edecf2590005da517445649ac2629","unresolved":false,"context_lines":[{"line_number":3585,"context_line":""},{"line_number":3586,"context_line":"    @tests.skip_if_cache_disabled(\u0027catalog\u0027)"},{"line_number":3587,"context_line":"    def test_cache_layer_region_crud(self):"},{"line_number":3588,"context_line":"        # create"},{"line_number":3589,"context_line":"        region_id \u003d uuid.uuid4().hex"},{"line_number":3590,"context_line":"        new_region \u003d {"},{"line_number":3591,"context_line":"            \u0027id\u0027: region_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_121ea7bb","line":3588,"in_reply_to":"baada198_cfe48c10","updated":"2014-07-23 17:19:40.000000000","message":"In the case of caching, it\u0027s a bit less straightforward looking at the test cases. It doesn\u0027t hurt to have a \u0027what\u0027 is being done here. I wouldn\u0027t block based upon these comments (especially ones like on 3598, it isn\u0027t clear why you\u0027d call the .get without storing the value).","commit_id":"5d48c2db668de7a2aed188025258af86cb2422b2"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"b3c16025cabeac7858ff4e38d0af1dbc22e8be45","unresolved":false,"context_lines":[{"line_number":3676,"context_line":""},{"line_number":3677,"context_line":"    @tests.skip_if_cache_disabled(\u0027catalog\u0027)"},{"line_number":3678,"context_line":"    def test_cache_layer_service_crud(self):"},{"line_number":3679,"context_line":"        # create"},{"line_number":3680,"context_line":"        service_id \u003d uuid.uuid4().hex"},{"line_number":3681,"context_line":"        new_service \u003d {"},{"line_number":3682,"context_line":"            \u0027id\u0027: service_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_2fa6e8ab","line":3679,"updated":"2014-07-23 16:50:28.000000000","message":"Same as above","commit_id":"5d48c2db668de7a2aed188025258af86cb2422b2"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"b3c16025cabeac7858ff4e38d0af1dbc22e8be45","unresolved":false,"context_lines":[{"line_number":3741,"context_line":"                          endpoint[\u0027id\u0027])"},{"line_number":3742,"context_line":""},{"line_number":3743,"context_line":"    def test_cache_layer_delete_service_with_endpoint(self):"},{"line_number":3744,"context_line":"        # create"},{"line_number":3745,"context_line":"        service \u003d {"},{"line_number":3746,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":3747,"context_line":"            \u0027type\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_2f47c8a4","line":3744,"updated":"2014-07-23 16:50:28.000000000","message":"same as above","commit_id":"5d48c2db668de7a2aed188025258af86cb2422b2"}],"keystone/tests/test_backend_templated.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"046c84cce8cf99a8416fbec0e36a3a228a7a7f71","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        (self.catalog_api.driver.templates"},{"line_number":69,"context_line":"         [\u0027RegionOne\u0027][\u0027compute\u0027][\u0027adminURL\u0027]) \u003d \\"},{"line_number":70,"context_line":"            \u0027http://localhost:8774/v1.1/$(tenant)s\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # the malformed one has been removed"},{"line_number":73,"context_line":"        catalog_ref \u003d self.catalog_api.get_catalog(\u0027foo\u0027, \u0027bar\u0027)"},{"line_number":74,"context_line":"        self.assertEqual(1, len(catalog_ref[\u0027RegionOne\u0027]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_8cb70585","side":"PARENT","line":71,"updated":"2014-07-23 15:11:07.000000000","message":"Revert whitespace change.","commit_id":"686597b52a7b64161ca82e468a401efe22553a22"}]}
