)]}'
{"config-generator/keystone.conf":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"34d91dc4db47d45172881e749233ab5b13654322","unresolved":false,"context_lines":[{"line_number":4,"context_line":"namespace \u003d keystone"},{"line_number":5,"context_line":"namespace \u003d keystone.notifications"},{"line_number":6,"context_line":"namespace \u003d keystone.openstack.common.eventlet_backdoor"},{"line_number":7,"context_line":"namespace \u003d oslo.log"},{"line_number":8,"context_line":"namespace \u003d keystone.openstack.common.policy"},{"line_number":9,"context_line":"namespace \u003d oslo.messaging"},{"line_number":10,"context_line":"namespace \u003d oslo.db"}],"source_content_type":"text/plain","patch_set":18,"id":"da86d52c_bd553bfb","line":7,"updated":"2015-02-12 17:03:47.000000000","message":"Should we re-order so that they are alphabetical again?","commit_id":"b0850ee850ed94affc3586e252577c5cae22fc1d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5e82ef3afae8d72a845e4d135500879a4b15b46a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"namespace \u003d keystone"},{"line_number":5,"context_line":"namespace \u003d keystone.notifications"},{"line_number":6,"context_line":"namespace \u003d keystone.openstack.common.eventlet_backdoor"},{"line_number":7,"context_line":"namespace \u003d oslo.log"},{"line_number":8,"context_line":"namespace \u003d keystone.openstack.common.policy"},{"line_number":9,"context_line":"namespace \u003d oslo.messaging"},{"line_number":10,"context_line":"namespace \u003d oslo.db"}],"source_content_type":"text/plain","patch_set":18,"id":"da86d52c_97074618","line":7,"in_reply_to":"da86d52c_bd553bfb","updated":"2015-02-13 15:12:47.000000000","message":"+1","commit_id":"b0850ee850ed94affc3586e252577c5cae22fc1d"}],"keystone/auth/controllers.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                project\u003dproject_ref)"},{"line_number":153,"context_line":"        except AssertionError as e:"},{"line_number":154,"context_line":"            msg \u003d _LW(\u0027Project is disabled: %s\u0027)"},{"line_number":155,"context_line":"            LOG.warning(msg, e)"},{"line_number":156,"context_line":"            six.reraise(exception.Unauthorized, exception.Unauthorized(e),"},{"line_number":157,"context_line":"                        sys.exc_info()[2])"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2c7ea4af","line":155,"updated":"2015-02-11 22:10:43.000000000","message":"Are you sure that you want to do basically \"msg % e\"? Without launching the code I think that it produces \"Project is disabled: Project is disabled: some-id\" (don\u0027t know what really happens)","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                domain_ref \u003d self.resource_api.get_domain(domain_id)"},{"line_number":183,"context_line":"        except exception.DomainNotFound as e:"},{"line_number":184,"context_line":"            msg \u003d _LE(\u0027Domain not found: %s\u0027)"},{"line_number":185,"context_line":"            LOG.exception(msg, domain_id)"},{"line_number":186,"context_line":"            raise exception.Unauthorized(e)"},{"line_number":187,"context_line":"        self._assert_domain_is_enabled(domain_ref)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f8544b55","line":184,"updated":"2015-02-11 22:10:43.000000000","message":"The message should be supplied in DomainNotFound exception","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                # disabled."},{"line_number":210,"context_line":"                self._lookup_domain({\u0027id\u0027: project_ref[\u0027domain_id\u0027]})"},{"line_number":211,"context_line":"        except exception.ProjectNotFound as e:"},{"line_number":212,"context_line":"            msg \u003d _LE(\u0027Project not found: %s\u0027)"},{"line_number":213,"context_line":"            LOG.exception(msg, project_id)"},{"line_number":214,"context_line":"            raise exception.Unauthorized(e)"},{"line_number":215,"context_line":"        self._assert_project_is_enabled(project_ref)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_1852ff66","line":212,"updated":"2015-02-11 22:10:43.000000000","message":"Same here","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        try:"},{"line_number":431,"context_line":"            user_ref \u003d self.identity_api.get_user(auth_context[\u0027user_id\u0027])"},{"line_number":432,"context_line":"        except exception.UserNotFound as e:"},{"line_number":433,"context_line":"            msg \u003d _LE(\u0027User not found: %s\u0027)"},{"line_number":434,"context_line":"            LOG.exception(msg, auth_context[\u0027user_id\u0027])"},{"line_number":435,"context_line":"            raise exception.Unauthorized(e)"},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_5848f7b2","line":433,"updated":"2015-02-11 22:10:43.000000000","message":"Same here","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"}],"keystone/auth/plugins/password.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                domain_id\u003ddomain_ref[\u0027id\u0027],"},{"line_number":47,"context_line":"                domain\u003ddomain_ref)"},{"line_number":48,"context_line":"        except AssertionError as e:"},{"line_number":49,"context_line":"            msg \u003d _LW(\u0027Domain is disabled: %s\u0027)"},{"line_number":50,"context_line":"            LOG.warning(msg, domain_ref[\u0027id\u0027])"},{"line_number":51,"context_line":"            six.reraise(exception.Unauthorized, exception.Unauthorized(e),"},{"line_number":52,"context_line":"                        sys.exc_info()[2])"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_18875fb6","line":49,"updated":"2015-02-11 22:10:43.000000000","message":"Same here and below. We should extract message from the exception.","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"}],"keystone/cli.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class BaseApp(object):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2c1a246f","line":35,"updated":"2015-02-11 22:10:43.000000000","message":"Why was it moved here?","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"}],"keystone/common/wsgi.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            return render_exception(e, context\u003dcontext,"},{"line_number":241,"context_line":"                                    user_locale\u003dbest_match_language(req))"},{"line_number":242,"context_line":"        except exception.Error as e:"},{"line_number":243,"context_line":"            msg \u003d _LW(\u0027Request failed: %s\u0027)"},{"line_number":244,"context_line":"            LOG.warning(msg, e)"},{"line_number":245,"context_line":"            return render_exception(e, context\u003dcontext,"},{"line_number":246,"context_line":"                                    user_locale\u003dbest_match_language(req))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2c5f8410","line":243,"updated":"2015-02-11 22:10:43.000000000","message":"And here","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"}],"keystone/tests/core.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0db9512c415e6f227f4ce3a259a12abed4d50e86","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# NOTE(ayoung)"},{"line_number":40,"context_line":"# environment.use_eventlet must run before any of the code that will"},{"line_number":41,"context_line":"# call the eventlet monkeypatching."},{"line_number":42,"context_line":"from keystone.common import environment  # noqa"},{"line_number":43,"context_line":"environment.use_eventlet()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"from keystone import auth"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_58cd6d30","line":42,"updated":"2015-02-11 14:42:22.000000000","message":"Here you use_eventlet() after importing stuff from logging. Logging depends on evetlet patching, so you might want to move it before log imports. I\u0027m not sure about that though.","commit_id":"cccc1f6cf1ebb5813a9a7a5d5b71d5f129625ce9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1f3040ec2d2fd279aa1121fab367fb37e3bddb66","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# NOTE(ayoung)"},{"line_number":40,"context_line":"# environment.use_eventlet must run before any of the code that will"},{"line_number":41,"context_line":"# call the eventlet monkeypatching."},{"line_number":42,"context_line":"from keystone.common import environment  # noqa"},{"line_number":43,"context_line":"environment.use_eventlet()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"from keystone import auth"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_d2acd1ef","line":42,"in_reply_to":"da86d52c_58cd6d30","updated":"2015-02-11 17:10:48.000000000","message":"cool!","commit_id":"cccc1f6cf1ebb5813a9a7a5d5b71d5f129625ce9"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0db9512c415e6f227f4ce3a259a12abed4d50e86","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"TMPDIR \u003d _calc_tmpdir()"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CONF \u003d config.CONF"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"IN_MEM_DB_CONN_STRING \u003d \u0027sqlite://\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_18521535","line":86,"updated":"2015-02-11 14:42:22.000000000","message":"I saw the tests are failing and I hope you won\u0027t mind a hint ;)\n\nYou need to insert ``log.register_options(CONF)`` here.","commit_id":"cccc1f6cf1ebb5813a9a7a5d5b71d5f129625ce9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1f3040ec2d2fd279aa1121fab367fb37e3bddb66","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"TMPDIR \u003d _calc_tmpdir()"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CONF \u003d config.CONF"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"IN_MEM_DB_CONN_STRING \u003d \u0027sqlite://\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_52a1c1f6","line":86,"in_reply_to":"da86d52c_18521535","updated":"2015-02-11 17:10:48.000000000","message":"who doesn\u0027t like hints! thank you :)","commit_id":"cccc1f6cf1ebb5813a9a7a5d5b71d5f129625ce9"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"f96fdb2104540c12e181cccb90982c5dce183c83","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# NOTE(ayoung)"},{"line_number":29,"context_line":"# environment.use_eventlet must run before any of the code that will"},{"line_number":30,"context_line":"# call the eventlet monkeypatching."},{"line_number":31,"context_line":"# NOTE(stevemar): oslo logging depends on eventlet patching, so it should be"},{"line_number":32,"context_line":"# called before oslo_log  "},{"line_number":33,"context_line":"from keystone.common import environment  # noqa"},{"line_number":34,"context_line":"environment.use_eventlet()"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_a331cc5b","line":31,"updated":"2015-02-11 18:55:42.000000000","message":"The comment is not 100% correct. Not oslo_log depends on eventlet patching, but Python logging does. We have bug 1420788 for it.\n\nIn fact, I am not sure now that the move is required, sorry for my previous comment. I mean, it will definitely not make things worse and might make things better, but I am not sure that it\u0027s 100% required. So OK, let it be.\n\nThe reason I worry about it that much is that the issue is very nasty and we spent a lot of time debugging it. Alexander Makarov has sent a patch to review about eventlet initialization and it was not yet merged.","commit_id":"397666363ed16b6d21fe1189e7dcf47b347b9c30"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e484d3fcccf84c751900c7c3385f73e0c4f50d3a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# NOTE(ayoung)"},{"line_number":29,"context_line":"# environment.use_eventlet must run before any of the code that will"},{"line_number":30,"context_line":"# call the eventlet monkeypatching."},{"line_number":31,"context_line":"# NOTE(stevemar): oslo logging depends on eventlet patching, so it should be"},{"line_number":32,"context_line":"# called before oslo_log  "},{"line_number":33,"context_line":"from keystone.common import environment  # noqa"},{"line_number":34,"context_line":"environment.use_eventlet()"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_6cf6e15e","line":31,"in_reply_to":"da86d52c_a331cc5b","updated":"2015-02-11 20:05:42.000000000","message":"thanks boris, this move was not needed, but i appreciate the info.","commit_id":"397666363ed16b6d21fe1189e7dcf47b347b9c30"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"f96fdb2104540c12e181cccb90982c5dce183c83","unresolved":false,"context_lines":[{"line_number":29,"context_line":"# environment.use_eventlet must run before any of the code that will"},{"line_number":30,"context_line":"# call the eventlet monkeypatching."},{"line_number":31,"context_line":"# NOTE(stevemar): oslo logging depends on eventlet patching, so it should be"},{"line_number":32,"context_line":"# called before oslo_log  "},{"line_number":33,"context_line":"from keystone.common import environment  # noqa"},{"line_number":34,"context_line":"environment.use_eventlet()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_434650c1","line":32,"updated":"2015-02-11 18:55:42.000000000","message":"pep8 will not be happy here ;)","commit_id":"397666363ed16b6d21fe1189e7dcf47b347b9c30"}],"keystone/tests/unit/test_core.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.assertThat(lambda: sys.exit(),"},{"line_number":32,"context_line":"                        matchers.raises(tests.UnexpectedExit))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_bad_log(self):"},{"line_number":35,"context_line":"        # If the arguments are invalid for the string in a log it raises an"},{"line_number":36,"context_line":"        # exception during testing."},{"line_number":37,"context_line":"        self.assertThat("}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_ec72cc7a","side":"PARENT","line":34,"updated":"2015-02-11 22:10:43.000000000","message":"Interesting. Was it ever used? Maybe it should be removed in a separate patch?","commit_id":"00cdbec4059d55a0a830331ec674e7b176edec08"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6bb0d1d1f3e32ea3acf40b091fe3f398a77889f7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.assertThat(lambda: sys.exit(),"},{"line_number":32,"context_line":"                        matchers.raises(tests.UnexpectedExit))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_bad_log(self):"},{"line_number":35,"context_line":"        # If the arguments are invalid for the string in a log it raises an"},{"line_number":36,"context_line":"        # exception during testing."},{"line_number":37,"context_line":"        self.assertThat("}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2f7e96af","side":"PARENT","line":34,"in_reply_to":"da86d52c_ec72cc7a","updated":"2015-02-11 22:30:56.000000000","message":"this was a unit test for the function that was removed here: https://review.openstack.org/#/c/152699/14/keystone/tests/core.py which is now a fixture from oslo.log.logging.","commit_id":"00cdbec4059d55a0a830331ec674e7b176edec08"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ad698ccf90787c9745d58ea54c5ec586fc1f2ff0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        # if a test calls sys.exit it raises rather than exiting."},{"line_number":31,"context_line":"        self.assertThat(lambda: sys.exit(),"},{"line_number":32,"context_line":"                        matchers.raises(tests.UnexpectedExit))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_sa_warning(self):"},{"line_number":35,"context_line":"        self.assertThat("},{"line_number":36,"context_line":"            lambda: warnings.warn(\u0027test sa warning error\u0027, exc.SAWarning),"}],"source_content_type":"text/x-python","patch_set":19,"id":"da86d52c_85e0dfcd","line":33,"updated":"2015-02-13 21:39:07.000000000","message":"I still wish we had this test here since it shows that we set up the fixture correctly.","commit_id":"2dae5760add5a61ca02ca9f5d7aa2fc8fe05b0c8"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"67cc00acb03aa6c692dad540798f8b48786956d2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        # if a test calls sys.exit it raises rather than exiting."},{"line_number":31,"context_line":"        self.assertThat(lambda: sys.exit(),"},{"line_number":32,"context_line":"                        matchers.raises(tests.UnexpectedExit))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_sa_warning(self):"},{"line_number":35,"context_line":"        self.assertThat("},{"line_number":36,"context_line":"            lambda: warnings.warn(\u0027test sa warning error\u0027, exc.SAWarning),"}],"source_content_type":"text/x-python","patch_set":19,"id":"da86d52c_e53c3b33","line":33,"in_reply_to":"da86d52c_85e0dfcd","updated":"2015-02-13 21:41:28.000000000","message":"just need to change the exception type?","commit_id":"2dae5760add5a61ca02ca9f5d7aa2fc8fe05b0c8"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"34718e01ed2b357b3cfc72592760c3f2352125f2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        # if a test calls sys.exit it raises rather than exiting."},{"line_number":31,"context_line":"        self.assertThat(lambda: sys.exit(),"},{"line_number":32,"context_line":"                        matchers.raises(tests.UnexpectedExit))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_sa_warning(self):"},{"line_number":35,"context_line":"        self.assertThat("},{"line_number":36,"context_line":"            lambda: warnings.warn(\u0027test sa warning error\u0027, exc.SAWarning),"}],"source_content_type":"text/x-python","patch_set":19,"id":"da86d52c_2ec54a3d","line":33,"in_reply_to":"da86d52c_e53c3b33","updated":"2015-02-14 05:30:21.000000000","message":"this is working now, i will revert the changes to this test and the BadLog mocking, I probably didn\u0027t have oslo_log setup properly the first time around","commit_id":"2dae5760add5a61ca02ca9f5d7aa2fc8fe05b0c8"}],"requirements.txt":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d904b5e3efbc284b614454774ae2e4ba8b10c192","unresolved":false,"context_lines":[{"line_number":23,"context_line":"oslo.messaging\u003e\u003d1.6.0  # Apache-2.0"},{"line_number":24,"context_line":"oslo.db\u003e\u003d1.4.1  # Apache-2.0"},{"line_number":25,"context_line":"oslo.i18n\u003e\u003d1.3.0  # Apache-2.0"},{"line_number":26,"context_line":"oslo.log\u003e\u003d0.1.0            # Apache-2.0"},{"line_number":27,"context_line":"oslo.middleware\u003e\u003d0.3.0                  # Apache-2.0"},{"line_number":28,"context_line":"oslo.serialization\u003e\u003d1.2.0               # Apache-2.0"},{"line_number":29,"context_line":"oslo.utils\u003e\u003d1.2.0                       # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"da86d52c_ecf9ecc8","line":26,"updated":"2015-02-11 22:10:43.000000000","message":"Why 0.1.0, when there is 0.2.0?","commit_id":"216d78d3771a667b5931805828d683a12b3a924f"}]}
