)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6d5750bb933fbfb01430f03027108a05e18b95c9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a fixture for setting up the cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Certain tests will fail in isolation becasue the cache isn\u0027t properly"},{"line_number":10,"context_line":"configured. This fixture will clear out any old configuration and"},{"line_number":11,"context_line":"correctly configure the cache."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F932U%3D","line":9,"updated":"2013-12-05 00:23:24.000000000","message":"change \"becasue\" to \"because\"","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ea9e850b3e65dcfb2a54e20a816a960c5f86ac46","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a fixture for setting up the cache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Certain tests will fail in isolation becasue the cache isn\u0027t properly"},{"line_number":10,"context_line":"configured. This fixture will clear out any old configuration and"},{"line_number":11,"context_line":"correctly configure the cache."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F93uo%3D","line":9,"in_reply_to":"AAAATn%2F932U%3D","updated":"2013-12-05 02:55:26.000000000","message":"Nice catch thanks!","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"}],"keystone/tests/fixtures/__init__.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"18ebd8b545cd2017e30915b22fb6ac9a4f3b31c3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bd3E%3D","line":18,"updated":"2013-11-25 19:13:21.000000000","message":"This might fail future pep8 Hacking checks for importing classes.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"803bf330d7754df1bc9f6e9639383aa558f2e7cd","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9yXQ%3D","line":18,"in_reply_to":"AAAATn%2F%2BRlg%3D","updated":"2013-12-05 22:17:40.000000000","message":"Oops, I must have glazed over this before. Sorry for the confusion. I\u0027ll see if I can dig up the link that I was referencing before. I know morganfainberg and I were talking about this (importing classes) but maybe that was a different case?","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"20d0c0b41654a9c80e6309b66fcaf3268e22868d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRlg%3D","line":18,"in_reply_to":"AAAATn%2F%2Bb8Y%3D","updated":"2013-11-28 01:08:21.000000000","message":"If hacking breaks noqa, I think we have a massive amount of fixing to do across OpenStack.  I don\u0027t think this is an issue for now we can play cleanup in a patchset if/when that hacking change comes down the line.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f6d350e1ff87c6bd829889113d53916da6619873","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bb8U%3D","line":18,"in_reply_to":"AAAATn%2F%2Bcqo%3D","updated":"2013-11-26 04:00:38.000000000","message":"@Dolph: I could just as easily import out of the module instead of the package.  I was just hoping to have a nicer API for fixtures.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f6d350e1ff87c6bd829889113d53916da6619873","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bb8Y%3D","line":18,"in_reply_to":"AAAATn%2F%2Bd3E%3D","updated":"2013-11-26 04:00:38.000000000","message":"@Lance: Do you have a reference for this?  It is not against pep8 to import classes.  It is, however, against the OpenStack style, but I preferred it to import *.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7668f05da8aad5691fd43cf9e786490b639b9079","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bcqo%3D","line":18,"in_reply_to":"AAAATn%2F%2Bd3E%3D","updated":"2013-11-25 23:08:47.000000000","message":"regardless of the noqa? if so, it sounds like hacking would be broken...\n\nI\u0027m happy to pull public classes into the __init__ like this","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b94fcd0b5b6152deb78df980ff684102ddc43ac","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9vJQ%3D","line":18,"in_reply_to":"AAAATn%2F9vOA%3D","updated":"2013-12-06 15:11:49.000000000","message":"Per IRC discussion with dolphm and morganfainberg, I am ok with this and it seems clear to me now. Sorry for the confusion.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"fb73b96029541055f4df49f016663698edd44662","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":16,"context_line":"# limitations under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.tests.fixtures.cache import Cache  # flake8: noqa"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9vOA%3D","line":18,"in_reply_to":"AAAATn%2F9yXQ%3D","updated":"2013-12-06 15:02:20.000000000","message":"Different case.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"450d012af9235f387ae72a5248de9867f7239cec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":6,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FKCk%3D","line":3,"updated":"2014-01-16 21:42:15.000000000","message":"Update copyright year to 2014?","commit_id":"ec319ab95a5948b6b9900cdbe836fd27d695d7ef"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c0d951705704b53c3191856a2c51c1d76ee50dc7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":6,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BBKs%3D","line":3,"in_reply_to":"AAAAUH%2F%2BJF0%3D","updated":"2014-01-30 22:59:14.000000000","message":"good to know, thanks Dolph!","commit_id":"ec319ab95a5948b6b9900cdbe836fd27d695d7ef"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"61860b8fb4cbb186be7fd2f005f83f69de0ca720","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":6,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BJF0%3D","line":3,"in_reply_to":"AAAAUH%2F%2FKCk%3D","updated":"2014-01-29 18:59:18.000000000","message":"latest legal advice is that developers can\u0027t assign copyright to the foundation (unless you work for the foundation directly) -- so the entire copyright statement (but not the licensing bit) should be removed","commit_id":"ec319ab95a5948b6b9900cdbe836fd27d695d7ef"}],"keystone/tests/fixtures/cache.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6d5750bb933fbfb01430f03027108a05e18b95c9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"},{"line_number":29,"context_line":"        # object on each setUp() call is to remove the .backend property."},{"line_number":30,"context_line":"        if hasattr(cache.REGION, \u0027backend\u0027):"},{"line_number":31,"context_line":"            del cache.REGION.backend"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # ensure the cache region instance is setup"},{"line_number":34,"context_line":"        cache.configure_cache_region(cache.REGION)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9314%3D","line":31,"updated":"2013-12-05 00:23:24.000000000","message":"I expected this to be done in tearDown(). Why isn\u0027t it? Do we want to leave the cache in whatever state the previous test left it?","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ea9e850b3e65dcfb2a54e20a816a960c5f86ac46","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"},{"line_number":29,"context_line":"        # object on each setUp() call is to remove the .backend property."},{"line_number":30,"context_line":"        if hasattr(cache.REGION, \u0027backend\u0027):"},{"line_number":31,"context_line":"            del cache.REGION.backend"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # ensure the cache region instance is setup"},{"line_number":34,"context_line":"        cache.configure_cache_region(cache.REGION)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F93e4%3D","line":31,"in_reply_to":"AAAATn%2F9314%3D","updated":"2013-12-05 02:55:26.000000000","message":"I\u0027ll put a comment in there about why it\u0027s in the setup.  When the cache code is imported it automatically sets up a default cache. When you run the entire test suite everything works because somewhere along the way it is reconfigured.  If you run just one of the caching tests it will fail.  If you specify two caching tests the first will fail and the second will succeed.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ff7a29b9283af43164561195a9f54b56b3545f97","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"},{"line_number":29,"context_line":"        # object on each setUp() call is to remove the .backend property."},{"line_number":30,"context_line":"        if hasattr(cache.REGION, \u0027backend\u0027):"},{"line_number":31,"context_line":"            del cache.REGION.backend"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # ensure the cache region instance is setup"},{"line_number":34,"context_line":"        cache.configure_cache_region(cache.REGION)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F93l8%3D","line":31,"in_reply_to":"AAAATn%2F9314%3D","updated":"2013-12-05 02:06:54.000000000","message":"This solves the first-test scenario.  Due to the way the backends are loaded, the cache is built before the test-overrides (and the like) are loaded in.  This only affects tests (since they do a setUp with new config values where running keystone doesn\u0027t need to).  Moving this to the .setUp guarantees a clean configuration at the start of each test rather than at the end of each test.\n\nThis caused an issue if certain tests were run in isolation with no tests occurring before them.  This is an odd case that is more of a one-off in how testing needs to work.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0273ec266fabe403336e26610390e950159c5913","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"},{"line_number":29,"context_line":"        # object on each setUp() call is to remove the .backend property."},{"line_number":30,"context_line":"        if hasattr(cache.REGION, \u0027backend\u0027):"},{"line_number":31,"context_line":"            del cache.REGION.backend"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # ensure the cache region instance is setup"},{"line_number":34,"context_line":"        cache.configure_cache_region(cache.REGION)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zr0%3D","line":31,"in_reply_to":"AAAATn%2F93bo%3D","updated":"2013-12-05 17:36:03.000000000","message":"We probably can, but I would not want to do that within this patch.  This was really to move the test code out into a fixture.  I\u0027ll look at fixing the code in a different patch.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"284ae1ea72d1df63d28871d9b848e8f468e80a31","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"},{"line_number":29,"context_line":"        # object on each setUp() call is to remove the .backend property."},{"line_number":30,"context_line":"        if hasattr(cache.REGION, \u0027backend\u0027):"},{"line_number":31,"context_line":"            del cache.REGION.backend"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # ensure the cache region instance is setup"},{"line_number":34,"context_line":"        cache.configure_cache_region(cache.REGION)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F93bo%3D","line":31,"in_reply_to":"AAAATn%2F93e4%3D","updated":"2013-12-05 03:06:35.000000000","message":"Can we change the code so that when the cache code is imported it doesn\u0027t automatically set up a default cache? We should write our code so that it can be tested. Seems like we\u0027re working around a problem by adding more code rather than fixing the problem.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2f695464a3571781bd6d1c71694815b68c4bcc8a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"},{"line_number":29,"context_line":"        # object on each setUp() call is to remove the .backend property."},{"line_number":30,"context_line":"        if hasattr(cache.REGION, \u0027backend\u0027):"},{"line_number":31,"context_line":"            del cache.REGION.backend"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # ensure the cache region instance is setup"},{"line_number":34,"context_line":"        cache.configure_cache_region(cache.REGION)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9zpQ%3D","line":31,"in_reply_to":"AAAATn%2F9zr0%3D","updated":"2013-12-05 17:44:32.000000000","message":"I agree this should be split into two patches, one for the refactor to a fixture and one to fix the problem.","commit_id":"b94c820d7416de6a5c5aecf72bc541e8d5c67cff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"738ff259d161d44d18f15c880afedc825745dd55","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        # NOTE(dstanek):  We must remove the existing cache backend in the setUp"},{"line_number":29,"context_line":"        # instead of the tearDown because it defaults to a no-op cache and we want"},{"line_number":30,"context_line":"        # the configure call below to create the correct backend."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        # NOTE(morganfainberg):  The only way to reconfigure the CacheRegion"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9ybU%3D","line":29,"updated":"2013-12-05 22:07:45.000000000","message":"Looks like these (lines 28 - 29) will have to be shortened up, to fix the pep8 failure.","commit_id":"e263e63b5aeb29fd61cf125a39ff303310a031ec"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"450d012af9235f387ae72a5248de9867f7239cec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":6,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FKCc%3D","line":3,"updated":"2014-01-16 21:42:15.000000000","message":"Update copyright year to 2014?","commit_id":"ec319ab95a5948b6b9900cdbe836fd27d695d7ef"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"82683a4b2d7a0327b96a4288fd696a61430545ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2FZ78%3D","line":1,"updated":"2014-02-13 13:02:20.000000000","message":"there\u0027s a patch to remove all these btw","commit_id":"99efc2296c54e1332795f9f926fce0a202380f04"}]}
