)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bcf2e3f4a529e88b14f2f997d7589819d2c549ea","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Co-Authored-By: Kevin_Zheng \u003czhengzhenyu@huawei.com\u003e"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: If3cbe9da92d0f05677df9dca07c15b4e497546d2"},{"line_number":17,"context_line":"Closes-Bug: #1425859"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":46,"id":"fa80f949_d5e6d8e7","line":17,"updated":"2015-11-03 17:43:01.000000000","message":"I don\u0027t see how this change closes this bug.","commit_id":"286832bef9c7d39db3e9d697a7634025a7a7e02f"}],"nova/objects/migration.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c69ecb0bbb0a80f95c9b933ece2425dbded3a74c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        }"},{"line_number":131,"context_line":"    # NOTE(danms): Migration was at 1.1 before we added this"},{"line_number":132,"context_line":"    obj_relationships \u003d {"},{"line_number":133,"context_line":"        \u0027objects\u0027: [(\u00271.0\u0027, \u00271.1\u0027), (\u00271.1\u0027, \u00271.1\u0027), (\u00271.2\u0027, \u00271.2\u0027)],"},{"line_number":134,"context_line":"        }"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":38,"id":"da20952f_b42af47c","line":133,"updated":"2015-08-28 13:04:47.000000000","message":"I think you need to add a relationship for the new version 1.3","commit_id":"ff3649ad628139485f2e7e0b941f8cabbbbea5a6"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"a063e47511d4e8e5cfae3c948fb33584c5b8d688","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    # NOTE(danms): Migration was at 1.1 before we added this"},{"line_number":132,"context_line":"    obj_relationships \u003d {"},{"line_number":133,"context_line":"        \u0027objects\u0027: [(\u00271.0\u0027, \u00271.1\u0027), (\u00271.1\u0027, \u00271.1\u0027), (\u00271.2\u0027, \u00271.2\u0027),"},{"line_number":134,"context_line":"                    (\u00271.2\u0027, \u00271.3\u0027)],"},{"line_number":135,"context_line":"        }"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_813db0c5","line":134,"updated":"2015-09-01 09:21:34.000000000","message":"I think here should be (\u00271.3\u0027, \u00271.2\u0027)","commit_id":"fff939d04d03f9ed701b9b7d9047c6aa4a0f875b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b7a7912443fe7055cb7b04432560af843f9953b1","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    fields \u003d {"},{"line_number":134,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027Migration\u0027),"},{"line_number":135,"context_line":"        }"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @base.remotable_classmethod"},{"line_number":139,"context_line":"    def get_unconfirmed_by_dest_compute(cls, context, confirm_window,"}],"source_content_type":"text/x-python","patch_set":46,"id":"ba8a016a_5aaf3be3","line":136,"updated":"2015-11-23 12:42:01.000000000","message":"Unnecessary withespace change","commit_id":"286832bef9c7d39db3e9d697a7634025a7a7e02f"}],"nova/tests/unit/objects/test_migration.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"206ddbd90f2eb6c70c0b98bc210be42c17202dde","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            ctxt, fake_migration[\u0027id\u0027], \u0027migrating\u0027)"},{"line_number":72,"context_line":"        self.compare_obj(mig, fake_migration)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_by_instance_with_multiple_statuses(self):"},{"line_number":75,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":76,"context_line":"        fake_migration \u003d fake_db_migration()"},{"line_number":77,"context_line":"        self.mox.StubOutWithMock(db,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9b358b_25131f0f","line":74,"updated":"2015-04-01 08:32:40.000000000","message":"Please use `mock` library instead `mox` for all new test cases.","commit_id":"25b58519b965337f77bf3522a14819d2fdf3984d"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d361a633a88eefbe2654e4061e0d7b105ab57eec","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            ctxt, fake_migration[\u0027id\u0027], \u0027migrating\u0027)"},{"line_number":72,"context_line":"        self.compare_obj(mig, fake_migration)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_get_by_instances_with_multiple_statuses(self):"},{"line_number":75,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":76,"context_line":"        fake_migration \u003d fake_db_migration()"},{"line_number":77,"context_line":"        db_migrations \u003d [fake_migration]"}],"source_content_type":"text/x-python","patch_set":8,"id":"baa041b7_511609f2","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":9},"updated":"2015-04-03 14:30:38.000000000","message":"Please use for all new test-cases `mock` library, instead `mox` or `stub`.","commit_id":"611d8c89aeb075ff44b2e57adb4cc29a4032bbb4"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9e2839b619bd91b8a654a0a36d5d9a09ee7e9a8e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        db_migrations \u003d [fake_migration]"},{"line_number":79,"context_line":"        db.migration_get_by_instances_with_multiple_statuses \u003d mock.MagicMock("},{"line_number":80,"context_line":"            return_value\u003ddb_migrations)"},{"line_number":81,"context_line":"        db.migration_get_by_instances_with_multiple_statuses("},{"line_number":82,"context_line":"            ctxt, [fake_migration[\u0027id\u0027]], [\u0027migrating\u0027])"},{"line_number":83,"context_line":"        migrations \u003d migration.MigrationList. \\"},{"line_number":84,"context_line":"            get_by_instances_with_multiple_statuses(ctxt,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_4b2abf2d","line":81,"updated":"2015-04-08 17:28:26.000000000","message":"Do not think this call is needed here. You probably want to assert there was a call\n\n  db.migration_get_by_instances_with_multiple_statuses.assert_called_once_with(ctxt, ...)","commit_id":"92a81ce5cc843a2a4ad85ac4b4bcad4358879077"},{"author":{"_account_id":11530,"name":"zhangtralon","email":"ztralon@hotmail.com","username":"zhangtralon"},"change_message_id":"07a5379c243d16850aac891af9284efe798cc819","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        db_migrations \u003d [fake_migration]"},{"line_number":79,"context_line":"        db.migration_get_by_instances_with_multiple_statuses \u003d mock.MagicMock("},{"line_number":80,"context_line":"            return_value\u003ddb_migrations)"},{"line_number":81,"context_line":"        db.migration_get_by_instances_with_multiple_statuses("},{"line_number":82,"context_line":"            ctxt, [fake_migration[\u0027id\u0027]], [\u0027migrating\u0027])"},{"line_number":83,"context_line":"        migrations \u003d migration.MigrationList. \\"},{"line_number":84,"context_line":"            get_by_instances_with_multiple_statuses(ctxt,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_75331015","line":81,"in_reply_to":"9aa53dc9_4b2abf2d","updated":"2015-04-09 06:56:15.000000000","message":"yeah, this call is really not needed. I\u0027m not very familiar with the mock. thank you for your patient guidance,sahid","commit_id":"92a81ce5cc843a2a4ad85ac4b4bcad4358879077"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9e2839b619bd91b8a654a0a36d5d9a09ee7e9a8e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            return_value\u003ddb_migrations)"},{"line_number":81,"context_line":"        db.migration_get_by_instances_with_multiple_statuses("},{"line_number":82,"context_line":"            ctxt, [fake_migration[\u0027id\u0027]], [\u0027migrating\u0027])"},{"line_number":83,"context_line":"        migrations \u003d migration.MigrationList. \\"},{"line_number":84,"context_line":"            get_by_instances_with_multiple_statuses(ctxt,"},{"line_number":85,"context_line":"                                                    [fake_migration[\u0027id\u0027]],"},{"line_number":86,"context_line":"                                                    [\u0027migrating\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_6bcb43a6","line":83,"updated":"2015-04-08 17:28:26.000000000","message":"Instead-of using \"\\\"\n\n  (migrations \u003d migration.MigrationList.\n    get_by_instances_with...)","commit_id":"92a81ce5cc843a2a4ad85ac4b4bcad4358879077"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"24c38ff33b021b5d9685ee1852f134f0ee885923","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        migrations \u003d ("},{"line_number":82,"context_line":"            migration.MigrationList.get_by_instances_with_multiple_statuses("},{"line_number":83,"context_line":"                ctxt, ["},{"line_number":84,"context_line":"                    fake_migration[\u0027id\u0027]], [\u0027migrating\u0027]))"},{"line_number":85,"context_line":"        for index, db_migration in enumerate(db_migrations):"},{"line_number":86,"context_line":"            self.compare_obj(migrations[index], db_migration)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3acd31a7_f408ad93","line":84,"updated":"2015-04-29 17:40:52.000000000","message":"you can just have this line on L83 as well, no reason it has be on a separate line.","commit_id":"3bf969c629a20dc6d4e478c05f3bc6c37d966e42"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"78725008410211beb4b3fa0fcffd90bc33573f5f","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        migrations \u003d ("},{"line_number":85,"context_line":"            migration.MigrationList.get_by_instances_with_multiple_statuses("},{"line_number":86,"context_line":"                ctxt, ["},{"line_number":87,"context_line":"                    fake_migration[\u0027id\u0027]], [\u0027migrating\u0027]))"},{"line_number":88,"context_line":"        for index, db_migration in enumerate(db_migrations):"},{"line_number":89,"context_line":"            self.compare_obj(migrations[index], db_migration)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_715c374b","line":87,"updated":"2015-09-04 16:16:08.000000000","message":"why do you split these lines?","commit_id":"fd7b5d01d32454d1eded8cc7d3e45d61054e8924"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"2b6cce1d90259012b0948a389ac589b4301e111d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        migrations \u003d ("},{"line_number":85,"context_line":"            migration.MigrationList.get_by_instances_with_multiple_statuses("},{"line_number":86,"context_line":"                ctxt, ["},{"line_number":87,"context_line":"                    fake_migration[\u0027id\u0027]], [\u0027migrating\u0027]))"},{"line_number":88,"context_line":"        for index, db_migration in enumerate(db_migrations):"},{"line_number":89,"context_line":"            self.compare_obj(migrations[index], db_migration)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_6b24255f","line":87,"in_reply_to":"da20952f_715c374b","updated":"2015-09-06 03:27:49.000000000","message":"Done","commit_id":"fd7b5d01d32454d1eded8cc7d3e45d61054e8924"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e2b5fa7d9073aa53af2b6210cb4263235179ea6c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.compare_obj(mig, fake_migration)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_get_by_instances_with_multiple_statuses(self):"},{"line_number":79,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":80,"context_line":"        fake_migration \u003d fake_db_migration()"},{"line_number":81,"context_line":"        db_migrations \u003d [fake_migration]"},{"line_number":82,"context_line":"        db.migration_get_by_instances_with_multiple_statuses \u003d mock.MagicMock("}],"source_content_type":"text/x-python","patch_set":45,"id":"da20952f_7291da99","line":79,"updated":"2015-09-10 10:40:00.000000000","message":"Why admin context? its not needed any more.","commit_id":"3c6939e44d6fee7f1896b1ab6ac3fd9b25a2dcb0"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0291c29d3271bd2b27ba1c7c7d2fadf438bb4aa6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.compare_obj(mig, fake_migration)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_get_by_instances_with_multiple_statuses(self):"},{"line_number":79,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":80,"context_line":"        fake_migration \u003d fake_db_migration()"},{"line_number":81,"context_line":"        db_migrations \u003d [fake_migration]"},{"line_number":82,"context_line":"        db.migration_get_by_instances_with_multiple_statuses \u003d mock.MagicMock("}],"source_content_type":"text/x-python","patch_set":45,"id":"ba15a1d1_d7b9dd2f","line":79,"in_reply_to":"da20952f_7291da99","updated":"2015-09-15 03:10:46.000000000","message":"Done","commit_id":"3c6939e44d6fee7f1896b1ab6ac3fd9b25a2dcb0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e2b5fa7d9073aa53af2b6210cb4263235179ea6c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":80,"context_line":"        fake_migration \u003d fake_db_migration()"},{"line_number":81,"context_line":"        db_migrations \u003d [fake_migration]"},{"line_number":82,"context_line":"        db.migration_get_by_instances_with_multiple_statuses \u003d mock.MagicMock("},{"line_number":83,"context_line":"            return_value\u003ddb_migrations)"},{"line_number":84,"context_line":"        migrations \u003d ("},{"line_number":85,"context_line":"            migration.MigrationList.get_by_instances_with_multiple_statuses("}],"source_content_type":"text/x-python","patch_set":45,"id":"da20952f_1203beb9","line":82,"updated":"2015-09-10 10:40:00.000000000","message":"Please add a method decorator like: @mock.patch(db, \u0027migration_get_by_instances_with_multiple_statuses\u0027) instead of this please.\n\ndoing things this way will case problems if someone tries to add extra tests of that method.","commit_id":"3c6939e44d6fee7f1896b1ab6ac3fd9b25a2dcb0"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"0291c29d3271bd2b27ba1c7c7d2fadf438bb4aa6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":80,"context_line":"        fake_migration \u003d fake_db_migration()"},{"line_number":81,"context_line":"        db_migrations \u003d [fake_migration]"},{"line_number":82,"context_line":"        db.migration_get_by_instances_with_multiple_statuses \u003d mock.MagicMock("},{"line_number":83,"context_line":"            return_value\u003ddb_migrations)"},{"line_number":84,"context_line":"        migrations \u003d ("},{"line_number":85,"context_line":"            migration.MigrationList.get_by_instances_with_multiple_statuses("}],"source_content_type":"text/x-python","patch_set":45,"id":"ba15a1d1_37adb9e9","line":82,"in_reply_to":"da20952f_1203beb9","updated":"2015-09-15 03:10:46.000000000","message":"Done","commit_id":"3c6939e44d6fee7f1896b1ab6ac3fd9b25a2dcb0"}]}
