)]}'
{"ceilometer/api/app.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0551c72bad068fba5c13decf75812f4320734fbc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    app_hooks \u003d [hooks.ConfigHook(),"},{"line_number":58,"context_line":"                 hooks.DBHook("},{"line_number":59,"context_line":"                     storage.get_engine(cfg.CONF),"},{"line_number":60,"context_line":"                     storage.get_connection(cfg.CONF),"},{"line_number":61,"context_line":"                 ),"},{"line_number":62,"context_line":"                 hooks.PipelineHook(),"},{"line_number":63,"context_line":"                 hooks.TranslationHook()]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BZS4%3D","line":60,"updated":"2014-01-27 12:17:38.000000000","message":"Why this change ? This creates two engine objects instead of one.","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"f9dd24b4176ace40c456f22a3c53a62e9f74fe97","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    app_hooks \u003d [hooks.ConfigHook(),"},{"line_number":58,"context_line":"                 hooks.DBHook("},{"line_number":59,"context_line":"                     storage.get_engine(cfg.CONF),"},{"line_number":60,"context_line":"                     storage.get_connection(cfg.CONF),"},{"line_number":61,"context_line":"                 ),"},{"line_number":62,"context_line":"                 hooks.PipelineHook(),"},{"line_number":63,"context_line":"                 hooks.TranslationHook()]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BY%2FU%3D","line":60,"in_reply_to":"AAAAUH%2F%2BZS4%3D","updated":"2014-01-27 12:53:45.000000000","message":"Done","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"}],"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"dd7eb4901aee101d6966aa05b9bc2b6d379a5739","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # NOTE(Alexei_987) we steal objects from sqlalchemy_session"},{"line_number":180,"context_line":"        #                  to manage their lifetime on our own."},{"line_number":181,"context_line":"        #                  This is needed to open several db connections"},{"line_number":182,"context_line":"        self._engine \u003d sqlalchemy_session.get_engine()"},{"line_number":183,"context_line":"        self._maker \u003d sqlalchemy_session.get_maker(self._engine)"},{"line_number":184,"context_line":"        sqlalchemy_session._ENGINE \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B3mc%3D","line":181,"updated":"2014-01-21 09:19:41.000000000","message":"Could you add a pointer to the bug opened in oslo.db about that?","commit_id":"36f656fa869a58ac66410289a7968cef05de2fb6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"dd7eb4901aee101d6966aa05b9bc2b6d379a5739","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            self.pool \u003d None"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def _get_db_session(self):"},{"line_number":195,"context_line":"        return self._maker()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def upgrade(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B3mA%3D","line":194,"updated":"2014-01-21 09:19:41.000000000","message":"I don\u0027t think we need that function. just rename the _maker field","commit_id":"36f656fa869a58ac66410289a7968cef05de2fb6"}],"ceilometer/storage/sqlalchemy/alembic/env.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"00e1670b7111266a6905496a8f3850ac755e870b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        context.run_migrations()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def run_migrations_online():"},{"line_number":60,"context_line":"    \"\"\"Run migrations in \u0027online\u0027 mode."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    In this scenario we need to create an Engine"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BYtc%3D","line":59,"updated":"2014-01-27 13:56:29.000000000","message":"Go for adding engine as an argument here.","commit_id":"617f8420d3c961f775d3c34a169e6e10b69f70b4"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"90b2b00d9a14391c6a6829d098706042bf7de6b9","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        context.run_migrations()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def run_migrations_online():"},{"line_number":60,"context_line":"    \"\"\"Run migrations in \u0027online\u0027 mode."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    In this scenario we need to create an Engine"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BXtA%3D","line":59,"in_reply_to":"AAAAUH%2F%2BYJ8%3D","updated":"2014-01-27 16:28:20.000000000","message":"Sorry it seems that I\u0027m a bit blind or stupid today :).\n\nLet me update the patch.","commit_id":"617f8420d3c961f775d3c34a169e6e10b69f70b4"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c4a08e9811b4b79636ff1470dbfa95b17e17578d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        context.run_migrations()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def run_migrations_online():"},{"line_number":60,"context_line":"    \"\"\"Run migrations in \u0027online\u0027 mode."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    In this scenario we need to create an Engine"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BYJ8%3D","line":59,"in_reply_to":"AAAAUH%2F%2BYi8%3D","updated":"2014-01-27 15:26:47.000000000","message":"I doubt Alembic calls directly this :) You can build a closure if needed.","commit_id":"617f8420d3c961f775d3c34a169e6e10b69f70b4"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"fb02bc1cfdc415ee7de621fd960e62a14716ba35","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        context.run_migrations()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def run_migrations_online():"},{"line_number":60,"context_line":"    \"\"\"Run migrations in \u0027online\u0027 mode."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    In this scenario we need to create an Engine"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BYi8%3D","line":59,"in_reply_to":"AAAAUH%2F%2BYtc%3D","updated":"2014-01-27 14:18:50.000000000","message":"Problem here is that this method is called by alembic internally so we cannot change it\u0027s API","commit_id":"617f8420d3c961f775d3c34a169e6e10b69f70b4"}],"ceilometer/tests/api/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"dd7eb4901aee101d6966aa05b9bc2b6d379a5739","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.CONF.set_override(\"policy_file\","},{"line_number":45,"context_line":"                               self.path_get(\u0027etc/ceilometer/policy.json\u0027))"},{"line_number":46,"context_line":"        sources_file \u003d self.path_get(\u0027ceilometer/tests/sources.json\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.app \u003d v1_app.make_app(self.CONF,"},{"line_number":49,"context_line":"                                   enable_acl\u003dFalse,"},{"line_number":50,"context_line":"                                   attach_storage\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B3mU%3D","line":47,"updated":"2014-01-21 09:19:41.000000000","message":"Unrelated change","commit_id":"36f656fa869a58ac66410289a7968cef05de2fb6"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0551c72bad068fba5c13decf75812f4320734fbc","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.CONF.set_override(\"policy_file\","},{"line_number":45,"context_line":"                               self.path_get(\u0027etc/ceilometer/policy.json\u0027))"},{"line_number":46,"context_line":"        sources_file \u003d self.path_get(\u0027ceilometer/tests/sources.json\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.app \u003d v1_app.make_app(self.CONF,"},{"line_number":49,"context_line":"                                   enable_acl\u003dFalse,"},{"line_number":50,"context_line":"                                   attach_storage\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BZTA%3D","line":47,"updated":"2014-01-27 12:17:38.000000000","message":"nit: Unrelated change","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"f9dd24b4176ace40c456f22a3c53a62e9f74fe97","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.CONF.set_override(\"policy_file\","},{"line_number":45,"context_line":"                               self.path_get(\u0027etc/ceilometer/policy.json\u0027))"},{"line_number":46,"context_line":"        sources_file \u003d self.path_get(\u0027ceilometer/tests/sources.json\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.app \u003d v1_app.make_app(self.CONF,"},{"line_number":49,"context_line":"                                   enable_acl\u003dFalse,"},{"line_number":50,"context_line":"                                   attach_storage\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BZNk%3D","line":47,"in_reply_to":"AAAAUH%2F%2BZTA%3D","updated":"2014-01-27 12:53:45.000000000","message":"Sorry forgot to fix it :(","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"}],"ceilometer/tests/db.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"ecf202e1bf07348ae7409cbd7d777292dc8d3d2f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return self.conn"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        connection_patch \u003d mock.patch("},{"line_number":59,"context_line":"            \u0027ceilometer.storage.get_connection\u0027, fake_connection)"},{"line_number":60,"context_line":"        connection_patch.start()"},{"line_number":61,"context_line":"        self.addCleanup(connection_patch.stop)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Bxgg%3D","line":59,"updated":"2014-01-22 09:33:01.000000000","message":"For new test cases, you should consider using ceilometer.openstack.common.fixture.mockpatch","commit_id":"41c9700a2c4abd0122d682f5b4dad3653dfb9743"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"20ed8ac6fbd4d76b0e096583d78a10be2c516974","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return self.conn"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        connection_patch \u003d mock.patch("},{"line_number":59,"context_line":"            \u0027ceilometer.storage.get_connection\u0027, fake_connection)"},{"line_number":60,"context_line":"        connection_patch.start()"},{"line_number":61,"context_line":"        self.addCleanup(connection_patch.stop)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BssI%3D","line":59,"in_reply_to":"AAAAUH%2F%2Bxd4%3D","updated":"2014-01-23 02:18:24.000000000","message":"ceilometer.openstack.common.fixture.mockpatch.Patch does exactly the same thing as you did here. Just a suggestion to write fewer lines of code. :)","commit_id":"41c9700a2c4abd0122d682f5b4dad3653dfb9743"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"c9240b7a323f581b739cce6d941b884112b1b0dc","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return self.conn"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        connection_patch \u003d mock.patch("},{"line_number":59,"context_line":"            \u0027ceilometer.storage.get_connection\u0027, fake_connection)"},{"line_number":60,"context_line":"        connection_patch.start()"},{"line_number":61,"context_line":"        self.addCleanup(connection_patch.stop)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Bxd4%3D","line":59,"in_reply_to":"AAAAUH%2F%2Bxgg%3D","updated":"2014-01-22 09:38:12.000000000","message":"It\u0027s not a new test case it\u0027s a fix for exiting tests.\n\nmock.patch is used in many existing testcases and I don\u0027t see any reason why this should be different.","commit_id":"41c9700a2c4abd0122d682f5b4dad3653dfb9743"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0551c72bad068fba5c13decf75812f4320734fbc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        connection_patch \u003d mock.patch("},{"line_number":59,"context_line":"            \u0027ceilometer.storage.get_connection\u0027, fake_connection)"},{"line_number":60,"context_line":"        connection_patch.start()"},{"line_number":61,"context_line":"        self.addCleanup(connection_patch.stop)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.CONF([], project\u003d\u0027ceilometer\u0027)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BZTc%3D","line":61,"updated":"2014-01-27 12:17:38.000000000","message":"Use ceilometer.openstack.common.fixture.mockpatch.Patch instead.","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"f9dd24b4176ace40c456f22a3c53a62e9f74fe97","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        connection_patch \u003d mock.patch("},{"line_number":59,"context_line":"            \u0027ceilometer.storage.get_connection\u0027, fake_connection)"},{"line_number":60,"context_line":"        connection_patch.start()"},{"line_number":61,"context_line":"        self.addCleanup(connection_patch.stop)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.CONF([], project\u003d\u0027ceilometer\u0027)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BY%2FY%3D","line":61,"in_reply_to":"AAAAUH%2F%2BZTc%3D","updated":"2014-01-27 12:53:45.000000000","message":"Done","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"}],"ceilometer/tests/storage/test_impl_sqlalchemy.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"ecf202e1bf07348ae7409cbd7d777292dc8d3d2f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertTrue(repr.repr(ev))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class ModelTest(tests_base.BaseTestCase):"},{"line_number":177,"context_line":"    database_connection \u003d \u0027mysql://localhost\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_model_table_args(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BxfY%3D","line":176,"updated":"2014-01-22 09:33:01.000000000","message":"Sorry if I didn\u0027t get this. Why change the base class?","commit_id":"41c9700a2c4abd0122d682f5b4dad3653dfb9743"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"c9240b7a323f581b739cce6d941b884112b1b0dc","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertTrue(repr.repr(ev))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class ModelTest(tests_base.BaseTestCase):"},{"line_number":177,"context_line":"    database_connection \u003d \u0027mysql://localhost\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_model_table_args(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Bxdk%3D","line":176,"in_reply_to":"AAAAUH%2F%2BxfY%3D","updated":"2014-01-22 09:38:12.000000000","message":"Cause old db.TestBase created database connection that is not needed in this test.","commit_id":"41c9700a2c4abd0122d682f5b4dad3653dfb9743"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0551c72bad068fba5c13decf75812f4320734fbc","unresolved":false,"context_lines":[{"line_number":186,"context_line":"class RelationshipTest(scenarios.DBTestBase):"},{"line_number":187,"context_line":"    # Note: Do not derive from SQLAlchemyEngineTestBase, since we"},{"line_number":188,"context_line":"    # don\u0027t want to automatically inherit all the Meter setup."},{"line_number":189,"context_line":"    database_connection \u003d \u0027sqlite://\u0027"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def test_clear_metering_data_meta_tables(self):"},{"line_number":192,"context_line":"        timeutils.utcnow.override_time \u003d datetime.datetime(2012, 7, 2, 10, 45)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BZUE%3D","line":189,"updated":"2014-01-27 12:17:38.000000000","message":"Why did you change that to sqlite instead of mysql ?","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"f9dd24b4176ace40c456f22a3c53a62e9f74fe97","unresolved":false,"context_lines":[{"line_number":186,"context_line":"class RelationshipTest(scenarios.DBTestBase):"},{"line_number":187,"context_line":"    # Note: Do not derive from SQLAlchemyEngineTestBase, since we"},{"line_number":188,"context_line":"    # don\u0027t want to automatically inherit all the Meter setup."},{"line_number":189,"context_line":"    database_connection \u003d \u0027sqlite://\u0027"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def test_clear_metering_data_meta_tables(self):"},{"line_number":192,"context_line":"        timeutils.utcnow.override_time \u003d datetime.datetime(2012, 7, 2, 10, 45)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BZNA%3D","line":189,"in_reply_to":"AAAAUH%2F%2BZUE%3D","updated":"2014-01-27 12:53:45.000000000","message":"Cause it was wrong before :). It worked cause of the session bug.\nNow it will try to open a new mysql connection and crash cause it\u0027s not available","commit_id":"063c5c0d40c4379e5ce2dbb84327cd7d668fac1c"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"78030d2a74d35c0ef452fef8ad26a4b4e84c54de","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertTrue(repr.repr(ev))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class ModelTest(tests_base.BaseTestCase):"},{"line_number":177,"context_line":"    database_connection \u003d \u0027mysql://localhost\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_model_table_args(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9oDU%3D","line":176,"updated":"2014-02-05 15:18:06.000000000","message":"Just a note: shouldn\u0027t we change database_connection to  \u0027sqlite://\u0027?","commit_id":"eedea6cdd462167bd0191cb4e196ea61f0fb18c2"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"1083e3721b929b72d8f20d3df1f9463bf42c99aa","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertTrue(repr.repr(ev))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class ModelTest(tests_base.BaseTestCase):"},{"line_number":177,"context_line":"    database_connection \u003d \u0027mysql://localhost\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_model_table_args(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9oBA%3D","line":176,"in_reply_to":"AAAAUH%2F9oDU%3D","updated":"2014-02-05 15:24:10.000000000","message":"No this particular test expects mysql connection (please see sql_models.table_args).","commit_id":"eedea6cdd462167bd0191cb4e196ea61f0fb18c2"}]}
